Sott Program Design Buildings Market

返回索引

SOTT 程序设计稿 — 建筑、交易与市场

1. 建筑([03] + 修订稿)

1.1 数据

  • 建筑表:建造花费、建造时间[01] 与即时制动画相关)、维护费、拆除费、占地形状(1×1 / 2×2)、可建地块类型过滤。
  • 可选扩展:范围 Buff、升级链、全城唯一建筑(如物流枢纽)——字段预留 BuildingTags

1.2 生命周期

  1. 玩家发起建造 → 扣款(可部分预扣)→ 进入 Constructing(计时或回合数)。
  2. 完工 → Active,参与生产与城区需求。
  3. 拆除 → 付拆除费 → 立即释放地块占用 → 可再建。

1.3 生产结算顺序([01]

先生产,后结算需求(全局顺序应在 ProductionPipelineMarketEngine 间固定,避免死锁)。

城区 结合:

  • 产出物写入 物资实例goodIdquantitylocationWardId(及可选精确坐标)。
  • 本城区需求先尝试本地消纳;不足部分再进入跨区/全球市场逻辑(见 [04])。

2. 交易与市场([04] + [01] + 修订稿)

2.1 渠道

  • 公共市场:规则撮合 + 展示「预期成交价」;支持挂单、撤单手续费。
  • 玩家间交易:自定义价格,[04] 写明 直接生效 — 程序可实现为双边确认或即时成交(需网络同步方案)。
  • 定向出口:「指定不向某玩家出口」——在撮合层加过滤条件。

2.2 需求拆分与优先级([04]

对每个城区、每个需求品类,拆分为:

  1. 城区自身需求(本城区玩家建筑需求,未挂单库存先满足)
  2. 城区自然需求(地图随机居民需求)
  3. 其他玩家需求(同城区其他玩家建筑)
  4. 外城区需求(其他城区未满足部分)

满足顺序1 > 2 > 3(策划原文编号);实现时用有序迭代器 + 可插拔策略,便于以后调整。

2.3 仓储费

  • 未在当轮/当周期成交的库存,按配置扣 仓储费(可与 GameClock 对齐周期)。

2.4 物流与原料([04]

  • 生产时 优先本城区原料;不足则从其他城区拉货并计 运费
  • 商场 默认仅服务本城区(配置项)。

2.5 与修订稿「竞价出售」的关系

  • 修订稿:两轮报价、价低优先出售
  • 建议:MarketEngine 实现 ResolveRoundSelling(),输入双方报价向量,输出成交量与分摊比例;与 [01] 的「连续挂单」模式通过 同一套库存与需求快照 在轮末调用。

3. 竞拍([01] + 修订稿)

  • 特殊地块/建筑随时间解锁 → AuctionHouse 推送通知 + 独立 UI 列表(当前可竞拍项、最高价、倒计时)。
  • 倒计时结束自动结算;允许 欠款竞拍EconomyLedger 支持负债与罚金)。
  • 修订稿:竞拍获胜当回合禁止其他购地 — 在 PhaseController 对玩家加锁标记。

4. 配置与校验

  • 所有价格、费率、时间、需求区间进入 Schema 校验(加载关卡时跑一遍),避免策划填错导致运行期异常。
  • 2×2 集群、跨区物流、商场限制 提供 单元测试用例地图(小尺寸伪造格子)。