16 MHz 上跑城市模拟:SimCity 每帧只算一部分
来源:larstofus.com — 2025-11-16
📋 概述
初代 SimCity 的系统需求是 16 MHz 的 386SX,而今天连挂机游戏都要几个 GHz。作者读了 2008 年以 Micropolis 名义开源的代码,发现省算力的核心是一个 mod16 参数:Simulate() 每帧只跑十六分之一的子系统,交通、火灾、电力、犯罪轮流更新。玩家操作平均要 8 帧、最坏 15 帧才反映到模拟里,但对城市模拟来说这反而更像真实滞后。
🔑 核心要点
- 初代 SimCity 的系统需求是 386SX / 16 MHz(原文早先把基频 12.5 MHz 误当成了 SX 的频率)
- Simulate() 用 mod16 参数决定这一帧跑哪一部分,而不是把所有子系统每帧跑一遍
- 一次操作平均 8 帧、最坏 15 帧才落到模拟上,对城市而言反而更像真实滞后
- Assetto Corsa 用同一思路处理反射:FACES_PER_FRAME 一次只更新立方体贴图的几个面
- 虚幻的 Lumen 按运行时情况决定刷新量,代价是偶尔出现反射没更新完的瑕疵画面
- 结论是一句反问:这段代码真的需要每帧都跑吗
💡 金句
The next time you work on gameplay code, ask yourself: "Do I really need to run all this code every frame?"
👍 0
👎 0
← 返回 Lobsters 首页