Зробити свою гру
moood — це жива сцена, яку малює код, і сторінка, де поверх неї працює ваш код, а що з цього вийде — вирішуєте ви. Що відкрито, чим допомагає студія і як до неї потрапити.
В основі moood дві речі. Жива сцена, яку малює код: місце зі світлом, погодою, людьми й музикою. І сторінка, де поверх цієї сцени працює код вашої гри. Усе інше — якою буде гра — вирішує автор.
Наші ігри вийшли історіями з вибором: розділ за розділом, репліки, міні-ігри. Але це лише один із шляхів. Сцена може бути місцем, де просто хочеться побути. Гра може бути головоломкою, іграшкою, прогулянкою без мети, розмовою — чим завгодно, що вміщується в код. Тут — що для цього є і як цим користуватися.
Світ на moood — це набір сцен. Кожна — місце: причал на світанку, кухня, степ під снігом. Її малює код — світло, вода, туман, вітер, відображення, — і в ній живуть люди: ходять, сідають, обертаються. Камера сама знімає того, на кого дивиться сцена. У кожної сцени своя музика.
Сцена живе і сама по собі. Її стан — світанок чи ніч, дощ чи ясно, хто де стоїть — змінюється ключами, і та сама сцена може за хвилину пройти шлях від сутінків до темряви. Сцену можна показати й без жодної гри, просто як живу картину: такі начерки теж є на moood.me.
Гра — це код, який ви пишете самі, і скільки його буде — теж ваша справа. Сторінка дає йому сцени й усе, що в них можна змінювати: показати іншу сцену, змінити погоду, повести людину, дати їй сказати репліку її голосом, увімкнути звук, зберегти, поставити на паузу. Далі — як задумаєте.
Можна, як ми, писати розділи й вибори. Для цього є готове: мапа партії, перегравання, мова міні-ігор — жести, мітки й відгуки, які гравець розуміє без підписів. Можна нічого з цього не брати: залишити одну сцену й дати людині щось у ній робити. Можна показувати гру на своєму сайті й дати її коду розмовляти з чим захочеться — хоч з мовною моделлю, яка веде персонажа.
Спершу в кожної гри були свої міні-ігри, і гравець щоразу наново вгадував, що тут натискати. Потім зі скарг і побажань виросла спільна мова: мітка на предметі, жест рукою, відгук сцени, плашка вгорі — і звук, який підказує, вийшло чи ні. Докладно — у статті [«Мова міні-ігор»](/stories/minigame-language). Користуватися нею не обов'язково, але вона заощаджує багато сил.
З теки. Світ, гра й стаття — просто теки в git-репозиторії: вашому, на вашому GitHub, з вашими співавторами, гілками й історією. В одному репозиторії їх може бути скільки завгодно.
Писати зручно разом з ШІ-агентом — Claude Code, ChatGPT, Gemini, будь-яким. Для цього є відкритий репозиторій [moood](https://github.com/moood-me/moood): рушії, сторінка сцени й сторінка гри, мова міні-ігор, перевірка і маленький плеєр, щоб грати в себе вдома. Ми клали туди все за одним правилом: якщо річ потрібна, щоб зробити гру й зіграти в неї, — вона там. І документацію, написану так, щоб за нею міг працювати агент: що важливо в сцені й чого не робити ніколи, як ставити світло й людей, як улаштована гра, як писати сценарій, якщо він вам потрібен.
А щоб агентові було на що подивитися, ми відкрили й свої роботи — репозиторії [works](https://github.com/moood-me?q=works). Там світи й ігри з moood.me з кодом сцен та історією того, як їх робили, майданчик міні-ігор, де кожен жест можна помацати окремо, і ранні маленькі світи — проби того, якими бувають сцени. Беріть, що знадобиться.
Будь-яка річ — світ, сцена, гра, стаття — називається одним рядком: `ваш-репозиторій@гілка:тека`. Гілку можна замінити комітом. Так її відкривають у студії, на неї посилаються з іншої гри, її дають агентові. Гра може стояти й на чужому світі — за такою адресою.
Спочатку було складніше: у кожного світу були свої службові гілки під кожен сайт, куди він викочувався. Агентам так було звично. Павло подивився і сказав: «Якось когнітивно складно це)… А без гілок — ніяк?)» — і попросив подумати не про те, як поправити, а про те, як зробити просто. Виявилося, крім git, нічого й не треба: ваші гілки — це і є ваші чернетки.
У себе — у плеєрі з moood: він запускається над вашою текою, і щойно ви збережете файл, сторінка оновиться сама, а гра триватиме з того самого місця. Або в студії: там видно будь-яку гілку одразу після пушу, на комп'ютері й на телефоні. Поправили щось, поки грали, — студія запропонує продовжити на новій версії, не починаючи спочатку.
Є речі, яких на власному комп'ютері не зробиш: потрібна відеокарта, потрібні моделі, що говорять, складають музику й рухають людей. Для цього студія. Нею можна користуватися цілком, можна взяти з неї щось одне, можна не користуватися взагалі.
**Побачити.** Студія малює сцену на відеокарті: картинку, аркуш кадрів по секундах, відео. Це потрібно не лише вам. Агент дивиться на свою роботу картинками й правит її сам, поки ви зайняті іншим. Підключається він до студії один раз: ви дозволяєте на сторінці, де простими словами написано, що він зможе, і далі він працює від вашого імені.
**Оживити людей.** Рух людини описується словами: «повільно йде вперед», «сідає і дивиться на воду». Його робить модель, навчена на записах справжніх рухів, а студія показує його на різних людях, перш ніж він потрапить у сцену.
**Дати голос.** Будь-який рядок можна озвучити: у кожного героя свій голос і манера, а в окремої репліки може бути особлива — «із заздрістю й захватом, а не глузливо». Усі репліки гри видно в одному місці, їх можна послухати.
**Дати музику.** Музику сцени описуєте словами й змішуєте описи за вагами: «тихе піаніно в сутінках» голосніше, «дощ по листю» тихіше. Слухати можна одразу, ще не зберігши. Зроблене одного разу зберігається: та сама репліка чи та сама музика вдруге не робиться.
**Почати без коду.** У студії є художник — ШІ, якому можна просто написати: «нехай буде вечір, і ліхтар на причалі горить». Він правит сцену сам, і кожна зміна одразу видна. Він для того й існує, щоб світ можна було почати просто в браузері, без редактора й без власного агента. Хоч би й просто з цікавості: зробити пару сцен і подивитися, що вийде.
**Не гальмувати.** Жива сцена має йти плавно і на слабкому ноутбуку, і на телефоні. Студія вимірює її на різних машинах і показує, де вона не вкладається. Чому це для нас так важливо — у статті [«Чому гальмувало»](/stories/why-it-was-slow).
**Говорити всіма мовами.** Ігри на moood говорять дванадцятьма мовами, і ваша може теж. Перевірка знаходить неперекладене, посилання в нікуди, сцени, які не збираються, — і показує, яких голосів, музики й картинок бракує. Бракуюче робиться однією кнопкою. Перевірка швидка: сцени на відеокарті вона перемальовує, лише якщо попросити, — адже перевіряти хочеться часто.
Готову гру можна попросити опублікувати на moood.me. Перед показом її подивляться, і вона стане на сайті поруч з іншими — з картинками сцен, голосами й музикою.
А можна й без нас. Сторінки moood покаже будь-який сайт чи застосунок, що відповідає на їхні кілька простих запитів. Можна взяти рушій і зробити на ньому щось зовсім своє.
Ми намагалися, щоб у студії не губилися. Вона влаштована як портал: ліворуч сервіси — репозиторії, світи, ігри, статті та майстерня: рендери, вимірювання, мовлення, музика, рухи, художник, перевірки, публікації. Угорі пошук одразу по всьому: набрали «ліхтар» — і видно і гру, і статтю, і сцену. Потрібне позначається зірочкою. Є темна тема і телефон, а сама студія говорить тими самими дванадцятьма мовами.
Ловили й дрібниці. Натискаєш пункт меню, а відповіді нема — чи то натиснулося, чи ні. Тепер пункт підсвічується одразу, а якщо сторінка вантажиться довше за мить, з'являється «Завантажується…». Якщо швидше — нічого не мигає.
Окремий агент пройшов усю студію за кількох вигаданих людей: досвідченого автора, новачка, того, хто щойно зайшов. Кожну сторінку він відкривав двома мовами, у світлій і темній темі, на комп'ютері й на телефоні — і записував, де спотикається.
Знайшлося смішне й прикре. Автор натискав «Виміряти» — і потрапляв на «не знайдено»: власного виміру не відкрити. Гра англійською в українській студії показувалася без назви й без кнопки «Грати». Новачок упирався в глухий кут: заходить — а далі нічого. Усе це виправили до того, як студію відкрили.
Доступ до студії дає Павло. Напишіть йому в [Telegram](https://t.me/pavel_zhur) або на [[email protected]](mailto:[email protected]) — він відкриє, просто так. А якщо захочеться допомогти самому moood — рушієві, сторінкам, документації, — він буде радий: issues і pull requests у [moood](https://github.com/moood-me/moood) відкриті для всіх.