这是一项副业项目,纯粹出于兴趣。

我正在构建一个基于规则的引擎,用于辅助人工智能的叙事世界。

基本想法是这样的:

我不想再次建立一个开放式的角色扮演游戏(RPG),其中系统可以说任何话,忘记发生的事情,自相矛盾,或者通过规则来发明新的东西。

我正在尝试构建一个小型世界引擎,动态叙事像软件一样被处理。

这意味着:

  • 故事是结构化的数据
  • 选择有定义的后果
  • 玩家决策更新一个正式的世界/会话日志
  • 创造性生成可以建议调子、风味、NPC对话或下一幕
  • 确定性的规则决定什么实际上变成了真实
  • 无效或无法到达的故事路径在玩家看到它们之前就会失败

愿景不是“AI替代游戏设计”。

它更接近:

游戏设计师和创作者定义一个世界的骨架:规则、分支、奖励、角色约束、安全模式、结局和进度逻辑。

然后生成可以在这些边界内运作,而不是在它们周围进行即兴演奏。

我最关心的是信任。

  • 这个世界是否可以记住玩家而不重写历史?
  • 两个故事路径是否会意外地相互矛盾?
  • 玩家是否可以到达一个没有测试的死胡同?
  • 生成的内容是否会打破世界状态?
  • 我们是否可以在动态叙事系统中重现 bug?
  • 我们是否可以在发布之前测试数百个可能的分支?

当前状态

阶段 0 已完成。

这主要是基础工作,而不是游戏美化。

我目前有以下内容:

  • beat、选择、后果、会话和安全模式的模式
  • 一项横跨文件的验证器,检查故事路径是否可达
  • 类型的结果合同,坏输出无法悄悄地通过
  • 在核心世界规则周围的自动化测试
  • 运行 167 个检查

阶段 0 的目标简单:

在使世界看起来活跃之前,确保基础不虚假。

下一阶段

阶段 1 是它变得可玩的地方。

目标是加载一个世界到浏览器中,作为文本体验玩它,做出选择,观察正式日志更新为世界反应。

非常简单的目的。

还没有精美的图形。

我想在添加呈现层之前确保世界逻辑是坚实的。

长期目标

如果这成功了,我想相同的世界文件最终可以用不同的表面来运行:

  • 文本首先
  • 2D之后
  • 可能有更视觉或空间的东西之后

我还感兴趣:

  • 行走故事分支并提交有用 bug 报告的玩测验机器人
  • 将世界分叉和混搭像代码一样
  • 比较世界结构,而不是仅仅是感觉
  • 多个玩家驱动的世界通过门户连接起来
  • 可选的身份、声誉或历史可以在受控的方式下在多个世界之间传递

更大的想法是“多个世界,一种结构化的生态系统”。

这不是一个元宇宙的pitch。

这不是一个幻想的文本聊天机器人。

更像是一个行为像可测试软件的叙事世界。

困难问题

这是我希望得到反馈的地方:

  1. 你能给玩家多少自由,才能保持一致性?
  2. 记忆如何工作,才能感觉到意义,但不变得混乱?
  3. 生成应该允许控制什么,什么应该始终保持确定性?
  4. 如何测试分叉的故事世界,而不用brute forcing?
  5. fork 或 remix 内容时,创作者的“世界 diff”看起来像什么?
  6. 如何防止生成的对话或风味创建假的承诺,规则无法支持?

技术方向

目前该项目的重点是引擎层:

  • 结构化的世界定义
  • 类型的合同
  • 验证
  • 确定性的状态更新
  • 会话日志
  • 自动化测试
  • 下一阶段将在浏览器中实现文本玩法循环

我故意没有从图形开始,因为我认为这会隐藏更难的问题。

更难的问题不是为一个场景做出听起来酷的东西。

更难的问题是使一个世界在许多选择、分支、修订和生成的时刻保持一致。

我仍然很早,但阶段 0 已完成,阶段 1 是它开始变得可玩的地方。

我很想从任何人那里得到反馈。