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 просто не було часу.
Третє — всі завдання, які я ставив сам собі, я виконав. Тобто, не можна сказати, що я просто витратив час. Я чомусь навчився і вже це було корисно. У підсумку, я став сприймати цю історію так: Влада прийшла з ідеєю, я виконав функцію геймдизайнера і створив прототип, а далі цей прототип перекочував до розробниці Оксани та дизайнера Роми Кривенко.
На цьому етапі лишилося тільки зібрати все до купи та остаточно визначитися, як ми діємо, коли зберемо потрібну суму. Мій другий прототип дозволяв за сесію зібрати
Етап третій: реліз і «хакери»
У нас почався стандартний ітеративний цикл: Оксана давала посилання на нову версію — ми йшли тестувати її — давали фідбек — Оксана вносила правки. Якось вирішили залучити фрилансера, що спеціалізувався на створенні веб ігор. Однак ця колаборація виявилася невдалою і ми повернулися до, так би мовити, внутрішнього виробництва.
Звісно, до 24 березня ми не встигли. Як і до 31 березня чи 7 квітня. Гру випустили тільки 15 числа. Однак з усіма фічами, які планували. Мова йде про:
- дві турнірні таблиці — продуктову і сервісну;
- набір унікальних об’єктів для кожної команди
- два загальних дебафи (Данило Гетманцев та ще одна великодка, яку, я сподіваюся, ви зчитали);
- механіка камео.
Окремо зазначу, що рандомайзер спавну монеток та рух гравця виявився навіть кращим, ніж я собі уявляв. Дехто всередині команди жалівся, що керувати стільцем було не дуже зручно, але мені він подобався і при достатній кількості спроб я міг зібрати
Момент запуску був доволі лячним з кількох причин. По-перше, я боявся, що люди просто проігнорують цю ініціативу — далеко не всі айтівці грають в ігри. По-друге, ми одразу розуміли, що варто чекати на хакерів. Тільки було незрозуміло, звідки.
Перше побоювання дуже швидко розтануло: за 17 хвилин користувачі зібрали тисячу гривень, за першу годину — 15 тисяч, а за дві — 50 тисяч. Однак хакери, як прозвала їх Оксана, вже були тут як тут. Їх дії були помітні на дашборді, який ми зробили, щоб слідкувати за окремими користувачами. Ну не може людина зіграти 4 гри за хвилину і в кожній зібрати 250 грн. Та ми одразу домовилися, що будемо нагороджувати і тих, хто зламав систему. Все ж таки, у нас технічна спільнота і цілком логічно винагороджувати людей, які автоматизували свою діяльність.
Правда, дуже швидко хитруни взагалі зламали всю гру. Вони почали відправляти з токеном від’ємні числа і загальна сума донатів склала відверто непристойне значення. Щось на кшталт −98764327273224858288.88 грн. Звісно, дуже швидко ми відмотали це все назад і повернулися до адекватних цифр.
Ближче до кінця першого дня ми зустрілися з іншою проблемою, яку не продумали: а як бути вночі? Якщо лишити гру, то нас просто розорять. Лишився тільки один вихід — зупинити все і зранку продовжити. Що ми і зробили. Це рішення викликало певне незадоволення спільноти, однак вся ця ініціатива була експериментом і фактично ми йшли навпомацки. То доводилося імпровізувати.
Гра працювала протягом двох днів і зібрала понад мільйона гривень (1 млн 784 грн, якщо бути точним). Загалом майже дві тисячі гравців провели понад 30 тисяч ігрових сесій. Розподіл по командах виявився таким: 61% продуктові гравці і 39% сервісні. Також зауважу, що лише 12,3% з усіх гравців зареєструвалися після 15 квітня (день релізу гри).
Нижче можна оцінити турнірні таблиці з позначкою, хто з лідерів вдався до «автоматизації процесу гри»:
Турнірна таблиця продуктової команди
Користувач | Сума | Примітка |
---|---|---|
Данило Казимиров | 66 298 грн | ![]() |
Anton Belousov | 50 000 грн | ![]() |
Андрій | 38 678 грн | ![]() |
YUrii Kachur | 36 143 грн | ![]() |
Юра Ковтун | 33 979 грн | ![]() |
Ostap Ilkiv | 33 661 грн | |
vladislav verbivskyi | 31 100 грн | ![]() |
Oleh Prokip | 28 940 грн | |
Андрусяк Богдан | 27 836 грн | |
Oleh Serhieiev | 26 738 грн |
Турнірна таблиця сервісної команди
Користувач | Сума | Примітка |
---|---|---|
Denys Popov | 27 017 грн | ![]() |
Dmitry Bogdan | 25 921 грн | ![]() |
Maria Dmytryshyn | 24 672 грн | |
Denys Malik | 24 057 грн | |
Анастасія Поляцькова | 23 030 грн | ![]() |
Юлія Бровкіна | 22 031 грн | |
Rostyslav Huk | 21 603 грн | |
Sam Fedorov | 21 205 грн | |
Valentin Kornienko | 20 009 грн | |
Viktor Svertoka | 19 615 грн |
Ось таким виявився наш експеримент по гейміфікації збору до двадцятиріччя DOU. На мою особисту думку, вийшло краще, ніж я думав, але трошки гірше, ніж могло. А що ви думаєте про такий експеримент? Грали в нашу гру? Самотужки чи обійшли систему? Скільки зібрали загалом? Обов’язково діліться враженнями і думками в коментарях!
2 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів