Как я разрабатываю игру без опыта. Часть #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: )

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

77 показов
2.1K2.1K открытий
11 репост
26 комментариев

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

Ответить

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

Ответить

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

Ответить

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

Ответить

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

Ответить