Interoperabilidad de herramientas
GameMaker patching pipelines
Un gestor de mods es tan confiable como su pipeline de parcheo. Cada fallback, archivo temporal y límite de concurrencia afecta los datos del usuario.
Problema
Deltamod debía soportar múltiples backends de parcheo preservando la repetibilidad y evitando condiciones de carrera alrededor de herramientas nativas extraídas.
Enfoque de ingeniería
- Integrar G3MTool como backend principal preservando las rutas existentes de GM3P y Device Fusion.
- Aplicar payloads VCDIFF compatibles dentro del proceso y usar respaldos originales como fuente para repetir el parcheo de forma idempotente.
- Eliminar fallbacks silenciosos de éxito parcial y corregir carreras de extracción paralela mediante estado temporal protegido por proceso.
Resultado
- La integración fue incorporada a Deltamod con semántica de errores más clara y rutas compatibles de parcheo más rápidas.
El problema más difícil
Hacer cooperar tres backends de parcheo sin que jamás produzcan silenciosamente un juego a medias.
Los backends discrepan en formatos y modos de fallo, las herramientas nativas extraídas compiten bajo instalaciones paralelas, y los fallbacks existentes reportaban éxito con salida parcial, la peor mentira que un gestor de mods puede contar.
Aplicar los payloads VCDIFF compatibles dentro del proceso desde respaldos prístinos, proteger el estado temporal por proceso y eliminar cada fallback silencioso para que los fallos salgan a la superficie de inmediato.
Cómo lo resolví
La idempotencia guió el diseño: como el reparcheo siempre parte del respaldo original y no de los bytes que haya en disco, ejecutar el mismo parche dos veces es seguro, y una instalación recuperada converge en vez de apilar corrupción.
La integración de G3MTool llegó como backend principal junto a GM3P y Device Fusion en vez de un caso especial, así que la selección de backend es explícita y cada ruta mantiene su propia semántica de errores, 409 líneas agregadas, 127 eliminadas, integrado upstream.
Tecnologías
- C#
- JavaScript
- Electron
- VCDIFF
- Concurrency
- Process integration