Case study / 03

Old Town Hotel

Unity 6 / C# / 137 EditMode Tests

A systems-led hotel management simulation grounded in real front-desk, housekeeping, lounge and room-cycle workflows.

← All projects
Old Town Hotel / System designUnity 6 / C#
Room lifecycleEvery room.
An explicit state.
DirtyCleaningInspectionReadyOccupied

Guarded transitions · Data-driven balance · 137 EditMode tests

RoleSolo game developer and systems designer
ContextIndependent public portfolio project
StatusActive / public repository

Challenge

Turn interdependent hotel operations into readable game systems that remain configurable and testable.

Contribution

Designed and implemented the project solo: guest queues, room matching, room state machines, inspections, lounge inventory, achievements and end-of-day summaries.

Delivery process

How the work
came together.

From the first model of the problem to checking how the system behaves.

01

Model the day

Translated arrival, room allocation, housekeeping, lounge service and end-of-day operations into a playable loop.

02

Separate the systems

Kept guest, room, inventory and UI responsibilities modular so rules could evolve without rewriting the whole project.

03

Make content configurable

Used ScriptableObjects and data-led configuration to keep gameplay tuning outside core logic.

04

Verify the rules

Built an EditMode suite around transitions and edge cases, reaching 137 tests.

Engineering evidence

The details
that matter.

  • 137 Unity EditMode tests
  • ScriptableObject-driven configuration
  • Modular UI and multi-scene architecture
  • GDD and architecture decision records
  • Guest preference and room-matching logic
  • Room lifecycle, inspections and rework loops

Inside the decisions / Expand to read

01Model the room as a lifecycle

Dirty, cleaning, inspection, ready and occupied describe distinct stages. Guarded transitions make invalid combinations easier to prevent and give tests a clear boundary to exercise.

02Let guest preferences affect the decision

Room assignment becomes a game when guest needs compete with the available rooms. Suitability rules turn front-desk work into a meaningful choice and keep that choice separate from the presentation.

03Separate tuning from implementation

ScriptableObject configuration holds balance values and content. This lets the simulation evolve without scattering tuning changes through gameplay code.

04Test the rules beneath the scene

The economy model is pure C# behind Unity-facing components. EditMode tests can verify financial and state behaviour without making every rule depend on manually playing through a scene.

Outcome

A coherent vertical slice demonstrates C# systems work, test discipline, game design reasoning and the ability to turn domain knowledge into interactive rules.

Independent work in progress, developed with an AI-assisted workflow. I own the game design, architecture decisions, integration and validation; the public repository includes code, tests and development history.

  • Unity 6
  • C#
  • EditMode Tests
  • ScriptableObject
  • Git
View repository ↗

Next case study

04Retro Quest→