Как я разрабатываю игру без опыта. Часть #3. Хроника I’m a King

1 часть

2 часть

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

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

Так как изначально планировалось много текста и диалогов для каждой линии истории, а это 3 разных выбора для старта игры (Наследник, Узурпатор, Основатель) — мне было жизненно необходимо куда-то все это записывать. Сначала я в течении дня все идеи записывал «на ходу» в заметки телефона, затем переписывал в Excel файл. Со временем писать в Excel стало неудобно из-за большого объема информации и разветвленной блочности с вариантами ответов. Тогда я начал искать на просторах какие-либо программы / сервисы где можно было бы все это удобно структуризовать и нарыл из того что мне более менее подходило вот это:

Однако у меня не получилось каким-либо образом удобно располагать там ветки «зависимостей», т.е. при принятии определенных решений в игре — можно наткнуться на последствия через много дней, некоторые даже ближе к концу. И в один прекрасный момент я наткнулся в блогах DTF на эту статью: https://dtf.ru/gamedev/104597-miro-kak-instrument-narrativnogo-dizayna. Это стало для меня настоящим подарком, т.к. Miro дает именно то, что мне нужно, а именно чистое огромное поле в котором ты делаешь, пишешь и располагаешь так, как удобно тебе (причем совершенно бесплатно).

Как я разрабатываю игру без опыта. Часть #3. Хроника I’m a King

На скриншоте один игровой день с включенными в него диалогами. Разноцветные облака диалогов — для каждого персонажа с вариантами ответов, варианты смертей в зависимости от ответа, а так же длинные пунктиры — влияющие на историю игры решения, переносящие в другие дни. А так как все ветки растут в прогрессии из-за увеличивающихся вариантов влияющих решений… без Miro уже не знаю как обходится.

Как я разрабатываю игру без опыта. Часть #3. Хроника I’m a King

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

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

Слева игра автора, справа моя:

Как я разрабатываю игру без опыта. Часть #3. Хроника I’m a King

Цветовая гамма была выбрана на основании игр Game Boy — 5 оттенков зелёного (меньше цветов — меньше деталей — меньше ошибок для рукожопа). И теперь встал вопрос — как-бы так, хотя бы удовлетворительно нарисовать в одной гамме без умения рисования вообще в каком бы то ни было виде? Ответ — нанимать художника или вперед в гугл «free game set creative commons».

За основу был взят данный ассет: https://pixelhole.itch.io/pixelholes-overworld-tileset, да и вообще многое было взято с https://itch.io/game-assets/free

Некоторые примеры:

Как я разрабатываю игру без опыта. Часть #3. Хроника I’m a King

Кое-что удалось нарисовать самому:

Как ни странно, но сначала я создал сцену игры в Unity, а затем уже только главное меню. Выбор оформления меню был простым — минимализм или минимализм. Не умеешь рисовать? Нет денег на художника? — минимализм. В итоге просто логотип, название и пункты меню.

И еще одно. Перерисовывать и менять цветовые гаммы с 10-15 цветов на 5 руками очень сложно и долго. Не так сложно конечно как рисовать самому, но для меня и это очень сложно. Выглядело это примерно так:

Для упрощения процесса я нашел программу. Ну не сам нашел, а видео нашел https://www.youtube.com/watc? v=AxMwBdTmzXw, ну а там уже показывали программу Gale. Возможно есть и другие программы для таких дел, но я нашел эту и больше не искал. Сам процесс очень прост — открываем в программе нужную картинку, кликаем в верхнем меню All Frames — Color Deph — Type B — OK и теперь выбирая справа вверху в палитре нужный цвет изображения можно его менять на свой:

После построения сцен игры и главного меню, пришла пора писать код. Ну как писать… искать как его написать:)

Писать код для карты особо не приходилось, потому, что в основном все анимации заранее записаны в фреймы изображений, а движения можно с анимировать на ходу в Unity простой записью анимации, а остальные действия — это просто включение и отключение объектов на карте такими действиями как: object.SetActive (true / false) для выполнения и !object.activeInHierarchy / object.activeInHierarchy для условий. Основной код нужен для диалогов и запуска определенных наборов в зависимости от игрового дня т.к. дни могу сокращаться от определенных действий, а так же для запуска событий, таких как погодные явления, смерти, эффект нового дня.

Первым делом я хотел реализовать эффект печатания текста диалогов. Долго искать не пришлось — нашел на знакомом и засмотренном канале Code Monkey https://www.youtube.com/watc? v=ZVh4nH8Mayg и по аналогии с примером в видео я начал писать весь текст диалогов в код.

Код для дрожания камеры во время землетрясения я нашел тоже одном из моих сохраненных каналов Brackeys https://www.youtube.com/watc? v=9A9yj8KnM8c

Вест остальной код состоит из функций нажатия кнопок. Просто пишется функция private void Button1(){… } и в неё записываются все нужные действия при выполнении условия — запуск анимации, запуск печатания заданного текста, добавление глобальным переменным значения (если какое-то влияние на следующие дни происходит).

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

Сама функция вызывается в функции Start.

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

Как я разрабатываю игру без опыта. Часть #3. Хроника I’m a King

Вот такой простой и топорный код.

Господа разработчики и программисты — не ругайте сильно. Я просто показываю пример, для тех, кто хочет начать учиться и вот сейчас сразу что-то сделать:)

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

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

Новый вариант меню (видео с саундтреком главной темы игры). Добавлены анимации и скрытые ветки начала игры.

Новый вариант игрового поля, предыдущий вариант выше в посте.

Кстати в названии имеется некая игра слов. Так как это, как говорят «продукт», сделан с нуля и не умелым, то название I’m a King, можно так же прочитать как I making: )

Моя огромная признательность Вам за то, что прочитали этот пост до конца!

8484
26 комментариев
500 ₽

Спасибо за статьи, очень вдохновляюще!

4
Ответить

1. GetComponent Аниматора, всё же, лучше один раз в Эвейке вызывать.
2. Кучу if-else заменить на switch.

6
Ответить

Андрюха, какие у тебя есть проекты? Хочу посмотреть. 

1
Ответить

1. Спасибо, сделаю.
2. В новой версии игры через свич и пробую:) спасибо

1
Ответить

Andryukha, what projects do you have? I want to see. thx

Ответить