JackShcherbakov
@JackShcherbakov

Как лучше реализовать обновление координат игроков в игре?

Здравствуйте, коллеги! Недавно размышлял на тему создания примитивной 2d браузерной игры.

Непонятен один момент. Каждый клиент (компьютер игрока, в нашем случае) опрашивает сервер несколько раз в секунду (знаю, что сокеты лучше, но я хочу пока так сделать), и сервер отдает JSON с координатами всех игроков (их всего 2). После чего клиент получает JSON и обновляет позиции игроков. Непонятно где храниться json-файл. Просто в файле на сервере? Но в таком случае будут проблемы с одновременной записью в файл + проблемы с получением блокировки, короче говоря файл - не выход. Вообщем мне не понятна система с получением и обновлением координат игроков. Как это реализовать?

Заранее выражаю огромную благодарность всем, кто поможет.
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 3
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Непонятно где храниться json-файл.
tsya.ru
Самое простое: сохраняйте в кеш-память и оттуда берите.
Ответ написан
nsleep
@nsleep
Backend Developer
А базы данных для чего придумали?
Создаёте сущность (таблицу) в бд с игроками. При смене позиции игрока шлете запрос на сохранение новой позиции для конкретного игрока. Для получения позиции всех (нужных вам) игроков делаете выборку из базы и возвращаете уже в нужном вам формате (json).
Если скорость ответа базы имеет значение смотрите в сторону Nosql - redis, mongodb.
Ответ написан
Tiendil
@Tiendil
Разработчик ПО.
Если это игра в реальном времени, то делается отдельный "рабочий" демон, который обсчитывает логику матча и хранит всё прямо у себя в памяти. Игроки взаимодействуют с ним напрямую (обычно устанавливается постоянное соединение, но можно и по http опрашивать для начала). После завершения матчка изменённые данные скидываются в базу.

Если игра пошаговая, то либо в базу либо в кеш, но в обоих случаях надо сразу брать в расчёт максимальную ожидаемую нагрузку на них (сколько одноврмеенных запросов будет, сколько данных будет гоняться, как часто будут они обновляться). Это всё очень специфично для конкретного проекта.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы