Как я C# прокачивал и другу на ДР игру делал + Видеопрохождение от тестеров

zBekAov
Миджорня + много Blender’a и фотошопа

Я сделал небольшую трэшовую игру другу на день рождения, заснял его реакцию и прохождение тестеров из чего получился отличный видос. Данный пост разбит на две части. История разработки и объяснение контекста лежит для вашего удобства под спойлером. Ниже само видео. Читать текст/смотреть видео и в каком порядке на ваше усмотрение. В любом случае, спасибо за уделенное время и приятного вам чтения/просмотра!

Геймдевом я занимаюсь уже давно и образование у меня с уклоном в программирование, тем не менее собственно программистом я никогда не работал и прикладного опыта почти не имел. В колледже я писал пару игр на Pascal, перед выпуском сделал кривую пародию на Super meat boy на C + OpenGl. В университете же играми для учебы у меня не было возможности заниматься, тогда я начал осваивать движки и делать что-то в свободное время. Пробовал Unity, он особо не давался, но вот Gamemaker и кодинг в нем оказались очень простыми, поэтому я сел за его изучение и даже собрал пару игр.

Одна из них Dandelion’s tale учувствовала в гаминаторе, и могла бы себя неплохо показать, если б я не ошибся с днем окончания конкурса, за пару часов до окончания конкурса я захожу сюда на сайт и понимаю, что уже нужно сдавать проект, а я планировал потратить на разработку еще целый день! Игра была почти готова, но без меню и части графики. Я по-быстрому собрал все что нужно, но не успел протестить игру на наличие ошибок (а баги там оказались критические). Насколько я помню, мне организатор предложил выделить еще время за счет потери определенного числа очков, но я отказался, ибо еще не знал насколько там все плохо с багами.

Еще я очень люблю дарить подарки, и в двойне круто, когда они не обычные и дарят много эмоций имениннику, а что самое важное мне)))))) В 2015 году надвигалась днюша моего универского друга Сереги, а денег на подарок у меня не было. Все было отложено на коллекционку Ведьмака 3. У меня был еще один ключ того же Ведьмака, купленный на старте предзаказов (до анонса коллекционки), но если бы я подарил просто ключ, подарок бы не запомнился, а мне хотелось, чтобы именинник его выстрадал(вот такая я мразь). Вспомнив сказку про Кощея и его слабость я решил сделать игру, по прохождению которой именинник мог бы забрать этот самый подарочный ключ, а игру засунул в запароленный архив. К архиву приложил readme файл с нетривиальными загадками, решение которых нельзя тупо загуглить, и отправил имениннику заранее предупредив, что получит в итоге, чтобы у него была мотивация. Ключ он в итоге, хоть и с моими подсказками, забрал.

Игра называлась Autisme squad

Сейчас я прекрасно понимаю, что называть кого-то аутистом не очень-то хорошо, потому что это стигматизирует людей с реальным синдромом Аспергера, но тогда нам было весело при малейших затупах так друг друга называть. А почему именно autisme SQUAD? Слышали про стопгеймовский ДеградОтряд? Вот это в ту же степь, но было раньше. Мы играли с пацанами во всякие мультиплеерные игры и вечно кто-то нещадно тупил руиня все происходящее, что вызывало у остальных пожары ниже поясницы. Autisme squad это когда вы играете в Rainbow Six Siedge, и ты играя за оперативника Fuze случайно убиваешь всю свою команду кассетным зарядом через стену. Autisme squad это когда играя в Payday 2 вы 4 минуты обговариваете план, но он руинится, потому что один из напарников с двух метров выпустил всю обойму пистолета, но так и не попал в охранную камеру. Ну вы поняли…

и рассказывала о нашей универской компашке друзей, в главной же роли выступал сам именинник. Он должен был разгадать тайну: почему везде разбросаны чипсы Doritos, а город заполонили зомби с его лицом, и как с этим связаны иллюминаты. Игра получилась смешной (для нас), сложной, очень кривой, но главное, что со своей задачей прекрасно справилась.

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

Так уж распорядилась судьба, что после gamemaker я работал и постигал в основном Unity. Им владел Puffick, а следовательно на нем мы делали игры для гаминаторов, на нем так же работали в компании где рисовал графику почти 4 года, с ним же и продолжил свой дальнейший путь. Тем не менее кодить мне там почти не приходилось, хотя небольшие скрипты я конечно писал. И отсутствие этого навыка очень сильно мешало мне на моем пути инди-разраба, особенно, когда я приступил к своему основному проекту.

Autisme squad 2

Мне нужен был небольшой «студенческий» проект, на котором я бы мог подтянуть знания как языка, так и связать все навыки работы с Unity и кодингом. Собрать с нуля в одно лицо законченную игру. На горизонте как раз намечалась днюша университетского друга Захара, поэтому я вспомнил свое старое обещание собрать сиквел Autisme Squad и приступил к работе. Графику я сразу решил делать минимальной, чтобы сосредоточится максимально на кодинге. Музыку взял из соображений «чтобы зашло нам с именинником» не смотря на лицензии.

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

Детально об игре

Игра — маленький набор мини-игр со связующим сюжетом, где главный герой со своими старыми универскими друзьями вспоминают свои старые приколы. Что дает нам следующую структуру: Диалоговая сцена —> мини-игра 1 —> Диалоговая сцена —> мини-игра 2 —> Диалоговая сцена.

Игра работает в режиме мульти-сцены и подгружает/выгружает нужные сцены в Unity незаметно для игрока. Смена же сцен маскируется катсценками сделанными с помощью timeline, к которому мы еще вернемся.

593aC9Q

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

zLQ7LXH

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

rPMS1s6

Еще забавная штука отсюда же это зеркало. Думаю сами не понаслышке знаете какой гемор делать зеркала. Но здесь все просто и разгадка лежит под дверцей правой кабинки в отражении: там нет ног, а следовательно это просто симметричная сцена. Чтобы у персонажей здесь отрабатывались правильные анимации персонажи за зеркалом просто поскейлены по X на -1.

cFbpZgt

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

lpKo5rz

Мини-игра 1

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

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

Сперва я просто сделал все необходимые механики. Рука двигалась туда-сюда, пила крышкой, из нее капал йогурт, иногда падали жизьки и монетки. Так же она могла резко поменять направление движения не доходя до края экрана. Если игрок долго стоял на месте, то ладони побокам сдвигали его ближе к центру. И всё это было чертовски скучно. Подумав, я решил, что эта миниигра должна стать чем-то вроде bullet-hell'a под музычку, и тогда мне в твиттере попался тред про Rush-E. Если вы ничего об этой истории не слышали, настоятельно советую ознакомится.

UwN99d9

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

SxsuxXJ

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

Изначальный скучный режим я оставил в качестве обучения. Игрок сперва должен накопить 10 жизек, привыкнуть в правилам игры, только после этого запустится bullet-hell.

Мини-игра 2

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

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

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

Здесь из интересного:

  • Связь слайдера накопления «заряда» с блендшейпом тела главного героя. Что позволяет наглядно раздувать живот.
  • Набор сэмплов бандитов из S.T.A.L.K.E.R. для студентов, которые идеально легли в контекст происходящего (мои фавориты: «Это типа музыка была?», «Брат, не шмаляй», «Ливер вылез»).
  • Главный герой как и все NPC передвигаются по навмешу, что дает с одной стороны немного ватное управление, но с другой герой может обходить небольшие препятствия сам.
  • Контроллер главного героя такой же как и в первой миниигре, различается лишь состояние, разблокируя больше возможностей для управления.
  • NPC так же написаны с использованием стейт машины. На учителях и учениках висят одни и те же скрипты, только галочка в настройках влияет на возможности и поведение.
  • Для облака газа прям симулировал дым в Blender, и сделал из полученного спрайтшит.
h4QmB63
Полная локация для второй мини-игры

Видео с прохождением

В конце разработки, перед тем как подарить игру, я провел с друзьями серию плейтестов, что дало мне выявить множество багов и ошибок в тексте, поправить баланс и выдать законченный годный продукт. Для этого мы созванивались в Discord, они играли, а я с выключенным микрофоном наблюдал со стороны никак не вмешиваясь. Так же я попросил их по возможности комментировать все что считают нужным. Эти плейстесты, как и прохождение именинника я записал и смонтировал в видос. Получилось, на мой взгляд очень смешно. Если вы прочитали весь текст выше, то можете сразу мотать на 2:37. В посте есть вся та же информация, только намного подробнее. И да, ребята не знали что их записывают, поэтому в видео много искренних эмоций и нецензурной брани.
Прямая ссылка на видео

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

Ссылка на игру: redoniproduction.itch.io/as2−2022


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