НеДевЛог#1. Поделия новичка в Unreal Engine

Есть такая болезнь — хотеть делать игры. Когда-нибудь ей присвоят МКБ.
Вот я тоже инфицирован этой заразой. Никому не пожелаешь.Теперь я грежу корованами, которых можно было бы пограбить.
Но на самом деле нет. Почти нет.

Пару лет назад (или это уже было больше?) молодые и горячие с ДТФ собрались делать свою игру. Как это принято собралось с пару десятков интересующихся в Дискорде, попитчили свои идеи. И если вкратце — ничего из этого не вышло.
Однако была одна идея, которая меня зацепила и с того времени не выходит из головы.
Пользователь с ником GetToDaChoppa представил свою концепцию “девочка с большим мечом”.

Меч действительно очень большой. За авторством GetToDaChoppa.
Меч действительно очень большой. За авторством GetToDaChoppa.

У меня же была идея 3d-платформера с головоломками в сеттинге древней Месопотамии.
У других свои идеи были, конечно же.
Но как я и сказал — ничего не вышло.

Шли годы, я нарабатывал опыт в геймдизайне. Бесформенная идея туда-сюда формировалась в некое видение. Сейчас оно переливается в концепт-док. Но не будем о нём. У меня есть кое что получше концепт-дока для сегодняшего блога — геймфокус!

Линейная адвенчура от третьего лица с элементами платформинга, головоломками и простой боевой системой в сеттинге Древней Месопотамии.

Ваш геймфокус

И вот настал тот самый момент, когда всё же решился попрототипировать свой гештальт. Ведь чтобы проверить насколько твои идеи релевантны — их сначала надо проверить.

Есть идея — есть Анрил, подумал я. Блюпринты даны свыше именно для таких дурачков, как я.

Встречает он тебя так. Ничего не предвещает беды.
Встречает он тебя так. Ничего не предвещает беды.

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

Это выглядит даже забавно.

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

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

Просто делаем проверки
Просто делаем проверки
Уже определённо лучше. Но всё ещё выглядит несуразно даже для прототипа.
А здесь явно что-то пошло не так

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

Но как бы то ни было, боевую систему надо было проверять. Благо простых и тупеньких ботов у меня в избытке.

Играется это ещё ужаснее, чем выглядит.

Получив некий отрицательный результат как по “паркурингу”, так и боевой системе — пришлось всё выбрасывать и делать с нуля. Отрицательный опыт — он тоже опыт.
Не буду отнекиваться, что снова обратился к ютубу и гуглу в поисках различных решений на те проблемы, которые меня не устраивали. Я не то, чтобы программист, да и башка совсем не варит в этом направлении. Понять основы ООП — это одно. А вот как системно подойти к решению возникшей проблемы — это совсем другое.
Так или иначе я нашёл парочку неплохих гайдов и интегрировал их к себе в проект.

Этот вариант клаймбинга определённо выглядит лучше.

Одно из главных правил гайдов в ютубе — не копируй их целиком. Гайды по большей части служат некоей наводкой на правильный ход мысли, если у тебя вообще нет идеи как реализовать ту или иную механику. Любые готовые решения необходимо адаптировать под себя, особенно если они написаны тяп-ляп, лишь бы работало. А уж поверьте — они точно написаны тяп-ляп.
В любой момент "в гайде" может произойти вот такая несуразность, как на скрине ниже. В компоненте, и так уже привязанный к PlayerCharacter. И это в функции, которая будет вызываться каждый раз при начале пуша объекта персонажем. Но кто мешает получить ссылку в переменную на бегинплее один раз? Никто. Поэтому нужно в первую очередь осознавать что делают в гайде, а не копировать его в тупую.

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

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

Стейт-машина переписанной боевой системы. Всё ещё есть опция "пострелять мечом".

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

Топорная боевая система пока. Но намного лучше, чем было.

А вот что ещё остаётся — так это возможность “стрелять” мечом. В планах, естественно, более долгая перезарядка и невозможность использования меча во время этой самой перезарядки. И очень хочется реализовать механику, что, если меч после выстрела втыкается в определённую поверхность, — по нему можно взобраться. Губа не дура, словом.

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

Теперь мы Томб Райдер на минималках!

Подытожив всю писанину сверху — игры нет, даже прототипа. Это долгий итерационный процесс, особенно если ты новичок. Именно поэтому я не стал давать конкретные кейсы о чём игра и какие в ней планируются механики. Что толку о них разглагольствовать, если при процессе прототипирования многие из них уйдут под нож или будут сильно изменены. На текущий момент я исхожу из короткого геймфокуса.

Но если кому интересно на что игра похожа:

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

Сеттинг безымянной игры. Кому какое дело до названия, если игры ещё нет.

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

А на сегодня всё. Всех благ.

PS: GetToDaChoppa отзовись, если ты это читаешь. Твои концепт-арты я использовать не буду, без твоего разрешения. Они скорее для меня крепкий референс самой идеи.

НеДевЛог#1. Поделия новичка в Unreal Engine
1.5K1.5K показов
208208 открытий
3 комментария

Отличный девлог. Приятно разбавляет посты "ищукомандиров". Успехов в покорении творческих Эверестов во вражеском стане анрыловодов. о7

Ответить

Есть такая болезнь — хотеть делать игры.Лайк уже только за это.

Ответить

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

Ответить