Как стать автором
Обновить

Создание сервера для онлайн ММО игр на PHP ч. 1 — Введение

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров12K

Для чего?

В большинстве своей при создании онлайн взаимодействия (не пошаговые, не где сервер - это один из клиентов, и не PVP, а прям ММО) в мобильных играх (да и не только) есть несколько путей:

  • использовать игровой движок в качестве экземпляра сервера (типа тот же UNITY в качестве сервера из коробки или с плагинами типа Mirror) - нужно когда у тебя есть OFFLINE версия игры параллельно (тогда да, иначе никак)

  • писать свое (те не универсальный, заточенный под игру)

  • использовать сервис типа https://www.photonengine.com/ (аналог которого я и делаю)

Как было бы здорово если был бы простенький сервис с API , да что и написан был на простом языке типа РНР да и что бы к нему была админ панель, куда можно было бы добавлять карты, предметы, анимации, создавать квесты, редактировать баланс...И что бы это это работало с мобильными приложениями на Android , IOS и игры были прям реалтайм рпг, где все друг друга видят и взаимодействуют, что бы не требовало много ресурсов сервера и работало быстро

Подумал я

разработчик php

Каким образом?

Посмотрев информацию в интернете (найдя лишь эту https://habr.com/ru/company/vk/blog/220359/ старую статью) про то как строится архитектура программы - сервера (не путайте с клиентами, как делать сами игры статей множество) , открыв русскоязычный youtube (где все пересказывают либо эту статью, либо используют игровой движок как сервер) я полез в англо-саксонский :)

Вот пример Человек делал несколько лет на С# но в итоге все работало настолько медленно что он снял эмоциональное видео "Я ненавижу это!"

Исторически сложилось что такие вещи пишутся на том же языке что сделан клиент (и теми же людьми), те обычно на С#, C++ .... более редко мне кажется на Nodejs (может для браузерок) и Golang (знал бы его - писал на нем).

Что вроде как код должен компилироваться, что все остальное - медленное для пошаговых и однотипных браузеров и не компилируемые языки - не годятся ! C чем я не согласен и вот вам видео почему :)

Получится ли написать сервис на PHP ?

Какие есть технологии на рынке? Мне известен западный сервис https://www.photonengine.com/ , со сложной документацией, с серьезной работой в клиенте с глубокими познаниями в C# как мне кажется...

Да, язык PHP не компилируется , но это капля в море по скорости что забирает сервер (остальное - базы, кеширование, асинхронность, канал связи и тп) ... А с php 7.4 (и далее 8) появились такие вещи как opcache, JIT компиляция ..

В добавок используются такие технологии как Redis, Websocket (UDP / TCP) и сервис предполагается для 2Д мобильных игр

Я считаю что человеку разрабатывающему клиент для онлайн не должен разбираться в хитросплетениях работы сервера : библиотеки для установления соединения с сервером и API список методов с принимаемыми и возвращаемыми параметрами - достаточно. А Вы ?

В добавок дать разработчикам легкий и понятный интерфейс для работы с игровым миром, например загрузка карт (отрисованные, например, в программе Tiled https://www.mapeditor.org/) как в видео

Есть ли результат?

В настоящий момент реализована авторизация, регистрация, загрузка мира (карта с анимациями из админ панели), движение , жизни игрока, смерть игрока , враждебные NPC с поиском пути до игрока минуя объекты и это только начало. Я постоянно придумываю все новые механики и способы убыстрить работу сервера, пример игры на видео:

Буду рад лайку если вам нравится идея моего творчества . Планирую снимать продолжение данной рубрики, где более подробно углубляться в технические аспекты, демонстрировать примеры кода, сравнивать технологии и языки...

Адрес проекта

Рекомендую прочитать вторую часть серии статей про создание онлайн сервера для игрового проекта

Подписывайтесь на мой профиль что бы не пропустить новые статьи

История:

  1. Введение

  2. Масштабируемость и асинхронность

  3. WebSocket

  4. Redis

  5. LUA и JavaScript

  6. Выбор технологий, протокола и архитектурный шаблон Entity Component System

  7. Игровые локации (тайловые карты)

  8. Клиентская часть на Unity

  9. Игровые серверные механики

  10. Открытый бесшовный мир в 2D игре

  11. FPS, Ping, паузы между командами, интерполяция и экстраполяция

  12. Очереди и параллельное программирование на CPU

  13. Event-driven паттерн, JSON-RPC и почему не сервисная (SOA) архитектура

  14. Сетевая карта и задержка кадра (Latency frame) по RFC 2544 (1242)

  15. Создание сервера для онлайн ММО игр на PHP

  16. Готовое MVP сервиса 2D MMO RPG игр (realtime)

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Получится ли сделать?
20.37% Нет, ничего не выйдет11
31.48% Если и выйдет то никому будет не нужно17
48.15% Получится и будет полезным сервисом для разработки26
Проголосовали 54 пользователя. Воздержались 25 пользователей.
Теги:
Хабы:
Всего голосов 15: ↑5 и ↓10-4
Комментарии20

Публикации

Истории

Работа

PHP программист
108 вакансий

Ближайшие события