案例研究 / 03

Old Town Hotel

Unity 6 / C# / 137 EditMode Tests

一款以系统为核心的酒店经营模拟,取材于真实的前台、客房、酒廊与房间周转流程。

← 全部项目
Old Town Hotel / 系统设计Unity 6 / C#
房间生命周期每个房间,
一个明确的状态。
脏房清洁中查房可入住已入住

带守卫的状态迁移 · 数据驱动的数值平衡 · 137 个 EditMode 测试

角色独立游戏开发者与系统设计师
背景独立的公开作品集项目
状态开发中 / 公开仓库

挑战

把相互依赖的酒店运营,变成既可读、又可配置、可测试的游戏系统。

我的贡献

独立设计并实现整个项目:客人队列、房间匹配、房间状态机、查房、酒廊库存、成就与日终结算。

交付过程

这项工作
是如何成形的。

从对问题的第一个模型,到检验系统的实际行为。

01

为一天建模

把到店、分房、客房清洁、酒廊服务与日终结算,转化为可玩的循环。

02

拆开各个系统

让客人、房间、库存与 UI 各司其职,规则演进时无需重写整个项目。

03

让内容可配置

用 ScriptableObject 与数据驱动的配置,把数值调整放在核心逻辑之外。

04

验证规则

围绕状态迁移与边界情况搭建 EditMode 测试套件,达到 137 个测试。

工程证据

那些
真正重要的细节。

  • 137 个 Unity EditMode 测试
  • 由 ScriptableObject 驱动的配置
  • 模块化 UI 与多场景架构
  • GDD 与架构决策记录(ADR)
  • 客人偏好与房间匹配逻辑
  • 房间生命周期、查房与返工闭环

决策细节 / 展开阅读

01把房间建模为生命周期

脏房、清洁中、查房、可入住、已入住是彼此不同的阶段。带守卫的状态迁移更容易阻止非法组合,也给测试划出了清晰的边界。

02让客人偏好影响决策

当客人的需求与可用房间产生竞争时,分房就成了游戏。适配规则让前台工作变成有意义的选择,并把这个选择与表现层分开。

03把数值与实现分开

ScriptableObject 配置保存平衡数值与内容,模拟可以持续演进,而不必把数值改动散落在玩法代码中。

04在场景之下测试规则

经济模型是纯 C#,藏在面向 Unity 的组件之后。EditMode 测试可以验证财务与状态行为,而不必让每条规则都依赖手动跑一遍场景。

结果

一个完整的纵向切片,展示了 C# 系统开发、测试纪律、游戏设计推理,以及把领域知识转化为交互规则的能力。

独立开发中的项目,采用 AI 辅助的工作流。游戏设计、架构决策、集成与验证由我负责;公开仓库包含代码、测试与开发历史。

  • Unity 6
  • C#
  • EditMode Tests
  • ScriptableObject
  • Git
查看仓库 ↗

下一个案例

04Retro Quest→