跳到主要内容

导入的游戏与游戏配置文件

除了 Pokémon Essentials 项目(参见从 Pokémon Essentials 导入),导入器还可以从你拥有的卡带转储中带入整个游戏:HeartGold / SoulSilver、FireRed 和 Black / White。结果是 Assets/ImportedGames/<Game>/ 下的一个完整项目 —— 世界、角色、物种、招式、道具、训练师、音乐、带脚本的 NPC —— 然后你就可以在引擎内游玩它。

导入和游玩被有意分成两个独立的步骤:

  1. 导入只会写入 Assets/ImportedGames/<Game>/。它不会触碰引擎的任何内容。
  2. 应用游戏配置文件(“Play ...”)会让引擎启动那个游戏。它确实会编辑引擎资产,因此会保留备份并且可以撤销(“Restore the demo”)。

适用于 Source 层级。 Hub 中的一切都位于 Importer 选项卡。

你需要什么​

游戏导入器读取的文件夹Node.js地图的绘制方式
HeartGold / SoulSilversalida/,HGSS 提取器的输出提取器需要与卡带一致的 2.5D,或 2D(导入时选择)
FireRedsalida-rom/,从卡带读取提取器需要2D
Black / White(以及 Black 2 / White 2)你的 .nds ROM,由 Hub 自己读取18 或更高版本--(物种和战斗数据)

把卡带转储变成这些文件夹的读取器是随导入器一起放在 Assets/OpenMon/Importer/Tools~/ 中的小型 Node.js 脚本(文件夹为 hgss/、firered/ 和 bw/;末尾的 ~ 可防止 Unity 把它们当作资产导入)。它们读取你的转储并写入你选择的文件夹;MCE 不分发游戏的任何内容。

Node 工具会根据转储头部的签名(Game Boy Advance 或 Nintendo DS)识别它来自哪个游戏和平台,而游戏的世代决定世界的绘制方式:FireRed 以 2D 导入,HeartGold / SoulSilver 提供 2.5D 和 2D。

步骤 1:导入​

在 Hub(Tools > MCE > OpenMon Hub → Importer 选项卡)中,滚动到你的游戏所在的分区,按下它的导入按钮。它会询问文件夹,HeartGold / SoulSilver 还会询问地图用 2.5D(卡带的绘制方式)还是 2D(平面,自上而下)绘制。你之后可以用 Display Mode per Map 逐张地图更改。

导入器按固定顺序运行。顺序很重要,因为每一步都建立在前几步之上,而世界这一步会从头重建每个场景,所以 NPC 总是最后:

HeartGold / SoulSilver(HgssImportador):

  1. 世界:地图、传送点和户外相邻地图。
  2. 地图的 3D 模型(2.5D)。
  3. 卡带的战斗招式,然后是道具,然后是商店(每台招式机教授其卡带招式;每家商店出售卡带的道具)。
  4. 徽章与地区。
  5. 物种(含进化),然后是它们的战斗精灵和图标。
  6. 音频:音乐、音效和叫声。
  7. 野生遭遇和战斗背景。
  8. 角色和跟随者(含跟随者的台词),以及游戏的情绪气泡。
  9. 训练师,然后是他们的战斗形象(训练师的正面和玩家的背面,参见训练师背面精灵)。
  10. 带脚本的 NPC,转换为 CommandGraph。

FireRed(FireRedImportador):先是世界和角色,然后是卡带的数据(招式、道具、物种、精灵、训练师、战斗形象、徽章、遭遇),接着是音频、战斗背景、情绪气泡,最后是带脚本的 NPC。

Black / White(BwDesdeLaRom):用 Tools~/bw 中的提取器读取 ROM,并导入物种、它们的招式、叫声、图标和动画战斗精灵。从 ROM 读取的数据保留在 Library/OpenMon/BW;导入的资产放在 Assets/ImportedGames/BW 下。

导入器遇到但无法映射的任何内容,都会在汇总对话框和控制台中被统计并报告(例如 “commands without support yet” 或 “moves without a template”)。没有任何东西会被悄悄丢弃。

文件夹名称

每个导入器只会写入它自己的文件夹:Assets/ImportedGames/HGSS、Assets/ImportedGames/FireRed 或 Assets/ImportedGames/BW。

步骤 2:游玩 —— 游戏配置文件​

导入的游戏在你应用其配置文件之前不属于引擎。在 Hub 中,同一分区还有两个按钮:

按钮作用
Play HGSS / Play FireRed (apply its game profile)把导入的场景注册到引擎查找它们的位置,在玩家的房间开始新游戏,把该游戏的男女主角作为可玩角色提供,播种新游戏标记,注册游戏的物种、道具、音乐、地区和跟随者,并关闭引擎的在线层(这些游戏是单人的)
Restore the demo逐字节撤销配置文件,让引擎恢复原样

配置文件所触碰的是存放在仓库中的引擎资产:新游戏初始化器、角色选择场景、场景注册表、Build Settings、存档与世界数据库、怪物数据库、音频库、战斗启动器的音乐、MCESettings 中的跟随者与情绪气泡集合、全局游戏数据以及在线配置。正因为如此,配置文件绝不会在导入时应用;你总是有意识地应用它。它的行为如下:

  • 先备份。 在更改任何内容之前,配置文件会把原有内容保存到游戏的 Assets/ImportedGames/<Game>/ 文件夹内的 perfil-original.json 和 perfil-original~/ 文件夹中。备份只做一次:再次应用配置文件绝不会用已被更改的值覆盖备份。配置文件是幂等的。
  • 一次只有一个配置文件。 在 HGSS 配置文件已应用时应用 FireRed,会先还原 HGSS(反之亦然),因此备份绝不会记录一个已装入另一个游戏的引擎。
  • 导出被阻止。 配置文件处于应用状态时,包导出器会拒绝运行,因为引擎发布出去会指向被忽略的 ImportedGames 文件夹。请先按 Restore the demo。
  • 气泡和背面精灵随之而来。 配置文件会赋予游戏的情绪气泡集合(情绪气泡与表情),导入的玩家角色带有卡带自己的背面精灵和投球计时(训练师背面精灵)。另外,当项目中有在线层时,导入器会给每个赠送怪物的 NPC 盖上赠礼 ID(怪物赠礼)。
提交前先还原

配置文件会编辑属于引擎的资产。如果你的项目处于版本控制之下,请在提交前按 Restore the demo,否则你会提交一个指向别人没有的文件夹的项目。

命令行​

Hub 的每个按钮都对应一个静态方法,你可以在 Unity 的批处理模式下运行它(-batchmode -quit -projectPath . -executeMethod <method>)。它们都会以退出码结束编辑器:成功为 0,失败为 1。HeartGold / SoulSilver 导入和 Black / White 导入在甚至无法启动时使用 2(缺少或无效的参数;对于 Black / White,则是没有 ROM 或没有 Node.js)。

游戏方法参数
HGSSOpenMon.MCE.EssentialsImporter.Editor.HGSS.HgssImportador.ImportarTodoDesdeCli-hgssSalida <salida 文件夹>(必需),-hgssModo <2D 或 2.5D>(可选,省略时为 2.5D)
HGSS 配置文件OpenMon.MCE.EssentialsImporter.Editor.HGSS.HgssPerfil.AplicarDesdeCli-hgssSalida <salida 文件夹>(可选:使用最近一次的输出)
HGSS 还原OpenMon.MCE.EssentialsImporter.Editor.HGSS.HgssPerfil.RestaurarDesdeCli--
FireRedOpenMon.MCE.EssentialsImporter.Editor.FireRed.FireRedImportador.ImportarTodoDesdeCli-fireredSalida <salida-rom 文件夹> (可选)
FireRed 配置文件OpenMon.MCE.EssentialsImporter.Editor.FireRed.FireRedImportador.AplicarPerfilDesdeCli-fireredSalida <salida-rom 文件夹> (可选)
FireRed 还原OpenMon.MCE.EssentialsImporter.Editor.FireRed.FireRedImportador.RestaurarPerfilDesdeCli--
Black / WhiteOpenMon.MCE.EssentialsImporter.Editor.BW.BwDesdeLaRom.DesdeLaRomDesdeCli-bwRom <rom.nds> (或 MCE_BW_ROM)

FireRed 还有用于单独部分的方法(ImportarDatosDesdeCli、ImportarFondosDesdeCli、ImportarAudioDesdeCli、ImportarEncuentrosDesdeCli),Black / White 有 BwImportador.ImportarTodoDesdeCli 和 ImportarDatosDesdeCli(使用 -bwSalida)。

当参数是可选的时,入口点会在别处寻找文件夹(或 ROM),而且每个入口点的做法各不相同:

入口点缺少参数时
HGSS 导入(HgssImportador.ImportarTodoDesdeCli)-hgssSalida 是必需的:既没有环境变量,也没有“上一次的文件夹”可回退。它记录 falta -hgssSalida <ruta a salida/> 并以退出码 2 退出。
HGSS 配置文件(HgssPerfil.AplicarDesdeCli)MCE_HGSS_SALIDA,否则使用此编辑器中最近一次导入的 HeartGold / SoulSilver 输出。
FireRed:完整导入、其部分导入和配置文件MCE_FIRERED_SALIDA,否则使用此编辑器中最近一次导入的 FireRed 输出。如果两者都没有,导入会因文件夹不存在而失败(退出码 1)。
从 ROM 导入 Black / White(BwDesdeLaRom.DesdeLaRomDesdeCli)MCE_BW_ROM。没有回退到上一次文件夹的机制:没有 ROM(或没有 Node.js)时以 2 退出。
从输出文件夹导入 Black / White(BwImportador)MCE_BW_SALIDA,否则使用此编辑器中最近一次导入的 Black / White 输出。

一个完整的、脚本化的 HeartGold 运行示例:

# 1. import
Unity.exe -batchmode -quit -projectPath . \
-executeMethod OpenMon.MCE.EssentialsImporter.Editor.HGSS.HgssImportador.ImportarTodoDesdeCli \
-hgssSalida D:/dumps/hgss/salida -hgssModo 2D

# 2. apply the profile so the engine starts that game
Unity.exe -batchmode -quit -projectPath . \
-executeMethod OpenMon.MCE.EssentialsImporter.Editor.HGSS.HgssPerfil.AplicarDesdeCli \
-hgssSalida D:/dumps/hgss/salida

# 3. ... later, give the engine back
Unity.exe -batchmode -quit -projectPath . \
-executeMethod OpenMon.MCE.EssentialsImporter.Editor.HGSS.HgssPerfil.RestaurarDesdeCli

对于普通的 Pokémon Essentials 项目,对应的入口位于从 Pokémon Essentials 导入。

导入器的位置​

文件夹内容
Assets/OpenMon/Importer/Editor/HGSS/HeartGold / SoulSilver 导入器以及配置文件 HgssPerfil(FireRed 也使用它)
Assets/OpenMon/Importer/Editor/FireRed/FireRed 导入器和 FireRedImportador
Assets/OpenMon/Importer/Editor/BW/Black / White 导入器
Assets/OpenMon/Importer/Tools~/把卡带转储转换成上述文件夹的 Node.js 读取器