Hoy quiero presentar un nuevo conjunto de herramientas desarrollado desde cero en Java, pensado para simplificar y modernizar una de las tareas más importantes de cualquier servidor online: distribuir, actualizar y mantener el cliente de juego de forma rápida, segura y organizada.
El sistema ha sido diseñado para funcionar con Lineage II, Aion, World of Warcraft o cualquier otro proyecto que necesite un sistema de actualización y distribución de archivos, ofreciendo una solución sencilla tanto para el jugador como para el administrador.
Todo el proyecto cuenta con una interfaz moderna en modo oscuro, está completamente separado por herramientas y se distribuye como ejecutables independientes para Windows (.exe) mediante Launch4j.
1. GameLauncher: El cliente del jugadoru3g_gamelauncher_01.png
GameLauncher es el lanzador que utilizarán los jugadores desde sus equipos. Su objetivo es que mantener el cliente actualizado sea un proceso completamente automático y transparente.
- Actualización Inteligente: Compara automáticamente los archivos locales con el servidor remoto a través de un archivo de manifiesto (manifest.json).
- Integridad por Hashes: Calcula sumas de comprobación para descargar únicamente los archivos nuevos o modificados, ahorrando tiempo y ancho de banda.
- Descarga en Tiempo Real: Barra de progreso detallada con velocidad de transferencia y control de descompresión automática de paquetes ZIP.
- Independiente: Empaquetado en un único .exe con validación de requisitos para Java 17 y redirección automática en caso de que falte el entorno.
Código fuente: https://gitlab.com/u3games/GameLauncher
2. L2Compiler: La herramienta del administradoru3g_gamecompiler_00.png
GameCompiler es la herramienta destinada a administradores y desarrolladores. Permite preparar y publicar actualizaciones de forma rápida, automatizando gran parte del proceso que normalmente tendría que realizarse manualmente.
- Empaquetado Masivo: Selecciona la carpeta raíz de tu cliente de desarrollo y genera automáticamente los paquetes comprimidos optimizados para la distribución.
- Generación Automática de Manifiesto: Crea al instante el archivo manifest.json con todos los metadatos necesarios (tamaños, rutas y hashes) utilizando Gson.
- Gestión de Preferencias: Guarda automáticamente las últimas rutas utilizadas mediante java.util.prefs para agilizar el trabajo diario.
- Interfaz Asíncrona: Procesamiento en segundo plano mediante SwingWorker para evitar bloqueos visuales en tareas pesadas.
Código fuente: https://gitlab.com/u3games/GameCompiler
Un sistema pensado para servidores onlineLa idea detrás de este proyecto es sencilla: el administrador prepara una actualización con GameCompiler y el jugador la recibe automáticamente mediante GameLauncher.
De esta forma, ambas herramientas trabajan conjuntamente para crear un flujo de actualización sencillo:
Cliente de desarrollo → GameCompiler → Servidor → GameLauncher → Cliente actualizadoSin necesidad de que el jugador tenga que buscar manualmente archivos, descargar parches uno a uno o realizar instalaciones complicadas.
Aunque inicialmente está pensado para proyectos como Lineage II, Aion y World of Warcraft, el sistema no está limitado a ningún juego concreto. Si tu proyecto necesita distribuir archivos y mantener sus clientes actualizados, puede adaptarse perfectamente a él.
Código abierto para la comunidadEste proyecto ha sido creado por mí para la comunidad U3Games, con el objetivo de proporcionar una alternativa moderna, sencilla y reutilizable para la gestión de actualizaciones de nuestros servidores.
El código fuente está disponible públicamente para que otros desarrolladores puedan estudiarlo, adaptarlo, mejorarlo y contribuir al proyecto.
CitarEste proyecto forma parte de Game Compiler for U3Games y se distribuye bajo los términos de la licencia GNU General Public License v3.0 (GPLv3).
¿Tienes alguna sugerencia, has encontrado un error o quieres aportar una mejora?Toda sugerencia, reporte de errores, mejora o contribución será bienvenida. La idea es seguir evolucionando el proyecto junto a la comunidad y convertirlo en una herramienta cada vez más completa para todo tipo de servidores y proyectos online.
Dios, tremendo trabajo acabas de compartir con la comunidad!
Son muchos los launcher que se venden y no son baratos, pero esto ya rompe las reglas y se va ha cabrear más de uno.
Estos días lo pruebo y te voy comentando, pero así por encima; el compilador de 10, pero el cliente le hace falta mejoras visuales. Se que es el comienzo, pero bueno, yo te digo el que mejorar jajaja
Eso si, cuando puedas sube un tutorial o añade al wiki del proyecto como funciona.
Pues lo he probado y me ha sorprendido, va muy rápido y tiene todo lo básico que se necesita. Muchas gracias por compartirlo, como ha dicho No tienes permiso para ver los enlaces. Para poder verlos
Registrate o
Conectate. solo le falta mejoras visuales pero teniendo el source puedes adaptarlo como quieras.
Para instalarlo no ha sido muy complicado, mas o menos es como los demás:
1.- Compilas datos:Usa el compilador para comprimir los archivos del cliente y generar el manifiesto, que es donde esta toda la información de esa actualización.
2.- Subir al host los datos:Subes a la ruta deseada los archivos del cliente y del manifiesto.
3.- Abrir el launcher:Abres el launcher y solito chequea los datos del cliente. Los tengas o no actualizados, los revisa y si esta todo bien, podrás usar el botón de jugar al servidor.
NOTA: En el source, debes de indicar las rutas del host, el donde poner los archivos comprimidos y el manifiesto.
Yo personalmente lo he usado para mi servidor del Aion.
Muchas gracias por los comentarios, seguimos trabajando!
Añadido sistema multilenguaje, properties para que os sea mas fácil configurarlo, limpieza de código y reparación de errores:
(https://i.imgur.com/YD9fnAg.png)
Externalización de la configuración mediante properties estáticas:
# ==========================================
# Configuración del Lanzador
# ==========================================
# Configuración de Idioma
DefaultLanguage = es
LanguagesBaseUrl = http://localhost/launcher_data/lang/
# URLs del Servidor
ManifestUrl = http://localhost/launcher_data/manifest.json
DownloadBaseUrl = http://localhost/launcher_data/client_files/
BackgroundUrl = http://localhost/launcher_data/background.jpg
# Rutas Locales
GameExePath = system/l2.bin
https://gitlab.com/u3games/GameLauncher/-/commit/d26ad8c15a1d8a8cdc0c9054c6556b3bd42f3b33
Implementado sistema multilenguaje dinámico en el Launcher:
https://gitlab.com/u3games/GameLauncher/-/commit/82919cafb6f012ce76b19f15ce729ca3cfc707da
Reparado error al cargar imagen de fondo mediante URL:
https://gitlab.com/u3games/GameLauncher/-/commit/4fa55aafed77cb65bf27d62d77e0ac778207922f
Para rematarlo, pon otro xml para mensajes en el launcher para noticias del servidor, novedades, etc.. y también url para el logo del servidor en el centro.
Veo que es totalmente configurable, gracias por el trabajo y el compartirlo con todos como siempre ;)