Однажды я пытался написать простую игру с UDP за неделю в качестве одноразового теста. Это пошло ужасно.
Я выбросил это рано. Основной проблемой, с которой я столкнулся, было восстановление игрового состояния всех игроков / врагов / объектов в старое состояние и ускоренная перемотка игры до момента времени, в который играет игрок (т.е. за полсекунды до прыжка. заставить игрока пропустить прыжок)
Может быть, этот метод не самый простой способ? Я подозреваю, что это так, но я спроектировал это неправильно с самого начала и понял, в конце 2-го дня. (так что я не выучил слишком много или потратил столько времени)
Для себя и других: что подразумевается под простой игрой UDP и как мне ее написать? Или как мне решить проблему предсказания, восстановив ее состояние должным образом.
Я отмечу это как CW до н.э. Я знаю, что будет много полезных ответов.
источник
Прокрутка собственного может быть полезной, но вы часто делаете больше, если можете использовать существующую реализацию (или, по крайней мере, начать с нее).
Я использовал оба ENet и RakNet . Я использовал Enet только в простой игре, но он делал то, что мне было нужно. Enet использует API более низкого уровня, чем Raknet. Ракнет использовался в более крупном проекте. Raknet чрезвычайно мощен, но хочет, чтобы вы структурировали свою игру на основе платформы Raknet.
Enet:
RakNet:
источник
Если у вас есть время и энергия, вы можете скачать исходник Quake 3 и изучить его. Это довольно легко понять, если вы чувствуете себя комфортно с C, и одинаково легко возиться с.
Какие другие многопользовательские игры имеют доступный исходный код и используют UDP?
источник
Если вы станете доморощенным (как я), вы узнаете тонны - и о вещах, которые вы не хотели знать. Как прохождение NAT. По словам Каспина, Enet упускает это, но вы всегда можете найти код STUN с открытым исходным кодом, который работает в большинстве ситуаций.
источник