| Milestone | State |
|---|---|
| M0 Grey box · M2 Verdict loop · M3 Contamination · M5 Day cycle | Complete |
| M1 Chemistry + tests | 481 Unity tests passing locally; hosted CI awaiting activation |
| M4 Co-op | Four-process lobby/chat/voice/gameplay smoke and fresh-process save resume passed; full human playthrough pending |
| D1 Heat-treatment domain · D2 Deliveries and customers | Complete |
| F1 Frontend, options, accessibility | Complete |
| M6 Art | Underway — the lab has a building, distinct instruments and a tutorial |
| M7 Content and balance · M8 Weird layer | Not started |
A single player can play a full contract end to end: samples arrive by truck, are unboxed, reconciled against a delivery note, prepped, run, filed, and resolved — with the run surviving a quit. It remains pre-alpha.
Oiled Up is a 1–4 player first-person co-op game about running a heat-treatment oil laboratory. Receive customer samples, choose and operate tests, interpret the results, and file a verdict before a bad quench bath ruins parts or starts a fire. Unnecessary shutdowns are costly too, so there is no safe default answer.
The project is built with Unity 6 and URP. It currently includes the playable lab workflow, deterministic chemistry, contamination and calibration systems, customer deliveries and note reconciliation, host-authoritative multiplayer, session text chat, Relay proximity voice, run save and continue, and a full front end.
See docs/DESIGN.md for the full design and technical rules.
-
Human multiplayer acceptance remains. The live four-process smoke checks actual Lobby/Relay, readiness, all-origin chat/voice forwarding, command authority, instrument results, saving and next-day replication. A separate fresh process verifies the title's Continue action. It does not replace a complete cooperative playthrough, cross-machine latency or hearing tests. Follow MULTIPLAYER.md.
-
The full Unity suite now runs successfully: 481 passed, none failed or skipped. Evidence and remaining release checks are recorded in RELEASE_VALIDATION.md.
-
CI now requires Unity activation. Pull requests run EditMode tests; main/manual builds also package Windows players, and version tags create draft releases. Missing license secrets fail explicitly. See CI setup and releasing.
Polish and accessibility (F1)
- English and German string tables are included. Both languages still need an in-game layout check at supported resolutions and UI scales, especially instrument readouts and chat.
- Art pass (M6), content and balance pass (M7), and the optional weird layer (M8).
The assemblies are named Residue.* after the working title and are staying that way
(#34, closed as not planned). That is a decision,
not outstanding work.
Track the details in GitHub Issues.
git lfs install
git clone git@github.com:miopowered/OiledUp.git
cd OiledUp
git lfs pullAdd the project in Unity Hub and open it with Unity 6000.5.9f1. After package
restore, use these menu commands:
Residue > Content > Rebuild DefinitionsResidue > Content > ValidateResidue > Art > Rebuild PaletteResidue > Build > Rebuild Greybox Lab
Open Assets/Scenes/Boot.unity and press Play. That is the scene a build starts
in, and the menu, the save slot and the lobby all wake up there — opening
Lab.unity directly skips them and starts a run with no way back to a menu.
For fast checks of the managed multiplayer models, run
dotnet run --project tools/modeltests/ModelTests.csproj (requires .NET 8 and an imported Unity
installation). This deliberately excludes native engine operations and does not replace Unity tests.
Residue > Build > Run EditMode Tests, then read Temp/oiledup-editmode.txt. It
appends a line per test as the run goes, so a run that dies partway still says how
far it got. The Test Runner window works too.
Do not drive TestRunnerApi from the Unity MCP tool — see the trap documented in
CLAUDE.md, which deadlocks the Editor after every test has passed.
When changing balance data, edit
Assets/Editor/Content/ContentTables.cs, rebuild and validate the definitions,
then run the full EditMode suite. Do not edit generated .asset files by hand.
Assets/Scripts/Data/ Definitions
Assets/Scripts/Chemistry/ Generation and measurement
Assets/Scripts/Gameplay/ Lab interactions and simulation
Assets/Scripts/Net/ Multiplayer and replication
Assets/Editor/ Content and art tooling
Assets/Tests/EditMode/ Automated tests
docs/ Design, workflow, and CI notes
The host owns samples, measurements, machines, economy, and consequences. Clients request interactions and never receive sample ground truth.
Read docs/WORKFLOW.md and CLAUDE.md.
- Use one issue per branch and one branch per pull request.
- Commit Unity assets with their
.metafiles. - Keep generated content and scene files out of manual YAML edits.
- Preserve the host-only
SampleGroundTruthboundary. - Keep chemistry deterministic and scientifically consistent.