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.

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.

Development history with game captures →

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

Controls

Keyboard and mouse. The movement scheme is chosen on the title screen.
ActionInput
MoveWASD or the arrow keys
AimMouse
FireLeft mouse button
DashSpace — untouchable while it lasts
Weapons1–4, or Q to cycle
Choose perkZ / X / C
PauseEsc — Outside perk selection
LanguageF2 — English and Russian, switchable mid-run
DiagnosticsF3 — frames, projectiles, refusals
MuteM

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".

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.