9 сентября 2023 9.09.23 10 4240

Как я сделал визуальную новеллу в Discord

+21

Или как её некоторые назвали — интерактивную сказку.

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

*Если администрация stopgame посчитает это просто рекламой, то, пожалуйста, не удаляйте весь блог, а только ссылку. И если это нарушает правила сайта, то я тогда отдельно выложу ее чтение/прохождение на ютуб.

https://vk.com/club213729881?w=wall-213729881_124

**Ссылка на вк, так как ссылку напрямую на Discord, как я понял, прикреплять сюда нельзя.

Приятного чтения тем, кто будет её читать.
Приятного чтения тем, кто будет её читать.

0. Вступление

Я очень люблю решать разного рода задачки. Будь то это творческие задачи или задачи технического характера. Одна из таких задачек однажды возникла у меня в голове, когда я сидел на сервере одного хорошего человека.

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

Это не было просто.

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

Сам по себе, я совсем не разработчик, а DevOps, который если что-то и делал (на момент создания игры по крайне мере), так это запускал несколько контейнеров и немного тыкался в C#. Так что создать игру, с маленькими навыками в программирования для меня было весьма интересным квестом. Я пошел подробнее осваивать C#.

P. S. Да, я знаю о таких инструментах как о RenPy. И я знаю, что создать новеллу на rpg maker намного проще. Но мне просто захотелось создать что-то хорошее для людей внутри сервера :)

Хороший все таки язык.
Хороший все таки язык.

1. Сюжет

«Приключение принцессы Сахарок» — это небольшая, немного детская сказка (примерно на 10-15 минут), в которой Сахарок хочет найти себе разноцветный дворец.

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

Честно говоря, первое о чем я думал при создании это не сюжет, а то, возможно ли её вообще создать в похожем на новеллу виде. Мне нужна была очень небольшая история, которая бы заинтересовала человека. Тогда я стал подбирать идеи, что это может быть. Взгляд пал на сказки, так как сказки — это как раз что-то небольшое, но (по крайней мере для меня) интересное. Их все знают и все читали.

Так как чукча совсем не писатель, то написать даже маленькую историю было сложно. Ведь единственное, что я писал за последнее время — это инструкции о том, как и что запускать (будь то программы или просто какие-либо устройства). Кто же знал, что писать инструкции и сюжеты это разные вещи.

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

2. Программный код

Мне все говорили, что если хочешь научиться программировать, то начни с бота, ведь это легко и просто. Но это не совсем легко и просто. Брать за основу бота библиотеку C#, у которой не самая понятная инструкция и по которой практически нет уроков занятие интересное, но затруднительное.

Примерно все время его создания я чувствовал себя примерно так.
Примерно все время его создания я чувствовал себя примерно так.

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

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

Пример того, как это вообще выглядит. Бота кстати зовут просто Чоко :)
Пример того, как это вообще выглядит. Бота кстати зовут просто Чоко :)

В общем, настроить фронт оказалось достаточно понятно. Но вот с логикой бэк енда и взаимодействия кнопок я самостоятельно не справлялся, поэтому попросил помощи одного из товарищей. Вадим, еще раз спасибо тебе огромное. С ним мы настроили интерактив и подключение к БД, из которой Чоко брал уже сам текст.

Когда я уже настроил всю основу под конец я добавил логи как в сам discord, так и в терминал. С помощью них я отслеживал нажатие кнопок, ошибки, ну и самих людей, кого заинтересовала новелла.

И нет, в открытый доступ я код не выложу. Ведь даже с учетом помощи, он пока что страшненький.

3. Картинки

Это же визуальная новелла в конце концов, а я у мамы по хобби художник. Так что я начал думать как нарисовать кучу картинок, но при этом не убить свою половину жизни на них.

Для референсов я использовал кучу сгенерированных AI изображений, а также просто картинок из интернета.

Стилизацию для новеллы я выбрал в виде «детских рисунков карандашом», где в основе брал скетчи, а потом просто чистил их.

Цвета выбраны тоже достаточно простые (примерно 4 на картинку), чтобы не нагружать восприятие.

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

Всего вышло ~37 картинок CG и 14 аватарок персонажей. На них ушла неделя моего отпуска.

Облака на самом деле вкусные.
Облака на самом деле вкусные.

4. Итого

В итоге спустя 2,5 месяца работы, в виде написания сценария, кода, рисования рисунков, тестов и настройки сервера я наконец-то выложил новеллу.

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

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

Спасибо за чтение блога.
Спасибо за чтение блога.

Лучшие комментарии

В целом классная задумка, мне понравилось, но в новеллах обычно присутствует саундтрек который является доп. инструментом для управления настроением игрока, чего в этой нет. Может быть зайду на ваш сервер и пройду это новеллу. (У меня в тех же цикадах время в Steam вроде как уже перевалило за 100 часов, бесконечное лето проходил 8 и Любовь-Деньги-Рок-н-Ролл в VK Play за 40 где-то)

С музыкой я понимаю, что выходит беда(
Максимум, что приходит на ум — это отдельно заливать на юутбе какие-нибудь треки и включать их задним фоном, что я, наверное, и сделаю при следующей новелле. Если у меня на это хватит сил, времени и терпения

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

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

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

Я понимаю. Но пока в голову ничего более не пришло.
Была ещё идея посчитать ~время всей новеллы и под ближашие главы/события менять треки в одном аудио. Но это мазохизм. Так работать оно нормально не будет.

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

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

Тут проблема в том, что треки должны идти индивидуально для каждого в реальном времени. Возможно, стоит создать «личное внешнее радио» или типа того. Которое бы к примеру с 1 по 8 слайд транслировало обычную музыку, а на 9-10 делало «эффект затухание звука». Тогда на 11 слайд была бы тишина и с 12-13 снова затухание, а потом нормальная музыка.

Но это все конечно было бы внешним каким-либо ресурсом.

Мне даже описать это сложно если честно. Как это настроить, я тем более себе не представляю.

Так и не понял картинки сгенерированы или нарисованы на основе сгенерированных.

Читай также