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]

两张逻辑表:

  1. 关卡事件表eventIdtriggerRoundOrTime(回合索引或秒,取决于模式)、randomPool(多 id 随机)。
  2. 总事件表effectTypetipsparam1param2、作用玩家等。

效果类型应注册为策略模式处理器,例如:

  • AdjustLandPrice(坐标范围 + 增量)
  • PlayDialog(对话资源 ID)
  • UnlockTiles(坐标列表)

策划要求:尽量所有数值型配置项可被事件加减(不同玩家、不同城区维度)→ 事件上下文需携带 TargetPlayerIdWardIdCoordinateSet

触发时机:每逻辑回合开始([01]),在 PhaseController 进入该回合的首个玩家可操作阶段之前调用 EventDirector.FireRoundStart(roundIndex)