Розробка ігор з Astra: Circuit Shift

Updated 2026-09-05

Завдання Codex, налаштоване з Astra, створило нативний прототип Godot із трьома кімнатами, робочими зіткненнями, головоломками з реле, станами перемоги й поразки та збереженим прогресом. Ось шлях від brief до перевіреної гри, включно з виправленням, яке спочатку не виявили перевірки gameplay.

Результат: завершений ігровий цикл із трьома кімнатами

Circuit Shift — невелика головоломка з видом зверху, створена й перевірена в Godot 4.5.1 на macOS. Ви проводите кур’єра CS-07 через три кімнати релейних станцій, збираєте по три енергетичні елементи в кожній кімнаті, відкриваєте пронумеровані ворота, уникаєте рухомих вартових і досягаєте виходу. Фінальний автоматизований нативний запуск завершив усі три кімнати, перевірив поразку та перезапуск і зберіг прогрес кампанії та найкращий час. Окремий процес успішно відкрив це збереження.

Корисний висновок для AI-проєкту гри — поєднати обмежений brief, перевірки gameplay через рушій і візуальну інспекцію. Запит на невеликий завершений цикл дозволив перевірити більше, ніж рух: вихід мав залишатися закритим до збирання елементів, завершення кімнати мало відкривати наступний сектор, а налаштування мали зберігатися після повторного запуску. Завантажуваний проєкт дає змогу перевірити ці дії самостійно.

Перший сектор Circuit Shift із м’ятним кур’єром, трьома жовтими елементами, пронумерованим реле, закритими червоними воротами, рухомою небезпекою та запечатаним виходом.
Справжній знімок framebuffer Godot 1280 x 960 із фінального нативного запуску на початку першого сектора.

Початковий brief зробив завершення конкретним

Завдання визначало оригінальну гру Circuit Shift, три короткі рівні, фізику рушія, перемикачі й ворота, елементи, що збираються, перемогу/поразку/перезапуск, стартове меню, налаштування та збережений прогрес. Також вимагалися справжні знімки, miniflow gameplay у реальному рушії та повторне відкриття збереженого стану. Godot 4.5.1 уже був встановлений і його використали повторно; розробка почалася в новому каталозі гри з окремим тимчасовим HOME.

Наведений нижче фрагмент — уривок зі справжнього початкового brief, у якому для читабельності додано переноси рядків, а оригінальне формулювання збережено. Повний initial-prompt.txt входить до ZIP вихідного коду. Для власного brief найкраще переносити спостережувані критерії завершення: визначте, що може робити гравець і що має працювати після закриття гри.

Task: build an original polished small 2D Godot game called Circuit Shift.
Three short levels; controllable character, enginephysics/collisions,
switches and gates, collectible cells, exit, win/loss/restart,
start menu, smallsettings and savedprogress.

Від prompt до файлів, feedback рушія та робочих кімнат

Агент створив дані кімнат, GDScript, меню, налаштування, локальні збереження та harness gameplay, а потім багаторазово запускав рушій і перевіряв результати. Рух використовує CharacterBody2D.move_and_slide; стіни й ворота — StaticBody2D; елементи, небезпеки та виходи — тригери Area2D. Ці контракти рушія поєднують видиму кімнату зі змінами зіткнень і стану, які може спостерігати harness.

Запис містить 13 запусків ігрового рушія: імпорт, gameplay, регресійні перевірки, нативні знімки, повторне відкриття, пакування та перевірку пікселів. Послідовність включала початкову помилку наявності сцени до реалізації, безголовий gameplay, нативні знімки, спрямоване візуальне виправлення та фінальні перевірки артефактів. Специфічну графіку гри процедурно намалювали кодом CanvasItem Godot, а п’ять звукових ефектів PCM синтезували локально. Спостережувана робота складалася з патчів агента, локальних команд, запитів дозволу на нативне виконання та перевірки знімків; додаткового людського керування завданням або ручного виправлення коду не спостерігалося.

Третій сектор Circuit Shift із двома активованими пронумерованими реле, двома відкритими воротами, двома зібраними елементами та кур’єром біля другого реле.
Справжній нативний знімок 1280 x 960 третього сектора під час фінального запуску, де відкрито обидва незалежні релейні контури.

Справжній дефект: фокус клавіатури ускладнював читання кнопки

Перший нативний запуск gameplay пройшов свої твердження, але перевірка знімків виявила текст із низьким контрастом на сфокусованій головній кнопці. Це важливо, бо меню станції також підтримує навігацію клавіатурою: робоча дія старту не гарантувала читабельності елемента старту. Спрямована регресійна перевірка потім не пройшла з коефіцієнтом контрасту приблизно 1.36:1.

Виправлення явно встановило font_focus_color у темний колір переднього плану головної кнопки. Наступна перевірка виміряла приблизно 10.57:1, а фінальний нативний запуск зберіг успішне твердження контрасту. Необроблені результати невдалого та успішного запусків залишаються в каталозі доказів. Це конкретна причина поєднувати тести gameplay з перевіркою сфокусованих і вибраних станів UI: переходи станів можуть бути правильними, а елементи керування, що їх відкривають, усе ще потребувати роботи.

ЕтапСпостережуваний результатЗапис доказів
Спрямована регресіяКонтраст сфокусованої кнопки 1.36:1; не пройдено05-focus-regression
Явне виправлення кольору фокусуКонтраст сфокусованої кнопки 10.57:1; пройдено06-focus-fixed
Фінальний нативний запускТвердження про контраст і gameplay пройдено разом09-native-final

Що насправді перевіряли нативні тести

Фінальний miniflow gameplay виконував звичайні дії Godot Input і нативні сигнали Control; одна перевірка мапінгу надіслала InputEventKey. Кур’єр рухався за фізикою рушія. Harness перевірив зіткнення зі стіною, блокування закритих воріт, відкриття та закриття реле, вимогу відкрити вихід після збирання всіх елементів, три перемоги в кімнатах, поразку від небезпеки, перезапуск, паузу, налаштування та тригери створення й відтворення звуку. Він не телепортував гравця, не видавав елементи напряму і не призначав стан перемоги.

Наведені нижче кількості — твердження всередині цих потоків, включно з waypoint і знімками, а не незалежні benchmark-завдання. Усі три фінальні нативні запуски завершилися успішно з порожнім stderr. Gameplay з вихідного коду кампанії є найширшим тестом; запуск PCK підтверджує завантаження пакета й продовження збереженого стану, а не другу повну кампанію в упакованій грі.

Записаний запускПеревірки пройденоСпостережуваний результат
09-native-final62Повна нативна кампанія з трьома кімнатами, а також перевірки поразки, перезапуску, паузи, налаштувань і аудіотригерів
Запуск 10-native-reopen-compact6Окремий процес завантажив прогрес і налаштування, а потім продовжив у третьому секторі
12-native-pck6Пакет запущено поза каталогом джерела, збереження відкрито повторно, виконано вхід у третій сектор

Повторне відкриття перевірило збереження і компактний макет

Новий нативний процес завантажив unlocked=3, completed=true, три додатні найкращі часи, volume=0.35 і reduced_motion=true. Continue увійшов у третій сектор. Це відокремлює збереження від значення, яке просто залишається в пам’яті під час роботи гри. Гра зберігає прогрес після завершення кімнати, тому передбачена точка відновлення — кімната, а не остання позиція кур’єра.

Компактний запуск також дав другу перевірку макета: кімната, HUD, таймер і кнопки залишалися повністю в кадрі при 720 x 540. Настільні знімки мають розмір 1280 x 960. Під час фінальних запусків джерела й пакета дванадцять нативних знімків пройшли перевірку непорожніх пікселів, а візуальна інспекція перевірила кадрування та читабельність. Це справжні знімки нативного viewport; менше зображення демонструє компактне вікно робочого столу.

Третій сектор Circuit Shift у розмірі 720 на 540 із цілою кімнатою, лічильником елементів, таймером, кнопками перезапуску й паузи та видимим станом живлення станції.
Справжній нативний знімок 720 x 540 після того, як окремий процес відкрив збережений прогрес і продовжив у третьому секторі.

Час і конфігурація: як читати запис запуску

Запитаний старт відбувся 5 вересня 2026 року о 05:35:51 UTC; завершення записано о 06:00:11.007 UTC. Це 1,460.007 секунди, приблизно 24 хвилини 20 секунд фактичного часу. Сюди входять реалізація, виконання інструментів, тести, виправлення, знімки та пакування за наявного рушія. Це не затримка відповіді моделі й не прогноз часу розробки іншої гри. Один початковий brief спричинив кілька ітерацій реалізації та роботи інструментів.

Це запуск Codex, налаштований з Astra: координатор записав spawn_agent.model=gpt-6-astra з reasoning_effort=xhigh. Це підтверджує лише запитану конфігурацію. Ідентичність моделі відповіді API, використання токенів, вартість і кількість викликів моделі/API не були відкриті та залишаються null у run-summary.json; прямого запиту APIsRouter або оплати не спостерігалося. Публічна перевірка каталогу 5 вересня також не знайшла Astra в APIsRouter. Офіційна документація моделі та ця локальна конфігурація не підтверджують доступ через gateway.

Завантажте й запустіть Circuit Shift у Godot

Завантажте ZIP вихідного коду, щоб перевірити реалізацію, повний brief, керування, тестовий harness і збережені докази. Розпакуйте його, імпортуйте game/project.godot у Godot 4.5.1 і запустіть проєкт. Рухайтеся клавішами WASD або стрілками, активуйте сусіднє реле клавішею E або Space, перезапускайте R, а паузу вмикайте Escape. Зберіть усі елементи, щоб активувати вихід; контакт із вартовим завершує спробу.

Для упакованої версії завантажте circuit-shift.pck і запустіть його сумісним runtime Godot за допомогою наведеної нижче команди. PCK потребує Godot і не є окремим виконуваним файлом. Перевірено цілісність ZIP, рівність критичних архівних файлів, рівність джерела фінальному нативному запуску та рівність SHA-256 скопійованих ресурсів. PCK запускався з тимчасового каталогу поза вихідним проєктом. Посилання на обидва артефакти, run-summary.json і маніфест SHA-256 наведено нижче.

godot --main-pack circuit-shift.pck

Для чого цей прототип готовий далі

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

Windows, браузер, Steam, сенсорне керування та gamepad залишаються неперевіреними; шаблони експорту в браузер локально були недоступні. Прискорені безголові запуски все ще видавали діагностику сертифікатів macOS і попередження завершення аудіоресурсів, хоча фінальні нативні логи мали порожній stderr. Перед вибором цільового випуску усуньте відповідні проблеми виконання та запустіть власні перевірки введення, збереження, пакування й продуктивності для цієї цілі. Практичний результат — інспектований нативний прототип і повторюваний процес перевірки, який може спрямувати наступний раунд розробки.

Поширені запитання

Яку гру створило завдання?

Circuit Shift — оригінальний прототип Godot із видом зверху та трьома кімнатами. Кожна кімната поєднує елементи, що збираються, пронумеровані релейні перемикачі, фізичні ворота, рухомі небезпеки та вихід. Є меню станції, перемога/поразка/перезапуск, пауза, налаштування і збережений прогрес.

Як грати в завантажений PCK?

Використовуйте сумісний runtime Godot; у цьому випадку використано Godot 4.5.1. Із папки, що містить circuit-shift.pck, запустіть godot --main-pack circuit-shift.pck. Щоб перевірити або редагувати гру, розпакуйте ZIP вихідного коду й відкрийте game/project.godot.

Яке керування використовувати?

Рухайтеся WASD або стрілками. Натискайте E або Space біля реле, R для перезапуску кімнати та Escape для паузи або продовження. Меню підтримує мишу, Tab і Enter. До активації виходу потрібно зібрати кожен елемент.

Який прогрес переживає перезапуск?

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

Звідки взялися графіка та звукові ефекти?

Специфічні для гри візуальні елементи створено процедурно кодом малювання CanvasItem у Godot. П’ять звукових ефектів PCM синтезуються локально під час виконання. Godot постачає вбудований шрифт через окремо встановлений рушій.

Що варто повторити з цього процесу?

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