Программирование игр для Windows. Советы профессионала

       

Раздел 4: Получение входных данных и передача состояния дистанционно управляемой системе


Здесь начинается самое приятное. Эта часть программы подразделена на два фрагмента:

§

Первый из них принимает входные данные от локального игрока;

§          Другой принимает входные данные от удаленного игрока.

Любопытно то, что оба фрагмента делают практически одно и то же. Разница только в том, что второй фрагмент обращает больше внимания на то, что поступает из последовательного порта, а первый в основном интересуется клавиатурой. Давайте остановимся и чуть-чуть поговорим о том, как происходит соединение. Как я говорил несколькими страницами раньше, для осуществления соединения применяются два основных метода:

§          Можно передавать состояние игры в целом;

§          Вы можете посылать статус устройств ввода и трактовать это как прием данных от другого джойстика или клавиатуры.

В Net-Tank я применил второй метод. Один раз в течение цикла второй машине передаются все манипуляции игрока с клавиатурой. В это же время другой компьютер интерпретирует полученные по сети данные как действия со своей собственной клавиатурой.

Помните, чтобы этот технический прием работал, обе игры должны быть полностью детерминированы. Никаких случайностей быть не должно. В Net-Tank я полностью следовал этому правилу всюду, кроме фрагмента, изображающего взрыв. Обычно этого не сложно избежать, но иногда, после уничтожения одного из танков, игры теряют синхронизацию.



Содержание раздела