Anilarion

Anilarion

Пикабушник
Дата рождения: 6 декабря
15К рейтинг 33 подписчика 2 подписки 10 постов 4 в горячем
Награды:
10 лет на ПикабуС Днем рождения, Пикабу!
339

Впихнул невпихуемое: как я сделал MMORPG-песочницу в одно лицо

Представьте: вы, житель прекрасного будущего, оказались на другой планете, застрявшей в средневековье. В ваших руках целый мир, который можно менять по своему усмотрению. Но есть нюанс, даже два: здесь не работает электроника, а все остальное население планеты -- такие же счастливчики-попаданцы.

Я давно хотел сделать игру своей мечты. К сожалению, в моих любимчиках были Wurm Online и World of Warcraft. Поэтому вместо нормальной игры, начал делать MMO RPG.

Большинство знакомых сразу мне сказали что-то типа "MMO в соло? Удачи…" или "делай лучше мобилки какие-нибудь". И действительно, начать разрабатывать MMO в соло - это было не просто смело...

Я хотел, чтобы в игре сочетались клёвые механики выживания и свободы действий из песочниц, но с сохранением прогресса и динамики олдскульных RPG, эдакий World of Minecraft.

Наконец-то я готов показать вам, что же у меня пока получилось.

В общем, получилась такая странная химера с большим количеством возможностей: можно менять ландшафт и биомы, строить поселения, растить огород, торговать, при желании – воевать с другими и т.д.

Меня вообще всегда привлекали живые изменяемые миры - что-то, в чём можно оставить след. А для этого мир должен быть процедурно генерируемым. При разработке в этом оказался и плюс, и минус.
Плюс: не нужно расставлять все объекты на сцене вручную, что экономит время.
Минус: написать логику, по которой всё расставится само оказалось охренеть как сложно.

Но начинал я не с генерации. Для меня всегда самым страшным и сложным казалась сеть. И не зря - на её первую версию ушло больше трёх месяцев.

Выглядело это вот так:

Но, наверно, стоит немного сказать, на чём я разрабатывал игру, что получилось взять, а от чего пришлось отказаться. Я разработчик на Unreal Engine 5 (и на работе тоже).
Из плюсов UE – он умеет делать хорошо и красиво из коробки, имеет огромные возможности для создания игр и бесконечную библиотеку, где можно что-то купить (я покупал модельки и звуки)
Из минусов – его стандартные решения плохо подходят для MMO и серверную часть мне пришлось писать практически с нуля: сеть, систему навигации, коллизии, системы способностей и движения, систему ландшафта (на этом этапе некоторые мои знакомые шутили, что зачем мне вообще UE, раз всё пишешь сам) и кучу всякой-разной логики, которая уже не зависела бы от движка и нужна была игре.

В результате получились вот такие наброски:

Вроде уже не мало? Но то, что я описал, было сделано в первый год разработки. Тогда я думал: "о, ну всё, самое сложное сделано, скоро можно будет играть". Загвоздка была в том, что самой игры не было.

Спустя год разработки у меня уже были собственные сетевые технологии, сервер, огромное количество технических систем… Игрок при этом мог:

  • копать

  • не копать

На этом список игровых возможностей заканчивался.

И вот тут встал вопрос: а что дальше то? У меня не было чёткого плана по реализации самого проекта, были только идеи. Я понимал, что в игре точно должно быть: динамические биомы и процедурная генерация объектов. Игроки будут добывать ресурсы, менять биомы и переделывать мир, который должен жить.

Поэтому я решил, эх, была не была, пилю механики дальше, наверно, что-то выйдет.

И процедурная генерация, кажущаяся на первый раз несложной, далась очень непросто. Даже простое дерево должно расти, цвести, плодоносить, стареть и умирать. И не просто в заданной точке, а в любой точке мира, где ему подходили бы условия.

Вот так выглядел рост деревьев и смена сезонов:

Дальше я занялся битвами. Мне всегда нравилась система битв в World of Warcraft: она с одной стороны была таргетная и без лишнего движения, с другой, имела большой потенциал в развитии.

На удивление, базовый набросок этой системы оказался очень простым, я не помню точно, но, кажется, что я сделал его меньше чем за неделю.

Вот так выглядела первая драка с кабаном:

А вот дальше была одна из самых скучных систем в моей жизни - система строительства и крафта. В ней не было ничего интересного, просто тонны if'ов, где и как можно что-то сделать, а где нельзя. Хотя настоящим кошмаром стала не программистская, а гейм-дизайнерская часть: десятки таблиц с кучей параметров, где что и как должно быть связано. В этот момент я наконец-то понял усталость дизайнеров с нашей работы.

Впихнул невпихуемое: как я сделал MMORPG-песочницу в одно лицо

Параллельно я прорабатывал концепцию мира: мне всегда хотелось скрестить космос со средневековьем. В конце концов я придумал концепцию - мир далёкого будущего, но сама планета "магическим" способом разрушает электронику.

Так родилась идея о крушениях космических кораблей. Игрок - заложник ситуации, попаданец в средневековье из далёкого будущего. У него есть знания, но нет возможности ими воспользоваться. А корабли других "неудачников" продолжают падать. Получилось очень удачное сочетание с динамическим ландшафтом:

Честно сказать - я очень доволен результатом. Это не была гладкая и спланированная разработка. Но для меня этот проект стал опорой - я очень многое узнал за эти три года и вырос в профессиональном плане.

Да и в целом это стало для меня невероятным приключением, результаты которого я хочу показать людям. Поэтому я планирую выпустить его бесплатным для всех желающих. Сейчас уже готова страница в Steam. Я буду рад услышать ваше мнение и критику о том, что нравится, а что вызывает сомнения.

Ссылка на Steam: https://store.steampowered.com/app/3986440/DIElectric_World

Показать полностью 1 6
8

Закрытые комменты и их проблемы

Только-только узнал о такой вот новой фишке:

Закрытые комменты и их проблемы

Уважаемые @moderator, раньше мы могли вызывать вас на баяны или запрещенный контент. А теперь, чтобы сделать подобное, придется подписываться на не пойми что. Не кажется ли вам, что вас ждет куда более широкий, чем клубничный, бунт? Представьте себе эти тысячи аккаунтов и сообществ, которые будут постить в ленту порнографию, или ещё что-нибудь похуже. И вам придется в ручную отлавливать все эти посты, потому что вас никто не вызовет. Не кажется ли вам, приняв во внимание такой аргумент, что вам стоит уже свернуть этот эксперимент, как неудавшийся?

176

Моя стратегия на Unreal Engine

За 3 месяца, которые я ничего не писал, игра успела выйти в релиз и даже получить первое крупное обновление. Так что теперь она уже вполне играбельна, и для тех, кто хочет попробовать, я оставлю ключи в конце поста. Но, обо всём по порядку.

Сначала я раздал её своим друзьям, и они нашли довольно большое количество багов. И казалось, что это всё, что можно найти. Я выпустил игру без каких-либо сомнений. Она висела в Steam, кто-то её даже покупал. Но потом с ней случился один мой дотошный знакомый. Выглядел он примерно как Карлсон:

У него был талант. Он делал вещи странные и непредсказуемые, но умудрялся находить ошибки. Я понял, что проект требует серьезной доработки и начал всё исправлять. И только я поправил почти все ошибки, мое внимание обратили на фундаментальную проблему игры - сама карта пустела. В Цивилизации есть варвары, в Варкрафте и Героях - нейтральные лагеря. А у меня этого не было, и единственной причиной строить армию был ваш соперник. Одна ошибка, и игрок, строивший армию, безнадежно отставал от того, кто развивал экономику. И я решил это исправить.

Я добавил в игру лагеря нежити и теперь игрок, который рано захватывает карту, имеет возможность получить особые преимущества.

За победу над нежитью вы получаете трофеи, которые слегка компенсируют ресурсы, потраченные на армию, но дополнительно дают случайные технологии или уникальные дары.

Кстати, о дарах. Старая система предлагала неслучайный выбор из 2/4/6 даров, и всего один негативный эффект, что было достаточно скучно. Новая система дает на выбор несколько случайных даров, каждый из которых имеет случайный негативный эффект. Теперь вы видите направленность негативного эффекта, но не знаете точно, что он принесёт. Это должно улучшить вариативность игр.

Как и обещал, ключи (пожалуйста, не забудьте отписать, какие ключи забрали, чтобы другим было проще):
1) 49ZW8-ECLJV-GC6HW

2) JEJDA-4YK73-TG2QC

3) Z3JPW-KQMV9-EZTWL

4) 4L556-JYG55-HAEQV

5) BIIPG-RT6KE-9IVKC

6) 7VR6E-GVX8F-03W4I

7) 23E76-RAEP5-HK23N

8) 7N47F-XXLER-48R7V

9) Q3NIV-0EJZN-ZLM6P

10) BMH4F-BZ4J3-DV907

11) 2ZNBF-2PCKF-7TCA2

12) NZT5T-PBJTW-80JD0

13) YI6VY-7MYLV-CFD0V

14) TKDVQ-JLLHN-R7VMW

15) LEXYX-WH4MQ-GTJWC

16) GG3PY-EMTHI-I83EP

17) RN94H-VE2VQ-JDX5B

18) I2BRW-AG5QC-HB5KL

19) GNEVB-LMN9X-L6ITI

20) HJ6CR-J7XW0-QGMAG

И ссылка на Steam: https://store.steampowered.com/app/1767780/Deformity/
Показать полностью 3
54

Моя пошаговая стратегия на Unreal Engine ч.2

В Моя пошаговая стратегия на Unreal Engine ч.1 я начал рассказывать о реализации кода, но совсем забыл рассказать про мир игры и концепции.

Немного лора:

У каждой расы в Deformity есть свой главный грех. Именно он мотивирует расы на дурные поступки. По нему демоны находят "своих" и предлагают помощь в обмен на веру и поклонение.
Феугея - континент-родина эльфов. Они появились и жили на нем сотни тысяч лет в одиночестве. Считая себя единственным оплотом разума в мире они всё сильнее растили Гордыню.
Гномы приплыли на континент пару тысяч лет назад. Когда-то огромные, под 3 метра ростом воины, в постоянной нехватке привычной еды и ресурсов, мельчали и воспитывали в себе Жадность.
Люди - самая молодая раса, приплыла на континент около пятисот лет назад. Агрессивные охотники, эксплуатирующие природу, они всё ещё не утратили звериный Гнев.
С момента прибытия людей 3 расы жили в мире, но гномы чувствовали угасание своей расы, поэтому методично планировали войну.

Ключевой механикой игры являются демонические дары. У каждой расы есть свой набор даров, связанных с их грехом. Так, например, выглядят дары людей:

Приняв дар единожды, раса со временем будет все сильнее полагаться на помощь своего покровителя, и постепенно терять свои собственные силы. Поэтому любая империя, заключившая договор с демоном, постепенно придет в упадок, но может получить значительное преимущество в ближайшей войне. Дары делятся на 4 типа:
1. Общий дар на империю (1 из 2 на выбор) - он же её проклятье. Ограниченно повышает одни характеристики, и бесконечно долго уменьшает другие. Остальные дары ничего не уменьшают.
2. Слабые дары для всех войск (2 из 4) - могут немного изменить стиль игры.
3. Сильные дары для героя (3 из 6) - значительно усиливают героя, позволяя переживать столкновения больших армий и наносить большой урон.
4. Очень сильные дары для конкретных видов войск (2 из 4) - позволяют значительно изменить баланс юнитов, усилив их неспецифическими функциями. Так например у гномов:

Конница почти перестанет страдать от пик, но всё ещё будет страдать от магии. А эльфы:

Смогут прожигать тяжело бронированные отряды.
За счёт этого можно будет удивлять других игроков неожиданными композициями войск и тактиками.

P.S. Хотя на счёт других игроков - после своего первого поста я дал своим друзьям бета-версию, и сел наблюдать за их сражением в дискорде. Помимо кучи мата из-за специфического баланса, я услышал от них жалобы на множество ошибок и недоработок. Поэтому последние два дня только и делал, что исправлял их) Это был мучительный кодинг-марафон с абсолютно неожиданными развязками. Это то, что они нашли за пол дня игры:

Единственное, что радует - баги встречаются всё реже) Я дофикшу их и обязательно вернусь с рассказом о реализации какой-нибудь системы)

Показать полностью 5
241

Моя пошаговая стратегия на Unreal Engine ч.1

Вот уже почти год, как я работаю над своей собственной стратегий, но никак не решался показать её людям. Это мой первый проект и меня постоянно терзают сомнения, сможет ли он кому-то понравится. Но вот с чего всё началось.

Я очень люблю стратегии, и переиграл в огромное количество, но всё время меня разрывали две крайности - RTS и пошаговые стратегии.
RTS крайне привлекательны внешне и очень динамичен. Многие из них связаны с механиками анти-юнитов, интересной экономической системой. Но что меня всегда в них убивало - постоянная необходимость кликать. И чем выше уровень игры, тем быстрее и больше нужно контролировать юнитов, в идеале - каждого юнита под вашим руководством. На высоком уровне обычно почти все стратегии уже известны, и людям остается только применить шаблон и перекликать оппонента.
С другой стороны пошаговые стратегии. Вы вдумчиво выстраиваете свою империю и неспешно сражаетесь с соперником. Прекрасные игры, для моих кривых рук подходящие значительно больше.  Но вот их длительность - она действительно мешает. Хочется прийти с работы, сыграть 1-2 игры и расслабиться. В тоже время такие великолепные игры как Civilization и Stellaris растягивают сессию 8-10 часов на несколько дней. Многие такие сессии не доигрываются и часто не хочется стартовать новые с этим понимание.
Поэтому я попытался собрать всё лучшее, что мне нравится в играх в одну стратегию. Сделать её с интересной экономикой и системой боя, но в то же время ограничить время сессии до 1-2 часов. И с этими мыслями я начал свой проект. Моими кумирами стали:
Age of Empies 2: Невероятно крутая экономическая система и механика анти-юнитов.
HoMM: На мой вкус лучшая тактическая система.
Civilization 6: Строительство на карте мира, влияющее на бой и технологии.
Nothgard: Отличная система секторов с ограниченным строительством.

Первое, с чего я начал - генерация карты. Я отказался от генерации с помощью шумов из-за подлинной случайности, и начал делать свою псевдослучайную систему генерации карты. Это было хождение по мукам, но в конечном счёте явило собой систему, которая почти случайным образом заполняет несколько ячеек двумерного массива индексами, а затем они "растекаются" до встречи друг с другом. Ячейки одного индекса - это Сектор.

Здесь правда уже немного более поздний скрин, но по факту - каждый сектор заполняется одним или двумя ресурсами, которые "растекаются" на некоторое количество клеток.
Особую сложность представил собой алгоритм поиска пути и отсечения лишних секторов. Т.к. в моей игре нельзя было ходить через лес и воду - пришлось использовать немного измененный алгоритм Дейкстры. Например - Если у сектора только 1 сосед, и тот отделен лесом и водой - нужно прорубить путь друг к другу.

Чтобы оптимизировать алгоритм для генерации, пришлось помучаться, но в итоге даже очень большая карта генерировалась за 10-15 секунд на моем ведре.
Саму систему боя я решил организовывать между двумя секторами. Каждый игрок или команда, выставляют своих юнитов в пределах заданных клеток. Чтобы это нормально работало в мультиплеере, пришлось поделить сектор на количество игроков в нём.

Вроде всё работает верно. Осталось только насадить поверх карты растений, заменить текстуры и получить уже неплохой вид)  Хотя была ещё одна деталь, я хотел, чтобы карта выглядела рвано, поэтому просто удалил крайние сектора, чтобы получить неровный край.

Правда потом я заменил большую часть текстур, чтобы выглядело красивее)
Вроде пост получился уже довольно длинным, и наверно будет лучше, если я расскажу о других аспектах разработки в следующей части)

Показать полностью 4
2

"Внимание! В здании пожар!"

Сегодня был в одной из московских поликлиник. Я сидел в очереди, когда раздался громкий голос "Внимание! В здании пожар! Просьба покинуть здание через ближайший выход!" В здании сильно пахло горелым и шел небольшой дым.

Я сразу же начал снимать реакцию людей на данное происшествие. "Люди бросают вещи, кричат, что не хотят умирать, в панике бегут к выходу" - подумал я. Но нет. Всё было значительно интереснее.

Что же, мы живем в России, и тут людей не напугать такими вещами. Они пришли за бесплатной медицинской помощью, и они получат её, живыми или мертвыми.

"Внимание! В здании пожар!"

P.S. Всё обошлось - оказалось, что в подвале рабочие варили трубы.

Показать полностью 1

Кулинарное поздравление с 8 марта

Решил я поздравить своих родных с 8 марта и приготовить салат цезарь. Ну и запилить сюда рецепт. Для салата я использовал:
Салат айсберг

Куриные бедра
Помидоры черри
Багет
Сыр пармезан
Оливковое масло
Яичные желтки
Французская горчица

Лимон
Анчоусы

Чеснок
Начал с того, что нарезал багет кубиками, положил в пакет. В отдельной чашке смешал оливковое масло и выдавленный чеснок. Залил масло в пакет, хорошо потряс и выложил на противень:

Сушил в духовке на минимальной температуре.
Дальше я разделал и нарезал куриные бедра на небольшие кусочки, чтобы в них не было хрящей жил. Обжаривал на небольшом количестве масла под крышкой посолив и поперчив. Главное было не пересушить курицу. Затем я выложил курицу на салфетки, чтобы стекла лишняя жидкость.

Дальше я приступил к самому главному. Приготовление соуса. В широкой чашке (если будете делать - не используйте узкую. Соус будет густым и блендер будет мешать воздух) я смешал 3 желтка, 3 чайных с горкой ложки французской горчицы, сок половины лимона, 2 столовых ложки оливкового масла, 5 крупных филе анчоуса, около 40 граммов пармезана, 2 зубчика чеснока, пол чайной ложки соли и пол чайной ложки сахара.

Хорошенько взбил ингредиенты блендером. Дальше я вливал масло и взбивал до тех пор, пока соус не стал густым. По консистенции он должен быть примерно как не слишком густая сметана.

Дальше промыл, порезал салат и положил просушиться на салфетку. Помидоры черри порезал на 4 части. Ну вот и всё. Осталось только собрать салат.
Выложил айсберг в пару слоев на тарелку. Сверху положил кусочки курицы, черри и сухарики. Взял овощечистку (а вы думаете зачем она ещё нужна?) и сверху посыпал салат пластинками пармезана. Ну и конечно полил сверху соусом. Блюдо готово.

Пользуясь случаем хочу поздравить всех женщин с вашим международным днем и пожелать больше приятных сюрпризов)

Показать полностью 5

Проблемы с Youtube

Сегодня зашел на Youtube и обнаружил новый дизайн.

Проблемы с Youtube

Раньше рекомендуемое отображалось в аккуратной таблице с 10-12 видео, но теперь это больше похоже на издевательство, на котором невозможно найти интересное рекомендуемое. Если кто-нибудь столкнулся с похожей проблемой, буду крайне признателен за описание её решения. Большое спасибо.

Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества