DOU гра. Як прототип, зроблений за годину, ми перетворили на донат у мільйон гривень

Всім привіт! Мене звати Сашко Перемот, я редактор GameDev DOU. Багато з вас помітили, що у квітні на DOU провели експеримент — до двадцятиріччя спільноти запустили невеличку гру на підтримку збору для фонду «Повернись живим». Мінімальною метою було задонатити 200 тисяч гривень, однак в результаті сума зросла до одного мільйона. Я допомагав з проєктом і в цьому блозі розповім про народження ідеї, а також яким був перший прототип і які етапи пройшла наша невеличка команда.

Перший етап: від ідеї до прототипу

«Чи є у нас дружній інді-розробник? З’явилася ідея створити простеньку гру — на кшталт тієї, де вовк збирає яйця в кошик. Необмежена кількість спроб, кожне спіймане щось це, умовно, 5 гривень донату від DOU. Є загальна турнірна таблиця користувачів, а потім найкращим 10-20-30 юзерам даруємо квитки на DOU Day, мерч, або ще щось. Плюс суму, яку юзери назбирають, — DOU донатить. Треба людина, щоб з нею обговорити цю ідею і її реалістичність», — написала 5 березня в нашому внутрішньому чаті CEO DOU Владислава Зацаринна.

Я сприйняв це, як особистий виклик. Річ у тім, що останні два роки я не закриваю Unity і майже кожного дня хоча б трошки працюю в рушії. За цей час я зробив по туторіалах кілька маленьких ігор: хрестики-нулики, змійку, нескінченний ранер, елементарний платформер тощо. Серед них, звісно, була і ловля предметів в стилі «Ну, постривай» (також відома, як «Електроніка ІМ-02»). Насправді це був клон японського Nintendo EG-26 з серії Nintendo Game & Watch. Просто оригінального вовка з капелюхом замінили на вовка з мультфільму, дали йому кошик, а замість півня, що виглядає з будиночка, вставили зайця.

Мені стало цікаво чи зможу я на швидку руку зібрати простенький прототип, не підглядаючи у туторіали і не використовуючи ChatGPT. Виявилося, що так. Вже за годину зверху екрана падали трикутники, внизу їх ловив квадрат, а якщо він пропускав три чи чотири об’єкти — гра закінчувалася.

Одразу ж здалося, що цьому прототипу не вистачає характеру і я вирішив його трошки прикрасити. Замінив трикутники на сир (очевидно), квадрат на галеру (ще більш очевидно), додав життя та лічильник збору. Галерою на цьому етапі потрібно було керувати мишкою. Нічого особливого, але, на мою думку, навіть найпростіша візуалізація задуму завжди краще опису на словах.

Вранці я спитав у Влади чи схоже це на її задум. Прототип виявився близьким до початкової ідеї і вже за пару годин ми обговорювали подальші перспективи. Домовилися, що на вихідних я подумаю, як гру можна зробити веселіше і вже з понеділка почнемо працювати повноцінно.

Ключові механіки я придумав доволі швидко. По-перше, мені хотілося, щоб керування галерою нагадувало серпантиновий спуск на лижах (його ще називають slalom-style turns). Щоб досягти цього ефекту я вирішив наступне:

  • як тільки гравець натискає кнопку руху, галера прискорюється, а через короткий час швидкість опускається до стандартної;
  • після відпускання клавіші галера ще якийсь час продовжує рухатися куди рухалася;
  • після різкої зміни напрямку на короткий час сповільнює рух.

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

По-друге, я все ж замінив сир на монетки і зробив їх різного номіналу (бронзова, срібна, золота). Монетки мали спавнитися по дві з випадковим часовим інтервалом (від 0,5 та 2 секунд), кожен номінал мав свою швидкість і з часом гри вона збільшувалася. Налаштовуючи це прискорення можна було міняти суму донату за одну ігрову сесію. По-третє, до монеток я додав ігрові об’єкти з негативним та позитивним ефектом, а також рятівний об’єкт. Перші мали сповільнювати гравця чи зменшувати його хітбокс, другі мали додавати життів, монеток, збільшувати швидкість тощо. Рятівним об’єктом мав стати магніт, який на невеличкий проміжок часу (від 3 до 5 секунд) притягував усі монетки на екрані до координат гравця.

Для себе я вирішив, що перетворю створення другого прототипу на вправу з використання івентів у Unity. Тобто, коли гравець підбирає монетку в якийсь лічильник летить повідомлення, що він підібрав ось такий номінал. Також коли кількість життів гравця ставала нижчою певного значення, то сутність, що спавнить спецоб’єкти, отримувала про це повідомлення і, наприклад, випускала рятівний об’єкт.

Найскладнішим в другій версії прототипу виявилося створення візуального стилю. Я розумів, що у нас є дизайнер і скоріш за все фон, об’єкти, самого гравця буде робити він. Однак мені все одно хотілося, щоб прототип виглядав приємно. Хоча б для мене. Тому ще день я витратив на те, щоб відмалювати паралакс позаду та човник — на цьому етапі я ще планував зберегти морську тематику, хіба що перенести все на Дніпро у Києві. Нижче можна побачити другу версію прототипу.

Другий етап: продакшн

В понеділок я показав команді другий прототип і закликав всіх долучатися ідеями, оскільки часу лишалося обмаль. Початково ми планували випустити гру на день народження DOU (24 березня). На цьому етапі ми ще сподівалися встигнути. Фідбек зібрали швидко. Якщо його підсумовувати, то:

  • картинка була занадто темною;
  • потрібно було більше айтішності;
  • ідея спеціальних об’єктів всім сподобалася;
  • ліміт донату на одну ігрову сесію вирішили встановити на рівні ~50 грн.

Окрім того, під час обговорення другого прототипу з’явилося ще дві ідеї. Перша — розділити всіх гравців на сервісні та продуктові команди. Користувач мав один раз обрати, за кого він грає, а після вже не міг змінити сторону. Друга — додати камео Влади, Макса Іщенка та нашої Queen of community Марії. Я одразу зрозумів, що у кожного буде своя наративна роль: камео Влади буде сваритися, що юзери збирають забагато грошей; камео Марії навпаки, підбадьорювати збирати ще більше; ну, а камео Макса просто дивуватися, якими дивними речами ми тут займаємося.

В процесі обговорення також дійшли висновку, що для додавання айтішності варто змінити локацію. Так ми залишили столичні схили Дніпра і опинилися в корпоративному опенспейсі, а замість човника з’явився офісний стілець.

На цьому етапі для мене єдиною проблемою було поєднання турнірної таблиці з ігровим процесом. За задумом, у нашу гру могли зіграти тільки ті користувачі, що мають профіль на DOU і залогінені в нього. При цьому з їх облікових записів і мала складатися турнірна таблиця. І якщо будь-які ігрові нюанси в мене проблем не викликали, то тут я просто не знав, що робити.

На щастя, до проєкту доєдналася розробниця Оксана Лобко. Тому у середу, 12 березня, ми зібралися на черговий зідзвон по грі. Під час нього ми остаточно затвердили перелік механік і зрозуміли, що далі в Unity працювати не вийде. Оксана запропонувала звернутися до фреймворку Phaser чи використовувати cursor.com.

Якщо чесно, на цьому моменті я трошки обурився. Мені подобалося, як проєкт працює на Unity. Я гарно налаштував event-driven підхід та тільки-но прикрутив object pool для монеток. Однак дуже швидко я дійшов кількох висновків.

Перше — буде занадто багато зайвих рухів, якщо ми лишимося на Unity. Потрібно було б кидати Оксані окремо кожен білд, заливати його на сервер, виловлювати там баги, потім робити новий білд з усіма виправленнями і так по колу. Тому дуже дивно наполягати на якомусь конкретному технологічному рішенні тільки тому, що ти до нього звик і тобі подобається, як там зараз все налаштоване.

Друге — паралельно йшла робота ще над кількома величезними проєктами. Команда готувала Другу премію DOU, у нас на той момент тривав збір для школи «Боривітер», ми з головою пірнули у «Портрет геймдев-спеціаліста», а на носі вже був DOU Day 2025. То розбиратися, як прикрутити базу наших користувачів в мій прототип на Unity просто не було часу.

Третє — всі завдання, які я ставив сам собі, я виконав. Тобто, не можна сказати, що я просто витратив час. Я чомусь навчився і вже це було корисно. У підсумку, я став сприймати цю історію так: Влада прийшла з ідеєю, я виконав функцію геймдизайнера і створив прототип, а далі цей прототип перекочував до розробниці Оксани та дизайнера Роми Кривенко.

На цьому етапі лишилося тільки зібрати все до купи та остаточно визначитися, як ми діємо, коли зберемо потрібну суму. Мій другий прототип дозволяв за сесію зібрати 150-200 гривень, але цього було забагато. Як я вже згадував вище, ми вирішили опустити цей показник до 40-50 грн. Однак навіть тут були перестороги. Все ж таки, на DOU доволі велика аудиторія і якось ми зібрали 30 млн грн за добу. Тому треба було продумати фінал. На проміжковому етапі зійшлися, що під час збору просто будемо тримати руку біля вимикача і як тільки сума перевищить наші можливості — одразу смикати його.

Етап третій: реліз і «хакери»

У нас почався стандартний ітеративний цикл: Оксана давала посилання на нову версію — ми йшли тестувати її — давали фідбек — Оксана вносила правки. Якось вирішили залучити фрилансера, що спеціалізувався на створенні веб ігор. Однак ця колаборація виявилася невдалою і ми повернулися до, так би мовити, внутрішнього виробництва.

Звісно, до 24 березня ми не встигли. Як і до 31 березня чи 7 квітня. Гру випустили тільки 15 числа. Однак з усіма фічами, які планували. Мова йде про:

  • дві турнірні таблиці — продуктову і сервісну;
  • набір унікальних об’єктів для кожної команди
  • два загальних дебафи (Данило Гетманцев та ще одна великодка, яку, я сподіваюся, ви зчитали);
  • механіка камео.

Окремо зазначу, що рандомайзер спавну монеток та рух гравця виявився навіть кращим, ніж я собі уявляв. Дехто всередині команди жалівся, що керувати стільцем було не дуже зручно, але мені він подобався і при достатній кількості спроб я міг зібрати 70-80 грн. Навіть 90, коли мені везло зі спеціальними об’єктами.

Момент запуску був доволі лячним з кількох причин. По-перше, я боявся, що люди просто проігнорують цю ініціативу — далеко не всі айтівці грають в ігри. По-друге, ми одразу розуміли, що варто чекати на хакерів. Тільки було незрозуміло, звідки.

Перше побоювання дуже швидко розтануло: за 17 хвилин користувачі зібрали тисячу гривень, за першу годину — 15 тисяч, а за дві — 50 тисяч. Однак хакери, як прозвала їх Оксана, вже були тут як тут. Їх дії були помітні на дашборді, який ми зробили, щоб слідкувати за окремими користувачами. Ну не може людина зіграти 4 гри за хвилину і в кожній зібрати 250 грн. Та ми одразу домовилися, що будемо нагороджувати і тих, хто зламав систему. Все ж таки, у нас технічна спільнота і цілком логічно винагороджувати людей, які автоматизували свою діяльність.

Правда, дуже швидко хитруни взагалі зламали всю гру. Вони почали відправляти з токеном від’ємні числа і загальна сума донатів склала відверто непристойне значення. Щось на кшталт −98764327273224858288.88 грн. Звісно, дуже швидко ми відмотали це все назад і повернулися до адекватних цифр.

Ближче до кінця першого дня ми зустрілися з іншою проблемою, яку не продумали: а як бути вночі? Якщо лишити гру, то нас просто розорять. Лишився тільки один вихід — зупинити все і зранку продовжити. Що ми і зробили. Це рішення викликало певне незадоволення спільноти, однак вся ця ініціатива була експериментом і фактично ми йшли навпомацки. То доводилося імпровізувати.

Гра працювала протягом двох днів і зібрала понад мільйона гривень (1 млн 784 грн, якщо бути точним). Загалом майже дві тисячі гравців провели понад 30 тисяч ігрових сесій. Розподіл по командах виявився таким: 61% продуктові гравці і 39% сервісні. Також зауважу, що лише 12,3% з усіх гравців зареєструвалися після 15 квітня (день релізу гри).

Нижче можна оцінити турнірні таблиці з позначкою, хто з лідерів вдався до «автоматизації процесу гри»:

Турнірна таблиця продуктової команди

КористувачСумаПримітка
Данило Казимиров66 298 грн
Anton Belousov50 000 грн
Андрій38 678 грн
YUrii Kachur36 143 грн
Юра Ковтун33 979 грн
Ostap Ilkiv33 661 грн
vladislav verbivskyi31 100 грн
Oleh Prokip28 940 грн
Андрусяк Богдан27 836 грн
Oleh Serhieiev26 738 грн

Турнірна таблиця сервісної команди

КористувачСумаПримітка
Denys Popov27 017 грн
Dmitry Bogdan25 921 грн
Maria Dmytryshyn24 672 грн
Denys Malik24 057 грн
Анастасія Поляцькова 23 030 грн
Юлія Бровкіна22 031 грн
Rostyslav Huk21 603 грн
Sam Fedorov21 205 грн
Valentin Kornienko20 009 грн
Viktor Svertoka19 615 грн

Ось таким виявився наш експеримент по гейміфікації збору до двадцятиріччя DOU. На мою особисту думку, вийшло краще, ніж я думав, але трошки гірше, ніж могло. А що ви думаєте про такий експеримент? Грали в нашу гру? Самотужки чи обійшли систему? Скільки зібрали загалом? Обов’язково діліться враженнями і думками в коментарях!

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини

👍ПодобаєтьсяСподобалось8
До обраногоВ обраному2
LinkedIn


Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Топова ініціатива, продовжуйте, наступна буде значно краще;)

Був в сервісі на першому місці... після продовження на 2й день, обломався грати, але все одно в топ 10 потрапив 🙃

Підписатись на коментарі