LPAI 独立网页游戏 AI 社区指南

状态与数据

静态表格与动态表格

用静态表格维护项目配置,用动态表格保存玩家过程数据。

状态与数据 · 表格

表格类型决定数据是否能写入和保存

静态表格随项目发布,脚本只读;动态表格以项目默认数据初始化,并在玩家存档中保留后续修改。

# 先选择表格类型

类型 权威来源 脚本能力 适合内容
静态表格 项目工程数据 getData 掉落权重、等级曲线、固定对白、配置矩阵
动态表格 玩家存档,首次由项目默认表初始化 getDatasetData 行动日志、AI 输出、玩家选择、过程记录

项目更新动态表格行列时,运行时会保留已有玩家数据并同步表格结构。不要随意改变行列含义;结构迁移仍需要验证旧存档。

# 再选择单元格类型

  • number:权重、倍率、价格、次数和其他数值。
  • string:文本、标记、JSON 字符串和长说明。

一张表只有一种单元格类型。需要混合结构时,可以拆成两张表,或在字符串单元格保存经过校验的 JSON。不要把来自玩家、AI 或联网的字符串直接作为可执行脚本。

# 脚本读写

const config = player.getTable("遭遇配置");
const weight = config.getData("狼群", "权重");

const log = player.getTable("行动日志");
log.setData(0, "内容", tools.tr("进入森林"));

getData(row, col) 支持行列名称或索引。只有动态表格暴露 setData。脚本还可以读取 dataTypetableTyperowNamescolNames,用于校验结构。

# 纯 AI 模式怎样描述表格

创建静态数值表“探索掉落”:
行是资源类型,列是权重、最小数量、最大数量。
权重必须为非负数;空值按 0 处理。
搜索控件脚本只读取该表,不在运行时修改配置。

对于动态表格,还要说明最大使用范围、清理策略和存档兼容。例如行动日志是否循环覆盖、是否允许无限增长、旧版本新增列怎样初始化。

# 大表的性能边界

  • 不要在每帧事件或渲染布局刷新中扫描整张大表。
  • 先按明确行列读取,或在低频行为脚本中建立索引。
  • Canvas frame 只消费已经准备好的小型快照。
  • 大量同构且需要独立生命周期的实体应使用对象,不是动态表格。
  • 需要公开查询其他玩家数据时使用弱联网,不要把完整动态表格上传。

# 传统模式维护

传统作者可以新增、插入、删除行列,编辑多行字符串,复制单元格引用 ID,以及导入/导出数据。改变行列前先检查脚本中的名称和索引引用;使用索引的脚本在中间插行后最容易失效。

# 验收

  • 静态表格在脚本中不可写。
  • 动态表格写入后保存、刷新仍保留。
  • 行列名称与脚本引用完全一致。
  • 缺失单元格有明确回退,不出现 NaN 或无意义空文本。
  • 新旧存档都能处理新增行列。
  • 页面和高频循环不会全表扫描。

继续阅读:player 对象类与对象