Три года в одиночку: моя ММОРПГ, мечта со времён «Бойцовского клуба», наконец заработала — хобби 30+ и подросткам, ч. 16
Сделать свою онлайн-игру я мечтал ещё со времён «Бойцовского клуба» и текстового «Амулета дракона». Тогда это казалось чем-то недостижимым. В 2021 году я уже был опытным программистом — и решил, что хватит мечтать.
Первым делом я поискал готовый сервис, на котором можно сделать MMO. Не нашёл ни у нас, ни за рубежом: всё существующее рассчитано на короткие матчи, а не на мир, где сотни людей живут одновременно. Значит, придётся строить самому.
Что пришлось построить
Я хотел, чтобы в игре нельзя было жульничать, поэтому всё решает сервер. Игрок только говорит, что хочет сделать, а сервер сам считает, получилось ли.
Но раз вся логика на сервере, её нужно как-то менять. Так появился редактор механик прямо в браузере.
Геймдизайнер не станет учить программирование — ему нужны цифры. Так появился редактор существ и баланса.
Серверу нужно понимать, где стены и куда может пройти монстр. Так появилась загрузка карт из популярного бесплатного редактора.
И только в самом конце — масштаб: чтобы сотни и тысячи игроков жили в одном бесшовном мире, разложенном по разным машинам.
Когда тебя критикуют
Когда я писал об этом раньше, читатели не раз сомневались: а выдержит ли? Это задевало. Но словами такой спор не выиграть, поэтому я написал панель замеров. Она показывает время каждой механики, отправки пакетов и обмена между частями сервера — до тысячной доли миллисекунды.
Итог такой: скромный сервер с двумя ядрами и двумя гигабайтами памяти держит около трёхсот игроков разом. А таких серверов можно поставить сколько угодно, и мир останется единым. Проверял я это и в дороге — от юго-восточной Африки до Индии, на медленной связи.
Что получилось
Показательная игра пока скромная: ни сюжета, ни музыки, механик мало. Но сервер одинаково работает для браузера, компьютера и телефона. А поверх него можно менять не только механики, но и целый набор правил игры.
За три года вышел своего рода конструктор — как для сайтов, только для онлайн-игр. И я стою перед выбором: развивать инструменты для других или делать на них свою игру. А ещё мне очень хочется делать это уже не одному — вместе с теми, кто так же мечтал о своей MMO.
А вам бы пригодился такой конструктор? Или вы бы тоже начали со своего сервера?
История:
- Введение
- Масштабируемость и асинхронность
- WebSocket
- Redis
- LUA и JavaScript
- Выбор технологий, протокола и архитектурный шаблон Entity Component System
- Игровые локации (тайловые карты)
- Клиентская часть на Unity
- Игровые серверные механики
- Открытый бесшовный мир в 2D игре
- FPS, Ping, паузы между командами, интерполяция и экстраполяция
- Очереди и параллельное программирование на CPU
- Event-driven паттерн, JSON-RPC и почему не сервисная (SOA) архитектура
- Сетевая карта и задержка кадра (Latency frame) по RFC 2544 (1242)
- Создание сервера для онлайн ММО игр на PHP
- Готовое MVP сервиса 2D MMO RPG игр (realtime)
- Я научил ИИ делать мою MMO: игровая фича теперь рождается из одного описания
- Конвейер контента для MMO: импорт анимации, экипировка и обновление игры без патчей
- Каталог ассетов и git: как командой вести игру в облаке
- Как я тестирую код, который пишет ИИ: контракты вместо тестов
- Бесшовный мир: как карты MMO сшиваются в одно целое
- Сколько обходится содержание одного игрока