Saltar al contenido principal

Juegos importados y perfiles de juego

Además de los proyectos de Pokémon Essentials (ver Importar desde Pokémon Essentials), el importador puede traer juegos completos desde un volcado de un cartucho que poseas: HeartGold / SoulSilver, FireRed y Black / White. El resultado es un proyecto completo en Assets/ImportedGames/<Game>/ (mundo, personajes, especies, movimientos, objetos, entrenadores, música, NPCs con guiones) que luego puedes jugar dentro del motor.

Importar y jugar son dos pasos separados a propósito:

  1. Importar solo escribe dentro de Assets/ImportedGames/<Game>/. No toca nada del motor.
  2. Aplicar el perfil del juego ("Play ...") hace que el motor arranque ese juego. Sí edita assets del motor, así que guarda una copia de seguridad y se puede deshacer ("Restore the demo").

Disponible en el nivel Source. Todo lo del Hub está en la pestaña Importer.

Qué necesitas​

JuegoCarpeta que lee el importadorNode.jsCómo se dibujan los mapas
HeartGold / SoulSilversalida/, la salida del extractor de HGSSpara el extractor2.5D como el cartucho, o 2D (lo eliges al importar)
FireRedsalida-rom/, leída del cartuchopara el extractor2D
Black / White (y Black 2 / White 2)Tu ROM .nds, leída por el propio Hub18 o posterior-- (datos de especies y de batalla)

Los lectores que convierten un volcado de cartucho en esas carpetas son pequeños scripts de Node.js que vienen con el importador en Assets/OpenMon/Importer/Tools~/ (las carpetas hgss/, firered/ y bw/; la ~ final evita que Unity las importe como assets). Leen tu volcado y escriben en una carpeta que tú elijas; con MCE no se distribuye nada del juego.

Las herramientas de Node reconocen de qué juego y plataforma viene un volcado por la firma de su cabecera (Game Boy Advance o Nintendo DS), y la generación del juego decide cómo se dibuja el mundo: FireRed se importa en 2D, HeartGold / SoulSilver ofrece 2.5D y 2D.

Paso 1: Importar​

En el Hub (Tools > MCE > OpenMon Hub → pestaña Importer), desplázate hasta la sección de tu juego y pulsa su botón de importación. Te pide la carpeta, y HeartGold / SoulSilver además pregunta si los mapas se dibujan en 2.5D (como los dibuja el cartucho) o en 2D (planos, desde arriba). Después puedes cambiarlo por mapa con Display Mode per Map.

Los importadores se ejecutan en un orden fijo. El orden importa porque cada paso se apoya en los anteriores, y el paso del mundo reconstruye todas las escenas desde cero, así que los NPCs van siempre al final:

HeartGold / SoulSilver (HgssImportador):

  1. El mundo: mapas, warps y vecinos al aire libre.
  2. Los modelos 3D de los mapas (2.5D).
  3. Los movimientos de batalla del cartucho, luego los objetos y luego las tiendas (cada máquina enseña su movimiento del cartucho; cada tienda vende los objetos del cartucho).
  4. Las medallas y regiones.
  5. Las especies, con evoluciones, y luego sus sprites de batalla e iconos.
  6. El audio: música, efectos de sonido y gritos.
  7. Los encuentros salvajes y los fondos de batalla.
  8. Los personajes y los seguidores, con lo que dice el seguidor, y los globos de emoción del juego.
  9. Los entrenadores, y luego sus figuras de batalla (el frente del entrenador y la espalda del jugador, ver Sprites de espalda del entrenador).
  10. Los NPCs con sus guiones, traducidos a CommandGraphs.

FireRed (FireRedImportador): primero el mundo y los personajes, luego los datos del cartucho (movimientos, objetos, especies, sprites, entrenadores, figuras de batalla, medallas, encuentros), después el audio, los fondos de batalla, los globos de emoción y, por último, los NPCs con sus guiones.

Black / White (BwDesdeLaRom): lee la ROM con el extractor de Tools~/bw e importa las especies, sus movimientos, sus gritos, sus iconos y sus sprites de batalla animados. Los datos leídos de la ROM quedan en Library/OpenMon/BW; los assets importados van a Assets/ImportedGames/BW.

Todo lo que un importador encuentra y no puede mapear se cuenta y se informa en el diálogo de resumen y en la consola (por ejemplo "commands without support yet" o "moves without a template"). Nada se descarta en silencio.

Nombres de carpeta

Cada importador escribe solo dentro de su propia carpeta: Assets/ImportedGames/HGSS, Assets/ImportedGames/FireRed o Assets/ImportedGames/BW.

Paso 2: Jugarlo: el perfil de juego​

Un juego importado no forma parte del motor hasta que aplicas su perfil. En el Hub, la misma sección tiene dos botones más:

BotónQué hace
Play HGSS / Play FireRed (apply its game profile)Registra las escenas importadas donde el motor las busca, inicia una partida nueva en la habitación del jugador, ofrece al héroe y a la heroína de ese juego como personajes jugables, siembra las banderas de partida nueva, registra las especies, objetos, música, regiones y seguidores del juego, y apaga la capa en línea del motor (estos juegos son de un solo jugador)
Restore the demoDeshace el perfil, byte por byte, dejando el motor como estaba

Lo que toca el perfil son assets del motor que viven en el repositorio: el inicializador de partida nueva, la escena de selección de personaje, el registro de escenas, los Build Settings, las bases de datos de guardado y de mundo, la base de datos de monstruos, la biblioteca de audio, la música del lanzador de batalla, los conjuntos de seguidores y de globos de emoción en MCESettings, los datos globales del juego y la configuración en línea. Por eso, el perfil nunca se aplica al importar; siempre lo aplicas a propósito. Y se comporta así:

  • Primero una copia de seguridad. Antes de cambiar nada, el perfil guarda lo que había en perfil-original.json y en una carpeta perfil-original~/ dentro de la carpeta Assets/ImportedGames/<Game>/ del juego. Se hace una sola vez: aplicar el perfil de nuevo nunca sobrescribe la copia con valores que ya estaban cambiados. El perfil es idempotente.
  • Un perfil a la vez. Aplicar FireRed mientras el perfil de HGSS está aplicado restaura primero HGSS (y viceversa), de modo que una copia de seguridad nunca registra el motor con otro juego ya dentro.
  • Las exportaciones quedan bloqueadas. Mientras hay un perfil aplicado, el exportador de paquetes se niega a ejecutarse, porque el motor se distribuiría apuntando a la carpeta ignorada ImportedGames. Pulsa antes Restore the demo.
  • Los globos y los sprites de espalda vienen incluidos. El perfil asigna el conjunto de globos de emoción del juego (Globos de emoción y emotes), y los personajes jugadores importados llevan los sprites de espalda y los tiempos de lanzamiento propios del cartucho (Sprites de espalda del entrenador). Además, cuando la capa en línea está en el proyecto, el importador estampa un id de regalo en cada NPC que te da un monstruo (Regalos de monstruos).
Restaura antes de confirmar cambios

El perfil edita assets que pertenecen al motor. Si tu proyecto está bajo control de versiones, pulsa Restore the demo antes de hacer commit, o confirmarás un proyecto que apunta a una carpeta que nadie más tiene.

Línea de comandos​

Cada botón del Hub tiene un método estático que puedes ejecutar desde el modo batch de Unity (-batchmode -quit -projectPath . -executeMethod <method>). Todos terminan el editor con un código de salida: 0 si hay éxito y 1 si falla. La importación de HeartGold / SoulSilver y la de Black / White usan 2 cuando ni siquiera pudieron empezar (un argumento faltante o inválido; en Black / White, ausencia de ROM o de Node.js).

JuegoMétodoArgumentos
HGSSOpenMon.MCE.EssentialsImporter.Editor.HGSS.HgssImportador.ImportarTodoDesdeCli-hgssSalida <carpeta salida> (obligatorio), -hgssModo <2D o 2.5D> (opcional, 2.5D si se omite)
Perfil HGSSOpenMon.MCE.EssentialsImporter.Editor.HGSS.HgssPerfil.AplicarDesdeCli-hgssSalida <carpeta salida> (opcional: se usa la última salida)
Restaurar HGSSOpenMon.MCE.EssentialsImporter.Editor.HGSS.HgssPerfil.RestaurarDesdeCli--
FireRedOpenMon.MCE.EssentialsImporter.Editor.FireRed.FireRedImportador.ImportarTodoDesdeCli-fireredSalida <carpeta salida-rom> (opcional)
Perfil FireRedOpenMon.MCE.EssentialsImporter.Editor.FireRed.FireRedImportador.AplicarPerfilDesdeCli-fireredSalida <carpeta salida-rom> (opcional)
Restaurar FireRedOpenMon.MCE.EssentialsImporter.Editor.FireRed.FireRedImportador.RestaurarPerfilDesdeCli--
Black / WhiteOpenMon.MCE.EssentialsImporter.Editor.BW.BwDesdeLaRom.DesdeLaRomDesdeCli-bwRom <rom.nds> (o MCE_BW_ROM)

FireRed también tiene métodos para partes sueltas (ImportarDatosDesdeCli, ImportarFondosDesdeCli, ImportarAudioDesdeCli, ImportarEncuentrosDesdeCli), y Black / White tiene BwImportador.ImportarTodoDesdeCli e ImportarDatosDesdeCli (con -bwSalida).

Cuando un argumento es opcional, el punto de entrada busca la carpeta (o la ROM) en otro sitio, y cada uno lo hace a su manera:

Punto de entradaSin su argumento
Importación de HGSS (HgssImportador.ImportarTodoDesdeCli)-hgssSalida es obligatorio: no hay variable de entorno ni última carpeta. Registra falta -hgssSalida <ruta a salida/> y termina con 2.
Perfil de HGSS (HgssPerfil.AplicarDesdeCli)MCE_HGSS_SALIDA o, si no existe, la última salida de HeartGold / SoulSilver importada en este editor.
FireRed: la importación completa, sus importaciones parciales y el perfilMCE_FIRERED_SALIDA o, si no existe, la última salida de FireRed importada en este editor. Si no hay ninguna, la importación falla (código de salida 1) porque la carpeta no existe.
Black / White desde la ROM (BwDesdeLaRom.DesdeLaRomDesdeCli)MCE_BW_ROM. No hay recurso a la última carpeta: sin ROM (o sin Node.js) termina con 2.
Black / White desde una carpeta de salida (BwImportador)MCE_BW_SALIDA o, si no existe, la última salida de Black / White importada en este editor.

Un ejemplo de ejecución completa y automatizada de 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

Para proyectos normales de Pokémon Essentials, los puntos de entrada equivalentes están en Importar desde Pokémon Essentials.

Dónde viven los importadores​

CarpetaContenido
Assets/OpenMon/Importer/Editor/HGSS/Los importadores de HeartGold / SoulSilver y HgssPerfil, el perfil (también sirve a FireRed)
Assets/OpenMon/Importer/Editor/FireRed/Los importadores de FireRed y FireRedImportador
Assets/OpenMon/Importer/Editor/BW/Los importadores de Black / White
Assets/OpenMon/Importer/Tools~/Los lectores de Node.js que convierten un volcado de cartucho en las carpetas anteriores