КлиентNDA
СфераРазвлечение и спорт
РегионШвейцария, Zürich
СданоНоябрь 2024

Задача

К нам за программированием игры обратилась компания разработки

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

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

Нетипичная боль клиента – страшно умная команда

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

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

Решение

Eqvidation — иллюстрация к кейсу, изображение 1

Результат

Стек технологий

  • JavaScript — Язык программирования
  • TypeScript — Язык программирования
  • WordPress — CMS

Награды

  • Workspace Digital Awards — Игры / Десктопные игры, 2 место, 2025

Над проектом работали

  • Джонатан Бдоян — Team Lead
Текстовая версия презентации

Решение

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

Геймдизайн

Предложили клиенту три концепции игры и выбрали лучшую. Жанр игры — платформер, а стиль геймплея — Bullet hell.

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

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

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

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

Дизайн

Пиксель-арт — фирменный почерк We Wizards, и все локации игры отрисованы в этом стиле. У нас это здорово получается, именно наши кейсы привлекли клиента по стилистике.

Чтобы быстро формировать уровни и создавать там окружение, мы выбрали программу Tiled.

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

Боссы игры:

  • Spinner: «You can't stop the singularity, try to handle my balls.»
  • Ph. Demon

Музыка

Её продакшн тоже взяли на себя. Джон (это наш геймдизайнер) написал демо, а Даня (разработчик игры) прописал гитару. Получился офигенный саундтрек к игре в жанре индастриал рок, и музыка к субтитрам в стиле Мика Гордона.

Анимация

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

Наш ассет-лист состоял из 300–400 строчек разных actions для всех объектов.

Разработка

Во-первых, движок. Для нас это стал полюбившийся Phaser.js. Во-вторых, нативный Javascript + Typescript. В-третьих, высочайшая оптимизация (60 FPS). В-четвертых, он имеет базовую поддержку созданных карт в Tiled.

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

После проведения этих работ дальнейшие задачи делились на 5 типов:

  • Реализация фичи в самой игре
  • Реализация управления фичей через карту
  • Интеграция ассетов этой фичи
  • Написание документации в нашу базу знаний (для левел-дизайнера)
  • Связь с баланс-листом на бэке (если необходимо)

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

Баланс и бэкенд

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

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

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

Стек технологий

  • Phaser
  • JavaScript
  • TypeScript
  • WordPress
  • REST API