Как я начинал делать 3д рпг игру
Привет! С весны 2022 года я разрабатываю 3д рпг игру на юнити и хотел бы поведать, что было сделано, с какими трудностями я столкнулся, а так же, что будет в дальнейшем!
Скучная тягомотина
Наверное стоит немного рассказать о себе, чтобы вы понимали, в какой атмосфере проходила разработка, а так же какие навыки у меня имеются и какими способами я решал те, или иные проблемы.
На момент написания статьи мне 19 лет. Интересоваться разработкой игр я начал еще в далеком 2012 году, когда мне было 10-11 лет.
На тот момент, кроме как посидеть пол дня и попытаться написать простенькую программу аля "Hello World!" - терпения не хватило, однако с течением времени идея создать собственную игру меня не покидала.
В году 2015 я заинтересовался рисованием, а позже и анимацией, постепенно развивая эти навыки. Так же у меня была какая-то база в 3д моделировании и скульптинге в Zbrush.
Что ж, перейдем наверное к самому главному в разработке почти любой игры — программирование! Долгое время я никак не мог подступится к этому страшному зверю, но в конце 2019, начале 2020 я сделал свою первую игру!
Представляла она простой кликер, в котором костылями я пытался реализовать различные механики.
Должен признать, понимания программирования на тот момент у меня не было, весь код я переписывал с туториалов, не особо задумываясь, как он устроен, зато, это дало мне первый толчок, после которого я постепенно углублялся в изучение C#!
Стоит еще сказать, что в 2021 году я так же заинтересовался Веб разработкой, а в большей мере веб дизайном и фронт энд разработкой, что дало мне какое-никакое представление о строении интерфейса.
Я делал много разных прототипов, но все они были либо в пиксель арт,
либо в рисованной от руки стилистике.
Одним словом, создавать игру в 3д было глупо! Но я начал.
Скучная тягомотина закончена! Да здравствует скучная тягомотина!
Фух! С прочей информацией разобрались, давайте наконец приступим к главной теме этой статьи!
Создав проект в юнити и назвав его "My Game" В первую очередь я создал небольшой уровень, с помощью ProBuilder.
После этого я добавил "игрока" и сделал управление от 3-его лица с использованием Cinemachine
Но управлять цилиндром не так уж и весело, по этому я нарисовал простенький концепт, который назвать таковым довольно сложно
Попытавшись сделать что-то адекватное в Zbrush у меня получилась такая модель(Которую позже я заменю)
Что ж, модель главного героя у нас готова, стоит начать делать механики. Первым что я сделал был инвентарь, который работал только с мышью, но из-за того, что я хотел сделать мультиплатформенную игру, мне нужна была так же поддержка геймпада.
Сначала я пытался адоптировать эту систему под работу с геймпадом,
но спустя 2 недели бестолковых попыток было принято решение переделать инвентарь, что к слову прошло успешно. Он не только начал работать с геймпадом, но и стал значительно проще, но от того не менее удобным.
По мимо инвентаря была сделана система боя, которую я так же в последствие переделал.
Когда с инвентарем было покончено(Это лишь его тестовый вид) я приступил к созданию диалоговой/квестовой системы.
Не сумев найти ни в ютубе, ни на форумах того, что бы подошло мне, я принял решение реализовывать эту систему самостоятельно. Перепробовав много способов и потратив 2-3 недели сидения на стуле по 12 часов в день и не понимания, почему ничего не работает, я таки сумел добиться более-менее сносного результата.
Основана система на Scriptableobject, в которой можно как добавлять простые диалоги, так и квесты с несколькими стадиями выполнения!
Квесты имеются и даже награды за их выполнение есть, но вот убивать простых балванчиков не очень-то и интересно, самое время позаботится и о врагах!
Первый вариант был выполнен в виде ненастраиваемых скриптов, из-за чего все новые механики для каждого типа врагов нужно было писать заново, что не очень-то и удобно.
Решение пришло случайно, на просторах ютуба был найден туториал по созданию "Древа поведений".
Благодаря чему, реализация, собственно, поведения для врагов начала выглядеть как набор логических операций, представленных "Нодами", что упрощает создание новых типов врагов и НПС.
Основные механики готовы, но вот графика оставляет вопрос, надо бы это исправить.
Стоит сказать, что у меня было определенное представление о том, как должна выглядеть игра, начать я решил с изменения модели игрока.
Я нарисовал такой концепт, отталкивался я от стиля "The legend of Zelda: BOTW" и "Genshin Impact"
Модель я на этот раз решил не скульптить, а сделать ее в Blender, так я не буду делать в 2 раза больше работы(сначала скульптинг, после ретопология) и лучше оптимизирую сетку полигонов
После создания модели, нужно ее оживить, раньше я делал анимации вручную, в том же блендере, но мой навык в этом не настолько хорош. По этому я решил отправится на Mixamo, где сделал риг модели и заанимировал ее
Персонаж готов, но вот у врагов до сих пор нет никаких моделей.
В моем представлении, базовые враги должны выглядеть как модели простых жителей этого мира, но искаженных чем-то вроде "порчи", по этому я нарисовал такой концепт.
Модель для врага я так же делал в блендере, но из-за двух пар рук, заанимировать ее в михамо проблематично, по этому я собрал всю волю в кулак и сделал анимации самостоятельно.
Персонаж и враг готов, самое время приступить к созданию окружения. Первое что я сделал - несколько видов камней с уже готовыми лодами, далее я создал смарт материал и затекстурил их
После камней я приступил к созданию деревьев, сначала я думал сделать их в "Хенд пейнтед" стиле,
но позже переделал их.
Камни есть, деревья тоже, нужна остальная растительность,
так же я сделал простенький шейдер ветра, благодаря которому мир ощущается более живым.
Вот почти и все, но...
Это почти все, что я сделал на данный момент.
Сейчас я прототипирую уровень для Демо версии игры, которую в последствии выложу на Itch.io и других инди площадках, а вот буду ли я продолжать работать над этой игрой зависит от того, как ее примут игроки.
В планах у меня сделать уникальный мир, объединивший в себе, магию, стимпанк и мифы различных культур.
Надеюсь вам было интересно читать эту статью, в которую я уместил примерно пол года своей жизни, а на этом у меня все.
Надеюсь еще увидимся!