Как я разрабатываю игру без опыта #5. Переработка дизайна и механик

- Зачем ты показываешь свой код всем идиот, твою игру взломают!?

- Ахаха, если взломают - значит игра хоть чуть-чуть, но успешна и стоит усилий взлома!

Часть 1, Часть 2, Часть 3, Часть 4


- Статистика страницы игры в Steam в конце поста.


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


В том числе старался больше работать потому, что игра должны была выйти в Steam еще 19го марта. А вспомнил я об этом только 18го марта днем - как же я пере**ался. В панике начал писать в поддержку с просьбой отодвинуть срок выпуска, особо без надежды, так как отвечает поддержка не всегда сразу. Однако мне повезло и мне ответили через 4 часа с одобрением на перенос срока выпуска игры. Было бы довольно плохо, если люди купили игру, а там одно меню и все...


И так. Что мы имеем спустя 10 дней "работы":

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

Что касается части механик игры:

1) Строительство объектов вынесено из диалогов в отдельный пункт меню "Строительство". Чтоб не отвлекать игрока от основного повествования.

2) Добавлен новый ресурс и способ добычи - Камень. Необходим для ремонта поселений, а так же для строительства особой защиты от бури.

3) На рассмотрение добавлен новый ресурс - войска/стражники. Для совершения нападений на соседние королевства, а так же для разбавления механики защиты короля от покушений (если мало защитников осталось после войн - защитить короля они не смогут в определенных случаях)

3) 2 варианта защиты от непогоды - постоянная и дорогая, одноразовая и дешевая (вместо одного).

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

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

6) Возможность разрушения построек с целью получения золота. (Единственный возможный вариант конвертации ресурсов в золото)

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

9) Возможность строительства объектов добычи еды и воды внутри селений для исключения затрат ресурсов на строительство объектов добычи за пределами селений и / или увеличения объема добычи.

10) Ограниченный выбор на добычу камня или золота - всего 5 шахт, но что они будут добывать, зависит от выбора игрока.

11) Добавлена возможность получения золота посредством взимания налогов с поселений, помимо его добычи в рудниках, взимания штрафов с преступников и пошлин с торговцев.

Так выглядит игровой интерфейс в итоговом варианте:

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

Так же, слегка изменилась цветовая палитра. Добавлено два полутона для большего разбега в детализации (самому смешно) объектов. Точками помечены новые цвета в палитре.

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

Кстати, по какой-то причине меняется гамма при сохранении изображений в Photoshop. Два одинаковых дома покрашены одинаково и выведены в PNG, но при повторном открытии файла и повторном перекрашивании этими же цветами - гамма отличается в итоге (более бледной становится).

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование
Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

Вот список всех используемых наборов "асетов" в игре с ссылками на них:


1) Дома, лесопилки, горки камня и слитков у рудников, тележки рудников, мельницы, колодцы, мосты, рыбные станции, лодки, трава, дороги - PixelHole https://pixelhole.itch.io/pixelholes-overworld-tileset

2) Факелы в поселениях - OcO https://oco.itch.io/medieval-fantasy-props-pack

3) Заборы поселений - rowdy41 https://rowdy41.itch.io/small-forest

4) Скалы, шахты, ступеньки - finalbossblues https://finalbossblues.itch.io/dark-dimension-tileset

5) Защита от бури постоянная - Jestan https://jestan.itch.io/classic-rpg

6) Защита от бури временная - Arktentrion https://arktentrion.itch.io/2d-rpg-kit-the-game

7) Деревья - ansimuz https://ansimuz.itch.io/patreons-top-down-collection

8) Вода - Szadi art. https://szadiart.itch.io/craftland-demo

9) Портреты персонажей - Exuin https://emily2.itch.io/pixel-portraits-32x32

10) Эффект строительства - ansimuz https://ansimuz.itch.io/explosion-animations-pack

11) Иконки ресурсов - Kyrise https://kyrise.itch.io/kyrises-free-16x16-rpg-icon-pack и VECTORPIXELSTAR https://vectorpixelstar.itch.io/food

12) Кирпичная кладка по контуру диалога - Alcoholism https://alcoholism.itch.io/dark-castle-tileset

13) Шрифт (на данный момент) - Poppy Works https://poppyworks.itch.io/silver

14) Музыка - Tim Beek https://timbeek.itch.io/royalty-free-music-pack


Все остальное (очень малое) было собственноручно и мучительно прорисовано и анимировано.

Еще, постигла печальная участь всю сюжетную часть игры. Miro мне знатно так подкинул кучу за шиворот. Решив делить один огромный скрипт на части - я его просто стал вырезать куски и подвязывать с другими файлами скриптов соответственно удалив весь текст кроме стартового диалога. И вот открываю я Miro чтоб начать переносить диалоги по новой как вижу...

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

Окей думаю я, вперед, обновляйся.

Обновился...

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

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

Теперь о коде игры. Господа программисты и разработчики, вэлком унижать автора :)


Все таки начал делить один большой скрипт на составляющие. И теперь это аж 11 файлов скриптов :)

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

Но по порядку с главного меню:


В самом меню ничего сверхъестественного несколько кнопок и простых анимаций движения объектов и один скрипт на весь функционал.

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

И соответственно скрипта с методами с запуском этих анимаций в событии нажатия соответствующих кнопок. А так же для кнопок выхода из игры метод Application.Quit(); и для запуска игры в методе Update условие - при появлении панели на позиции 0, запуск сцены игры методом SceneManager.LoadScene();

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

Если кому-то будет нужна / интересна информация о создании кнопок, простых анимаций изменения состояния, добавления функций при нажатии кнопок - напишите, я распишу отдельно подробно.

Основной код в скрипте главного меню отведен для меню настроек - выбор языка, разрешения экрана, громкости музыки и эффектов. По этому пункту очень подробно расписано тут https://www.red-gate.com/simple-talk/dotnet/c-programming/how-to-create-a-settings-menu-in-unity/ В принципе весь код для меню настроек я взял оттуда, только еще не разобрался - почему в списке всех доступных разрешений, все пункты дублируются. Есть мысль попробовать перенести цикл в метод Awake() вместо Start(), но это позже.


Теперь то, что успел накодить с игровым процессом


1) С конкретно диалоговым окном и кнопками ответов ситуация как раньше - весь текст в коде, метод нажатия кнопки получает в переменную текст этой кнопки и подбирает через IF подходящий ответ. До диалогов я еще не успел добраться


2) Кнопки справа от диалога - Строительство, новый день, настройки и выход. Если кнопки настройки и выход плюс-минус понятны из предыдущего абзаца, то кнопка нового дня так же как в главном меню - запускает анимацию шторки и отнимает единицу от счетчика дней внизу-справа экрана. А вот кнопка строительства уже интереснее - она вызывает меню строительства объектов добычи ресурсов и собственно этот же скрипт отвечает за все строительство.

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

Однако код так же просто и содержит так же одни "ИФЫ" :). Все объекты добычи в игре объявлены и пронумерованы в этом скрипте и изначально при старте отключены в иерархии юнити. При нажатии на кнопку с определенным объектом скрипт проверяет по порядку каждый объект этого типа (всего 5 для каждого из ресурсов) и при нахождении какого-либо в выключенном состоянии - включает его. А в методе Update() происходит покадровая проверка для дизактивации кнопки при обнаружении отсутствия отключенных в иерархии объектов этой кнопки, а так же при недостаточном количестве ресурсов для постройки.

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

3) Разрушение объектов обрабатывается через 2 скрипта - один отвечает за подсветку объекта при наведении на него и открытии меню объекта при нажатии, второй за нажатие на кнопку и отключение объекта

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

С кнопкой отключения / разрушения объекта все очень просто - 2 метода OnMouseEnter и OnMouseExit для смены спрайта кнопки при наведении мыши и метод OnMouseDown для отключения объявленного в скрипте объекта и самой кнопки из иерархии.


С кнопкой подсветки и появления меню строения я помучился, а именно над подсветкой. Unity почему-то никак не хотел принимать new Color(), а начал адекватно работать только с new Color32 - информацию по этому нашел тут https://answers.unity.com/questions/1017582/hex-colors-in-unity.html (подкрашивается цвет спрайта поверх него). И те же самые методы OnMouse

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

4) Ремонт поселений производится по такому же принципу и коду как и разрушение, за одним исключением - целевой объект не отключается, а включается т.к. спрайт поселения у меня лежит поверх спрайта разрушенного поселения и идентичен ему (просто стерт частично в фотошопе)


5) Имеется в запасе скрипт для тултипов ресурсов - при наведении на кнопку строительства объекта над цифрой ресурсов появляется подсказка о стоимости постройки

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

Скрипт сделан похожим на OnMouseEnter, только через Event Trigger. В инспекторе объекта нажимать Add Component - Event Trigger - Add New Event Type - PointerEnter и Pointer Exit и далее так же как с кнопкой - пишем метод на включение и метод на отключение объекта в иерархии и выбираем в Event Trigger скрипт и соответствующий метод (если нужно кому-то подробнее, то я так же распишу как и с кнопками, и анимациями).


Но так же я нашел очень подробный видео урок как сделать тултипы в более правильном их формате тут https://www.youtube.com/watch?v=HXFoUGw7eKk

6) Ну и скрипт для дрожания камеры при начале бури. Скрипт взят из видео урока тут https://www.youtube.com/watch?v=9A9yj8KnM8c

P.S. Для тех кому интересно как обстоят дела со страницей игры в магазине. Ситуация так себе. Чуть более чем за месяц, страницу показало 41,991 человек. Из них посетило страницу 4,655 человек, что соответствует 11.09% переходов. В список желаний игру добавили 156 человек

Как я разрабатываю игру без опыта #5. Переработка дизайна и механик Игры, Разработчики игр, Компьютерные игры, Unity, Своими руками, Гифка, Длиннопост, Графика, Программирование

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


Спасибо вам большое, за то, что прочитали этот бред рукожопа :)

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

6.6K пост22.1K подписчиков

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

ЗАПРЕЩЕНО:

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

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

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


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

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

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

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

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