Комментарии 52
Первым, что приходит в голову — добавить еще уровней, редактор уровней и парочку режимов.
Хороший редактор уровней есть в самом impactJs, если что
Для меня проявились некоторые ответы на мои вопросы.
И да, я хотел проверить в браузере какие пакеты передаются во вкладке Network, а там почему то не логируется ничего… Это из-за сокетов?
Я просто с коллегой в офисе тестировали и мне интересно стало ))
Я так понимаю, средствами браузера это не возможно?
Мне кажется, или есть задержки при стрельбе? Выстрелил, и через какой то промежуток времени выстрел проигрался.
Да, например стреляю в игрока, он не умирает, но зато когда в движении можешь наткнуться на луч появившийся из ниоткуда (я понимаю что никакой валидации выстрелов пока нет и все этим пользуются, но тем не менее поведение выстрелов мне показалось странным).
Там столько читерства и лагов )
А если передавать не позиции, а действия игрока?
"Игрок начал двигаться вправо"
"Игрок начал прыжок"
"Игрок закончил прыжок"
с добавкой в виде координат и метадаты для синхронизации
Ну и может таки отправлять периодически сообщения синхронизации
Тогда, по идее, и анимацию не надо передавать — она может обсчитываться на клиенте
А в чем выигрыш такого подхода?
По идее тот, что каждый клиент может просчитывать позицию каждого игрока на поле без непрерывной "подпитки" координатами. Т.е. мы знаем, что игрок движется со скоростью V. Если от оппонента пришло событие "начал двигаться вправо", мы можем полностью просчитать его положение на основании флага движения, известной скорости и текущей координаты. Так как противник предсказуемо переместится из позиции А в позицию А + Dir V Dt. Тогда мы будем менять механику движений только при изменении "флагов движения". А вместе с командами на смену флагов можно присылать координаты точки, в которой это случилось — чтобы подкорректировать ошибки.
Т.е. мы передаём не состояния игрового мира, а события в игровом мире — что дешевле по объёму, и делать надо реже.
И интерполяция как органичное следствие, а не костыль.
А вообще, если кому будет интересно, на хабре был перевод отличной статьи на тему мультиплеера в динамичных играх.
WebRTC: Делаем peer to peer игру на javascript