Build record
Download Chaos Lab 0.5.0 for Windows
One portable executable with the game data packed inside it. No installer, no launcher, no account, no background service.
— recorded downloads.
- File
/downloads/ChaosLab-0.5.0-windows-x64.zip- Contents
ChaosLab.exe, with the game data embedded in the executable- Target
- Windows 10/11, 64-bit (x86-64)
- Engine
- Godot 4.7.1 stable, GL Compatibility renderer
- Install
- None. Unpack the archive and run the executable
- Uninstall
- Delete the folder, and the settings file if you want it gone
- Signing
- Unsigned — SmartScreen will warn
- Network
- Optional update-manifest request at startup
The archive includes BUILD.txt with the source version and commit, plus SHA256SUMS.txt for its files.
Why Windows warns about it
The executable is not signed with a code-signing certificate, so SmartScreen shows unknown publisher. Choose More info, then Run anyway. That warning is accurate — it says nobody has paid to attach an identity to this file — and it will keep appearing until there is a certificate. It is also the reason the game contains no auto-updater: an unsigned executable that downloads and replaces executables behaves exactly like malware, and antivirus vendors classify on behaviour.
New in 0.5.0 — chaos with fewer popups
The first player feedback prompted a rethink of the opening minute and upgrade choices.
- Compact perk cards: choose with Z/X/C while combat continues. Each selection leaves 20 seconds before another offer; earned choices remain queued.
- A gentler first minute: slower enemies and a gradual crowd buildup. Levels arrive less often and perk descriptions are shorter.
- Weapons and ammo sit at the bottom center. Empty weapons are highlighted; key 4 selects the ammunition-free crowbar.
- New animations for all four weapons, casings and smoke, damageable monitors and panels. Russian voices react to events with fewer repeats.
What is in this version
0.5.0 is the version string the source carries today. The prototype has been through thirty-odd tasks; these are the parts a player meets.
Season schedule
The four-week cycle lives in the build as data. The title screen prints the phase and the days left, so a returning player learns something changed before pressing start.
Update notice
An optional startup check that tells you a newer build exists and downloads nothing. Checks the project manifest and can be switched off.
Health and shield bars
Both sit inside the info panel's own layout rather than floating over it, and the shield extends past the health bar so it can never hide the number that kills you.
Recovery stations
A repair rig and a shield emitter, at most one per town block, placed inside the building when that block has one. They do not recharge, so no corner of the town is worth camping in.
A crowd that keeps up
Walking away from the fight no longer empties the world: the town streams around you and the crowd is maintained ahead of you.
Incident Report perks
The end-of-run report lists the perks you were carrying alongside the award and the death cause, so a run explains itself.
Also in this version, behind the scenes: the candidate gate now decides on counted work rather than measured time, so its verdict is identical on a slow machine, and an offline batch generator can put a hundred proposals through import and gating unattended. Neither is part of the game you run; both are why the candidates can be trusted not to melt your frame rate.
Known issues, stated before you find them
- Animation is still evolving. All three enemies use new directional sprites; full hand-drawn walk and death cycles are not finished.
- The weapon barrel sticks out in front of the player. That is the model, not an aiming bug.
- Extreme projectile density drops frames. The worst-case profile — 256 homing projectiles against 500 enemies — measured about 62 ms per physics frame on the developer's machine, well outside the 16.7 ms budget for 60 Hz. An ordinary 500-enemy crowd measured about 12.5 ms on the same machine. These are development measurements on one Windows PC, not a guarantee for yours.
- Balance is not settled. Weapons, ammunition scarcity and wave pacing are all first passes. Whether switching weapons is worth doing is an open question.
- The season phase trusts your system clock. Moving it forward opens a trial early. This is a single-player game with nothing to win, and a server to prevent that would cost more than the problem.
- A malformed schedule is skipped, not fatal. The shipped catalog is playable on its own, so a typo in a date must not empty the perk offers.
Controls
| Action | Input |
|---|---|
| Move | WASD or the arrow keys |
| Aim | Mouse |
| Fire | Left mouse button |
| Dash | Space — untouchable while it lasts |
| Weapons | 1–4, or Q to cycle |
| Choose perk | Z / X / C |
| Pause | Esc — Outside perk selection |
| Language | F2 — English and Russian, switchable mid-run |
| Diagnostics | F3 — frames, projectiles, refusals |
| Mute | M |
What it writes, and what it sends
The game writes one settings file and nothing else:
%APPDATA%\Godot\app_userdata\Chaos Lab\settings.cfg
It holds your language, your movement scheme and whether the update check is allowed. There is no telemetry, no crash reporter, no identifier and no account. To refuse the update check permanently, add this to that file:
[updates]
check_enabled=false
The check is a single GET of a static JSON file at startup. It carries no query string and nothing about you; a server would learn that an address fetched a file, which a download link would tell it anyway. It never blocks the title screen, and failure is silent because having no network is a normal state of a machine rather than an error.
Update manifest — /updates/latest.json
The endpoint the game reads. It is a static file describing the newest build; the game reacts only when the version in it is higher than its own, and then only by revealing a button that opens a link in your browser.
{
"version": "0.5.0",
"season_name": "Season 1 — Health and Safety Review",
"notes": "Three gated Season 1 candidates ship in this build.",
"download_url": "https://chaoslabgame.ru/downloads/ChaosLab-0.5.0-windows-x64.zip"
}
What the game refuses, and why the parsing is suspicious: this is the only text in the game that comes from outside it, and it lands both on a label and in the hands of the operating system's URL handler — which is not a browser, but "do whatever this machine does with this string".
versionmust be digits and dots.download_urlmust begin withhttps://, be printable ASCII and stay inside a bounded length. Anything else is refused rather than opened.- The displayed strings are stripped to one bounded line, because a newline in a release note is a free line of title screen positioned by whoever wrote the manifest.
- A response larger than a small JSON document is rejected before it is parsed, and the request gives up after a few seconds.
The update check uses https://chaoslabgame.ru/updates/latest.json. Set check_enabled=false in settings to disable it.
Building it yourself
The project is a Godot 4.7.1 project. With matching export templates installed, the Windows build is one command from the repository root, and the preset embeds the project data into a single portable executable:
godot --headless --path . --export-release "Windows Desktop" builds/windows/ChaosLab.exe
The automated suite runs headless from the same checkout, and the candidate gate is a script you can point at any candidate resource before it is allowed near a trial.