Привет! Меня зовут TrashPony и я делаю свою MMORPG. Увидел статью, решил тоже поделиться.
Мы — команда из одного человека и нескольких личностей. У нас нет крупных (никаких) бюджетов, нет издателя, но есть идеи (они противоречат друг другу), которые мы хотим воплотить в жизнь.

У меня нет коммерческого опыта разработки игр. Поэтому в процессе разработки я использовал неправильные технологии, неправильные паттерны, неправильные методики, и вообще всё это очень неправильно.
Я не делаю «убийцу World of Warcraft» — я делаю «убийцу EVE Online».

Об игре
Veliri: Planet of Machines — это 2D MMORPG с открытым и живым миром, где игроки управляют машинками, выполняют задания, торгуют, воюют с пиратами и участвуют во фракционных войнах.
Особенности игры:
-
Живой мир: боты активно участвуют в торговле, войнах и формируют динамичный рынок.
-
Игровая экономика: почти полностью управляется игроками, с минимальным влиянием ботов (ну или полным влиянием ботов, т. к. игроков там нет).
-
Хардкорный геймплей: низкий TTK, full loot и главное - не ты решаешь будет сегодня PvP или нет.
-
Динамичные конфликты: постоянная война за территории и влияние между фракциями.
-
Нон-таргет система: с френдли фаером и ковровыми бомбардировками.
-
Открытый мир: исследование, торговля и борьба за выживание.
-
Можно грабить «караваны», можно быть «караваном» — и тебя будут грабить.
В демку уже можно поиграть, буду рад любым отзывам :-)
https://store.steampowered.com/app/3100340/Veliri_Planet_of_Machines_Demo/
Видео с геймплеем:
Стек технологий:
-
Backend: полностью написан на Go, база данных — PostgreSQL (использую свой сетевой движок: GitHub).
-
Frontend: JavaScript (Phaser3/Vue2), клиент в Steam обернут в Electron.js.
-
Сетевые протоколы: WebSocket/HTTP.
Почему такой странный стек? Изначально я просто учился программировать, но мой учебный проект вышел из-под контроля. Вот и получилось то, что получилось. Исходный код сетевого «движка» можно посмотреть на GitHub. Там есть даже минимальная документация и тонны говнокода для любителей. Код изрядно устарел, но основные принципы всё ещё используются.

Сервер игры авторитарный, то есть никакой компенсации лага. Но моя игра довольно медленная, и я могу себе такое позволить.
На какой онлайн рассчитана игра?
Пока что у нас один админ на десяти аккаунтах, пара игроков, которые играют уже полгода (зачем они это делают, я не знаю!), и 1300 ботов, которые постоянно творят какую-то дичь в мире игры.
Сейчас игра работает на четырёх домашних машинах уровня AMD Ryzen 2700x и отдельном сервере для базы данных. Этого хватит ещё на 500–1000 человек: в среднем серверы загружены на 30%, а треть процессорного времени уходит на расчёт поиска пути для ботов.
Есть ограничение на количество машинок в одном секторе — примерно 128. Дальше начинаются лаги. Всё из-за алгоритма обзора в тумане войны, который имеет довольно высокую сложность. Но чтобы это произошло надо иметь довольно высокий онлайн.

О ботах
Я отказался от идеи «мобов», которые просто стоят на карте и ждут, пока их убьют. Каждый бот в игре — это полноценный «игрок» по всем системам, кроме сетевого трафика. У них есть несколько ролей: торговец, агент, пират, воин, шахтёр.
У каждого бота есть основное дерево поведения, но они также могут менять свои действия в зависимости от ситуации. Например, они могут объединяться в группы, организовывать совместные нападения, обсуждать выплаты за проезд и даже «бояться», если понимают, что не вывозят.
Система не такая уж сложная, но она неплохо справляется с задачей эмуляции «живого» мира.
Наши планы

Немного о разработке
Не много не мало, занимаюсь я этим уже 5 лет, что, наверно, огромный срок для инди-проекта. Но это очень сильно бустануло навыки разработки, которые успешно не пригодились на работе. Можно сказать, что это моё хобби, но я надеюсь, что в этом году игра выйдет в ранний доступ, а там посмотрим.
Так как я работаю над игрой в свободное время, часто бывают большие перерывы в разработке. Иногда я пишу в студии и издателям с просьбой рассмотреть мою игру на любых условиях, но пока никто не ответил :-) (неправда, тебе сказали, что ты чорт)
Звуки, музыку, графику и даже тексты заказываю на фрилансе, но, конечно, всё это пока не очень выглядит
Трудности разработки
Из реально сложных проблем в разработке могу выделить несколько моментов:
-
Поиск пути. Сам по себе А* прост, но когда тебе надо не только найти путь, но и оптимизировать его под управление твоей машинки, которая не умеет поворачивать моментально, а ещё её заносит, начинаются трудности. Недавно я научил ботов ходить преимущественно по дорогам — очень радостно.
-
Обзор. В моей игре используется туман войны, и каждый бот или игрок имеет свою область обзора. Правильно обновлять объекты на фронте — это уже непростая задача, а оптимизация этого сделает тебе больно.
-
Это браузерная игра на JavaScript, и там огромная проблема с оптимизацией. Ну или всё дело в моих руках. х)
Интересные задачи были связаны с ИИ, созданием экосистемы мира, заданиями, диалогами, инвентарём, но 99% времени — это рутина. Унылая, скучная, бесконечная рутина.
Приговор
Годы работы, куча проблем, сомнительные перспективы, траты на аренду и поддержку серверов и никаких гарантий, что доживёшь до релиза.
Но это неплохое хобби, особенно если ты любишь жанр градостроя и песочниц, но тебе уже не хватает глубины.

Автор: Trashpony