Para elegir las API de tu módulo, empieza por la tarea que quieres resolver. La disponibilidad depende de la plataforma y del motor: consulta sus capacidades antes de ofrecer una acción.
Elegir las API
- Botones, páginas y formularios: contribuciones y componentes de interfaz.
- Colecciones, guardados y Continuar: biblioteca, guardados y emulación.
- Datos propios: almacenamiento con revisiones CAS, entidades locales, archivos y secretos.
- Integración con otro módulo: ganchos, servicios, proveedores, eventos e interceptores publicados.
- Conexión a tu servicio: HTTP o WebSocket a los destinos autorizados.
- Trabajos programados: tareas normales o persistentes, según el dispositivo.
La interfaz se construye con los componentes de Nelkano. El JavaScript del módulo utiliza las operaciones autorizadas del SDK: no dispone de Node.js, acceso libre a archivos ni vistas Android. Los proveedores permiten sustituir los puntos que la app u otro módulo hayan publicado.
Modificar un juego
host.gameMod permite leer y buscar memoria, escribir comprobando los valores anteriores, ejecutar reglas antes de cada fotograma, enviar pulsaciones y modificar temporalmente la ROM cargada. La memoria y la ROM están conectadas a GBA en Android y escritorio. GB/GBC y NDS ofrecen lecturas específicas mediante host.gameRuntime; comprueba qué admite la sesión.
El archivo ROM original se conserva, pero los efectos pueden quedar en los guardados. Puedes declarar que una partida necesite tu módulo o requiera empezar de nuevo cuando el motor lo permita. Consulta Modificar un juego antes de escribir: explica los conflictos, la retirada del módulo y los requisitos de guardados.
Capturar imagen y traducir texto
host.media ofrece capturas y clips cuando el motor entrega la imagen o el audio necesarios. host.translation analiza, edita y reconstruye los formatos de texto compatibles de GBA/NDS. Android puede traducir con modelos locales descargables; escritorio permite editar las entradas o recibir traducciones de tu servicio. Para reconocer texto dentro de una imagen, aporta un OCR.
Cambiar gráficos y sonido
host.graphics ofrece filtros y las opciones gráficas del motor. El postprocesamiento requiere Android API 33+ o Skia en escritorio. PS1, PSP y GameCube admiten reemplazos PNG de texturas; GameCube ofrece resolución interna 1×, 2× y 4×. Consulta las capacidades y los límites del modo de renderizado: el mismo pack no sirve para todos los juegos.
host.audioDsp filtra el PCM del juego y host.audioMix mezcla PCM externo cuando la sesión lo admite. host.microphone captura audio del dispositivo con su permiso. host.camera captura imágenes en Android; escritorio anuncia capture:false. Tu módulo debe aportar el reconocimiento de voz, el doblaje o la interpretación de imágenes. Entregar una imagen a la cámara emulada de 3DS requiere además su capacidad y permiso.
host.timeline permite rebobinado, avance y repeticiones editables en motores con ejecución determinista. La integración inicial es CHIP-8. Poder guardar y cargar estados no implica que un motor admita estas funciones.
Transferir juegos y progreso
host.transfers exporta e importa juegos y partidas en Android y escritorio. Tu módulo resuelve la conexión entre dispositivos y los conflictos. El destino necesita un motor compatible con el formato del estado; los guardados internos también pueden depender de la plataforma o versión. Los guardados MV/MZ de WebView quedan fuera.
host.resourcePacks prepara capas de archivos y host.profile permite copiar las preferencias que registren sus proveedores. Los packs excluyen los proyectos RPG Maker que guardan su progreso dentro del proyecto. Los reemplazos gráficos por hash utilizan el servicio de texturas.
Para sincronizar con tu servicio, combina transferencias, conexiones, secretos y tareas. Implementa su autenticación y declara los destinos de red. La transferencia de juegos y progreso necesita la partida cerrada.
Elegir Android o escritorio
Declara las plataformas en el manifiesto y prueba el paquete en cada una. Ten en cuenta estas diferencias:
- Ambas importan archivos individuales y ZIP, RAR o 7z. Un disco CUE necesita todas sus pistas.
- RPG Maker XP requiere el proyecto completo y funciona en ambas plataformas. MV/MZ funciona en Android.
- SNES, PSP y GameCube admiten estados según las capacidades del motor. PSP conserva además sus guardados internos en una Memory Stick privada.
- 3DS es experimental y requiere Vulkan y ARM64 en Android. Switch está excluido de las apps Android y Desktop. Se conservan sus fuentes y las pruebas del core en PC; no forman parte del producto publicado.
- Segunda pantalla necesita una red local y un receptor emparejado.
- Streaming requiere una cuenta autorizada y una partida capturable. El transporte de respaldo HTTP de Android no está conectado en escritorio.
Comprueba también mandos, gráficos y rendimiento en los dispositivos que quieras admitir, incluida Steam Deck si es uno de tus destinos.
Conectar jugadores
Amigos y Multijugador vienen incluidos. Multijugador ofrece su interfaz en GB/GBC, GBA y NDS; cada modo necesita un motor y un adaptador compatibles.
Distribuir tu propio motor
Un paquete V2 puede incluir un motor compilado para Android o escritorio. Su descriptor declara sistemas, controles, opciones, discos, recursos y formatos de guardado. La partida conserva el motor y la versión con los que se abrió. El ejemplo nativo del SDK sirve para probar vídeo CPU/OpenGL/Vulkan, audio PCM, entrada y estados.
En escritorio, el motor se ejecuta con los permisos del usuario. En Android se instala un APK auxiliar con UID y certificado propios; la ruta gráfica no utiliza isolatedProcess. Revisa el código nativo y sus dependencias antes de distribuirlos. Linux utiliza X11/GLX o Vulkan y necesita XWayland en un escritorio Wayland.
Comprobar el resultado
- En Studio, prueba la interfaz, los permisos, los errores y qué ocurre al desactivar el módulo o cambiar de sesión.
- Exporta el paquete y repite la tarea en la app de cada plataforma que declares.
Los juegos y dispositivos de Studio son simulados; las conexiones externas autorizadas sí usan la red. Los módulos opcionales se distribuyen por separado. Los cinco esenciales se actualizan con Nelkano.