реклама
разместить

Наш первый геймджем или история о том, как мы сделали игру за 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

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

13
реклама
разместить
7 комментариев