Build record

Version 0.3.0

One portable executable with the game data packed inside it. No installer, no launcher, no account, no background service.

File
/downloads/ChaosLab-0.3.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
No server configured in this version, so it makes no requests

No file size or checksum is published here, because publishing a hash this page cannot verify would be decoration. If the download link returns a not-found page, the archive for this version has not been uploaded yet.

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.

What is in this version

0.3.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. Unconfigured in this version, and switchable 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
Weapons14, or Q to cycle
PauseEsc
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.3.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.3.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 0.3.0 build points at https://chaoslab.invalid/updates/latest.json — a deliberately unresolvable address — so an unconfigured feature is inert rather than merely unsuccessful. Publishing a season is uploading this file; rolling one back is uploading the previous one.

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.