| Milestone | State |
|---|---|
| M0 Grey box · M2 Verdict loop · M3 Contamination · M5 Day cycle | Complete |
| M1 Chemistry + tests | Complete bar debug tooling and CI (#3, #18) |
| M4 Co-op | Complete; not yet played in a real two-instance session |
| D1 Heat-treatment domain · D2 Deliveries and customers | Complete |
| F1 Frontend, options, accessibility | Complete |
| M6 Art · 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, proximity voice, run save and continue, and a full front end.
See docs/DESIGN.md for the full design and technical rules.
-
Co-op has never been played. Cartons, notes and slips all replicate as of #80, and the host-only boundary is enforced by the reflection sweep in
NetworkViewTests— but no two-instance session has actually been run. Build a player, join the Editor, and watch a guest carry a carton in and open it. -
The EditMode suite is not routinely run. #76 fixed the deadlock that made it unrunnable, but that fix is itself unvalidated, and roughly sixty tests added since have never been executed. Run
Residue > Build > Run EditMode Testsand readTemp/oiledup-editmode.txt. -
#18 CI is deliberately off while this is a single-developer project — the local path works, it is just operated by hand. Revisit if a second person commits, or if
maingoes red unnoticed again. -
.metafiles are outstanding for the scripts added in the audio, credits and sample-dump commits. Unity was not running when they landed, so it has not imported them yet. Open the Editor and commit the generated.metafiles before pushing to another machine.
Polish and accessibility (F1)
- #46 Audio is in but unheard — room tone, per-instrument run-finished chimes, machine loops and interaction feedback all ship, and the volume sliders route. Nobody has actually listened to it yet.
- No language ships but English. #55 made translation possible, not done: ~500 strings now carry ids and named arguments, and a test fails any new literal reaching a draw call. Actually translating is a separate job, and so is the font — the in-world screens raster a pixel font with no glyph coverage past Latin, and a 32-column CRT is its own problem.
- Art pass (M6), content and balance pass (M7), and the optional weird layer (M8).
- #34 Assemblies and namespaces are still
Residue.*from the working title.
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.
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.