兼容性矩阵
同一份脚本,在不同引擎里的表现可能完全不同。本页用一张表汇总常见功能在 Eramaker 与 Emuera 中的支持情况,帮你快速判断:
- 这个功能我的引擎支持吗?
- 这个行为为什么在两个引擎里不一样?
标记含义:✓ 支持、✗ 不支持、△ 行为与另一引擎不同。
共 60 项
| 分类 | 功能 / 特性 | Eramaker | Emuera | 备注 |
|---|---|---|---|---|
| 基本语法 | 函数定义 @名称 | ✓ | ✓ | |
| 基本语法 | 注释 ; | ✓ | ✓ | |
| 基本语法 | 标签 $名称 与 GOTO | ✓ | ✓ | |
| 基本语法 | 行连接 { } | ✗ | ✓ | Emuera 扩展 |
| 基本语法 | 特殊注释 ;!; | ✗ | ✓ | Emuera 中有效,Eramaker 中视为注释 |
| 基本语法 | 特殊注释 ;#; | ✗ | ✓ | 仅在调试模式执行 |
| 基本语法 | 文件最后一行(无换行符) | ✗ | ✓ | Eramaker 会忽略最后一行 |
| 变量 | 系统变量 A~Z、DAY、MONEY 等 | ✓ | ✓ | |
| 变量 | 数组变量 FLAG、CFLAG、ABL 等 | ✓ | ✓ | |
| 变量 | #DIM / #DIMS 用户自定义变量 | ✗ | ✓ | |
| 变量 | 私有变量 | ✗ | ✓ | |
| 变量 | 引用型变量 REF | ✗ | ✓ | ver1.810 起支持按引用传参 |
| 变量 | 常量 CONST | ✗ | ✓ | |
| 变量 | 广域变量(ERH 中定义) | ✗ | ✓ | |
| 变量 | GLOBAL / GLOBALS | ✓ | ✓ | |
| 变量 | CDFLAG | ✗ | ✓ | |
| 变量 | 数组越界访问 | △ | △ | Eramaker 静默忽略,Emuera 报错 |
| 变量 | 数组最后一个元素 | △ | △ | Eramaker 会在读档时破坏数据 |
| 表达式与运算 | 四则运算与整数除法 | ✓ | ✓ | |
| 表达式与运算 | 比较、逻辑、位运算 | ✓ | ✓ | |
| 表达式与运算 | 字符串比较(==、< 等) | ✗ | ✓ | |
| 表达式与运算 | 字符串拼接 +、重复 * | ✗ | ✓ | |
| 表达式与运算 | 三元运算 ? ~ # | ✗ | ✓ | |
| 表达式与运算 | RAND 的取值范围与偏差 | △ | △ | 可用兼容开关让 Emuera 模仿 Eramaker |
| 表达式与运算 | 单目运算符 - | △ | △ | Eramaker 中 -100 < 0 为假 |
| 复合语句 | IF / ELSEIF / ELSE / ENDIF | ✓ | ✓ | |
| 复合语句 | REPEAT / REND | ✓ | ✓ | |
| 复合语句 | FOR / NEXT | ✗ | ✓ | |
| 复合语句 | WHILE / WEND、DO / LOOP | ✗ | ✓ | |
| 复合语句 | SELECTCASE / CASE / ENDSELECT | ✗ | ✓ | |
| 复合语句 | BREAK / CONTINUE | ✓ | ✓ | |
| 复合语句 | TRYC 系 / CATCH / ENDCATCH | ✗ | ✓ | |
| 复合语句 | TRYCALLLIST / FUNC / ENDFUNC | ✗ | ✓ | |
| 函数与预处理 | 用户函数 CALL / RETURN | ✓ | ✓ | |
| 函数与预处理 | 参数 ARG / ARGS、返回值 RESULT | ✓ | ✓ | |
| 函数与预处理 | 参数初始值 | ✗ | ✓ | |
| 函数与预处理 | 参数按引用传递 | ✗ | ✓ | ver1.810 起 |
| 函数与预处理 | #FUNCTION / #FUNCTIONS(表达式内函数) | ✗ | ✓ | |
| 函数与预处理 | #PRI / #LATER / #SINGLE / #ONLY | ✓ | ✓ | #SINGLE 的中断条件在 1.752 修正 |
| 函数与预处理 | #DEFINE 宏与头文件 ERH | ✗ | ✓ | |
| 函数与预处理 | 函数名中的符号 | △ | △ | Eramaker 允许任意符号,Emuera 只允许 _ |
| 函数与预处理 | 事件函数可被 CALL | ✓ | ✗ | 可用兼容开关恢复 |
| 输入与显示 | PRINT 系输出 | ✓ | ✓ | |
| 输入与显示 | INPUT / INPUTS | ✓ | ✓ | |
| 输入与显示 | PRINTBUTTON、PRINTDATA | ✗ | ✓ | |
| 输入与显示 | TINPUT 系(限时输入) | ✗ | ✓ | |
| 输入与显示 | HTML_PRINT 与标签 | ✗ | ✓ | |
| 输入与显示 | 图片、精灵、动画 | ✗ | ✓ | 需绘制接口支持;改造版通常提供更多 |
| 输入与显示 | DRAWLINE 的换行规格 | △ | △ | ver1.739 前后行为不同 |
| CSV 与数据 | GameBase / Str / CharaXX / Abl 等 | ✓ | ✓ | |
| CSV 与数据 | VariableSize.csv | ✓ | ✓ | |
| CSV 与数据 | _replace.csv | ✗ | ✓ | |
| CSV 与数据 | _rename.csv | ✗ | ✓ | 来自 EraMakerEx;默认关闭,可用开关启用 |
| CSV 与数据 | CSV 中的异常数字(如 0xFF) | △ | △ | Eramaker 按 0 处理,Emuera 报错 |
| 存档 | 标准存档 / 读取界面 | ✓ | ✓ | |
| 存档 | SAVEDATA / LOADDATA / CHKDATA | ✗ | ✓ | |
| 存档 | 全局存档 SAVEGLOBAL / LOADGLOBAL | ✗ | ✓ | |
| 存档 | 存档以 UTF-8 / 二进制保存 | ✗ | ✓ | |
| 存档 | CALLNAME 为空时返回 NAME | △ | △ | 可用兼容开关恢复 |
| 存档 | SP 角色 | ✓ | ✗ | Emuera 1.816 起默认不支持,可用兼容开关恢复 |
✓ 支持✗ 不支持△ 行为与另一引擎不同
关于「改造版」
社区里的各种改造版(私家版、EM+EE 等)通常以 Emuera 为基础,因此本表默认把改造版与 Emuera 同栏。它们在 Emuera 之上额外提供了一些能力,常见的有:
- 更多图片、精灵、动画相关指令;
- 工具提示(
TOOLTIP_*); - 更多内置函数与变量。
如果你的游戏要用到这些,请先确认目标玩家使用的是哪一款引擎——特性在标准 Emuera 里可能并不存在。
关于「行为不同」
标记为 △ 的项目,可以通过 Emuera 的兼容性开关让它的行为靠近 Eramaker。例如:
| 现象 | 可尝试的开关 |
|---|---|
RAND 的取值范围 / 偏差不同 | 擬似変数RANDの仕様をeramakerに合わせる |
| 显示在升级版本后错乱 | ver1739以前の非ボタン折り返しを再現する |
| 函数参数报“类型不符” | ユーザー関数の引数に自動的にTOSTRを補完する |
| 使用了 SP 角色 | SPキャラを使用する |
逐项说明见配置项详解,行为差异的完整清单见与 Eramaker 的差异。