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

Всем привет, как вы уже могли понять из названия, речь пойдет о нашем первом геймджеме. Если кто не знает, геймджем это что-то вроде марафона, где нужно за определенное время создать игру и представить её до окончания срока. В нашем случае это был Mini Jam 143: Ink. Выбрали мы его случайно, была идея поучаствовать в геймджеме, зашли на itch.io и выбрали джем, который проходил на следующих выходных, тематика была заранее задана - чернила, а ограничение стало известно после старта геймджема - управление несколькими объектами. Теперь перейдем к началу джема.

А перед началом хочу сразу посоветовать посмотреть видео на ютубе про этот джем, там вы можете увидеть все визуально и про итоги джема тоже не забыли)

Идея

Первым делом появилась идея сделать платформер, для персонажа сразу выбрали чернильницу:

А вот и наш главный герой
А вот и наш главный герой

Врага решили сделать замазкой, по итогу получилось что-то между замазкой и зеком)

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

Окружение нарисовано специально под тайлмап(Tile Map), удобная тема, советую ознакомится, особенно если делаете платформер. Сам тайлмап представляет из-себя объект в котором используются спрайты и инструмент для "рисования" на тайлмапе - Tile Palette. С помощью него вы можете выбрать нужные спрайты и спокойно размещать их с помощью кисточки.

Вот собственно интерфейс Tile Palette и наши объекты для уровней
Вот собственно интерфейс Tile Palette и наши объекты для уровней

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

Блоки для рисования, по линиям можно спокойно ходить
Блоки для рисования, по линиям можно спокойно ходить

Чуть позже придумали систему рычагов, а после добавили одну особенность, если коснуться рычага, то им можно управлять с помощью 1 и 2. А когда игрок коснется следующего рычага, то именно этот рычаг станет управляемым, а над старым потеряется контроль. Если на словах не понятно, то можно опробовать это на практике, в конце будет ссылка на игру.

Вот так выглядят рычаги
Вот так выглядят рычаги

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

Главное меню
Главное меню

Уровни сохраняются после финиша, пока не пройден 1, нельзя зайти на 2, вроде все логично. Пока готово только 3 уровня и ещё один бонусный(на версии для геймджема он был единственным)

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

Реализация

А теперь расскажу о реализации, будет по большей части описание словами и то как это сделано в самом Unity

Начну с системы рисования. Под объекты клеточного листа выделен отдельный Tile Map, на который прикреплен скрипт, который определяет, курсор на поле или нет. Есть специальный объект курсора-кисточки, он следует за положением мыши и если он на поле рисования, то можно рисовать. Сами линии создаются из префаба с компонентом LineRenderer + EgdeCollider(чтобы можно были ходить по линии).

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

Меню реализовано с помощью отдельного объекта со скриптом, который указывается у кнопок в On Click()

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

Добавляем объект со скриптом и выбираем нужную функцию, все просто, точно также реализован PauseMenu, но только с одним отличием, нужно останавливать время во время паузы: Time.timeScale = 1 и Time.timeScale = 0. 1 - время идет, 0 - останавливается

Ещё была реализована система спавнпоинтов, создаем объект, на нем скрипт с массивом, в этот массив добавляем поинты с триггером

Yandex SDK

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

Мы реализовали следующие функции:

  • Сохранение прогресса (локально)
  • Возрождение к спавнпоинту за рекламу
  • Реклама в начале уровня
  • Локализация на русский и английский

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

Возрождение реализуется следующим уровнем, при падении вниз на триггер или касании врага запускается скрипт , который показывает рестарт меню

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

Далее выбор, либо продолжаем со спавнпоинта за рекламу, либо начинаем сначала и без рекламы, все просто

Реклама реализуется через RewardVideo и Fullscreen banner в случае началом уровня, все функции можете найти на официальной документации Яндекса, просто заходите в Yandex Game Console и выбираете "Документация"

В начале уровня запускается реклама Fullscreen, закрывается просто на крестик, без ожидания

Локализация реализуется с помощью объекта Language, на нем как раз стоит скрипт, который из Яндекса получает язык интерфейса и мы его уже используем в скрипте на текстовых объектах, в двух полях прописываем русский и английский вариант. Если нужен новый язык, добавляем ещё одно поле и пишем перевод.

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

Заключение

В статье я рассказал о конечной версии игры, хоть она и не сильно отличается от той что была на геймджеме, мы не успевали сделать все что хотели: рычаги дистанционно двигали все мосты, левел успели сделать только один ну и сделали экран загрузки. В остальном, игра почти не отличается, все что было на геймджеме, тут описано. Игра в данный момент уже прошла модерацию и вы можете сами протестить что получилось ну нас по итогу -> Inkventure:Draw and Run

До скорых встреч!

1313
7 комментариев

Как сделали говно не кому не нужное за 72 часа я бы назвал

Ответить

Ну и токсичный же ты пиздюк

5
Ответить

А я бы это назвал "как высрал никому не нужный комментарий" ;)

4
Ответить

В этом и смысл, тут главное скорость и поиск идеи.

2
Ответить

Молодцы, что поучаствовал, но камера конечно ахтунг. У меня как будто близорукость, дальше метра перед собой не видно жеж https://habr.com/ru/articles/343376/

1
Ответить

Отмена.

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

1
Ответить

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

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

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

1
Ответить