HsMod es una extensión técnica avanzada diseñada para el ecosistema de Hearthstone, fundamentada en el framework de instrumentación BepInEx 5.x. Esta herramienta permite la inyección de lógica personalizada en el motor Unity del juego, facilitando mejoras de rendimiento, automatización de procesos y una personalización profunda de la interfaz de usuario sin comprometer la integridad estructural del cliente.
Arquitectura y requisitos del sistema
A diferencia de los modificadores de memoria convencionales, HsMod opera de manera no intrusiva mediante el uso de ganchos (hooks) en el entorno de ejecución de .NET. Para su correcta implementación, se requiere el siguiente entorno técnico:
- Framework base: BepInEx 5.x (las versiones 6.x experimentales no son compatibles actualmente).
- Entorno de compilación: .NET SDK 8.0 o superior.
- Bibliotecas de soporte: Corlibs despojadas (unstripped) para permitir la reflexión completa del ensamblado.
Proceso de implementación y compilación
El despliegue de HsMod requiere la obtención del código fuente y su posterior compilación para generar el ensamblado dinámico (.dll). A continuación se detalla el flujo de trabajo en la terminal:
# Clonar el repositorio específico de la rama BepInEx5
git clone --depth 1 --branch bepinex5 https://gitcode.com/GitHub_Trending/hs/HsMod hearthstone_mod_project
# Acceder al directorio y ejecutar la compilación de lanzamiento
cd hearthstone_mod_project
dotnet build --configuration Release -o ./build_output
Tras la compilación, el archivo HsMod.dll debe ser trasladado al directorio BepInEx/plugins/. Es imperativo que las bibliotecas localizadas en UnstrippedCorlib/ se copien manualmente a BepInEx/unstripped_corlib/ para asegurar que el plugin pueda interactuar con las APIs internas del juego.
Módulos principales de funcionalidad
1. Sistema de aceleración del motor de tiempo
El módulo de control temporal permite manipular la escala de tiempo del motor Unity (Time.timeScale). Esto permite rangos de velocidad desde 1x hasta 32x, optimizando el tiempo de respuesta en animaciones y transiciones internas.
2. Automatización de recursos (Packs y Desencantamiento)
El sistema implementa una lógica de procesamiento por lotes para la apertura de sobres. Mediante la detección de eventos de entrada (Input), el plugin puede procesar múltiples paquetes simultáneamente y ejecutar algoritmos de desencantamiento inteligente basados en la rareza y el excedente de la colección actual.
3. Servidor de configuración Web y API REST
HsMod levanta un servidor HTTP local de baja latencia en el puerto 58744. Esto permite la configuración dinámica y la extracción de datos en tiempo real mediante endpoints específicos:
| Endpoint | Funcionalidad Técnica |
|---|---|
/config |
Interfaz gráfica de usuario (GUI) para la gestión de parámetros en formato JSON. |
/showinfo |
Retorno de metadatos del oponente y estado actual de la sesión. |
/cards |
Volcado de datos de la base de datos local de cartas activas. |
/shell |
Consola interactiva para la depuración y ejecución de comandos en caliente. |
Personalización de activos visuales
El plugin permite la sustitución dinámica de texturas y modelos meidante la interceptación de los AssetBundles de Unity. Esto incluye:
- Skins de héroes: Reemplazo de identificadores de identidad visual tanto en el modo tradicional como en Campos de Batalla.
- Cosméticos de tablero: Modificación de dorsos de cartas y modelos 3D de los tableros de juego.
- Efectos de finalización: Personalización de los desencadenadores visuales tras la victoria o derrota.
Para aplicar cambios en caliente sin reiniciar el cliente, se utiliza el comando de refresco (mapeado por defecto a la tecla F4), el cual reinicializa los hooks de renderizado.
Gestión de logs y depuración
La actividad del plugin se registra de manera detallada en el archivo HsMatch.log. Los desarrolladores pueden monitorear el comportamiento de las funciones inyectadas a través del sistema de logging nativo de BepInEx, facilitando la identificación de excepciones en el manejo de punteros o conflictos entre ensamblados.
// Ejemplo de estructura de configuración para la escala de tiempo
{
"TimeScaleConfig": {
"DefaultMultiplier": 8.0,
"MaxLimit": 32.0,
"EnableHotkeys": true
}
}
Interacción y accesos directos
El control del plugin se gestiona mediante un sistema de mapeo de teclas (Keybinding) configurable. La tecla de espacio está predefinida para la apertura acelerada de sobres, mientras que la interfaz web permite una personalización granular de cada disparador para adaptarse a diferentes flujos de trabajo de los usuarios avanzados.