Представьте: вы, житель прекрасного будущего, оказались на другой планете, застрявшей в средневековье. В ваших руках целый мир, который можно менять по своему усмотрению. Но есть нюанс, даже два: здесь не работает электроника, а все остальное население планеты -- такие же счастливчики-попаданцы.
Я давно хотел сделать игру своей мечты. К сожалению, в моих любимчиках были Wurm Online и World of Warcraft. Поэтому вместо нормальной игры, начал делать MMO RPG.
Большинство знакомых сразу мне сказали что-то типа "MMO в соло? Удачи…" или "делай лучше мобилки какие-нибудь". И действительно, начать разрабатывать MMO в соло - это было не просто смело...
Я хотел, чтобы в игре сочетались клёвые механики выживания и свободы действий из песочниц, но с сохранением прогресса и динамики олдскульных RPG, эдакий World of Minecraft.
Наконец-то я готов показать вам, что же у меня пока получилось.
В общем, получилась такая странная химера с большим количеством возможностей: можно менять ландшафт и биомы, строить поселения, растить огород, торговать, при желании – воевать с другими и т.д.
Меня вообще всегда привлекали живые изменяемые миры - что-то, в чём можно оставить след. А для этого мир должен быть процедурно генерируемым. При разработке в этом оказался и плюс, и минус.
Плюс: не нужно расставлять все объекты на сцене вручную, что экономит время.
Минус: написать логику, по которой всё расставится само оказалось охренеть как сложно.
Но начинал я не с генерации. Для меня всегда самым страшным и сложным казалась сеть. И не зря - на её первую версию ушло больше трёх месяцев.
Но, наверно, стоит немного сказать, на чём я разрабатывал игру, что получилось взять, а от чего пришлось отказаться. Я разработчик на Unreal Engine 5 (и на работе тоже).
Из плюсов UE – он умеет делать хорошо и красиво из коробки, имеет огромные возможности для создания игр и бесконечную библиотеку, где можно что-то купить (я покупал модельки и звуки)
Из минусов – его стандартные решения плохо подходят для MMO и серверную часть мне пришлось писать практически с нуля: сеть, систему навигации, коллизии, системы способностей и движения, систему ландшафта (на этом этапе некоторые мои знакомые шутили, что зачем мне вообще UE, раз всё пишешь сам) и кучу всякой-разной логики, которая уже не зависела бы от движка и нужна была игре.
В результате получились вот такие наброски:
Вроде уже не мало? Но то, что я описал, было сделано в первый год разработки. Тогда я думал: "о, ну всё, самое сложное сделано, скоро можно будет играть". Загвоздка была в том, что самой игры не было.
Спустя год разработки у меня уже были собственные сетевые технологии, сервер, огромное количество технических систем… Игрок при этом мог:
На этом список игровых возможностей заканчивался.
И вот тут встал вопрос: а что дальше то? У меня не было чёткого плана по реализации самого проекта, были только идеи. Я понимал, что в игре точно должно быть: динамические биомы и процедурная генерация объектов. Игроки будут добывать ресурсы, менять биомы и переделывать мир, который должен жить.
Поэтому я решил, эх, была не была, пилю механики дальше, наверно, что-то выйдет.
И процедурная генерация, кажущаяся на первый раз несложной, далась очень непросто. Даже простое дерево должно расти, цвести, плодоносить, стареть и умирать. И не просто в заданной точке, а в любой точке мира, где ему подходили бы условия.
Вот так выглядел рост деревьев и смена сезонов:
Дальше я занялся битвами. Мне всегда нравилась система битв в World of Warcraft: она с одной стороны была таргетная и без лишнего движения, с другой, имела большой потенциал в развитии.
На удивление, базовый набросок этой системы оказался очень простым, я не помню точно, но, кажется, что я сделал его меньше чем за неделю.
Вот так выглядела первая драка с кабаном:
А вот дальше была одна из самых скучных систем в моей жизни - система строительства и крафта. В ней не было ничего интересного, просто тонны if'ов, где и как можно что-то сделать, а где нельзя. Хотя настоящим кошмаром стала не программистская, а гейм-дизайнерская часть: десятки таблиц с кучей параметров, где что и как должно быть связано. В этот момент я наконец-то понял усталость дизайнеров с нашей работы.
Параллельно я прорабатывал концепцию мира: мне всегда хотелось скрестить космос со средневековьем. В конце концов я придумал концепцию - мир далёкого будущего, но сама планета "магическим" способом разрушает электронику.
Так родилась идея о крушениях космических кораблей. Игрок - заложник ситуации, попаданец в средневековье из далёкого будущего. У него есть знания, но нет возможности ими воспользоваться. А корабли других "неудачников" продолжают падать. Получилось очень удачное сочетание с динамическим ландшафтом:
Честно сказать - я очень доволен результатом. Это не была гладкая и спланированная разработка. Но для меня этот проект стал опорой - я очень многое узнал за эти три года и вырос в профессиональном плане.
Да и в целом это стало для меня невероятным приключением, результаты которого я хочу показать людям. Поэтому я планирую выпустить его бесплатным для всех желающих. Сейчас уже готова страница в Steam. Я буду рад услышать ваше мнение и критику о том, что нравится, а что вызывает сомнения.