Создание онлайн сервера для мобильных многопользовательских, realtime 2D игр (жанра RPG и стратегии) с API на PHP

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

Привет, Хабр! Мой первый пост и я хочу поделиться с вами своей идеей создание сервиса предоставляющего разработчикам игр и студиям платформу для создания онлайн игр! Поехали!

Зачем?

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

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

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

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

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

Подумал я

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

Как ?

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

Вот пример Человек делал несколько лет на С# но в итоге все работало настолько медленно что он снял эмоциональное видео "Почему делать мультиплееры игры - КАКАШКА"

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

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

Не получится?!

Я уже предчувствую твое желание пролистать в низ к комментариям, рассказать про свой опыт в php и каком то другом языке, рассказать почему именно на твоем и только нем надо писать, а все остальное - какашка и будет работать медленно :)

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

В добавок ко всему я делаю разработку так, что бы игра могла масштабироваться (сервисы могли быть на разных серверах), использую Redis, Websocket (UDP и чистый TCP не прижилось и у нас не 100500 онлайна сейчас об этом думать)

Хорошо же, согласись, если игру делает человек делающий игры, которому дали библиотеку для его Unity или Unreal или Phaser (на чем он там пишет) что коннектится к серверу и отправляет команды и ждет ответа ...и все....как web приложения когда разрабатывают с REST-FULL API ... И уже после что то анимирует, двигает в игре...А захотел новую карту спустя время - в админке ее поменял, загрузил (которую отрисовал например в программе Tiled https://www.mapeditor.org/) например вот так

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

Да! есть примеры игры, ping на движение 5 мс, я постоянно придумываю новые и новые способы все убыстрить и ты не поверишь....нет конечно действительно ты не ожидал ну никак этого но....это работает :)

Я веду свой сайт, там есть сравнения фреймворков Laravel Symfony и моего авторского (как ядро, тут не про игры и не про сервер уже) и сами игровые показатели (типа пинг в 5 мс)

Буду рад советам по технологиям в сторону которых посмотреть, но и без критики никуда (прошу помягче - я очень ранимый, а то будите как мои друзья и коллеги)

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

Источник: https://habr.com/ru/post/669996/


Интересные статьи

Интересные статьи

За последний год мир заполонили всевозможные курсы и онлайн-конференции. Все предлагают поднять свой уровень до сеньора и переквалифицировать в айтишника кого угодно: от ...
Всем привет, на связи Лиза, UX-писатель, и Стася, UX-аналитик Центра Развития Финансовых Технологий Россельхозбанка. Ближе к релизу наших площадок в продуктовых кома...
Многим знакома старая фотография Дворцовой площади в Санкт-Петербурге: В соцсетях она чаще всего используется в виде мема «как вызывают дьявола в городе Ленина». Разгадка прост...
Это мой первый пост об оптическом распознавании текста (OCR) с использованием Tesseract. Tesserast это очень популярная open source библиотека для OCR поддерживаемая Google, которая дает высокие ...
В материале, перевод которого мы сегодня публикуем, речь пойдёт о том, как создать типографскую сетку для дизайн-системы с использованием render-функций Vue. Вот демонстрационная версия проекта, ...