游戏与建模的领域对象分析

游戏和建模(CAD/绘图/场景)的领域对象分析和一般软件是两条不同的线:一般软件的对象来自「用户要完成什么业务流程」,游戏/建模的对象来自「这个世界里有什么东西、什么规则」。分析游戏,就是在分析一个允许玩家行动的世界的结构;分析建模,就是在分析一个要被描述的场景的结构


一、从一般软件到游戏:对象来源变了

一般软件问:

1
2
「用户要通过这个软件完成什么任务?」
→ 对象:图片、订单、进程、项目

游戏问的是完全不同的问题:

1
2
「这个世界里有什么东西?它们遵循什么规则?」
→ 对象:玩家、敌人、道具、地形、关卡

以闯关游戏为例,领域对象不是从「用户任务」来的,而是从世界结构来的:

1
2
3
4
5
6
7
8
9
10
11
12
Game
├── Player 玩家(可控制的实体)
├── Scene 场景
│ ├── Background 背景
│ ├── Terrain 地形
│ ├── Obstacle 障碍
│ └── Object 物体
├── Enemy 敌人
├── Item 道具
├── Camera 摄像机
├── UI
└── GameManager 游戏流程控制

这就是游戏领域对象分析的第一步:列出这个世界的实体


二、世界实体 → 属性、状态、关系

和一般软件一样,每个对象要补属性、状态、关系,但内容完全是世界性的:

1
2
3
4
5
6
7
8
9
10
11
12
13
Player(玩家)
├── 属性:位置、速度、动画、生命值
├── 关系:与障碍物碰撞、拾取道具、被敌人攻击
└── 状态:Idle → Run → Jump → Dead

Enemy(敌人)
├── 属性:位置、巡逻范围、攻击力、AI 状态
├── 关系:追踪玩家、触发事件
└── 状态:Patrol → Chase → Attack → Dead

Item(道具)
├── 属性:类型、效果、位置
└── 关系:被玩家拾取 → 触发效果

关卡也是对象:

1
2
3
Level(关卡)
├── 属性:难度、目标、敌人配置、道具配置
└── 状态:Locked → Available → Completed

三、游戏对象分析的独特之处:规则驱动

一般软件的对象由「业务规则」驱动,游戏的对象由「世界规则 + 玩家行动」驱动:

1
2
3
4
5
一般软件:订单有状态机(待支付→已支付→发货)
规则来自业务约定

游戏:敌人有 AI 状态机(巡逻→追击→攻击)
规则来自设计者定义的「世界如何运转」

游戏分析还有一个一般软件没有的维度——玩家

1
2
3
一般软件:用户是软件的使用者,不在软件内部
游戏:玩家是世界的参与者,玩家本身是领域对象
→ Player 对象:位置、状态、能力、与世界的交互

四、建模:和游戏同一条线

建模(CAD、绘图、场景设计)和游戏是同一条线——都在分析「一个要被描述的世界/场景的结构」:

1
2
3
4
5
6
7
8
9
10
11
12
13
人物建模:
领域对象:头、躯干、四肢、服装、表情
→ 每个对象有几何、比例、位置、姿态
→ 对象之间有空间关系(头在躯干上方,手臂接肩膀)

场景建模:
领域对象:地面、建筑、树木、天空、光源、摄像机
→ 对象有几何、材质、光照属性
→ 对象之间有空间布局关系

AI 绘图领域模型:
领域对象:人物、树木、建筑
→ 实体 → 属性 → 空间关系 → 几何 → 像素

共同点:

1
2
3
4
游戏和建模都是「分析一个世界的结构」
→ 对象 = 世界里的实体
→ 属性 = 实体的特征(几何/状态/能力)
→ 关系 = 实体之间的空间/逻辑连接

五、游戏对象 → 数据结构/组件的落地

游戏对象分析出来后,落地方式有两派(详见游戏系统论的 ECS 部分):

1
2
3
4
5
6
7
传统 OOP:对象 = 类
Player 类:位置、速度、动画、碰撞 全包在一个类里

ECS:对象 = ID,属性拆成组件
Entity: 玩家
Position / Velocity / Sprite / Health 是独立组件
System 负责处理特定组件组合

无论怎么落地,领域对象分析是第一步

1
2
3
4
5
6
7
8
9
领域对象分析(本线)
玩家、敌人、道具、地形 ← 世界结构

落地选择
OOP:对象→类
ECS:对象→Entity + Component + System

数据结构(Domain 层)
PlayerData / EnemyData / 关卡数据

六、和一般软件线的分界总结

维度 一般软件 游戏 / 建模
分析起点 用户要完成什么任务 世界有什么、规则是什么
对象 业务实体(图片/订单/进程) 世界实体(玩家/敌人/建筑)
玩家/用户 使用者,在系统外 参与者,在系统内(Player 是对象)
规则来源 业务约定 设计者定义的世界规则
落地 类/struct + Service OOP 类 或 ECS 组件系统

七、和其他线的关系

1
2
3
4
5
6
7
8
9
10
11
12
13
游戏/建模对象分析 → 领域模型
先挖出世界实体,再建完整领域模型(属性+关系+规则+状态)

游戏/建模对象分析 → 游戏系统论
游戏系统论讲游戏从零演化 + 世界建模
本线讲「世界建模」里对象怎么分析出来

游戏/建模对象分析 → 数据结构
世界实体 → Domain 数据(PlayerData/EnemyData/关卡配置)

游戏/建模对象分析 → 认知与语言主题(09,01 认知语言智能)
语言 → 领域模型(人物/场景/几何/风格)→ 绘制器
建模对象分析就是这条链「领域模型」的构建方法

收束

1
2
3
4
5
6
7
8
9
10
11
12
13
游戏/建模的对象来自世界结构,不是用户任务
世界实体:玩家、敌人、道具、地形、关卡
每个对象:属性 + 状态 + 关系

游戏独有的维度:玩家是世界的一部分(Player 是领域对象)
规则来自设计者定义的「世界如何运转」

建模与游戏同一条线:都在分析世界的结构
人物:头/躯干/四肢/服装 + 几何比例 + 空间关系
场景:地面/建筑/树木/光源 + 布局

落地:OOP(对象→类)或 ECS(对象→Entity+Component+System)
无论哪种,领域对象分析都是第一步

先分析世界,再落地成程序。 游戏和建模的对象分析,起点永远是「这个世界里有什么,它如何运转」。