Sott Program Design Map Events
SOTT 程序设计稿 — 地图、城区与事件
1. 地块模型([02])
每个地块最小字段(均可配置):
| 字段 | 说明 |
|---|---|
coord |
整数坐标 (col, row),修订稿示例为列-行。 |
tileType |
普通 / 特殊 / 不可建筑等。 |
state |
无效 / 未解锁 / 有效。 |
ownerPlayerId |
所属玩家,空为无主。 |
buildingRef |
当前建筑实例 ID(每格最多一座,修订稿)。 |
baseLandPrice |
基础地价;可被事件与邻域优惠修正。 |
wardId |
所属 城区(见下)。 |
地价规则(程序):
- 基础价来自地图配置。
- 已购地块周围 8 格 地价优惠(策划示例
-1,应为可配置公式)。 - 支持事件对指定坐标批量加减价。
建筑邻域:
- 为 2×2 产业集群 提供查询 API:
QueryRectSameOwnerSameBuildingType(rect)。 - 大建筑占 2×2:需扩展
buildingRef为「主格 + 从属格」或占用集合;道路四边判定 待策划确认,程序预留RoadEdgeMask接口。
地图尺寸:新手约 5×5,上限策划预估 ≤20×20;用固定数组或 chunked storage 均可,建议 配置宽高 + 边界非法格。
美术:地块允许缩放与形变 → 客户端渲染层与逻辑坐标分离(逻辑格 + 视觉 transform)。
2. 城区([02]、[04])
- 地图划分为多个
Ward;市场需求、自然需求、玩家建筑需求 均在城区维度结算。 MarketEngine读取 物资所在城区;城区内自产自销优先,溢出再通过「跨城区物流」调用全局池,并计 物流费(每城区费率可不同)。- 商场类建筑:配置项
bSatisfyCrossWardDemand = false(按[04]:默认仅满足本城区)。
3. 地图编辑([02])
关卡配置建议独立资产或表,包含:
- 每格初始地价、特殊格列表、城区多边形或 wardId 栅格、需求随机范围种子/区间、解锁建筑列表、初始事件绑定等。
- 工具链:策划倾向 引擎内蓝图或可视化编辑 → 可导出为 JSON/Binary Table,运行时由
MapModel加载。
4. 事件系统([02])
两张逻辑表:
- 关卡事件表:
eventId、triggerRoundOrTime(回合索引或秒,取决于模式)、randomPool(多 id 随机)。 - 总事件表:
effectType、tips、param1、param2、作用玩家等。
效果类型应注册为策略模式处理器,例如:
AdjustLandPrice(坐标范围 + 增量)PlayDialog(对话资源 ID)UnlockTiles(坐标列表)
策划要求:尽量所有数值型配置项可被事件加减(不同玩家、不同城区维度)→ 事件上下文需携带 TargetPlayerId、WardId、CoordinateSet。
触发时机:每逻辑回合开始([01]),在 PhaseController 进入该回合的首个玩家可操作阶段之前调用 EventDirector.FireRoundStart(roundIndex)。