Вступление
Сегодня наконец-то выходит StarCraft II: Wings of Liberty. За длительный период бета-тестирования выловлено огромное количество багов, исправлен баланс, сделаны исправления в безопасности.
Однако, слона они всё-таки не заметили…
Однажды мы играли 2х2 со знакомым на ладдере и болтали по скайпу. Меня вчистую разгромили, и я вышел из игры, а мой напарник продолжил играть (и в результате мы победили). После того как я вышел, я решил посмотреть какие-нибудь реплеи, и зашел во вкладку с ними. Моему удивлению не было предела когда я увидел там нашу последнюю незаконченную игру, вошел в нее, и стал напарнику по скайпу говорить чего они стоят и где (разумеется, реплей длился вплоть того момента как я вышел).
Соль
Разумеется, я заинтересовался механизмом реплеев, стал изучать систему их работы, и сделал следующие выводы:
- Каждый игрок в процессе игры в реальном времени получает всю информацию о ходе игры (как в реплее), и его vision ограничен лишь его локальным клиентом.
- Файл с реплеем пишется прямо во время игры.
Соответственно, возможны следующие варианты:
- Можно допилить клиента игры чтоб включал полный vision пока нажата горячая клавиша. Однако, этот вариант самый жесткий, можно обойтись и стандартными средствами.
- Можно поставить второй монитор, поднять на виртуалке второй экземпляр игры, пролинковать туда файл с реплеем, и зайти посмотреть чего делает противник прямо в процессе игры.
Пути исправления
- Имеет смысл писать реплеи на сервере, и скачивать когда человек кликает на реплей (позволять скачивать только завершенные игры)
- Было бы хорошо персонифицировать поток информации в процессе игры, чтоб клиент владел лишь теми данными, которые ему дозволены
Заключение
Ну всё, теперь у меня не будет искушения использовать это на турнирах и стать королем Starcraft.
Надеюсь, повеселил. Удачи всем!
P.S. если ув. Blizzard'ы найдут полезной данную заметку, буду рад принять в дар ключик к Diablo III beta.