首次运行,逐屏说明
下面每一张截图都取自真实运行中的构建,由程序驱动,不是示意图。凡是行为与外观不一致的画面,都另有提示——这些提示正是本页存在的理由。
本页截图来自 MIT Licensed Demo(单独下载),其中包含源自既有系列作品的素材。这属于教育用途内容,一切权利归各自权利人所有。 OpenMon 引擎不分发该素材——商业包只包含原创内容。
按 Play 之前:先打开启动场景
这一步最常被误认为"构建坏了",所以放在最前面。
Unity 播放的是编辑器中当前打开的那个场景,不是 Build Settings 里的第一项。如果你在一个空场景或未保存的场景下按 Play,得到的是一片空白,控制台还可能被空引用填满——而这些都不意味着引擎有问题。
先打开启动场景:
Assets/OpenMon/Core/Game/Scenes/InitScene.unity
然后再按 Play。在已经热起来的编辑器上,启动大约需要二十秒,因为 MCEInitialization 会先加载数据库,再把控制权交给菜单。
1. 主菜单

六个条目:Continuar(继续)· Cargar partida(读取存档)· Nueva partida(新游戏)· Opciones(设置)· Créditos y licencia(制作名单与许可)· Salir(退出)。菜单是本地化的:它按设置中配置的语言绘制,上面这张截图是西班牙语构建。
并不存在"先放引擎开场动画再进菜单"这样一个独立步骤。走到这一屏就意味着数据库已加载、场景注册表已解析,所以它同时就是你的第一次集成检查:菜单画出来了,引擎就接好了。
2. 开始游戏的选项

选择 Nueva partida(新游戏)不会直接进入游戏。它先提供本次游玩的难度设置——其中包括捕获难度,它独立于战斗难度来缩放捕获率。默认值写着 "Tal y como el autor lo diseñó"(正如作者设计的那样)。
这一屏用 F(引擎的 Extra1 动作)关闭,不是 Enter / Submit。在这里按 Enter 不会有任何可见变化,而那看起来就跟卡死一模一样。
这在自动化游戏时最要紧:一个在此刻发送 Submit 的测试,会永远停在一个工作正常的画面前。请发送 Extra1。
3. 角色选择

挑一个角色。从这里游戏会询问名字,然后把世界和玩家的操控权交给你。
4. 确认角色

"¿Quieres jugar con este personaje? No podrás cambiar más adelante."(要用这个角色游玩吗?之后无法更改。)——这个选择是永久的,而引擎在确认之前就说明了这一点,而不是之后。
5. 给角色取名

画面直说了:"Por favor, usa un teclado físico. El teclado [virtual] no está implementado."(请使用物理键盘。[虚拟]键盘尚未实现。)没有屏幕键盘,所以没有硬件键盘的构建无法通过这一屏。
给做自动化的人:这是一个 TextInputDialog,它读取的是文本输入事件,不是动作映射。通过输入注入器发出的合成按键到不了它那里——会被直接忽略,于是画面看着卡住,实则工作正常。请改为通过对话框的 OnFinished(true, text) 回调来驱动它。第 7 步的昵称输入是同一个对话框,行为相同。
6. 世界加载出来,博士知道你的名字

玩家在研究所出现,博士开口便是 "¡Hola, AEGIS!"——上一屏输入的名字,一路穿进了 NPC 对话。走到这一帧意味着存档状态、世界网格和基于 CommandGraph 的 NPC 脚本同时活着,所以它是整个首次运行里最有用的一次冒烟测试。
三只初始伙伴作为可交互的 actor 摆在桌上。拿到一只之前研究所的出口是封住的,所以不存在半途而废就跑出去的情况。
7. 选择初始伙伴

走近其中一只并交互。每次提议都会在你决定之前说出种族及其分类。

然后是昵称输入——与第 5 步相同的 TextInputDialog,物理键盘的要求也相同。
8. 它加入队伍

"Chispa se unió al equipo."(奇斯帕加入了队伍。)全屏演出,而这只怪物以你选的昵称进入了队伍。
9. 走出研究所

拿到初始伙伴后研究所出口解锁,村庄作为一个独立场景加载——这个切换是真正的场景加载,所以在此期间玩家的格子坐标会短暂处于未知。高草在更外面的道路上;村庄本身没有遭遇格。
10. 一场野生战斗

走在道路上会触发野生遭遇。战斗加载时带着你怪物的背面图、昵称、等级和体力条——这里是 Chispa,Lv. 5,19/19。

"¡Rattata usó Látigo!"(小拉达使用了摇尾巴!)——回合裁定完成,对手的招式播放它的动画,战斗继续推进。招式动画走的是引擎自己的补间层,所以这一帧同时也是端到端的检查:动画系统在战斗中也活着,而不只是在菜单里。
11. 获胜与升级

选 Luchar(战斗),挑一个招式,回合就会演完。获胜给予经验值——这里是 +76——而升级会带出完整的能力面板:PS 19→21、攻击 10→11、防御 8→9、两项特殊都是 11→12、速度 13→15。Chispa 到达 Lv. 6。
整个循环都在这一帧里看得见:招式选择、伤害裁定、经验值,以及带动画条的升级演出。
给做自动化的人:测试台用来枚举遭遇区域的辅助函数,在这张地图上返回了空列表,尽管野生遭遇在这里能正常触发。不要把空结果当成"这里没有草"——走一遍道路,等战斗出现。
这些把你带到了哪里
从按下 Play 到一场野生战斗,共十屏,队伍里还带着一只取了名字的怪物。有两点值得带走:
- 按 Play 之前先打开
InitScene。 其他一切都如其所见;只有这一点不是,而它是最常见的虚假警报。 - 其中两屏是文本输入框,两者都需要真实键盘。如果你在给首次运行写自动化测试,它们会在那里悄无声息地卡住。
接下来
- OpenMon Hub — 上面每一步背后的那个编辑器窗口。
- 你的第一只怪物 — 怪物的数据模型与队伍。
- 你的第一场战斗 — 战斗循环与招式系统。