Observify
OBSERVIFY / GAME BUILD

I DRINK YOUR MILKSHAKE

Godot 4.7 · 2D top-down painted ink-on-paper · macOS universal build

painted milkshake cupone scene / all code
THE ONE-SCENE SECRET

This whole game has exactly ONE Godot scene file — scenes/main.tscn, a single bare Node. Every other node (the entire world, player, bosses, UI, VFX) is built in CODE at runtime via Node.new() + add_child(), enforced by the repo's G-NO-TSCN rule — because the game is built by a fleet of parallel AI agents, and merge-safe code beats binary scene diffs.

THE ORGANIZATION

Built by a studio that doesn't exist yet

Structure status: PROPOSED, pending Founder ratification — 6 of 36 defined roles are active/ratified today (CEO, CTO, CMO-studio, COO-ops, HR-records, studio-creative-producer); the rest is the org chart the studio is hiring into. Chain of authority: Founder (final creative/release call) → CEO/Executive Producer → Game Director · CTO/Technical Director · Studio Director/CMO · CQO (independent quality judgment) · COO — plus Observability & Records, feeding evidence and lessons straight back to the CEO. Every seat carries an explicit, concrete required gate, not a vibe.

Direction & Design

Game Director + 3: World & Systems Design, Combat Design, UX & Accessibility.

Narrative

Narrative Director + 5: quest/systemic dialogue, cinematic writing/VO direction, narrative systems engineering, quest tech design, continuity QA.

Runtime & Platform

CTO + 5, including the C++ Engine & Platform Lead — the seat carrying the C++ mandate below.

World & Presentation

Studio Director/CMO + 8 art/audio/cinematics leads.

Production / Build / Release

COO + Development Producer, Build & Release Lead, Machine & CI Operator.

Quality

CQO (independent judgment) + 3 QA leads.

THE STACK

GDScript today. C++ by mandate.

Current production source: 225 GDScript files, 14 Godot shaders, exactly 1 .tscn — zero first-party C++, .gdextension, or 3D-asset source files exist yet. The Founder directed a C++-heavy runtime on 2026-07-27; the plan is seam-by-seam, not a rewrite — no "rewrite everything in C++" ticket exists.

C++ GDExtension

Planned, not built: chunk streaming/HLOD, dense NPC simulation + perception, combat resolution + deterministic replay, animation/IK/crowd instancing, story-state + save hot paths, perf counters + trace export, import-time validators.

Shaders / RenderingDevice

Godot-native, Metal reached through Godot's own abstraction: foliage/cloth wind, wetness, water, particles, atmospheric scattering, ink effects, GPU instancing.

GDScript stays

Scene orchestration, UI, quest/cinematic sequencing, content adapters, and the tests that exercise the C++ contracts once they exist.

⚠ C++ layer: 100% planned, 0% built·gate G-ENGINE-PIN/native-ABI: BLOCKED — no godot-cpp source, headers, or native build definition on this host·Godot editor/template ratified at 4.7.1, host currently runs 4.7.0 (migration source only)
THE RUNTIME SCENE TREE

One bare scene. A living tree.

MainNodemain.gd
└─AudioAudioManager
└─TitleMenu / CampaignMenu / SettingsMenuCanvasLayer
└─CharacterForgeControl
└─ColdOpenCanvasLayer
└─WorldNode2Dworld.gd
└─PaintedWorldNode2D
└─AtmosphereDirector
└─LightingDirector
└─CameraDirectorScript
└─ImpactDirectorCanvasLayer
└─InkGoreDirector
└─ExtractionDirector
└─DoorTransitionScriptCanvasLayer
└─HorizonLandmarksScript
└─RodaAmbush
└─FinaleDirector
└─StudentSummonDirector
└─CampaignEarlyDirector (+ 3D variant)
└─CampaignTourDirector
└─CampaignM10Director … CampaignM14Director (5 mission directors)
└─MilkshakeShrine
└─StudentsTableBattle
└─<region>.gd module (e.g. mantis.gd)
└─PlayerCharacterBody2Dplayer.gd
└─NPC × NArea2D
└─Enemy / Boss*CharacterBody2D
└─FighterJuice
└─DialogueBoxCanvasLayer
└─HudCanvasLayer
└─OverlaysCanvasLayer
THE BUILD PIPELINE

From painted file to frame-by-frame play

01

① Raw art PNG

Painted source art enters the project.

title-backdrop-scene.png
02

② .import

Godot bakes each PNG/wav into a GPU-ready Texture2D/AudioStream; this repo has 1257 .import sidecars.

title-backdrop-scene.png.import
03

③ project.godot

Names scenes/main.tscn as the run scene, sets the 1280×720 viewport, and registers the Game autoload.

project.godot
04

④ main.gd app shell

Runs title → campaign menus, then enters _start_run().

main.gd
05

⑤ world.gd

Assembles the level from data: discovers scenes/regions/*.gd, paints ground from the world_kit_ii atlas, and spawns Player, enemies, and directors via .new().

world.gd
06

⑥ Every frame

Input actions drive CharacterBody2D movement, hitbox Area2D contact, Enemy.take_hit(), and Game.boss_defeated on the Game event bus; then the macOS .app export is made.

scenes/regions/mantis.gd
THE 7 SCHOOLS + HIDDEN FINALE

A path through seven schools

01

Master Mantis

mantis · school
mantis student gameplay render
student_mantis.png
mantis tendan gameplay render
tendan_mantis.png
02

Iron Auntie

tiger · school
tiger student gameplay render
student_tiger.png
tiger tendan gameplay render
tendan_tiger.png
03

The Velvet Fist

leopard · school
leopard student gameplay render
student_leopard.png
leopard tendan gameplay render
tendan_leopard.png
04

Brother Porridge

monkey · school
monkey student gameplay render
student_monkey.png
monkey tendan gameplay render
tendan_monkey.png
05

Widow Crane

crane · school
crane student gameplay render
student_crane.png
crane tendan gameplay render
tendan_crane.png
06

Master Straw

snake · school
snake student gameplay render
student_snake.png
snake tendan gameplay render
tendan_snake.png
07

Abbot Noodle

dragon · school
dragon student gameplay render
student_dragon.png
dragon tendan gameplay render
tendan_dragon.png
08

THE CHECK

Low Key · hidden finale

The path ends at the hidden finale.

THE DRAWING ENGINE

EVERYTHING IS DRAWN, NOT PLACED

Characters aren't static sprites — a code-built HumanoidRig (bones + Verlet-chain secondary motion) plus a per-character FighterSkin maps painted PNG parts onto the bones. That's why each art/<char>/ folder has source/ + parts/ + atlas/.

GALLERY / RENDER PROOF

The game, caught in the act

BUILD STATUS
Godot 4.7·single macOS preset com.wolf.idrinkyourmilkshake, universal arm64+x86_64, ad-hoc codesigned (not notarized)·slices 8–11 complete·Q1-AUDIO-SILENCE + Q2-TITLE-COMPOSE gate=PASS·⚠ F6 human playtest still owed
updated just nownext 3m 00s