Releases: Joxtacy/omnispeak-ap
Release list
v0.0.10-rc.1
🕹️ omnispeak-ap v0.0.10-rc.1
The game client — a Commander Keen engine that plays Keen 4/5/6 and talks to Archipelago.
✨ New
- grant Korath III Base gems + keycard (two blue doors)
- support secret levels (POTF two-red fix, Korath gating)
Full commit changelog
- feat(ap): grant Korath III Base gems + keycard (two blue doors)
- feat(ap): support secret levels (POTF two-red fix, Korath gating)
🎮 Part of the Commander Keen: Goodbye Galaxy Archipelago set
Use matching versions of all three pieces together:
- 🌍 APWorld — latest — generates the randomized game for Archipelago
- 🕹️ Game client (omnispeak-ap) — this release — plays the game and talks to Archipelago
- 🗺️ PopTracker pack — latest — tracks your items, locations & maps
New here? Start with the Setup Guide.
v0.0.9
🕹️ omnispeak-ap v0.0.9
The game client — a Commander Keen engine that plays Keen 4/5/6 and talks to Archipelago.
✨ New
- CTRL+R on the overworld respawns at the new-game start flag
Full commit changelog
- feat(ap): CTRL+R on the overworld respawns at the new-game start flag
🎮 Part of the Commander Keen: Goodbye Galaxy Archipelago set
Use matching versions of all three pieces together:
- 🌍 APWorld — latest — generates the randomized game for Archipelago
- 🕹️ Game client (omnispeak-ap) — this release — plays the game and talks to Archipelago
- 🗺️ PopTracker pack — latest — tracks your items, locations & maps
New here? Start with the Setup Guide.
v0.0.8
🕹️ omnispeak-ap v0.0.8
The game client — a Commander Keen engine that plays Keen 4/5/6 and talks to Archipelago.
Reconnecting after an idle disconnect no longer crashes the game or re-grants stunner ammo and extra lives.
🐛 Fixed
- guard AP network calls against reconnect crash
- stop re-granting filler items on reconnect
🔧 Maintenance
- group notes by type, add highlights input + cross-links
Full commit changelog
- fix(ap): guard AP network calls against reconnect crash
- fix(ap): stop re-granting filler items on reconnect
- ci(release): group notes by type, add highlights input + cross-links
🎮 Part of the Commander Keen: Goodbye Galaxy Archipelago set
Use matching versions of all three pieces together:
- 🌍 APWorld — latest — generates the randomized game for Archipelago
- 🕹️ Game client (omnispeak-ap) — this release — plays the game and talks to Archipelago
- 🗺️ PopTracker pack — latest — tracks your items, locations & maps
New here? Start with the Setup Guide.
v0.0.7
🕹️ omnispeak-ap v0.0.7 — Pointsanity support
This is the game client — a Commander Keen engine that plays Keen 4/5/6 and talks to Archipelago. This release teaches it about pointsanity.
✨ New
- Pointsanity. When you grab a 5000-point pickup — an Ice Cream Cone (Keen 4) or Bag O' Sugar (Keen 5) — the client now sends it to Archipelago as a location check.
🐛 Fixed
- Keen 5 ending no longer strands your goal check. The AP client keeps polling through the galaxy-explode ending sequence and the "Game Over" wait, so a momentary connection hiccup at the finish line can't leave your completion check stuck in the queue.
🔧 Under the hood
- Per-pickup instance tracking moved off
obj->user4; info-layer tiles are preserved through the pickup scan; pickup toast dropped to match the extra-life pattern. Addeddump_clip.pyfor static level-geometry inspection.
🎮 Part of the Commander Keen: Goodbye Galaxy Archipelago set
These three pieces are released together — use matching versions:
| Component | Version | What it does |
|---|---|---|
| 🌍 APWorld | v0.0.7 | Generates the randomized game for Archipelago |
| 🕹️ Game client (omnispeak-ap) | v0.0.7 ← you are here | Plays the game and talks to Archipelago |
| 🗺️ PopTracker pack | v0.0.10 | Tracks your items, locations, and maps |
New here? Start with the Setup Guide.
Full commit changelog
- fix: poll AP client during Keen 5 galaxy-explode ending
- chore(tools): add dump_clip.py for static level geometry inspection
- fix(pointsanity): preserve info-layer entries through tile scan
- feat: pointsanity for 5000-pt items as location checks
- refactor: move extralife per-level index out of obj->user4
- feat(release): support RC prereleases
- fix(demos): gate AP-only state changes during demo playback
- build(makefile): detect native MSYS2/MinGW for Windows libs
- chore: ignore log/ output from demo regression tests
- fix(audio): force callback path when audioSync is on
- fix: track boss completion locally so auto-collect can't trigger false victory
- feat: keep audio playing when window unfocused
- fix: pause SDL audio on window focus loss to drop queue backlog
v0.0.6
Highlights
The headline feature is Flasksanity & Kegsanity — every reachable Lifewater Flask (Keen 4) and Vitalin Keg (Keen 5) extra-life pickup can now be its own Archipelago location check. Pair it with the matching Archipelago-Keen v0.0.5 apworld and turn on enable_flasksanity / enable_kegsanity in your yaml.
This release also brings:
- 🪟 Cross-platform episode picker — replaces the old Win32-only
AP Keen Launcher.exe. macOS gets a keyboard-navigable dialog; Windows gets a native TaskDialog. - 🪧 Episode + slot name in the window title — handy for streaming overlays and window managers when you have several seeds open.
- 🏷️ In-game toast notifications — incoming items, outgoing sends, and DeathLinks now surface as on-screen toasts. All toast categories are individually configurable in
connection.txt. - ☠️ DeathLink — opt in via the apworld yaml; deaths from other players come in as a synthetic Keen death.
Install / upgrade
- Download
OmnispeakAP.v0.0.6.zipfrom the assets below. - Unzip it next to your Keen 4 / 5 / 6 game data files (
*.CK4,*.CK5,*.CK6). - Edit
connection.txtwith your AP server, slot name, and password. - Run
omnispeak(oromnispeak.exeon Windows).
If you only have one episode's data files present, omnispeak picks it automatically. With two or three present, the episode picker pops up so you can choose.
The full stack
| Component | This release |
|---|---|
| Game client (omnispeak-ap) | v0.0.6 (this release) |
| Archipelago apworld | v0.0.5 (latest) |
| PopTracker pack | v0.0.6 (latest) |
Changelog
- feat: keyboard-navigable macOS picker and Finder launcher
- feat: use Windows TaskDialog for the AP episode picker
- feat: add Lifewater Flask (CK4) and Vitalin Keg (CK5) AP location checks
- feat: include slot name in window title at startup
- feat: episode-aware window title for OBS / window managers
- feat: replace Win32 launcher with cross-platform episode picker
- docs: add CLAUDE.md with build, test, and architecture notes
- feat: make in-game toasts configurable via connection.txt
- feat: surface incoming DeathLinks as in-game toasts
- fix: stop toast jitter during scrolling
- feat: surface outgoing items via PrintJSON ItemSend
- feat: add in-game toast notifications for received items
- ci: add VERSION file, bump+commit it in release workflow
- ci: add release workflow + vendor launcher and config templates
- ci: drop MS-DOS build from default workflow
- ci(fix): pin OpenSSL --libdir=lib for mingw cross-build
- build(fix): restore endif lost in Windows DEFAULT_BUILDASCPP edit
- build: DEFAULT_BUILDASCPP=1 for Windows mingw
- ci: use stable archive URLs for OpenSSL + zlib downloads
- ci: also build cross zlib for mingw Windows
- ci(cross): BUILDASCPP=1 for ppc64 — needs C++ runtime for ap_client
- build: NO_SSL=1 also implies NO_COMPRESSION
- ci: fix copy-paste upload paths, install cross OpenSSL, add NO_SSL toggle
- ci: gate Demo Dump Tests on K56DATA_URL secret
- fix(build): unbreak MinGW + ppc64 cross-compile CI
- fix(build): C-style array init for cross-compile / MinGW
- fix(build): unbreak Linux & cross-compile CI
- build: auto-fetch pinned asio + document non-Windows build
- feat(ap): implement DeathLink
- fix(build): wire up ap_client.cpp on macOS / non-Windows
- docs: note continuation-fork status
- rework goal & fix item resync wetsuit/keycard bug
- fix issue where goal sometimes doesn't fire
- Merge pull request kodbyte#1 from Joxtacy/feat/datastorage-current-level
- fix: use non-reserved DataStorage key for current level
- feat: write current level to DataStorage for tracker map switching