Как я сделал свой движок для визуальных новелл на Unity

Зря.

Как я сделал свой движок для визуальных новелл на Unity Unity, Gamedev, Визуальная новелла, Разработка, Инди игра, Инди, Своя игра, Гифка, Длиннопост

Вот, кстати, оно

В общем, начнём с самого начала.

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

Идея была такова - я хотел сделать свою интерактивную историю про тестирование человека, аки портал, однако действие всё происходило бы в подсознании человека, всё так же в рамках эксперимента. Я хотел сделать игру 3д платформером от первого лица, но полностью выгорел, когда сделал физическое взаимодействие собъектами, саму локацию и пару механик. Этим же летом я плотно подсел на моды на Бесконечное лето, различные новеллы по типу Зайчика, Доки доки и прочую ересь, которую я лучше бы не читал. Меня зацепил формат интерактивных историй, но очень не понравилось, что большинство ВН - либо романтика, либо симуляторы свиданий. Я очень хотел сделать что-то более интересное для себя самого, при этом очень хотелось всё же выложить в стим, ведь я считал, что смогу игру сделать не хуже, чем современные ВН. Да, может, уровень мастодонтов я не переплюну, но в своей нише я, возможно, что-то и смогу.


О новелле


Позже, зимой 2023 я решил всё-таки реализовать свою идею, но не в виде игры, а в виде визуальной новеллы. Сюжет был всё тот же - эксперимент по перемещению жизни человека в его собственное посознание. Главный герой в ходе игры, по моей задумке, находит выход из самого себя, узнаёт, кто он, и, возможно, делает какие-то выводы. Ну либо жрёт сам себя изнутри.
Конечно, сюжет пришлось приземлить, 4 раза я переписал сценарий, каждый раз избавляясь от кринжовых моментов, ибо я постоянно рос и менял взгляды(сейчас мне 17, а подростковый максимализм прошел совсем недавно. Или не прошел)

Как я сделал свой движок для визуальных новелл на Unity Unity, Gamedev, Визуальная новелла, Разработка, Инди игра, Инди, Своя игра, Гифка, Длиннопост

Такая была графика в моей 3д игре White Room. Когда я ещё не решил её удалить и превратить в новеллу


Как мне пришла эта идея?


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


Ход разработки


Опять же начнём с самого начала, но уже другого.
Что из себя представляет визуальная новелла?
Просто текст, который можно перелистывать нажатием кнопки. Иногда делать выборы. Ну иногда ещё фоны менять. Музыку. Да и спрайты добавлять тоже надо. И изменяться они должны. И плавность должна быть. И эффекты должны быть какие-то. И условия должны как-то просчитываться. И сохранения должны быть. Ну, никуда не обойтись без истории текста. Да и скипать было бы прикольно. Мини игры, кстати, тоже были бы как раз кстати.

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

Итоги за первый день разработки
За первый же день разработки я закончил с механикой текста(анимация, персонажи, а также запись уже прошедшего текста в историю), а также структурой самого движка. По итогу механика текста выглядит так:

Как я сделал свой движок для визуальных новелл на Unity Unity, Gamedev, Визуальная новелла, Разработка, Инди игра, Инди, Своя игра, Гифка, Длиннопост

По итогу структура получилась весьма простой, кстати. Я решил реализовать всю структуру новеллы как один struct и сохранять его в json. Быстро, удобно, не лагает(почти). Итак, в самом начале у нас стоит ядро игры. Оно имеет основную инфу, включая название, персонажей, список прочитанного текста, прогресс и ещё по мелочи. Далее идут ветки. Ветка - это нить истории, по которой идёт человек. Форк - действия игры внутри этой ветки. Например, смена текста и музыки. Изначально мы начинаем всегда с первой ветки первого форка. После каждого клика мышкой мы перемещаемся на один форк дальше, и так до последнего. На нём уже будет либо выбор, либо какое-то условие, либо просто перемещение на следующую ветвь. Когда, например, мы выбрали какой-то вариант, мы перемещаемся на соответствующую ветку и начинаем опять с первого форка. Таким нехитрым методом(если я смог это нормально объяснить) я и реализовал структуру движка. Наверно, можно было проще, но я школьник, времени свободного много, поэтому имею право заниматься чепухой.

Как я сделал свой движок для визуальных новелл на Unity Unity, Gamedev, Визуальная новелла, Разработка, Инди игра, Инди, Своя игра, Гифка, Длиннопост

Нарисовал как смог

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

Если вам интересен ход разработки новеллы, добро пожаловать в телеграм
https://t.me/FreezyBench

Лига Разработчиков Видеоигр

6.7K поста22.2K подписчика

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"