开发日志:让帝国“吵”起来 —— 引入 Ollama 本地大模型驱动的回合评论
最近在《投票帝国》(前称《民选帝国》)的开发中,我一直在思考一个问题:如何让冷冰冰的政令数值变成有血有肉的世界反馈?
如果只是弹出一句“支持率下降 5%”,玩家很难感受到那种身处权力漩涡的紧迫感。我想要的是那种“推特”式的、充满了情绪化、偏见甚至阴阳怪气的民众声音。于是,我决定在游戏中集成 Ollama,利用本地大模型(Local LLM)为每个回合、每种突发事件生成实时的民众评论。
以下是这次技术集成的核心思路和一些避坑指南。
为什么选择本地 LLM?
很多独立游戏会选择接入 OpenAI API,但对于《投票帝国》这种需要频繁交互的游戏来说,这并不理想:
- 零成本: 玩家不需要支付额外的 API 费用,我也没必要承担高昂的服务器开销。
- 隐私与离线: 玩家的所有决策和评论生成都在本地完成,无需联网。
- 可控的延迟: 我们选择了 Qwen 3.5 0.8B 这种超轻量模型,在现代显卡上几乎是瞬时响应。
技术实现:把 Ollama “塞”进 Electron
我们没有要求玩家自行安装 Ollama,而是直接将其二进制文件和模型文件(GGUF)打包进了游戏的 extraResources 中。
1. 自动化环境审计
AI 虽好,但不能拖垮玩家的电脑。我在代码里加入了一套严苛的硬件检测逻辑:
- 内存门槛: 系统内存必须 6GB$。
- 显存优先: 为了保证生成速度,我通过 nvidia-smi 和注册表查询,确保玩家至少有 2.5GB 的可用显存(VRAM)。如果检测不达标,系统会优雅地回退到传统的静态文案,避免由于硬件过载导致的程序崩溃。
2. 私有端口与进程隔离
为了不干扰玩家电脑上可能已经安装的 Ollama 服务,我们强制指定了私有端口 20120。
此外,针对 Windows 平台常见的一个坑——关闭游戏后推理引擎可能变成“僵尸进程”持续占用显存,我写了一个清理机制:在游戏退出时,通过 taskkill 强制清理整个进程树。
TypeScript
// 针对 Windows 的“僵尸进程”补丁
if (process.platform === 'win32' && ollamaServerProcess.pid) {
exec(`taskkill /pid ${ollamaServerProcess.pid} /t /f`, (err) => {
if (err) console.error('[ollama] 强制清理进程失败:', err);
});
}
赋予 AI “人格”:Prompt 的设计逻辑
为了避免那种一股子“AI味儿”的官话,我们在 ScenarioConfig 中为每种场景(如:战争爆发、通胀、失业潮、选举舞弊传闻)定义了非常具体的系统指令。
我们的核心规则只有几条:
- 拒绝助手感: 严禁出现“好的,这是为您生成的评论”之类的废话。
- 严格字数限制: 模仿社交媒体,必须在 140 字以内。
- 情绪化: 允许并鼓励民众表现出恐惧、愤怒、盲目爱国、愤世嫉俗或冷嘲热讽。
示例(通货膨胀场景):
System Prompt: "你是帝国的一名普通公民。物价涨得比反应速度还快。用愤怒或苦涩的幽默发一条短动态。不要有助手的语气,不要引述,不要标语。"
目前的进展
目前,本地 AI 运行环境已经能够随游戏启动无感初始化。正如日志图里显示的,模型已经成功加载并在后台就绪。
下一阶段,我将进一步优化评论的“记忆力”,让 AI 能根据玩家之前的名望和历史政策,产生更具连续性的抨击或赞美。
超现实硬核政治模拟游戏即将上线
作为一个艰难生存(不好宣传,懂得都懂)的政治模拟游戏,我们的游戏主系统已经搭建完成了,接下来就剩把军事、外交、外贸和卡牌系统内嵌进来即可。
说到我们的游戏,我可以毫不夸张地说,应该算是市面上最全面的政治经济外交外贸模拟游戏了(毕竟我们团队里面有专门学经济学的硕士)。其实写游戏不是特别难,难的是读论文以及做数学题……

上面只是用到的数学方程图的一部分,可以从右侧的滚动条看到我们用了多少公式。(‾◡‾)

在游戏里面,我们挑选出了现实里面具有影响力的国家(经济上/政治上/军事上),将它们做成可以交互的国家。还加入了一些非国家政治体(比如贩Du集团、金三角电诈集团等等),而且每一个不同的集团都会对游戏的主数值产生影响。如果根除了某些电诈集团,那么国内被诈骗的人也会变少,同时经济效率也将得到提升。最重要的是:还可以成为玩家的一个政绩。
说到政绩,这就不得不和我们的宣传以及人口系统连接起来了。
在游戏里面,百姓都被归结到了一个个的人口单位。每个人口单位代表的是选区内的数万名人民。每个人口单位都有自己的就业、工资、房贷、房产数据,也因此他们都具有自己的需求。想要满足他们的需求说简单也简单,但是说复杂也可以很复杂。

最简单的方式是用宣传给百姓洗脑,树立一个又一个的敌人,转移他们的注意力,最终让他们变成你的NC粉。但是要高效地洗脑就需要在国会中通过一个又一个的法案,才能解锁国家力量为自己宣传;
次简单的方法则是和军方搞好关系。毕竟手无寸铁(噢,要让百姓手无寸铁,你得通过禁枪法案)可敌不过军队。
而最难的则是要真正为大众谋利益谋发展,让大家的生活变好,让大家真的因为你的能力而拥戴你。
除了国内民众,你还需要和国际上的国家周旋。
你可以先用经济制裁、关税让目标国家经济崩溃,继而导致军事能力一落千丈。然后下令让美军长驱直入,去经济掠夺对方。
你也可以和对方的领导人在台面下达成肮脏的交易,出卖你自己国家,来为你博得筹码。
而与国内外对手博弈是通过我们的卡牌战系统进行的。你当然可以用卡牌永远地清除对手,但这会给你留下把柄,让其他对手借此攻击你。
你也可以选择用你自己豢养的特务,甚至是在修改法律后用公权来暗中调查对手,用他们的弱点来打败对方。

没有足够的钱来豢养特务?你忘记了你是总统了吗?
你大可以在宣布利好政策之前大举买入股票,然后宣布之后直接卖出,20%+的利润不就到手了?
还不够的话,没看到还有一堆资本家正等待着要给你政治献金吗?收下来,用他们的钱做你自己的事情即可。

而我们游戏中不像其他的游戏,可以让你天然地就能无限游戏。我们游戏有两个限制:1. 美国宪法的两任限制 2. 寿命。
如果你要在八年后一直进行游戏,恐怕你不得不去做出很多越矩行为,包括但不限于掀起世界大战、垂帘听政、将自己打造成宗教领袖等等。否则你将会在八年后,按照宪法,不得不黯然下台结束游戏。
总之,我们的目标是打造一个超现实的政治模拟游戏,在这里,你可以尽情使用你的兵法策略(阴谋诡计)来达成你的目的。
《民选帝国》的幕后故事(一)
🏛️《民选帝国》的幕后故事:从“川皇构想”到“用PPT拯救AE”的两天修仙实录
你可能会觉得,把美国变成帝国是个疯子才会想出来的主意。
我承认,我就是那个疯子。
但我要说,这个想法是川普亲自赐给我的。
🧠 一切的起点:川皇二度加冕带来的“灵感”轰炸
川宝的第二任给了我太多素材:
谁能想到这个人,上任前突然宣布发币,一口气吸金数十亿美元;
上任后跟全世界打起贸易战,一副“全球都欠我一个Deal”的样子;
上任不到 3 个月,纳指狂跌四分之一,全球资本瑟瑟发抖;
最狠的是,就连他的核心亲信Elon Musk都选择了叛逃——完美诠释了“狡兔死,走狗烹”。
于是我想,如果川普是个“游戏角色”,那游戏玩法应该会是:
- 操纵议会,买通法院,改宪法上王位;
- 发币割韭菜、炒作媒体、用战争转移注意力;
- 最后,让整个国家变成你的家族企业。
我把这个点子写进了《民选帝国》。
🎬 做宣传片?本来以为是After Effects,结果成了After Exhaustion
宣传片最开始是用 AE 做的。
我还天真地跟着 YouTube 上的 Puppet Pin 教程(就是这个:https://www.youtube.com/watch?v=2oCZTsUt0EE),梦想着让川皇内挥手登基、怒指宪法。
结果呢?
AE的 Puppet Pin 把我整得像一只木偶人。
动作别扭、节点错位,做了一天只做出川普一个“抖肩摊手”的动作,像一个Air Dancer而不像是人……
于是我扔掉了那套方案,换成B站上一个更稳定的流程(传送门:https://www.bilibili.com/video/BV1gM411P7Xw),终于做完了20秒的视频……只用了两天一夜+硬件燃烧换来的。
💻 引用一下我电脑配置(给想尝试的同学一些信心):
- CPU:Intel Core i7 12800HX
- GPU:RTX 4070 Laptop
- RAM:48GB结果呢?AE 依然卡,而且难度太高耗时太长,于是我想到了一个非常有创意的方案。
💡 用 PPT 动画拯救 AE 的艺术尊严
我后来发现,PPT 其实才是我的最终武器。
很多片段我直接在 PowerPoint 里加动画、做图层动画,再录屏导出合成。

成本下降 90%,创意提升 300%。
AE?留给高配玩家吧,我有鼠标+PPT,天下我有。
(当然最后的合成还是用的AE)
🎨 川皇的进化史:四轮美术换脸计划
川普(不对,是“川皇”)这个角色从第一版的“细节爆炸”到最终版的“三白眼二缺”共迭代了六轮:
v1: 细节多到爆炸,修改了几百次把我心态打崩的天崩开局版

v2: 细胳膊细腿的抽象丑版
v3: 在v2基础上重修让他看起来稍微慈祥一点的版本
v4: Procreate手绘版
v5: 感觉v4的脸有点丑,重绘的版本

v6: 基于v4+v5创意融合并矢量化的最终成品

我还找了好几个朋友帮忙看图,前期几乎所有意见我都改了,
直到他们开始互相矛盾,我知道——是时候停手了。
众口难调 = 视觉差不多了。
📉 愿望单带来的“毒打”现实:魔鬼才不是《魔鬼猎手》
《民选帝国》商店页面上线后,结果……愿望单两天只有一个。
真·无人问津。
这让我立刻回忆起了我之前上线的另一个项目《魔鬼猎手》(开发日志与Steam页面)—— 一个已经被做烂的肉鸽游戏,玩法系统全靠抄,《吸血鬼幸存者》+《黎明前20分钟》的血统味重得能发酵。
但我当时心想:“玩黎明20分钟时候,那么瞎眼都有那么多人玩,那我重做一个,加入很多新Feature,做完了应该就会有人来看吧?”
现在我知道了:你游戏做得再好、宣传不发、没人鸟你。(当然游戏也做得不好,因为玩法抄袭毁所有)
所以我决定从第三天开始,亲自写文章、发社区、做 GIF、写推文,
只要能拯救愿望单数据,我哪怕去 B 站投弹幕都干。
🗳️ 小结:这是个疯狂的游戏,但我们不是在搞笑
《民选帝国》看起来是个“讽刺川普”的游戏,
其实我们想做的是:
一个让你在“道德与手段之间反复拉扯”的现代政治模拟器。
你不需要了解法律、不需要有底线,
你只需要一张嘴、一张牌,和对权力的理解。
游戏正在筹备 6 月新品节 Demo,
欢迎你加入帝国的“预备议员”行列。
👉 访问 Steam 页面:https://store.steampowered.com/app/3677060/_/


