18 games in the pipeline, 1 playable today: an honest state of the Dracon arcade
Most indie game pages show you a wall of logos and let you discover the emptiness yourself. We would rather show you the pipeline. Our games catalog is a data file with 18 entries and an honest status field — this article is just what the data says today, plus why we run it this way. If you came looking for a wall of 'Play Now' buttons, you will find one honest one and seventeen notes about what it takes to earn the others. That is the point.
The status ladder, defined
- Released — a real game you can open and play to a win/lose state right now, hosted and smoking. Today that is exactly one: One Million Girlfriends at 0.2.15, a branching anime visual novel with 5 heroines, 5 days, and 10 endings.
- WIP — actively being built. Fourteen live here. Five are hosted on the OVH bucket and playable via iframe but still gated by a quality call: Junk Runner at 0.8.0, Darklord at 1.0.0, Hellhunter at 1.0.0, Neonbreak at 0.10.4, and Polis at 1.0.0. Nine more WIP have no hosted build yet: Hegemon, the three engine templates (canvas2d 0.0.1, isometric 0.0.1, birds-eye 0.1.0), Doomtap, Football Forever, Hooked Forever, Forever Mulligan, and Forever Feast.
- Experimental — a real concept with real source, queued behind the active work, not yet on the WIP ladder's critical path. Three: Capture Anime Girls (0.1.0), Deathrun (2.0.0), and Endless Tower Defense (0.1.0). They build, they run locally, they are not yet candidates for bucket publish.
- What we no longer use — the old four-way of playable/demo/WIP/candidate. That vocabulary was honest at 16 games; at 18 we simplified to the three you see above because demo, candidate, and placeholder were really just shades of WIP and they confused more than they clarified. The catalog's status field is now released | wip | experimental, and the hosted_path + play_url fields tell you whether a WIP is bucket-hosted.
A word on canLaunch, the predicate that actually gates the Play button. A game is launchable when its catalog entry has a hosted_path, a play_url, an iframe_src that names index.html explicitly, and screenshots at games/{slug}/{version}/screenshots/. The SvelteKit games additionally require a built base path (JR_BASE, HH_BASE, NB_BASE) so the client router can match. If canLaunch is false, the game page shows the concept, art, and status but no iframe — no dead link, no 403, no sitemap entry that promises a game that is not there.
The catalog today, honestly
| Status | Count | Who lives there | Hosted + playable? |
|---|---|---|---|
| Released | 1 | One Million Girlfriends 0.2.15 | yes — play, OVH bucket at games/one-mil-girls/0.2.15/ |
| WIP — hosted (bucket) | 5 | Junk Runner 0.8.0, Darklord 1.0.0, Hellhunter 1.0.0, Neonbreak 0.10.4, Polis 1.0.0 | yes, but gated — iframe renders, catalog still WIP by quality call |
| WIP — not yet hosted | 9 | Hegemon, template-canvas2d 0.0.1, template-isometric 0.0.1, template-birds-eye 0.1.0, Doomtap 1.0.0, Football Forever 0.1.0, Hooked Forever 0.1.0, Forever Mulligan 0.1.0, Forever Feast 0.1.0 | no — local builds only, no play_url |
| Experimental | 3 | Capture Anime Girls 0.1.0, Deathrun 2.0.0, Endless Tower Defense 0.1.0 | no — concepts with source, not yet publish candidates |
| Total | 18 | Every entry desktop-only, DRM-free, no account | 6 have a live iframe_src, 1 is released |
That table is the whole honesty pitch in one place. Five of the WIP games already pass the pipeline's live smoke — they are on the bucket, their iframe_src names index.html explicitly (the bucket serves no directory index, so /games/{slug}/{version}/ is a 403), every object has a per-object public-read ACL (OVH does not implement PutBucketPolicy), and a headless Chromium probe boots each one with zero responses at 400 or above. We wrote up that pipeline in how a game ships to the Dracon arcade and the bug it surfaced in three games, one bug. The catalog still says WIP for those five because flipping status from WIP to released is a quality call a human makes after playing the game, not a fact the pipeline asserts. The pipeline is the replay; the catalog is the scoreboard.
Why publish the honest version
Two reasons, one practical and one cultural. Practically, we learned that thin pages do not just fail to rank — they get flagged. A game page with no game behind it is exactly the kind of empty URL that poisons a domain's standing. When a game drops below launchable, its play page comes out of the sitemap the same day, which is why you will not find dead links in the arcade and why the sitemap at /games/sitemap.xml only lists slugs that can actually boot. We would rather have six honest play URLs than eighteen hopeful ones.
Culturally, our whole platform bet is that curation beats volume. A directory that says 'nine WIP not yet hosted, three experimental, not ready' earns the right to say 'this one is released' and be believed. The alternative — a glossy grid where every tile says Play Now and half the tiles 403 — trains players to distrust every tile, including the good ones. We built the Dracon music library the same way: 250 cooks, each with its recipe on file, so you can judge before you listen. The arcade is the same idea with a stricter gate, because a 5-hour visual novel that cannot be finished is worse than a 3-minute song you skip.
What 'WIP to released' means in practice
Every game in the catalog is desktop-only (target_platform desktop in the catalog JSON, enforced by the hub), built on our own engines — the birds-eye and isometric demos double as engine testbeds — and moves up the ladder only when it clears a quality floor: a playable loop, a real win/lose, no placeholder art pretending to be a game, and a clean probe (one navigation, zero console errors, zero failing assets). The standing publish rules after the July 31 run are now in the runbook: the three SvelteKit games must be built with their base-path env vars before every publish (JR_BASE=/games/junk-runner/{version} and siblings), Neonbreak's postbuild passes --absolute-assets, and screenshots are staged into the build before publishing so they land at games/{slug}/{version}/screenshots/ with alts. When a WIP clears that floor, the catalog flip changes status, version, iframe_src, play_url, asset_base_url, screenshots, and updated_at in one JSON edit, the hub rebuilds (adapter-static, no service to restart), and the changelog records the move. This article regenerates when the catalog does, so the numbers above are a snapshot, not a monument.
Next up the ladder are the five hosted WIP, one quality gate at a time. Neonbreak, Darklord, and Polis were the cleanest booting in the July 31 probe; Junk Runner and Hellhunter had the SvelteKit reload loop that three games, one bug dissects, now fixed. Behind them are Hegemon (our strategy epic and the project's longest-running development saga) and Endless Tower Defense, both WIP/experimental but with real source under web/games/wip/ and web/games/released/. If you want to watch the ladder move, the changelog is the feed; if you want to play today, One Million Girlfriends is the honest answer, and the five hosted WIP are the honest 'almost'.