17

Кастомизированная анимация 2D

Доброго времени суток.
Решил поубивать свободное время в Unity. Разработал идею для 2d проектика.

Опустим туториалы, опыт, гайды, и прочее.
ТК рисую спрайты, развлекаюсь и 3ю неделю ищу инфу по скелетной анимации.

Гайдов много, накатил Anima2d, все в целом понятно.

Рисовать миллиард атласов или спрайтов для покадровой... ну нееееет.

Необходимо упростить задачу себе и организовать потенциальный интерес.

Я не могу найти способ создать для анимации скелет пустышку, на который будут цепляться руки, ноги и тд. т.е. кастомизация скелета.
На форумах всех видов к сожалению тишь.
Был только один годный совет, устроить замену скриптами.

Господа, нужен совет или направление.

1. Создать пустую анимацию.

2.Найти как кастомизировать скелет

Дубликаты не найдены

+3

Spine хорошая штука но дорого, сам пользовался. Вроде есть как бы аналог Dragon Bone бесплатный

раскрыть ветку 1
0

да, сами пользуемся Dragon Bones. Функционал очень похож на спайн.

+1

Народ, а что вы думаете насчет spriter?

раскрыть ветку 1
0

Не очень удобно, но можно

+1

Однозначно Spine, если это именно игра.

Если что-то на подобии ВН - то Live2D Cubism.

0

Dragon Bones глянь, если не хочешь платить за спайн. По функционалу, практически, то же самое. Для начинающего самое то.

0

Спайн чувак)

0

Анима 2д зло, тебе на каждый спрайт спрайтмеш создавать надо. ( Инфа с  юнити 2017.1, может быть не актуально сейчас). Мы спайн купили и не нарадуемся).

В целом замена слотов/скинов как не крути реализуется кодом, так что ищи свой путь)

0

Да даже на лфэше костылями куча готового...

-1

Что ты понимаешь под кастомизацией скелета?

раскрыть ветку 1
+1

Дошло кажись что ты хочешь, и вот походу ответ.

https://www.youtube.com/watch?v=09To3ZCIZUY

Похожие посты
156

Жизнь за бензак или как я запилил систему ресурсов в Cyberwinter

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

Жизнь за бензак или как я запилил систему ресурсов в Cyberwinter Unity, Игры, Steam, Разработка, Видеоигра, Gamedev, Инди игра, Indiedev, Гифка, Длиннопост

Даже с учетом его дорогостоящей транспортировки, цена получалась вполне приемлемой. Найден он был на планете, которая по сути являлась очередной безжизненной глыбой, покрытой толщей снега и льда. Условия на планете были суровые, но добычу, крайне важного элемента для выживания человечества, наладить в конце концов получилось, хотя это и стоило многих жизней.

Вернемся непосредственно к игре.

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

Жизнь за бензак или как я запилил систему ресурсов в Cyberwinter Unity, Игры, Steam, Разработка, Видеоигра, Gamedev, Инди игра, Indiedev, Гифка, Длиннопост

Для сборов элемента Q444 был разработан специальный вид техники - харвестер. Эта медленная, но достаточно прочная машина отлично справляется со своей задачей.

Жизнь за бензак или как я запилил систему ресурсов в Cyberwinter Unity, Игры, Steam, Разработка, Видеоигра, Gamedev, Инди игра, Indiedev, Гифка, Длиннопост

От регулярных доставок элемента Q444 на Землю теперь зависит дальнейшая судьба человечества. Главная цель любого представителя нашего вида в мире Cyberwinter - это не допустить даже малейшего сбоя в отлаженной до мелочей системе.

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

Жизнь за бензак или как я запилил систему ресурсов в Cyberwinter Unity, Игры, Steam, Разработка, Видеоигра, Gamedev, Инди игра, Indiedev, Гифка, Длиннопост

На планете один за другим возводят терраформеры. Несмотря на ее крайне низкую пригодность для заселения, нельзя списывать со счетов доступность Q444. За тысячу лет, согласно первых расчетов, климат планеты будет скорректирован до необходимого минимума. Тогда звездный флот начнет массово перевозить "излишки" человечества с Земли на Cyberwinter. И уже с новой площадки исследовательский флот продолжит поиски следующего пристанища для нас…

Планирую до нового года выпустить демку и обкатать баги. Если будет желание, прошу добавить игру в вишлист и поучаствовать в тестировании. Страница игры в Steam: https://store.steampowered.com/app/1425030/Cyberwinter/

Надеюсь, вам было интересно. Всем спасибо за внимание и хорошего вам инди!)

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

И у меня снова проблема, коллеги: незнаю как визуально обыграть элемент Q444, когда он лежит на поверхности планеты. Текущую реализацию можно увидеть на гифках. По сути, это просто двумерные квадраты разных размеров и повернутые под разными углами, желто-коричнего цвета из палитры игры. Меня очень расстраивает текущий вариант, но ничего интереснее я пока не придумал. Если у вас есть мысли по этому поводу, прошу поделиться со мной в комментариях. Всем заранее низкий поклон и вселенский респект! )

Показать полностью 2
150

Анонс The Therapy, тот самый хоррор на Unity

Анонс The Therapy, тот самый хоррор на Unity Unity, Unity3d, Инди, Indiedev, Gamedev, Survival Horror, Ужасы, Blender, Видео


4 месяца назад я впервые написал пост на пикабу, тогда я начал рассказывать о разработке своего собственного проекта. Показывать мне было особо нечего на тот момент поэтому реакция понятна, тогда даже кто-то посмеялся: "Хоррор на Юнити? Вы не перебарщивайте с жестью!", а кто-то же просто говорил, что мой треп ни о чем, и вообще "сперва добейся".

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

Надеюсь в этот раз реакция сообщества будет более благосклонной. Немного об игре.
Движок Unity 2019.4.4.f1
Ассеты и анимации создается в Blender, текстурятся в Substance painter.

Синопсис можно прочитать в описание к видео, но на всякий случай продублирую его сюда:

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

Релиз запланирован на следующий год на PC."

Спасибо за уделенное время, если у вас есть какие-либо вопросы может спрашивать, буду рад любой обратной связи!

Показать полностью
39

Говорящие предметы или как я решил отказаться от текста в игре с глубоким сюжетом

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

Коротко об игре.

Говорящие предметы или как я решил отказаться от текста в игре с глубоким сюжетом Gamedev, Indiedev, Unity, Unity3d, Игры, Разработчики игр, Видео, Длиннопост

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


Мне всегда нравились массовые побоища в Serious Sam. Я испытывал какой-то невероятный восторг, когда стена за стеной монстры неслись на меня, а я готовился дать отпор. Но все же в этой игре в перерывах между боями мне не хватало глубины (мне лично, чисто субъективно). И вот я делаю то, во что с удовольствием буду играть.


О сюжете.


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


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


Форма подачи сюжета.


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


В ловушке (пример).


Первая глава моей истории носит рабочий заголовок "В ловушке". На старте игры персонаж игрока появляется рядом с космическим кораблем на снежной равнине. Трап судна опущен и, скорее всего, привлечет внимание большей части игроков. Оказавшись возле трапа, игрок нажимает кнопку (руководствуясь подсказками), персонаж поднимается на борт корабля и пытается покинуть планету. Сначала, кажется, что все идет как нужно, двигатели нагреваются, судно поднимается над землей, но внезапно из одного из двигателей вырываются клубы дыма и корабль возвращается в первичное состояние на поверхность. Персонаж покидает судно. Так через взаимодействие с игровым объектом я пытался сказать, как рассказчик, что корабль сломан и тебе придется какое-то время оставаться здесь, возможно, стоит подумать над ремонтом судна.

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

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

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

А что вы думаете о подобной форме подачи сюжета?

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

Планирую до нового года выпустить демку и обкатать баги. Если будет желание, прошу добавить игру в вишлист и поучаствовать в тестировании. Страница игры в Steam: https://store.steampowered.com/app/1425030/Cyberwinter/

Надеюсь, вам было интересно. Всем спасибо за внимание и хорошего вам инди!)

Показать полностью 1
52

Как я сделал систему обработки столкновений в игре на Unity - Тьма поглотила вас

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


Для начала давайте определимся в каком именно положении персонаж может находиться во время игры.

1.Персонаж может стоять на земле

2.Персонаж может находиться в воздухе после прыжка

3.Персонаж может находиться в воздухе после падения

4.Персонаж может толкать ящик

5.Персонаж может стоять на ящике как на обычной земле.

Как я сделал систему обработки столкновений в игре на Unity - Тьма поглотила вас Gamedev, Разработка, Инди, Игры, Unity, Видеоигра, Платформер, Видео, Длиннопост

Если идти в лоб, то любому начинающему разработчику сразу приходит в голову, что лучшей идей будет нацепить на персонажа коллайдер, пометить все объекты земли тегом "Ground" и каждый момент времени проверять: касается ли герой объекта с данным тегом. Но как только вы решите, что вашему герою обязательно нужно уметь прыгать, вы тут же столкнетесь с некоторыми проблемами.

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

Первым делом нам нужно добавить нашему герою правильную обработку столкновений с землей. Создадим скрипт и повесим его на персонажа. К переменной cd привяжем коллайдер героя.

Как я сделал систему обработки столкновений в игре на Unity - Тьма поглотила вас Gamedev, Разработка, Инди, Игры, Unity, Видеоигра, Платформер, Видео, Длиннопост

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

Данный способ хорош тем, что мы всегда можем узнать на каких именно объектах стоит герой, при этом, если даже он выйдет из коллайдера одного объекта и останется стоять на другом, то переменная ground останется true. Это подходит конкретно для моей игры, так как мне важно чтоб игрок не мог поднимать телекинезом те объекты, на которых он в данный момент находится или каким то образом касается их.

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

В общем и целом, здесь уже можно было бы остановиться, так как всё работает приемлемо. Но мне не совсем понравилось, что анимация приземления срабатывает непосредственно в момент столкновения коллайдеров, ведь если бы это происходило немного раньше, то выглядело бы лучше. Поэтому здесь в ход вступает ещё один способ определения столкновения. Первым делом нам нужно добавить нашему герою точку, отмечающую местонахождение нижней части его ног. Также вместо тега "Ground", мы будем использовать аналогичный layerMask у объектов.

Как я сделал систему обработки столкновений в игре на Unity - Тьма поглотила вас Gamedev, Разработка, Инди, Игры, Unity, Видеоигра, Платформер, Видео, Длиннопост

Теперь добавляем новые элементы в наш скрипт.

Как я сделал систему обработки столкновений в игре на Unity - Тьма поглотила вас Gamedev, Разработка, Инди, Игры, Unity, Видеоигра, Платформер, Видео, Длиннопост

Посмотрите на скриншот, думаю всё должно быть понятно, кроме метода OverlapCircle. Здесь всё предельно просто. Данный метод проверяет попадает ли коллайдер в круговую область вокруг определенной точки с заданным радиусом.
После добавления данных улучшений, герой будет понимать что находится около земли находясь максимально вплотную к ней, но ещё не касаясь. Скорее всего, вам нужно будет поэкспериментировать со значением радиуса чтобы всё работало как нужно.Как вы можете видеть, теперь анимация падения героя срабатывает немного раньше самого приземления, что выглядит намного лучше.

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

Показать полностью 3 2
46

Попытка в геймдев

Вступление

Привет когда то я уже пробовал делать игры. Сделал несколько викторин по готовым макетам но усилий к этим играм было приложено минимум по этому эффекта было ноль и я забил на это дело. Спустя 3 года я понял что точно хочу делать игры и решил попробовать снова. Хорошо что в наше время информацию достать легко бери и учись.


Ресурсы что я использовал для обучения

С# https://metanit.com/sharp/tutorial/

Unity официальные уроки + куча видосов на ютубе

Канал DTF очень интересные видео по геймдизайну

Книга Шелл Джесси “Геймдизайн”


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


Концепт

Из всех жанров был выбран платформер в котором персонаж сам бежит. Основным вдохновителем стала Geometry Dash. Платформа IOS и Android

Первые наброски

Попытка в геймдев Gamedev, Игры, Мобильные игры, Разработка, Unity, Длиннопост
Попытка в геймдев Gamedev, Игры, Мобильные игры, Разработка, Unity, Длиннопост
Попытка в геймдев Gamedev, Игры, Мобильные игры, Разработка, Unity, Длиннопост

Рисовать я не умею, денег на графику нету. Бесплатные ресурсы нашёл тут.

https://craftpix.net/ - графика

https://opengameart.org/ - всё сразу

https://freesound.org/ - звуки

Движок Unity потому что бесплатно и был небольшой опыт работы с ним.

Всё что я использовал распространяется по лицензии CC0 1.0 Universal (CC01.0)

https://creativecommons.org/publicdomain/zero/1.0/


Геймплей

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

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


Механики

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

Попытка в геймдев Gamedev, Игры, Мобильные игры, Разработка, Unity, Длиннопост

Джампер просто подбрасывает персонажа вверх

Попытка в геймдев Gamedev, Игры, Мобильные игры, Разработка, Unity, Длиннопост

Красных гриб накладывает эффект полёта на персонажа

Попытка в геймдев Gamedev, Игры, Мобильные игры, Разработка, Unity, Длиннопост

Фиолетовый гриб ускоряет персонажа в 1.6 раз

Попытка в геймдев Gamedev, Игры, Мобильные игры, Разработка, Unity, Длиннопост

Зелёный гриб переворачивает экран

Попытка в геймдев Gamedev, Игры, Мобильные игры, Разработка, Unity, Длиннопост

Чаша снимает все эффекты с персонажа

Попытка в геймдев Gamedev, Игры, Мобильные игры, Разработка, Unity, Длиннопост

Рычаг и дверь тапаешь на рычаг, дверь открывается не успел = умер

Попытка в геймдев Gamedev, Игры, Мобильные игры, Разработка, Unity, Длиннопост

Все уровни сделаны с помощью Tile Map

Ground Tilemap на ней размещена только земля по которой бежит персонаж

Environment Tillemap на ней размещены все объекты с которыми взаимодействует персонаж

DeathCollider Tilemap невидимые колайдеры которые убиваю персонажа

Для создания тайлов с префаба был использован плагин unity 2d-extras

https://github.com/Unity-Technologies/2d-extras


Название игры

Как говорится «Как корабль назовешь, так он и поплывет»

Первоначальный вариант был Dungeon Run но из за обилия таких названий в магазинах, решил придумать что то более уникальное. Захотелось больше оживить персонажа по этому я придумал ему имя. Моделька персонажа это ангел по этому я перевёл его на другие языки и выбрал на японском 天使 что звучит как Tenshi. Игра вышла сложная а персонаж по задумке искатель сокровищ который ищет приключений и вышло у меня Tenshi Impossible Adventure


Что я усвоил

Если тебе самому не интересна игра ты не сделаешь хорошо.

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

Сначала подумай, потом делай

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

Лучше потратить деньги на что то для игры чем купить себе какую то

фигню.

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

Поэтому не бойтесь показывать свое творчество даже если оно не соответствует высоким стандартным.

Лучше сделать что то и даже провалится чем не делать ничего.


Зачем я это написал? Столько лет читаю пикабу и тут у меня появилось что написать поэтому я решил почему бы и нет. Может всё недостаточно красочно описано и не хватает деталей но пока что умею только так. Ну и конечно же для того чтобы немного прорекламить свой проект, собрать фидбек, потому что мне хочется улучшать свой первый более менее нормальный продукт, и хочется чтобы в неё играли. И я заметил что свой проект не всегда выходить оценить объективно поэтому жду ваши отзывы/советы. Спасибо всем кто дочитал.

Конец

Показать полностью 10
423

Сова - эффективный менеджер. Сезон 5 №29: "Эффективный движок для некстген игр" + новая игра на ПК

Сезон 5 №29 из серии "Сова - эффективный менеджер"©

Сова - эффективный менеджер. Сезон 5 №29: "Эффективный движок для некстген игр" + новая игра на ПК Сова - эффективный менеджер, Xander Toons, Комиксы, Юмор, Gamedev, Игры, Программирование, Длиннопост

У Совы появилась новая видеоигра для ПК - "Ореховый дождь".


Рисовал картинки и писал код (на движке Godot) я сам.

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


За вдохновение, моральную поддержку, тестирование, советы по коду и геймплею спасибо: Марку Шевелёву и Диме Viv@T!

Сова - эффективный менеджер. Сезон 5 №29: "Эффективный движок для некстген игр" + новая игра на ПК Сова - эффективный менеджер, Xander Toons, Комиксы, Юмор, Gamedev, Игры, Программирование, Длиннопост
Сова - эффективный менеджер. Сезон 5 №29: "Эффективный движок для некстген игр" + новая игра на ПК Сова - эффективный менеджер, Xander Toons, Комиксы, Юмор, Gamedev, Игры, Программирование, Длиннопост

Можно скачать на компьютер или играть через браузер:

Ссылка на скачивание игры в посте в ВК: https://vk.com/wall-174686745_11501, потому что Пикабу запрещает ссылки на gamejolt.


Помните игру "Ну, погоди!" (Электроника), в которой Волк яйца собирал? Был миф: если набрать 1000 (тысячу) очков, то вам покажут секретный мультик...

В случае с Совой секретный финал не миф, и очков надо в два раза меньше 😊

Показать полностью 2
78

Как я решил делать рогалик на Unity. Часть 4

Продолжаю рассказывать о том, как я делаю рогалик на Unity.

В этот раз речь пойдет о погоде в игре. Она условно разделена на глобальную и локальную.

Глобальная погода обновляется 24 раза за игровой день, который длиться соответственно 24 минуты. Примерно вот так выглядит глобальная карта с погодой:

Как я решил делать рогалик на Unity. Часть 4 Gamedev, Unity, Рогалик, Инди, Игры, Разработка, Гифка, Длиннопост

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

Чтобы погода менялась с течением времени есть фронты (зелёные стрелочки) и циклоны. Фронты меняют температуру и образуют дожди. А циклоны создают зоны с повышенным/пониженным давлением.

Вот как это работает в динамике:

Как я решил делать рогалик на Unity. Часть 4 Gamedev, Unity, Рогалик, Инди, Игры, Разработка, Гифка, Длиннопост


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

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

Вот так проходит в игре ночь:

Как я решил делать рогалик на Unity. Часть 4 Gamedev, Unity, Рогалик, Инди, Игры, Разработка, Гифка, Длиннопост


Помимо "статических" облаков есть и динамические через систему частиц:

Как я решил делать рогалик на Unity. Часть 4 Gamedev, Unity, Рогалик, Инди, Игры, Разработка, Гифка, Длиннопост


И как следствие облаков, эффект дождя:

Как я решил делать рогалик на Unity. Часть 4 Gamedev, Unity, Рогалик, Инди, Игры, Разработка, Гифка, Длиннопост


На этом пока что всё. В дальнейшем буду работать над улучшением внешнего вида поверхности. Если что, то в группе вк выкладываю новости гораздо чаще и более детально. А также, там можно скачать технодемку и в живую глянуть на погоду.
https://vk.com/voidside_game

И бонус в комментариях

Показать полностью 3
45

Романтика разработки RTS Часть 2 (Новая графика)

Я начал писать вторую часть сразу после первой части. Но потом занимался релизом игры, а после релиза 3 месяца очень активно пилил недостающие фичи.


Все про игру есть в ВК - https://vk.com/abksgn
Ссылка на GooglePlay - SiegeUp!

Романтика разработки RTS Часть 2 (Новая графика) Android, Unity, Unity3d, RTS, Gamedev, Game Art, Видео, Длиннопост, Компьютерные игры

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

Почему же я решил менять графику? Причин несколько:

1. Игра выглядела блекло и не выделялась, выглядела второсортно

2. Графика далека от трендов мобильного рынка

3. Трудно найти ассеты, попадающие в стиль


Поэтому, я решил пойти путем инди и делать что-то low-poly. Но тогда это была лишь идея, я не был уверен что буду вообще продолжать разработку.


В конце 2018 года мы с женой переехали в Минск, для работы. Я устроился в Wargaming программистом движка WoT Blitz. И на какое-то время забросил свою игру, погрузившись с головой в новую работу.


В начале 2019 на зимних праздниках я вернулся к игре и начал воплощать задумку по переработке графики в жизнь.

Сначала я взялся делать здания. Я не стал брать готовые ассеты, так как во первых, не смог найти, а во вторых хотел гибкости, вдруг какого-то нужного домика в ассетах не будет? Ну и пожалуй нужно все-таки нужно что-то привнести графику, чтобы это был не просто бездушный кусок софта, а игра.
Вот такие домики получились (половина из них до сих пор присутствует в игре):

Романтика разработки RTS Часть 2 (Новая графика) Android, Unity, Unity3d, RTS, Gamedev, Game Art, Видео, Длиннопост, Компьютерные игры

Потом под стиль зданий я нашел готовый пак юнитов в AssetStore за ~20$ . Пак удобен тем, что можно комбинируя разное оружие, головы и тела, получать уникальных юнитов.

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

Романтика разработки RTS Часть 2 (Новая графика) Android, Unity, Unity3d, RTS, Gamedev, Game Art, Видео, Длиннопост, Компьютерные игры

Тут у нас используется Standard PBR шейдер и стандартный террайн, до релиза еще 1 год и 3 месяца. Оптимизации нет, на телефоне около. 20 FPS вообще без юнитов на сцене.


Пол года я в основном совершенствовал графику, рисовал домики, работал вяло. Параллельно я пописывал свой игровой движок и сделал генератор рефлексии для C++.


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

Романтика разработки RTS Часть 2 (Новая графика) Android, Unity, Unity3d, RTS, Gamedev, Game Art, Видео, Длиннопост, Компьютерные игры

К лету 2019 ситуация следующая:

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

2. Все иконки юнитов и домов генерируются автоматически

3. Я не смог найти надежной информации, но на сколько я помню, туториал тоже появился где-то весной 2019 года


Этот скриншот долго украшал группу ВК, так как выглядел наиболее прилично

Романтика разработки RTS Часть 2 (Новая графика) Android, Unity, Unity3d, RTS, Gamedev, Game Art, Видео, Длиннопост, Компьютерные игры

Я был все еще не очень доволен графикой. Мне не нравилось, как гладкий террайн сочетается с низкополигональными домиками.

В отпуск я поехал на малую родину в "поселок городского типа Морозовск" и там на волне вдохновения сделал следующий рывок в разработке. Во первых, появилась идея заменить террайн на воксели. Первый прототип выглядел так:

Романтика разработки RTS Часть 2 (Новая графика) Android, Unity, Unity3d, RTS, Gamedev, Game Art, Видео, Длиннопост, Компьютерные игры

Мне это понравилось, это делало игру как-то строже и придавало ей какой-то уникальный вид. Поэтому, я стал развивать эту идею, сделал редактор для террайна и полностью переделал все карты на новый террайн.

Примерно в то же время я занялся оптимизацией и отказался от использования стандартных коллайдеров для поиска пересечений объектов и полностью отключил симуляцию в настройках проекта. Хорошо помню, как на волне вдохновения от поездки выкидывал физику отовсюду, пока ждал ночной рейс из Ростова-на-Дону в Минск.

На тот момент удалось добиться стабильного FPS при ~300 юнитах на телефоне. После дальнейших оптимизаций, сейчас лимит около 600 юнитов. Однако, я не собираюсь останавливаться на достигнутом, миллионы юнитов на экране в Казаках и толпы мобов в Diplomacy is Not An Option не оставляют меня в покое ... Я планирую завезти Animation Instancing и Brust со временем, использовать Jobs для поиска столкновений.


Я продолжил заниматься графикой.

Эффектов в игре не много:
1. Мультяшные тени

2. Пенка у воды

3. Облака


На облака меня вдохновили две игры, Civilization V и Egypt: Old Kingdom. У меня облака это просто Шум Перлина с небольшим скроллингом, ничего особого.

Про тени пожалуй нужно писать отдельную статью, но они не отражают форму объекта, поэтому очень шустро работают. Пена на воде по сути тоже тени, просто на воде другой шейдер.

Романтика разработки RTS Часть 2 (Новая графика) Android, Unity, Unity3d, RTS, Gamedev, Game Art, Видео, Длиннопост, Компьютерные игры

В общем, этой картинкой я долго гордился, для меня это был первый опыт графического программирования и оптимизации графики.

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

Романтика разработки RTS Часть 2 (Новая графика) Android, Unity, Unity3d, RTS, Gamedev, Game Art, Видео, Длиннопост, Компьютерные игры

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


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

Романтика разработки RTS Часть 2 (Новая графика) Android, Unity, Unity3d, RTS, Gamedev, Game Art, Видео, Длиннопост, Компьютерные игры

Примерно с ноября 2019 года я начал делать первые 5 демонстрационных уровней. Эти уровни должны были отобразить прогресс игрока с самого начала до самого конца. Т.е. последний уровень - был последним в игре. Сейчас в игре 20 уровней. Всего планируется 25.

Романтика разработки RTS Часть 2 (Новая графика) Android, Unity, Unity3d, RTS, Gamedev, Game Art, Видео, Длиннопост, Компьютерные игры

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

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

Еще долго оставалась проблема с тем, что тени не показывались под юнитами на стенах. 18 апреля 2020 года эта проблема и был сделан этот скриншот. С этих пор графика не менялась.
На скриншоте есть абсолютно все аспекты игры и ее графики, так что я считаю его показательным.

Романтика разработки RTS Часть 2 (Новая графика) Android, Unity, Unity3d, RTS, Gamedev, Game Art, Видео, Длиннопост, Компьютерные игры

Игра появилась в GooglePlay 31 мая 2020 года. Однако, на релизе работа не закончилась, я продолжаю делать обновления каждые пару недель и исправлять ошибки. Когда все миссии будут готовы, планирую релиз на iOS. Надеюсь, там игроки тоже оценят игру.


Я собираюсь сделать еще одну часть, про фичи, которые были добавлены с релиза. Когда ее ждать даже сам не знаю. Может скоро, может нет. :)


Буду рад критике и фидбеку! Спасибо! :)

Показать полностью 10
50

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

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


На первый взгляд все кажется просто.  Вот, на самом деле, почему нельзя просто создать какую-то новую механику, даже много новых механик и улучшать их пока они не устроят? Если что, неудачные механики можно выкинуть :)


<<Для начала в игре существует только одна core-механика. И для ее реализации, поверьте, придется уйти в работу с головой. Создавать нексолько механик = создавать несколько разных игр. А это равносильно усложнению своей жизни. Вместо шлифовки одной механики вы должны распылиться на 10, а потом оставить из них только одну, а остальные выкинуть. Печально выкидывать результаты работы, правда?>>


Разработка игры с новой механикой - это примерно то же самое как работа над открытием или даже процесс поиска клада. Отлично, если вы опытный кладоискатель. Такие кладоискатели знают, что клад вряд ли спрятан в песочнице на детской площадке и не будут его там искать, тратить на это время. Потому что в свое время они уже наступали на эти грабли и ничего там не нашли. То есть существуют механики, которые заведомо неудачны / непригодны для игр. Конечно, все можно адаптировать, видоизменить, подогнать. Но все же существуют вещи которые не следует делать.


Вот рассмотрим очень простой пример такой механики на мобильной игре.

Допустим у нас есть персонаж в мобильной игре и наша задача управлять им. Мы видим персонажа сверху (2D). Как бы в сделали его управление?

Это очень щепетильный вопрос. Управление - это задача задач, которую решают в процессе разработки.

(1) Если вы будете приказывать персонажу идти за пальцем, когда он опущен на экран, то ваша рука будет перекрывать экран и вы будете смотреть на свою руку;

(2) А если персонаж будет идти в противоположную о пальца сторону, то будет ли удобно такое интвертирование управления?

(3) Если персонаж будет идти в точку, которую вы кликнули, то сможет ли он увернуться от летящей ракеты? Не перекроется ли экран рукой, когда вы смените направляение движения персонажа? Это управление точно удобно?

(4) А если просто... Джойстик и все тут! Не перекроет ли джойстик экран? Сколько экранного пространства он занимает (допустимо ли это)? Удобен ли он? Функционален? Позволяет ли он погрузиться в атмосферу игры?


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

Да, вот такими задачами и занимаются дизайнеры: сделай то, не знаю что, пойди туда, не знаю куда и чтобы все было круто и никак иначе.


Оптыный дизайнер (опытный кладоискатель) способен быстро оценить все "за" и "против" каждого из пунктов [1-4]. Новичок же, очень вероятно, будет экспериментировать и постигать тайны управления с нуля :)



Надеюсь теперь стало очевидней, что разработка новой механики - это работа.
Это работа и она не всегда увенчивается успехом. Не всегда даже опытному дизайнеру удается создать новую механику. И это часто зависит не только от дизайнера, но и от команды, от возможностей платформы для которой все разрабатывается.
Дизайнер создает тех. задание, отдает ее на реализацию дизайнерам и программистам, через какое-то время получает результат. Если результат устраивает, то это успех. Если результат не устраивает, то процесс повторяется до того момента, пока инвестору все это не надоест или пока команда не замучается "пробовать". Да, людям не нравится работать, а потом выкидывать свою работу. Особенно, когда ты старательно работаешь и не один месяц. Да, ты получаешь зарплату, но где удовлетворение от проделанной работы? Так и свихнуться недолго, если каждый день все рабочее время выкапываешь, а потом закапываешь выкопанную яму.


Вот потому-то все и идут на ухищрения. Зачем пидумывать что-то новое, когда старое хорошо работает? Возможно нужно немного изменить старое и все будет хорошо?


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


//===


В процессе работы над персонажем всплыло множество моментов, которые требовали такой хорошей  и основательной проработки как со стороны дизайнера-программиста, так и со стороны дизайнера по механикам.



В процессе разаработки, было принято решение показыват игроку тело персонажа, чтобы он мог видеть себя своими глазами. Почему нет? Это добавляет атмосферы, смотрится круто.


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


С другой стороны, если персонаж стоит одной ногой на выступе обрыва, то все его тело должно как-то отреагировать на то, что вторая нога в воздухе. А если центр тела персонажа смещен в сторону обрыва, то тут уж 100% нужно это как-то отобразить на персонаже.

Мы справились с этой задачей, сбоку это выглядит так (скрины специально не содержат текстур, дабы не наспойлерить):

Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост

По части влияния смещения тела на механику движения: удалось добиться стабильности и минимизировать влияние анимации ног на перемещение игрока.


Ноги опускаются процедурно. Пришлось водключить инверсную кинематику и совместить ее с процедурной анимацией движения всего персонажа. О том как мы анимировали персонажа можно ознакомиться здесь: Процедурная анимация движения персонажа


Получилось весьма недурно :)



Руки.

C руками, как и со всем остальным, отдельная история. И она длинная.

Что требуется от рук? Чтобы они не пересекали стены, чтобы держали пушку. И чтобы это все выглядело нормально. Бывшый мой босс всегда ставил задачу примерно так. Он перечислял все требования до мельчайших и в конце добавлял: "И да, сделайте все это так, чтобы выглядело круто. Просто сделайте так, чтобы все было круто и не заставляйте меня говорить что получился отстой."


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

Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост

Подключенные первые варианты рук/манипуляторов выглядел примерно так:

Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост

Здесь один из вариантов ранних анимаций. Главное не внешний вид, а принцип работы:

Пробовали такие варианты:

Один манипулятор наехал на другой. Да, такое часто встречалось и приходилось много работать над исключением самопересечения манипуляторов.

Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост

Тесты инверсной кинематики. Чисто математика:

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

Инверсная кинематика  в чистом виде (IK):

Еще немного инверсной кинематики для тех кому понравились видео:

Здесь эксперименты того как смотрится перемещение обьекта манипуляторами (как манипуляторы ведут себя при перемещении аюстрактного куба):

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

Манипулятор мы разделили, условно, на руку (манипулятор) и пушку. Пушка выполняет свои функции, а рука дополняет пушку. Не в воздухе же ей висеть.


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

Так же рука может быть и без пушки. Для этого случая мы научили кисть немног взаимодействовать с окружением: если игрок вплотную подходит к стене, то рука как бы занимает промежуточную позицию между стеной и телом игрока. не дает игроку лицом воткнуться в стену. Классно, правда? Так же рука может огибать предметы, если игрок захочет как-то повести себя нестандартно и влезть рукой во что-то.


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


Некоторые скетчи из процесса разработки игры выкладываю здесь:

https://twitter.com/CGAleksey

https://www.instagram.com/cgaleksey/



--

Надеюсь статья понравилась и вы почерпнули из нее что-то новое.

На сегодня у меня все.

Спасибо за внимание!

Показать полностью 17 8
28

ТЬМА ПОГЛОТИЛА ВАС - переделываем мобильный платформер под PC

Полгода назад я уже выкладывал пост о разработке собственного проекта на Unity под Android. Игра не сыскала огромной популярности в плей маркете, но особо сильно меня это не расстраивало, так как большинство поигравших в нее остались довольны.

Многие посоветовали мне идти с данным проектом на площадку компании Valve, так как игры подобного рода намного лучше заходят именно на обычных пк.

Сегодня я расскажу о том, какие изменения я начал вносить в проект для запуска в стиме.

ТЬМА ПОГЛОТИЛА ВАС - переделываем мобильный платформер под PC Gamedev, Разработка, Инди, Игры, Компьютерные игры, Unity, Unity3d, История создания, История создания игры, Видео, Длиннопост

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

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

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

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

Сделать данный эффект в своем проекте достаточно просто, так как он входит в стандартный пакет PostFX эффектов для Unity и имеет простую документацию.Если это вас заинтересовало, то вы можете установить его в самом Unity->Window->PackageManager->PostProcessing.

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

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

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

Изначально игра имела всего десять комнат-уровней с собственными испытаниями, которые должен пройти игрок. При небольшой сноровке все эти комнаты можно пройти за 20-25 минут, что меня совершенно не устраивало. Потому было принято решение внедрить новые механики перемещения в игру и сделать большее количество комнат. Если герой уже обладает телекинезом, то почему бы не добавить ему возможность двойного прыжка? К тому же, данная механика открывает нам возможность делать более сложные комнаты с препятствиями для акробатов.

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

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

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

Показать полностью 5
34

Blueprints и C++ в Unreal Engine: плюсы и минусы

Epic Games последовательно развивает систему визуального программирования Blueprints в Unreal Engine. Она продвигается как полноценная рабочая среда, в которой любой новичок может освоиться и собрать свою игру. Но действительно ли «блюпринты» ни в чём не уступают классическому программированию?


Александр Балакшин, программист AAA-игр, внёсший значительный вклад в разработку сезонных обновлений для Tom Clancy’s Rainbow Six Siege в роли старшего инженера-разработчика и лида геймплейной команды, разбирает плюсы и минусы Blueprints и объясняет её отличия от «чистого» C++.


Автор: Александр Балакшин

Blueprints и C++ в Unreal Engine: плюсы и минусы Xyz, Программирование, Unreal Engine 4, Gamedev, Разработка, Разработчики игр, Длиннопост

Источник


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


Но если рассматривать разработку игры в целом, в долгосрочной перспективе, то классический подход к программированию показывает свои преимущества. Даже сами Epic Games заостряют внимание на том, что блюпринты — это не код, а данные, поэтому и относиться к ним нужно соответственно. Например, некоторая общая логика всё равно должна выноситься в код.

Blueprints и C++ в Unreal Engine: плюсы и минусы Xyz, Программирование, Unreal Engine 4, Gamedev, Разработка, Разработчики игр, Длиннопост

Источник


По этой же причине блюпринты невозможно толком «мёрджить», то есть соединять результаты разработки. Поэтому их приходится отдельно блокировать, чтобы не создавать конфликтов и не терять проделанную работу. С классическим же кодом могут работать даже несколько человек одновременно, но результат их работы в одном файле обычно всё равно очень просто совместить.


Наконец, блюпринты бьют по производительности, так как компилируются в байт-код, который работает на встроенной в движок виртуальной машине. Да, их можно нативизировать, — то есть преобразовать Blueprint-логику в файлы C++, но даже разработчики из Epic рекомендуют этим не злоупотреблять.


Да и с точки зрения GOMS-анализа нажатие на клавишу клавиатуры оказывается быстрее, чем перемещение мышки. Это ни в коем случае не отменяет удобство визуального редактора, но, по моему опыту, с автодополнениями и прочими синтаксическими функциями современных IDE писать код удобнее и быстрее, чем создавать граф в блюпринтах. Хотя полезные сочетания клавиш и шорткаты в Unreal Engine тоже облегчают жизнь.

Blueprints и C++ в Unreal Engine: плюсы и минусы Xyz, Программирование, Unreal Engine 4, Gamedev, Разработка, Разработчики игр, Длиннопост

Источник


Я считаю, что если программисту нужно работать с Tick-функциями, или он использует какую-то сложную математику и пространственные запросы (например, LineTrace), всё это лучше вынести в С++. Отчасти из-за всех перечисленных особенностей Epic Games раздумывают над созданием отдельного скриптового языка для реализации игровой логики в Unreal Engine.


Тем не менее, блюпринты — достаточно мощный инструмент, который в Unreal Engine 4 используется не только для построения игровой логики, но и для работы с анимацией и системой эффектов Niagara. Поэтому каждая студия должна сама найти подходящий баланс между Blueprints и С++. Например, технические дизайнеры Riot Games использовали блюпринты в Valorant только для создания способностей игроков.

Blueprints и C++ в Unreal Engine: плюсы и минусы Xyz, Программирование, Unreal Engine 4, Gamedev, Разработка, Разработчики игр, Длиннопост

Valorant


Сами Epic Games рекомендуют использовать блюпринты, когда в проекте очень много ссылок на контент, а его логика работает в первую очередь на визуальную составляющую. Также они пригодятся в создании прототипов, прямолинейной или редко используемой логики, которая не является частью основной архитектуры. Всё, что не получит преимуществ в С++ с точки зрения производительности, масштабируемости и стабильности, тоже может быть создано в Blueprints.


Ну а с С++ лучше работать, если функционал используется более чем в одном месте и включает в себя сложные элементы — например, сохранение игр или сетевой код. Если проект в дальнейшем будет расширяться, то его тоже лучше создавать с помощью классического программирования — оно помогает тщательно поддерживать логику и стабильность кода.


Словом, с любыми важными переменными, перечислениями и типами данных C++ работает лучше. Но и работа в Blueprints не отменяет классический подход, а только органично дополняет его в необходимых случаях. Так что разработчикам от визуального программирования никуда не деться.

Показать полностью 3
44

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order

Во время GDC Summer 2020 старший инженер по программному обеспечению Respawn Entertainment Бартломей Васак провёл лекцию о создании физических анимаций для Star Wars Jedi: Fallen Order и проблемах, с которыми столкнулись разработчики при их реализации.


Мы побывали на лекции и перевели главное.


Лекцию пересказал Никита Казимиров.

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order Xyz, Gamedev, Star Wars, Star Wars Jedi: Fallen Order, Анимация, Игры, Компьютерные игры, Гифка, Длиннопост

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


На примере ниже воспроизводится одна и та же анимация. Но справа — «физическая», которая помогает определить точки коллизий и избежать провала текстур и частей тела друг в друга. Иными словами, анимация немного изменяется, подстраиваясь под законы физики. Слева же видна стандартная анимация, из-за которой рука персонажа проходит сквозь стену.

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order Xyz, Gamedev, Star Wars, Star Wars Jedi: Fallen Order, Анимация, Игры, Компьютерные игры, Гифка, Длиннопост

Есть три способа подстроить анимацию под физику. Первый — использование моторов. Мотор — это часть шарнирных соединений между разными частями модели. Он использует специальный алгоритм, чтобы определить источник распределяемой между телом силы. И эта сила как бы задаёт движение отдельных частей согласно конечной точки анимации, которую разработчики прописывают заранее.


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


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


При разработке Star Wars Jedi: Fallen Order начали с первого метода. Впервые его применили на штурмовиках, которых главный герой хватает при помощи Силы. В этом случае центр тяжести штурмовика движется строго согласно анимации, а вот конечности уже поддаются законам физики. Красным помечены объекты, которые двигаются исключительно благодаря прописанной анимации, — то есть физика не используется. Можно увидеть, как благодаря физической анимации ноги штурмовика взаимодействуют с ящиками. Без использования физики они просто прошли бы сквозь него.

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order Xyz, Gamedev, Star Wars, Star Wars Jedi: Fallen Order, Анимация, Игры, Компьютерные игры, Гифка, Длиннопост

Было очень важно правильно настроить несколько физических параметров. Первый — это число итераций решателя (solver iterations), от которого зависит то, насколько часто движок просчитывает применение физики за один фрейм. По стандарту в Unreal Engine 4 их восемь для позиции тела и один для скорости. Но с «моторами» такие параметры не работают: в случае Fallen Order пришлось использовать 64 для позиции и 32 для скорости.


Дополнительно пришлось заняться вопросами трения объектов и их возвращения в исходное состояние (реституцией). Эти параметры создают множество проблем для физических анимаций: высокие значения трения затрудняют движение тела к нужной точке. При разработке Fallen Order использовались низкие значения трения и реституции. Когда главный герой хватает штурмовика при помощи Силы, то трение вообще отсутствует, — чтобы физике было проще соответствовать анимации.


Ещё одна важная деталь — непрерывное обнаружение столкновений (CCD — Continuous Collision Detection). Оно должно быть включено для высокого качества анимаций, но между телами внутри одного ragdoll-объекта его лучше отключить. С физикой Fallen Order CCD работало плохо, так что Respawn пришлось написать специальный код, который притягивал тела друг к другу, если они по какой-то причине лишком сильно отдалились и перешли заданные границы.


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

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order Xyz, Gamedev, Star Wars, Star Wars Jedi: Fallen Order, Анимация, Игры, Компьютерные игры, Гифка, Длиннопост

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


Чтобы улучшить анимацию гибели штурмовиков, разработчики включили физические анимации для всех частей тела, а также применили моторы для всех соединений. Теперь основной проблемой стали бёдра штурмовика, которые служат в качестве центра его модели — из-за их подвижности бёдра могли постоянно проходить сквозь другие объекты. Но разработчики всё равно стремились к тому, чтобы центр модели поддавался законам физики, — ведь только в этом случае тела могли совершать все эти предсмертные акробатические кульбиты.


В Respawn решили сделать центр модели отдельным физическим объектом и создали для него новые ограничения, которые принуждали центр модели двигаться к конечной точке анимации. Но затем возникла другая проблема: когда тело сталкивалось с объектом, прописанные условия всё равно могли подталкивать его к финальной точке. В таком случае разработчики решили отслеживать расстояние между центром модели и финальной точкой анимации. Если оно превышало определённую величину, то для тела включался режим свободного падения.


На примере ниже показана подобная анимация. Центр модели определил, что тело не может пройти сквозь препятствие, и поэтому включилась анимация падения.

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order Xyz, Gamedev, Star Wars, Star Wars Jedi: Fallen Order, Анимация, Игры, Компьютерные игры, Гифка, Длиннопост

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


Первой разработчики реализовали физическую анимацию карабканья по выступам. Руки во время неё двигаются согласно заранее прописанной траектории, а вот все остальные части тела уже подчиняются законам физики.


На красной модели видно, что без добавления физики анимация выглядит несколько статичной. А с физикой появляются дополнительные движения, которые придают герою плавности.

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order Xyz, Gamedev, Star Wars, Star Wars Jedi: Fallen Order, Анимация, Игры, Компьютерные игры, Гифка, Длиннопост

Физика упростила работу аниматоров — благодаря ней они могли сконцентрироваться только на ключевых позах. А дополнительные движения и детали появлялись как раз за счёт физических анимаций. Использование моторов для главного героя на первый взгляд показалось очень хорошим решением. Но быстро выяснилось, что моторы подходят не для всех действий героя.


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

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order Xyz, Gamedev, Star Wars, Star Wars Jedi: Fallen Order, Анимация, Игры, Компьютерные игры, Гифка, Длиннопост

Изменение скорости анимаций также не помогло. Тогда в Respawn решили использовать другой подход. Разработчики сделали этакую «смесь из нескольких анимаций сразу», а физику ослабили. При скольжении действие физики уменьшили в два раза. В результате герой начал скользить плавнее, а ещё им оказалось более приятно управлять стиком.

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order Xyz, Gamedev, Star Wars, Star Wars Jedi: Fallen Order, Анимация, Игры, Компьютерные игры, Гифка, Длиннопост

Такой вариант и вошёл в релизную версию игры. Также ослабление физики и смешивание анимаций применяются при карабканьи по верёвке и движении против сильного ветра.


Очередным испытанием для команды стала анимация балансирования при движении под вертикальной балкой. В первых версиях Кэл двигался слишком агрессивно и активно раскачивался из стороны в сторону. А итоговая поза героя была будто «оторвана» от остальной анимации.


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

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order Xyz, Gamedev, Star Wars, Star Wars Jedi: Fallen Order, Анимация, Игры, Компьютерные игры, Гифка, Длиннопост

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


Каждая физическая анимация при обычном движении Кэла длится около двух секунд и постепенно затухает. Именно она сглаживают переход между движениями героя и добавляет им инерции. По руке Кэла можно увидеть, что благодаря инерции его движения иногда отстают от заданной анимации, иногда — опережают. Благодаря этому бег выглядит реалистично. Дополнительно в Respawn создали новые ограничения для рук, чтобы те не слишком сильно отклонялись от желаемых анимаций.

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order Xyz, Gamedev, Star Wars, Star Wars Jedi: Fallen Order, Анимация, Игры, Компьютерные игры, Гифка, Длиннопост

Похожее решение команда применила для анимации ходьбы по балке — для рук вновь задали ограничения. В итоге балансирование выглядит аккуратно и естественно.


Особые анимации пришлось отдельно прописать для напарника Кэла — BD-1. Большую часть времени он проводит на спине главного героя. В Respawn хотели сделать анимации дроида более «расслабленными», чтобы он реагировал на каждое движение Кэла естественным образом.

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order Xyz, Gamedev, Star Wars, Star Wars Jedi: Fallen Order, Анимация, Игры, Компьютерные игры, Гифка, Длиннопост

В игре это выглядит так: ноги дроида строго подчиняются анимации, а движение остальных частей BD-1 уже зависит от физики.


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


Граница, после которой изменялась анимация, была динамической. Если герой двигается медленно, то предел выше, но если Кэл перемещался слишком быстро, то предел для BD-1 становится близким к нулю. Благодаря этому голова дроида всегда находится возле цели анимации.


Ниже показана работа этого ограничителя. Слева он отключён, и голова BD-1 при перекате Кэла практически полностью проходит в модель главного героя. Справа же ограничитель включен, потому голова всегда остаётся в нужной позиции. При этом остальное тело подчиняется всем законам физики.

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order Xyz, Gamedev, Star Wars, Star Wars Jedi: Fallen Order, Анимация, Игры, Компьютерные игры, Гифка, Длиннопост

Создание физических анимаций для дроида в целом оказалось трудной задачей — пришлось повозиться с масштабированием анимаций, а это всегда создаёт проблемы. Также нужно было разобраться с порядком выполнения анимации, особенно когда Кэл скользил или совершал другие активные действия — ведь в этом случае физические анимации были активны и для BD-1, и для главного героя. Движения дроида ещё и сильно зависели от частоты кадров. При 30 fps они смотрелись натурально, но при 60 теряли правдоподобность.


Чтобы решить эти проблемы, в Respawn решили отключить коллизию для большинства анимаций взаимодействия между дроидом и Кэлом. Также анимации BD-1 разворачивались в собственной физической сцене при фреймрейте, который оставался фиксированным в любых условиях.


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

Как работают анимации на основе физики в Star Wars Jedi: Fallen Order Xyz, Gamedev, Star Wars, Star Wars Jedi: Fallen Order, Анимация, Игры, Компьютерные игры, Гифка, Длиннопост
Показать полностью 11
71

Как я сделал свою первую игру

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


Вступление.

Полтора года назад я понял, что просто играть в видеоигры для меня недостаточно, что мне нужно самому их делать. В свободное от работы время, я начал изучать основы программирования на C# и Unity 3D. В первую очередь за знаниями я полез в You Tube, через пару недель понял, что это полный шлак, за тридцатиминутный ролик пишешь три строчки кода, а заэкранный гуру толком объяснить не может, что только что написал. Потом были уроки в docs.microsoft.com и еще что-то подобное, здесь уже получше, но для новичка сложновато. Лучшее что я нашел для человека без опыта программирования, при этом применительно к Unity, была книга Джереми Гибсона Бонда “Unity и C Шарп. Геймдев от идеи до реализации”. Товарищ Бонд на пальцах объясняет, что такое C#, что такое Unity, как писать код, что писать, все это с примерами и пояснениями, полно практических заданий, в том числе создание прототипов игр, так же много написано об игровой индустрии и геймдеве. Сразу скажу, даже с такой разжёванной информацией, за месяц, два, три, возможно полгода, программистом вы не станете. Более того, я стал понимать, что там вообще в этом коде написано, только через год (возможно, если бы я уделял учебе больше времени, и не делал длительные перерывы, это случилось бы быстрее). За этот год я дважды прочитал эту книгу, дважды выполнил большую часть заданий оттуда, прочитал и выполнил задания еще из одной книги.

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


О разработке игры.

Так как опыта у меня, по сути, было ноль, я решил сделать максимально простую игру для смартфонов. Задачи, которые я поставил перед собой: игра не должна быть похожа на какую-либо уже существующую и известную мне игру, то есть нужно было самому придумать геймплейные механики; геймплей должен быть простой, чтобы я сам мог полностью написать код; так как мне больше интересен дизайн, а не программирование, сделать упор на визуальную составляющую; и самое главное, сделать нормальную игру, не халтуру, и тем более не откровенное д****о, а просто нормальную, казуальную игру. Кое-какие наработки тогда у меня уже были, я выбрал игру, которая как раз была мне по силам. Суть игры: в игре есть пять лунок, напротив каждой пролетает шарик, нужно вовремя нажимать на экран, когда шарик пролетает мимо лунки. Быстренько придумал пять режимов движения шаров, для каждого режима задумал отдельное визуальное оформление, и приступил к рисованию спрайтов. Вообще, изначально я задумывал игру с минималистичной графикой (минимализм нынче в почете...), но поэкспериментировав с цветами, градиентами и тенями, подумал: “тварь ли я дрожащая или рисовальщик”. В общем, было решено рисовать в более реалистичном стиле, это решение продлило разработку месяца на полтора, потому как я рисовал и одновременно учился рисовать. В итоге получилось слишком реалистично. Сейчас могу сказать, что реалистичный стиль для таких игр не очень удачное решение, лучше использовать более привычную для мобильных игр графику, например как в Angry Birds, хотя то, что нарисовал я, на мой скромный взгляд выглядит симпатично. Еще я понял, насколько важны концепт-арты. Раньше я садился рисовать примерно представляя, что мне нужно, но рисовал уже как окончательный вариант, в плане качества, в какой-то момент понимал, что это не то, стирал все, или перерисовывал какие-то части. Все это занимало уйму времени, лучше изначально нарисовать хоть какой-нибудь рукож**ый концепт-арт, главное, чтобы была видна общая картина происходящего в игре, и как элементы сочетаются друг с другом. Потом сел писать код, тут ничего интересного сказать не могу. Попутно с написанием кода собирал саму игру. Выделил пять глав. Проходишь все уровни в главе, открывается следующая глава, а также бесконечный уровень для пройденной главы, каждая глава отличается визуально и схемой движения шаров. Еще есть шестая глава, в ней пять бесконечных уровней, каждый уровень посвящен одной из пройденных глав, то есть вы можете выбрать визуальное оформление, какое вам больше по вкусу, но геймплей в них одинаковый, сочетает схемы движения шаров всех пяти глав, то как будет двигаться шар определяется рандомно. Если честно, в шестую главу мне больше всего нравилось играть. Звуки для игры использовал из бесплатных ассетов, с музыкой у меня вообще не очень. Собрал игру, воткнул в нее Unity ADS, придумал название “HitEra”, игра готова, пора и в мир отправлять. На все про все ушло около 4 месяцев, очень много страдал фигней, и мало времени уделял разработке, плюс недостаток опыта сыграл свою роль, в следующий раз надеюсь пошустрее справлюсь.


Как я сделал свою первую игру Android, Игры, Unity, Google Play, Gamedev, Я сделяль, Гифка, Видео, Длиннопост

На гифке шестая глава, на сколько я знаю, до нее так никто и не добрался.

Как я сделал свою первую игру Android, Игры, Unity, Google Play, Gamedev, Я сделяль, Гифка, Видео, Длиннопост

Релиз.

С самого начала разработки я не рассчитывал заработать на своей игре, делал ее скорее для того, чтобы поверить в свои силы, что я могу в принципе что-то сделать, ну и для портфолио. По этой причине на раскрутку и рекламу было потрачено 0 рублей. Но и совсем на халяву делать не очень хотелось, поэтому реклама в игре присутствует. Итак, отправляю заявки на регистрацию в качестве разработчика в Google Play, Samsung Galaxy Store и Huawei App Galary, в гугл, естественно, с денюшкой. В гугле и самсунге все окей, загрузил игру, в Galaxy Store ее выложили через день, в Google Play через неделю. Первые десять скачиваний от друзей, отзывы тоже. Хоть мне казалось, что рекламы не много, друзья все же жаловались на ее большое количество. Пришлось убрать всю пропускаемую рекламу, оставил только один показ после прохождения главы, его пропустить нельзя, но за просмотр вам дадут дополнительные звезды, они нужны, чтобы открывать новые главы, если вы плохо играете. В течение двух недель, ежедневно выкладываю посты на форумах и в соцсетях. Все это время от Huawei ни слуху ни духу. Решил написать в тех поддержу, мол, подтвердите регистрацию. Через несколько дней ответили, что я там что-то неправильно заполнил, окей, исправил, отправил. В этот раз две недели я не ждал, через два дня написал в тех поддержку. Еще через пару дней все подтвердили. Сразу залил игру, и через пару часов она в App Galary, хоть что-то они сделали быстро. Итак, время идет, игра висит на сторах, загрузок очень мало (на момент написания 88, на три маркета), и как бы я на это морально не настраивался, как бы к этому не готовился, все равно, факт отсутствия интереса к игре меня очень сильно печалил. Немного поднял мое настроение сервис предоставления взаимных отзывов appenhancer. Он, конечно, не помог игре продвинуться, зато я увидел, что делают другие начинающие разработчики. И это вернуло мою самооценку на прежнее место, потому что такого лютого д***ма я давно не видел. Я вот вообще не понимаю, как такое можно в принципе кому-нибудь показывать, а уж тем более выкладывать в Google Play. Конечно, там были и не такие уж плохие игры, пару раз попадались прям нормальные, но в памяти отложились только те, от которых у меня горело одно место. Сейчас я периодически выкладываю посты об игре, люди потихоньку скачивают, но не очень активно.


Итог. Что дальше?

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

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


Надеюсь, вы зацените мою игру.

HitEra


Google Play:

https://play.google.com/store/apps/details?id=com.Sn50Games....


Samsung Galaxy Store

https://galaxystore.samsung.com/detail/com.Sn50Games.HitErat...


Huawei App Galary

https://appgallery8.huawei.com/#/app/C102660381

Советы от новичка, новичку:

Возможно, кому-то больше понравятся уроки в ютубе, но я все же посоветую, начинать учиться игрострою по учебникам. Уточню, в ютубе много видео, в которых говорится, как решить какую-либо задачу или проблему, такие видео конечно же очень полезны, их игнорировать не стоит, но конкретно уроки типа “Как научиться делать игры на юнити”, по-моему, крайне бесполезны.


Учебники, которые мне попались:

Unity и C Шарп. Геймдев от идеи до реализации. Джереми Гибсон Бонд (прям вообще для новичков).

Unity для разработчика. Мобильные мультиплатформенные игры. Джон Мэннинг, Пэрис Батфилд-Эддисон (тут уже нужны кое-какие знания).

Unity в действии. Мультиплатформенная разработка на C Шарп. Джозеф Хокинг (до этой книги не добрался, может кто-нибудь читал, поделитесь мнением)


Реально оценивайте свои силы. Я бы тоже хотел сделать игру уровня GTA V или RDR 2, а не мобильный кликер, но всему свое время.


Делайте наброски будущей игры, это сэкономит много времени. Все-таки концепт-арт не зря придумали.


Определитесь с направлением деятельности. Не стоит одновременно быть дизайнером, программистом, геймдизайнером, сценаристом и т.д.


P.S. Не хотел растягивать пост на 10 страниц, поэтому многие моменты опустил, если кому-то что-то интересно отвечу в комментариях.

Показать полностью 2 1
77

Делюсь архитектурным шаблоном (StarterKit) для Unity проектов

Всем привет!


Периодически я пилю тут посты, которые с переменным успехом то набирают плюсы, то набирают минусы)))


Сегодня хочу поделиться шаблоном (в некотором роде "стартеркит") Unity-проекта, подходящего почти для любой игры. Набросал его для одной из инди-команд сообщества "Индикатор".


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

В репозитории (ссылку приведу в конце) используется как собственный код, так и сторонний (NonDrawingGraphic, UIParticleSystem).


Сейчас это шаблон с примером реализации Главного Меню (назову это "Экраном") и появляющегося окна (назову это "Диалогом").

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


Логика следующая - существует главная сцена с контроллерами/менеджерами. "Главный Игровой Контроллер" при загрузке игры (появлении этой сцены при запуске) отображает загрузочный экран (назову это "Прелоадером").

Затем (не реализовано, т.к. это индивидуально для каждого проекта) предполагается чтение/загрузка настроек, конфигураций, файлов-сохранений и пр.

После этого вызывается экран "Главного Меню", который загружает необходимую ему сцену (разумеется, оставляя первую "главную" сцену активной), включает музыкальный фон и убирает "Прелоадер".


Буду очень рад вопросам, критике и советам по улучшению.
Ссылка на репозиторий: https://github.com/DL-SKY/PrototypeForIndicator

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

Удачи и успеха всем в геймдеве!

227

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy

Little Game Engine (LGE) – это виртуальная игровая консоль выдуманной конфигурации, с выдуманным процессором и онлайн web-SDK, состоящий из компилятора С-подобного кода в ассемблер и дальнейшей перекомпиляцией его в машинный код с возможностью исполнения этого кода там же, в онлайн в эмуляторе.

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

Как видно из названия, заточен весь комплект на быстрое создания 2d ретро игр. Более 20 игр уже готовы, несколько в разработке.

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

Чтобы поиграть онлайн, перейдите по ссылке игры ниже, выберете «compile» и затем «run».


TankCity, 1916, FourINaRow, BlackJack, ZombieDefence, MicroRace, DwarfClicker, Galaxies, Memories, NinjaEscape, Mines, Breakout, TowerDefence, FlappyBird, WormBlast, ESProgue, Snake, FishLife, Columns, MarsAttack, CityRunner, Asteroids, Bashe

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

Отдельный плюс в том, что эмулятор LGE virtual machine помимо онлайн версии написан и для ESPboy гаджета, который имеет сходную с LGE VM переферию воплощенную в железе и про который я уже писал.


* цветной экран разрешением 128х128,

* 8 кнопок,

* однобитный звук

* RGB светодиод

* подходящий по скорости эмуляции микроконтроллер ESP8266

* встроенную флеш память с файловой системой SPIFFS

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

Таким образом можно загружать откомпилированные в онлайн LGE SDK игры в портативный ESPboy, брать его с собой и с интересом коротать свободные минуты.

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

Загружать игры можно, как по проводу (см. заргрузка файлов на spiffs), так и через WiFi. Удерживая при запуске ESPboy кнопку «B», мы превращаем гаджет в точку доступа, и подключившись к ее WiFi сети с именем «ESPboy» через браузер, попадаем в веб интерфейс файловой системы, где можно, как удалять файлы, так и загружать новые.

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

Остается только собрать гаджет, на что есть схемы, инструкции и kit набор для сборки, который вскоре будет доступен на tindie.com.

Наигравшись в существующие игры – можно довольно быстро начать писать свои.

Игровая консоль и игры к ней своими руками. Little Game Engine + ESPboy Esp8266, Arduino, Gamedev, Программирование, Микроконтроллеры, Длиннопост

Краткая спецификация LGE виртуальной машины:


- Набор из 108 инструкций навеян CHIP8/SCHIP и микропроцессором MOS6502.

- 16 регистров по 16 бит, нулевой регистр является указателем стека.

- Каждая инструкция двухбайтовая, некоторые инструкции содержат после себя два байта данных

- Адресуемая память 20Kб.

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

- Размер экрана 128х128 пикселей, 16 цветов на точку, что занимает 8Kб памяти, еще столько же занимает буфер для рисования спрайтов и частиц.

- Обновление экрана около 20 кадров в секунду.

- Можно рисовать тайлы и 32 спрайта размером до 128х128 пикселей с возможностью вращения и зеркалирования.

- Поддерживается работа с частицами.

- Для экономии памяти можно использовать однобитные изображения или RLE сжатие.

- Присутствует упрощенная физика: обнаружение столкновений спрайтов со спрайтами и тайлами, разрешение столкновений, гравитация.

- Экран обновляется построчно, только если в строке произошло изменение пикселей.

- Скорость VM в зависимости от того, сколько строк отрисовывается в кадре, варьируется от 100 тысяч до 900 тысяч операций в секунду.

- Можно использовать разные цветные экраны, есть программное растягивание изображения.


Чтобы не писать напрямую в опкодах, в SDK входит самописный компилятор «LGE С», представляющий из себя «C» образный язык высокого уровня. На данный момент этому компилятору далеко до полной поддержки стандартов языка C и при компиляции можно легко столкнуться с непонятной ошибкой в непонятном месте. Зато он быстр, ведь он занимает меньше 2000 строк исходного кода, а также постоянно развивается.


LGE онлайн среда разработки с компилятором и эмулятором

Описание виртуальной машины LGE

Руководство по LGE компилятору «C» образного языка

Исходный код игр LGE на LGE C


На LGE SDK уже сделано не мало игр и можно продолжать создавать новые прямо сейчас, однако до совершенства далеко. Если кто-то желает принять участие в создании новых игрушек на LGE или улучшении самого LGE SDK, а так же если кто-то заинтересовался сборкой ESPboy, добро пожаловать на форум www.espboy.com.

Там постараемся ответить на все вопросы и помочь в реализации идей.


Всем добра и успехов в творчестве.


С уваженеием,

Роман

Показать полностью 5
51

Клон контры на Unity - часть 8

И вот, спустя ГОД я наконец-то добрался до продолжения!
Все основные механики геймплея доделаны, при желании в это даже можно играть!

Будет ещё один, заключительный пост с последним наборов визуально-менюшно-звуковых роликов, и можно считать серию завершённой!

Клон контры на Unity - часть 8 Программирование, Игры, Gamedev, Unity, Contra, Гифка, Видео, Длиннопост
Показать полностью 2
211

Heart of Glim: Кондуктор

Один из персонажей, сделанный мной для игры которая находится в процессе разработки.

Heart of Glim: Кондуктор Крипота, Анимация, Gamedev, Компьютерная графика, Гифка

Вот так он выглядит в движении (сделано при помощи Spine 2d).

Heart of Glim: Кондуктор Крипота, Анимация, Gamedev, Компьютерная графика, Гифка

Игра ещё на очень ранней стадии, но если интересно, то за ней можно понаблюдать на нашей странице в твиттере: https://twitter.com/Team_RainyDay

Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: