IsmSim 是一个复杂的、由数据驱动的模拟系统。它能够程序化地生成一个由NPC组成的社会,其中每个NPC都拥有独特且不断演化的心理和意识形态档案。项目背景设定在一个“哲学化的古代”世界,旨在探索个人信念、经济压力、社会关系和个人欲望如何相互作用,从而创造出一个动态且不断涌现的社会结构。
本模拟器基于客户端-服务器架构,拥有一个强大的Python后端来运行世界模拟,以及一个基于Godot的可视化前端。
- 动态的意识形态生命周期: 这是当前系统的核心。NPC不再拥有单一、固定的意识形态,而是同时持有多种相互竞争的意识形态。他们的行为会反过来强化其核心信念,而被忽略的思潮则会逐渐消亡。当经历重大事件时,新的、激进的意识形态可能会“诞生”,导致NPC陷入“内在斗争”并最终完成人格的蜕变。
- 深度的心理模型: NPC的行为由一个三层体系驱动:(1) 生物性的需求(如饥饿);(2) 意识形态驱动的诉求(源于其信仰的目标);(3) 基于精神分析理论的欲望(深层的野心与创伤)。
- 自运转的经济系统: 世界拥有一套完整的经济循环。NPC在不同地点工作以生产资源、赚取金钱,并通过业余爱好制造商品,最终在市场出售。他们的财务状况(包括债务)会直接影响其压力水平和决策。
- 涌现的社会动态: NPC之间会根据互动形成复杂的关系(如同志、对手等)。这些由其核心意识形态决定的关系,主导了他们会信任谁、反对谁,以及在社交场合中的具体行为。
- 数据驱动与可扩展性: 模拟的几乎所有方面——从哲学信条、角色原型到地点、互动和可制造的物品——都由外部的JSON和Excel文件定义,这使得整个世界高度可定制和可扩展。
- 实体-组件-系统 (ECS): 模拟器的核心采用了ECS架构。这种设计将数据与逻辑分离,实现了高度的灵活性和性能。在ECS中,“系统”(如
NeedsSystem)会基于实体所拥有的“组件”(如FinancialComponent)来执行相应的逻辑。 - 客户端-服务器:
- 世界服务器 (
world_server/): 一个基于websockets的Python服务器,负责逐帧运行整个模拟。它处理所有NPC逻辑、世界事件和经济计算。 - Godot 可视化工具 (
godot_visualizer/): 一个Godot项目,它连接到世界服务器以接收世界状态更新,并实时渲染模拟画面。
- 世界服务器 (
- Python 3.8+
- Godot 引擎 (用于运行可视化工具)
-
克隆本仓库:
git clone <repository_url> cd <repository_directory>
-
安装所需的Python依赖包:
pip install -r requirements.txt
-
生成主义数据: 如果
isms_final.json文件缺失,或者你更新了源数据,请运行解析器:python excel_parser.py
-
启动世界服务器:
python -u world_server/server.py
推荐使用
-u标志来禁用输出缓冲,以便实时查看日志。服务器将启动并监听ws://localhost:8765。 -
运行可视化工具:
- 在Godot引擎中打开
godot_visualizer/项目。 - 运行主场景。客户端将自动尝试连接到正在运行的服务器。
- 在Godot引擎中打开
这是NPC心智的核心,也是我们当前工作的重点成果。它取代了过去静态的“突变”模型。
- 内在斗争 (Internal Struggle): NPC的最终决策矩阵是其所有活跃意识形态,根据各自的“强度”进行加权平均后的结果。一个拥有两种强大且对立的意识形态的NPC,其行为将充满矛盾且难以预测。
- 诞生 (Birth): 当一个NPC在某种新的思维方式上获得了足够的经验(IXP)后,一个新的意识形态会从其主导思想中“诞生”。母体思想的强度会与新生的子思想进行分配(例如,49% vs 51%),从而立即创造出一场内心冲突。
- 强化 (Reinforcement): 当NPC执行一个行动时(如“工作”、“抗议”、“创作艺术”),与该行动关联的关键词会强化相应的意识形态,增加其强度,固化其信念。
- 遗忘与死亡 (Decay & Death): 没有被行动所强化的意识形态,其强度会缓慢衰减。如果一个意识形态的强度降至某个阈值以下,它就被判定为“死亡”,并被NPC彻底遗忘。这是NPC经历漫长时间真正改变想法的方式。