История о том, как я решил в соло сделать свою MMO (спойлер: уже на стадии ЗБТ)
В январе 2021 года я, как обычно, просматривал контент на теперь уже заблокированном видеохостинге и натолкнулся на интересные видеоролики о создании игр и работе студентов. Это были рекламные материалы одной компании, предлагающей курсы по геймдеву. Хотя я и не собирался проходить эти курсы, поскольку имел представление об их качестве, сама идея создания игры крепко засела у меня в голове.
Через пару дней я решил попробовать заняться чем-то интересным просто ради развлечения и начал с выбора жанра будущей игры. Изначально выбор пал на RTS (коим фанатом жанра я являюсь) с микроменеджментом и развитыми, продуманными производственными цепочками.
Однако во время новогодних праздников я предавался ностальгии, играя в старые игры, включая серию Gothic. Тогда у меня возникла мысль: "А что, если создать игру подобного жанра, но добавить в неё элементы онлайн-игры – иммерсивный мир, расписанный день у NPC, разнообразные диалоги?"
Сказано - сделано! И я твердо определил будущий жанр. Я не планировал тысячи игроков. Для данного мира лучше делить на несколько независимых друг от друга серверов, чтобы изрядно не портить происходящую атмосферу кучей стоящих афк игроков в стартовых локациях.
Первым делом я набросал короткий прототип того, каким должен был стать мой проект, и начал продумывать основные моменты:
- Вид от третьего лица;
- Система диалогов;
- Отсутствие бессмысленных заданий вроде «убей 100 волков, а затем еще »;
- Смена дня и ночи, влияющая не только на освещение, но и на поведение NPC, которые будут вести себя естественно: спать, работать, менять свои диалоги в зависимости от развития сюжета;
- Интерактивность игрового мира: взаимодействие с мобами, NPC и объектами. Можно разжигать кузницы, сидеть на лавках, зажигать и тушить факелы, готовить еду у костра;
- Квесты, связанные с сюжетом;
- Поддержка многопользовательского режима.
Начало разработки
Я никогда не боялся трудностей и прекрасно представлял какой длинный путь предстоит. Но равно с этим необходимо ставить себе реалистичные цели,, чтобы это не превратилось в очередного “убийцу WoW”, у которого будет бесконечная стадия разработки и затем проект так и не увидит свет.
Определился с движком, открыл документацию, начал изучать программирование на бесплатных источниках (поисковики к счастью всегда дадут информацию ищущему). Не ленился читать и задавать вопросы на форумах и в чатах.
И вот появился первый прототип, который очень далёк от того, что мне необходимо, но начало уже положено:
Наступила рабочая пора, праздники закончились, но азарта стало только больше. Рабочий день (основной работы + времени на разработку игры) было принято решение увеличить до 12-14 часов в сутки на протяжении первых 3х лет.
Небольшой лайфхак для тех, кто сгорает не доделав проект до конца: разбейте задачу на этапы и выполняйте поэтапно. Чем больше этапов - тем лучше. Вы будете прекрасно видеть свой результат от того, что было, до того что имеется на текущий момент. Это будет вас мотивировать делать дальше.
Мультиплеер.
Сделав мини прототип было принято решение двигаться сразу в сторону мультиплеера, чтобы на фундаменте понять возможности и не переделывать проект с нуля спустя несколько лет.
Спустя 6 месяцев изучения C++, php, sql, самого движка UE с его неотъемлемой особенностью в виде Blueprints и получения боли от потраченных нервов наконец-то были готовы:
Полноценный выделенный общедоступный сервер с панелью управления, к котором люди могут подключаться и видеть других игроков. Установлены базовые античиты и многократно перерабатывалось на момент уязвимых мест.
В дополнение игрокам доступен кооперативный режим для игры с друзьями или в соло, если игрок не хочет играть со всеми или общедоступный сервер по какой-либо причине в данный момент недоступен. Так сказать небольшая альтернатива при фатальном запуске или неожиданном падении оборудования.
Наверное, это была самая сложная часть из всех, нюансов были не сотни, их были тысячи и список багов не умещался в моих заметках. Но для этого и существуют тесты. В данный момент тестирование уже проводилось с несколькими игроками одновременно.
Полностью рабочая авторизация из VK Play, Steam и объединение игроков из разных площадок в одну с помощью сервис EOS (Epic Games). Да, необходима небольшая регистрация на сайте эпиков, но взамен вы получаете стабильный автологин без необходимости каждый раз вводить данные и игру с друзьями стима и вк одновременно.
Продолжение разработки
После того, как я убедился, что на данный момент мультиплеер скорее жив, то пора вернуться к визуалу и механикам самой игры.
Игру решил назвать “The Story Page”. Я не знаю почему именно так, путем перебора многих названий мне показалось данное наиболее созвучным и легко сокращаемым до “TSP”.
Что могу сказать. Это был сложный момент. Поскольку я был единственным членом команды разработчиков - пришлось делать самому буквально всё. Игру, страницу, группу, тест, изучать маркетинг и прочее. Собственно, я применил всё, что смог с трудом узнать, вместе N-ым количеством денег.
Думаю можно упустить многие моменты разработки и далеко не всем будет интересно о том сколько ошибок я совершил, из-за которых начинал всё практически заново.
Итак, спустя ещё 3 года реализовано следующее:
Оптимизация.
Да, это самый первый пункт и самый важный как по мне. У меня изначально было видение выжать максимум, но из слабого железа. В основном я провожу активные тесты на Rysen 5500, GeForce GTX 1650, 16 gb ОЗУ и пытаюсь держаться отметки 40-60 фпс на средне-высокой графике. Впоследствии соберу статистику игроков, пожелания и от сюда буду исходить стоит ли наваливать крутого графона или всё же оставить как есть с небольшими косметическими изменениями, но чтобы могли играть даже на примитивных на сегодняшний день как у меня системах.
Атмосфера.
Здесь не долго думая решил пойти по классическому пути - мрачному фентезийному средневековью, но без радуги, бронелифчиков, 5ти метровых мечей и неуместных “скинчиков”. Сурово, жестоко, реалистично.
Редактор персонажей
Чтобы можно было создать того, кто действительно по душе, а не довольствоваться заготовками из 10 вариантов
НПС и мобы с социальным поведением
Каждый НПС имеет своё имя, он для чего-то служит: будь то торговец, квестодатель, учитель и т.д. У них имеется социум: к примеру проходящий мимо наёмник не проявится “сочувствия” к обороняющемуся жителю деревни, который отбивается от случайного игрока. В то же время поможет другим наемникам в данной борьбе. Ровно как и жители деревни встанут на защиту своего соседа. Ну или разбегутся, т.к. каждый социальный кластер может делиться еще и на их поведение от трусливого и беззащитного до агрессивного по отношению к другому класстеру. Более простой пример - это лесной олень, не видящий опасности в зайце, но убежит от волка едва его увидев.
Распорядок дня.
Раз уж я отталкиваюсь от упомянутой выше игры, то без этого разработка была бы преступлением :) В игре присутствует динамическая смена дня и ночи, смена погоды. Поверхность земли, объектов, одежды покрывается снегом или мокнет от дождя. Ночью многие НПС идут спать или занимаются иными делами отличными от дневных. У каждого из них имеется своё место пребывания.
Открытый мир
Так часто слышу это словосочетание в преимуществах проектов. Так часто он остается пустым и скучным… Здесь я стараюсь соблюсти баланс и не упираться в гигантизм масштабов, а использовать “вертикальность” мира. Сделать его более интересным для исследования, избежав при этом более 1 минуты беготни в одну точку по пустому полю. Весь мир и каждое дерево создается вручную без использования генераторов, нейросетей и вспомогательных программ. Да - это долго, но зато каждый метр становится обдуманным, хоть и не без ошибок, которые устраняются по мере их обнаружения.
Атрибуты, статы защиты\атаки
Раз уж заикнулся про жанр RPG, то конечно же каждый элемент одежды, брони, оружия должен содержать в себе защиту от урона (а это 12 типов прямого урона и 2 естественных). Нет универсальной брони и одежды, чтобы защитить от всего. Везде действует принцип: “камень-ножницы-бумага”. Тяжелая броня хорошо защищает от стрел и многих физических типов урона, но много весит и хуже воспринимает защиту от 2 естественных - это от холода и жары. В латах действительно тяжело передвигаться как по жаркой пустыне, так и во время морозной вьюги, когда броня начинает замерзать и покрываться льдом, приводя персонажу к постепенному замерзанию.
На данный момент помимо холода и жары реализованы так же такие типы урона, как: Режущий, Колющий, Дробящий, Рубящий, а так же магия данных типов: Огонь, Вода, Ветер, Земля, Свет, Тьма, Чистая магия, Магия крови.
Каждый тип может спровоцировать определенный эффект от воспламенения, до кратковременной потери видимости.
Одежды персонажей учитывающая пол персонажа.
Более 200 предметов уже добавлены, столько же будет добавлено позже, на данный момент в этом нет необходимости.
Инвентарь и торговля
Возможность торговли с НПС и другими игроками по всем канонам мультиплеерных игр.
Диалоговая система
Диалоговая система в возможностью различных разветвлений и вариантов выбора ответа. В последствии планируется изменять награду и даже отношения НПС к игроку в зависимости от выбранных веток диалога.
Боевая система
Боевая система представляет собой классическую полную нон-таргет систему, включая луки, арбалеты и магию. Для онлайн игр многим это может показаться сомнительным решением, но я решил пойти по пути обдуманных действий, а не закликивания кнопок по таргету.
Магия
Разнообразие магии. От классического Fireball, свойственного многим фэнтези играм, до метеоритных дождей, защитных куполов и сферы, замедляющей время внутри нее (да-да, аналог Faceless Void но в жанре mmorpg с открытым миром для тех кто в теме 😂).
Кулинария и крафт
Возможность добычи ресурсов и создания новых предметов с помощью сложных, но многим привычных деревьев крафта: железо и уголь перерабатывается в сталь, хлопок в ткань, из шкур выделывается кожа и только после этого можно изготовить одежду и броню. Ну или сварить рагу из сорванных на грядках овощей и набрав воды из колодца.
Создание гильдий
Данная система еще в рамках теста и может претерпеть множество изменений. На данный момент гильдии могут создавать игроки и полностью управлять ими. Но я всё же планирую свести их к фракциям, которые изначально присутствуют в мире и игроки могут вступать в данные фракции, повышаясь по рангу выполняя определенные задания.
Что планируется?
На данный момент я работаю над наполнением мира контентом, созданием новых продуманных локаций. В ближайшее время будет доступна система бизнеса, при которой игроки смогут приобретать дома и инфраструктуру, а также управлять ей. Пример: игрок сможет купить таверну, если она принадлежит НПС, нанять в ней работников (как игроков, так и НПС). Каждая продажа в данном заведении приносит доход владельцу и автоматически отправляет налог в казну города. Но и за товарами и зарплатами работников также необходимо следить. Нет товаров - нет продаж.
Из ближайших апдейтов параллельно готовится механика мировых событий: осады игроков (некоторые фракции могут участвовать в осаде города и захватить его), нападения толп НПС.
Итоги
Если подытожить вышесказанное, то делать свою игру в одиночку, очень тяжело и не так весело как казалось на первый взгляд, но очень интересно. Ставьте себе разумные рамки сложности выполнения и временных затрат. Если собираетесь делать крупный проект в одиночку, то трижды подумайте хватит ли вам сил, денег и терпения. И, конечно же, если начали, то доводите дело до конца! Пробуйте запускать ваш прототип для тестов со своими друзьями, но не прислушивайтесь к хейтерам :) Со стороны лежа на диване всегда “виднее” как должно быть.
На этом все! Спасибо, что прочитали мою историю. Буду рад, если вы поддержите The Story Page добавив её в список желаемого, лайком в новостях, да или просто добрым словом. С удовольствием отвечу на вопросы, если они у вас возникли. Всем добра!
Видео о том, как всё происходило:
P.S.: Пользуясь случаем, если вы дошли до этого места, я был бы благодарен вам за добавление моей игры в списки желаемого и подписку в группы ВК и ТГ 🙂
Группа ВК: https://vk.com/the_story_page
Телеграмм канал: https://t.me/the_story_page
Страница Steam: https://store.steampowered.com/app/2984450/The_Story_Page/
Страница VKPlay: https://vkplay.ru/play/game/tsp/
P.P.S.: Это мой первый пост на DTF. Если вдруг в нем что-то не так - пожалуйста, скажите, чтобы я исправился).