Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Athena Event Engine

Iniciado por Swarlog, Ago 06, 2022, 02:48 AM

Tema anterior - Siguiente tema

Swarlog



Athena Event Engine

¿Qué es? ¿Cuál es el objetivo?

Athena Event Engine es un proyecto que tiene por objetivo crear un sistema de eventos libre y gratuito de propósito general para todo tipo de servidores L2J.
Esto significa que si tenés un servidor, ya sea un fork o no, el engine funcionará igual.

¿Cómo es esto posible?

La idea final del engine es lograr la siguiente arquitectura:


Consta de tres partes principales:
  • API para cada tipo de servidor, las mismas sirven para adaptar el Core del sistema de eventos al Core del servidor que estén usando.
  • Event engine core, es donde se contiene toda la lógica del sistema de eventos.
  • API Plugin, es la interfaz que existe entre el Core del engine y los eventos. Los eventos consumen dicha API, brindando una capa de abstracción a cómo el Engine funciona internamente y manteniéndolos de manera separada (sin dependencias de L2J, por lo cual no importa el servidor que uses para programar el evento).

¿Cómo es eso de que los eventos están aparte?

Los eventos se compilan como JARs independientes. Al ser colocados en la carpeta events, una vez que levante el servidor son inicializados por el sistema de eventos. Dicho en otras palabras, teniendo el sistema de eventos instalado, instalar nuevos eventos es tan sencillo como copy-paste.

Si sos programador y querés hacer tus propios eventos, tan sólo tenés que consumir dicha API para crearlos. Así de simple.

¿Qué funcionalidades tiene?

  • Propio sistema de configuraciones. La verdad es que XML nunca me pareció muy práctico y menos para programadores que necesitan hacer las cosas rápido. Es así que el Engine cuenta con un sistema de creación y utilización de configuraciones propio. Utiliza el formato de archivo HOCON (es usado en el framework Play) que es un pseudo JSON un poco más amigable lo cual permite generar configs más complejas (por ejemplo, la información de un equipo). Dicho archivo es mapeado en un objeto por medio de Gson (library de Google). ¡Y listo! (Podés leer la wiki del proyecto o preguntar para más información).
  • Carga en tiempo de ejecución de los eventos. Como bien está descrito más arriba, el sistema carga los JARs que contienen los eventos mientras el servidor está inicializando. ¡No hay que modificar ninguna línea en el Core para que reconozca tu evento!
  • Propio sistema de votos. Al cargar eventos y habilitar la configuración de votos (cambiar un false por un true), el sistema hará una votación antes de empezar un evento para que los propios usuarios elijan qué quieren jugar.
  • Propio sistema de registro. Acá simplemente no tenés que hacer nada, con cargar el evento ya es suficiente.
  • Sistema multilanguage.
  • Anti-afk.
  • Anti-dualbox.
  • Soporte para eventos en instancias.
  • Muchos helpers para que sea más fácil programar los eventos (por ejemplo, poder ordenar los equipos dependiendo de la cantidad de kills).
  • Casi no necesita cambios en el Core de L2J.
  • Etc.

Todo muy lindo pero, ¿cómo hago para ganar dinero?

Dado que el core no necesita de modificaciones para correr los eventos, podrás crear tus propios eventos y venderlos como JARs independientes.

¿Cuál es el estado actual de esto?

Se publicó la versión Alpha v3.0 que contiene todo lo descrito arriba. Si bien todavía no es lo suficientemente estable como para funcionar en una servidor live, funciona como prueba de concepto. En otras palabras, podrás instalar el engine y correrlo en tu servidor ÚNICAMENTE si utilizás L2J server High Five. La adaptación a otros forks aún está pendiente.

Por otra parte, todavía queda trabajar un poco más en la abstracción del core de L2J y quedan muchos helpers que programar (por ejemplo, algo que facilite la transformación de los jugadores, entregue recompensas, fuegos artificiales, etc).

Te aconsejo que leas Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectatepara instalar el engine.

Me convenciste, ¿cómo puedo ayudar?

El proyecto está público en Github, por lo que podés mirar todo el código y contribuir con los cambios que quieras (utilizá pull requests para ello). Si bien invertí muchísimo esfuerzo en hacer lo mejor posible, seguramente hay maneras mejores de hacer lo que hay hecho, por lo que tu opinión es muy valiosa (el buen software se construye en equipo SIEMPRE).

Si no sos programador pero querés ayudar, podés publicitar el engine y/o probarlo. El feedback es una de las cosas más importantes. También podés aportar con una mano a completar la wiki.

El chat de Telegram en español es este: Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Links útiles

Repositorio del core: Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate
Repositorio del TvT: Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate
Wiki: Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Agradecimientos

Este proyecto comenzó como L2J Event Engine a mediados del 2015 con la base contribuída por fissban. A lo largo de estos años se fue avanzando a base de ese trabajo con ayuda del mismo fissban, Swarlog y yo. Luego de un tiempo se abandonó y fue retomado por mí (Zephyr) con el objetivo de lograr la idea que fue descripta en este post (¡también recibimos algunas contribuciones de Sacrifice!).

Les agradezco a ellos por el trabajo invertido y espero que les guste el resultado que hoy estoy presentando.

Por último, todavía queda mucho trabajo por hacer e invito a la comunidad a...

"Crear una pieza software increíble JUNTOS".