Мне интересно, если объединение клиентской части Javascript с серверной стороной PHP / mysql является хорошей идеей для многопользовательских (небольших) браузерных игр HTML5 в реальном времени?
Мои технические знания очень ограничены, и, хотя я планирую изучать node.js в будущем, кривая обучения сейчас довольно велика.
Поскольку я уже знаком с PHP, я чувствую, что он заработал бы намного быстрее.
Шкала, я думаю, составляет 2-8 игроков в то время. И пытаться поддерживать как можно меньше сообщений от клиента к серверу.
Значения, которые я намерен хранить / обрабатывать:
- Имя игрока и ID.
- X и Y позиции.
- Здоровье.
- Оборудованные предметы (максимум 8 слотов, возможно меньше).
- Действия (ходьба, атака, использование и т.д., но только 1 действие / игрок за один раз).
- Пуля X, Y координаты и траектория.
- Название гильдии / клана.
- И некоторые основные функции чата / рассылки.
Я думаю, что хотя это и не лучшее решение, но, хотя я придерживаюсь небольшой логики, это вполне выполнимо. Я прав?
javascript
networking
html5
client-server
php
justanotherhobbyist
источник
источник
Ответы:
Для игры в реальном времени вы хотите минимизировать задержку. Вот два совета для достижения этого, с примечаниями о PHP и Node:
Я сам нахожу, что node.js очень легко подобрать, и, так как вам все равно понадобится код JavaScript, я бы порекомендовал вам попробовать. По крайней мере, взгляните на руководства по socket.io, чтобы увидеть, как просто настроить канал связи в реальном времени.
источник
Наряду с ответом Тапио, я хотел бы предложить только (если возможно) отправлять пользовательский ввод (щелчки и ввод с клавиатуры) на сервер, и сервер и клиент будут эмулировать игру. Каждые N отметок, которые клиент будет запрашивать у сервера для синхронизации, и сервер будет отвечать всей информацией, необходимой клиенту для отображения игры, такой как здоровье, предметы и т. Д. Это делается для того, чтобы клиент тоже не был десинхронизирован. много.
Конечно, и сервер, и клиент должны иметь одинаковую реализацию игры, так что это может быть немного больше работы. Если у вас есть идеальные реализации как на клиенте, так и на сервере, клиент должен будет синхронизироваться реже.
Это уменьшит обмен сообщениями между клиентом и сервером и уменьшит задержку. Это также поможет предотвратить мошенничество.
Предполагая, что вы создаете эту игру на JavaScript, возможно, стоит написать и бэкэнд на JavaScript, используя NodeJS. Таким образом, вы можете повторно использовать реализацию JavaScript вашей игры как для сервера, так и для клиента.
источник
Я рекомендую изучать Nodejs. Если вы уже сейчас Javascript, это не будет так сложно. Я быстро создал многопользовательскую игру TRON с Nodejs, и это был мой первый день, когда я ее использовал. (О, и клиент был холстом HTML5; я только отправлял ввод с клавиатуры, как упомянуто в других комментариях.)
Посмотрите на модуль под названием nowjs. Удачи!
источник