При создании многопользовательских игр встает вопрос про создание серверной части , способных объединить множество игроков в игровом мире
Часто эту задачу решают в каждой игровой студии созданием своего продукта, нанимая штаб специалистов узкого профиля и способностей, либо используют готовые западные решения которые в целом ограничены их функционалом
Это - Российский проект , который включает в себя само API для взаимодействие между клиентами (игроками) и сервером, а так же систему управления игровым миром (CMS) позволяющий превратить любую offline игру (браузерную, компьютерную , для мобильных устройств Android или ios, консоли и тп ) в online
Цель проекта дать возможность создавать онлайн в играх не сложнее чем создавать сайты (речь идет исключительно об онлайн функционале, сам игровой клиент , те сама игра делается вне продукта самостоятельно на любой платформе, а продукт лишь реализует популярные механики в онлайн, например : хранение данных для сервера, прием - отправку команд от игроков и NPC, движения , поиск пути, искусственный интеллект монстров, доставку/модерацию контента, Таловые карты, манипуляции с объектами на картах и тп )
Так же проект идеально подойдет для создания игр связанных с криптовалютой, blockchain и smart контрактами
Ниже приведен краткий перечень возможностей и игровых механик с действиями , расчет который производится на сервере, результаты сохраняются в базах данных и рассылаются всем игрокам online на игровой карте
Возможности на текущий день - жанр RPG
✅ Движение (отправка команд со стороны клиента move/up , move/down и тп, сервер проверяет проходимость)
✅ NPC, объекты под удаленного управлением сервера
✅ Поиск кратчайшего пути игрока и NPC
✅ Режим боя
✅ Смерть объектов (с созданием предметов на картах - трупов)
✅ Воскрешение
Возможности на текущий день - жанр Стратегии
✅ Создание/улучшение построек
✅ Сборка ресурсов
Общие возможности
✅ Хранение игровых данных на сервере (карты включая графику, переводы текстов игры, сохранений, балансов)
✅ Перезагрузка служб сервера
✅ Загрузку игрового мира по Api в клиент
✅ Авторизация - регистрация по API из клиента (в тч через крипто кошельки Metamask и др )
✅ Одновременная работа с разными картами (локациями)
✅ Мультиплеер игроков (ни один из которых сервером не является и расчеты подделать не может)
✅ CMS для управления игровым миром (редактирование, удаление модерация объектов )
✅ Отладка API для браузерных игр (аналог Swagger)
Средние показатели разработанного продукта (в мс) на других страницах:
Загрузка карты, монстров, игроков, др. объектов из БД без кеширования: 300 мс
Тоже с кешированием APCu: 25 мс
Движение на 1 клетку: 5 мс
Поиск пути (огибание многоугольника, 14 поворотов) : 40 мс
Сохранение игрока в Mysql 25 мс
В настоящее время проект работает с характеристиками:
512 RAM
Ubuntu 20
HDD диск
PHP 8.1
Mysql 8
- Может ли продукт на PHP работать быстро?
- Да может! PHP не требователен к ресурсам сервера, в классическом виде работает через HTTP протокол с "посредником" (apache или nginx) имеющего некое ограничение на количество одновременно работающих пользователей. Все это создает накладные расходы на соединения которые уже могут превышать ожидаемую скорость PING. Данная разработка не использует посредников и работает в режиме CLI, те как обычное приложение запущенное на сервере и взаимодействует благодаря постоянному соединению TCP между сервером и клиентом. Помимо прочего используются современные библиотеки предкомпиляции в тч JIT компиляция с Opcache (как известно php язык который компилируется каждый раз при обращении к нему выражаясь простыми словами), а так же библиотеки кеширования данных такие как Redis, APCU Cache и прочими...
В купе с грамотно построенной архитектурой приложения, хранилища данных и возможностью масштабировать сервисы продукт способен обеспечить скорость выше, чем аналогичный написанный другими людьми на компилируемых языках таких как С# или GO
Подробнее о тех характеристиках читайте на странице Фреймворк