Introducción
< Logo de logos >
Plataforma distribuida para automatizar, instrumentar y orquestar personajes en Lineage II de forma escalable, consistente y centralizada.
Logos es una suite de herramientas diseñada para operar personajes automatizados en Lineage II como un sistema con estado observable, flujos de datos explicitos y control centralizado.
Pensada para gestionar numerosos clientes, cuentas y personajes en paralelo, de forma ordenada, robusta y observable.
Compatible con las cronicas C4 a H5 (incluyendo intermedias).
A diferencia de un bot tradicional que corre “pegado” a un cliente, Logos intrudce una capa intermedia, “Mirror”, que desacopla la conexion a los servidores externos, la representacion del mundo del juego y la logica que toma decisiones. Esto permite: escalar a muchos personajes sin perder control, reutilizar informacion entre bots, observar todo el sistema en tiempo real, y mantener consistencia entre cuentas, redes y comportamientos.
[!warning] This documentation is heavily under construction. Structure may change a lot, and some pages may have little/no content yet.
Conceptos base
Mundo espejo (Mirror)
El mirror es una representacion centralizada, consistente y observable del estado del juego.
En terminos simples: es una “copia viva” del mundo del juego dentro de Logos.
Los sincronizadores vuelcan ahi todo lo que entra desde los servidores externos. Los bots y herramientas no se comunican con estos, sino que interactuan con el mirror.
- Operar sobre un sandbox controlado (un entorno seguro donde probar y ejecutar)
- Desacoplar red de comportamiento
- Compartir informacion entre procesos de forma directa
- instrumentar y depurar sin interferir con el juego real
Sincronizadores
Los sincronizadores son los unicos procesos que hablan con el servidor externo.
Gestionan:
- Autenticacion (login)
- Flujo de red bidireccional con el servidor remoto (entrada y salida de datos)
- parseo de paquetes de red (traducir datos binarios a informacion usable)
- Sincronizacion bidireccional con el mirror (crea, muta y sincroniza el estado del juego dentro del sandbox)
Podes tener: 1 sincronizador por personaje, cientos en un mismo servidor, o miles repartidos entre multiples servidores. Todos alimentan el mismo mirror
Desde el putno de vista del resto del sistema, un sincronizador es simplemente una fuente (y sumidero) de estado: convierte el trafico de red en informacion estructurada.
Bots
Los bots son consumidores puros del mirror.
Operan sobre un modelo del mundo, leen el estado y emiten intenciones (acciones), y el sistema se encarga de traducirlas a efectos reales.
Esto hace que la IA sea completamente portable (no dependa de un servidor especifico), testeable (puede ejecutarse sin conectarse al juego), y reproducible (el mismo estado produce el mismo comportamiento).
Componentes
- [[ l2js-client ]] - Cliente sincronizador (network, parsing, sync)
- L2DB - Libreria que da acceso estructurado a datos client-side (status, items, data, etc)
- VKPC - Libreria sincronizadora mirror-consumidor.
- Dashboard - Interface grafica enfocada a monitorear, gestionar el sistema y debugear los bots.
- Bot - Arboles de comportamiento, pathfinders, plafinificacion y decision.
Scope
Con Logos se puede:
- Provisionar personajes, de forma manual o masiva automatizada.
- Centralizar servidores, cuentas y politicas de red. (proxys, vpn, etc).
- Ejecutar IA individual o colectiva. (conciencia compartida, los personajes comparten informacion).
- Compartir estados entre personajes de forma explicita.
- Perisissistir infraestructura como datos versionables.
- Observar, depurar y reproducir comportamientos.
- Persistir infraestructura como datos versionables.
Creacion de personajes
En logos es posible crear personajes de forma manual y de forma automatizada.
La forma automatizada permite creacion de personajes en masa.
Manual
Para la forma manual hay dos caminos posibles, uno es declarar desde un yaml las caracteristicas del mismo, el yaml sera consumido por logos y el personaje creado. Sino tambien se puede usar la interface grafica de Dashboard para operar desde el creador asistido
Automatizada
Para la forma automatizada es necesario declarar una plantilla (o varias) en yaml y dar la orden desde la ventana de comandos de Dashboard, o definir las directivas de creacion dentro de los arboles de comportamiento, que usaran su factory para generar personajes a partir de la plantilla y las directivas y enviar sus respectivos comandos
Almacenamiento persistente de datos
Toda esta informacion se almacena en formato yaml, puede ser editada manualmente o mediante la interface visual para luego ser consumida por cada componente
- Datos de conexion a servidores remotos (usadas por los clientes sincronizadores o por sus respectivos proxis)
- Informacion de servidores remotos ligada a sus datos de conexion
- Datos de acceso a cada cuenta y sus directivas de clientes si aplica
- Informacion de cada personaje, ligada a sus respectivas cuentas
- Sockets de comunicacion interna
- Datos para creacion consistente de clientes sincronizadores (proxy asignado, uso de vpn, conexion directa)
Mundo espejo
Logos opera haciendo uso de uno o mas sincronizadores, un sandbox o mundo espejo, y sus consumidores (dashboard, ia, analizadores, etc)
El mirror/mundo espejo es un “sandbox” seguro en el que se sincroniza una copia 1:1 con la informacion entrante de cada cliente, pero con la ventaja de ser centralizado, eso quiere decir que podes tener un sincronizador conectado a un servidor y el mirror es un espejo directo de este juego, podes tener cientos de sincronizadores conectados a un server, y ahora el mirror es mas completo, ya que recibe mas cantidad de datos y los deja disponibles para ser consumidos por cualquier componente independientemente de su personaje asociado, o incluso podes tener miles de sincronizadores, conectados a diferentes servidores, llenando el espejo con informacion de cada uno de estos servidores, manteniendo las ventajas del punto anterior mas que ahora se pueden gestionar cuentas de distintos servidores de forma agnostica a su direccion, abstrayendo la capa de comunicacion totalmente de la capa de consumo, lo que permite tratar cada cliente/personaje de la misma manera, independientemente de sus requisitos de conexion
La idea es que cada sincronizador crea una conexion el servidor de juego remoto, gestiona el logeo y el stream de datos de forma bidireccional durante la comunicacion, entre el servidor y el mirror.
el mundo espejo tambien actua como interface de comunicacion entre clientes, procesos y consumidores, permitiendo comunicaciones con topologias a necesidad, como por ejemplo broadcast de comandos (cerrar todas las cuentas con cierto nombre, abrir conexion con todos los personajes de tal servidor), comunicacion unidireccional (consumidor <- mirror), bidireccional (componente bot <-> mirror), etc.
este tiene un sistema de eventos global que permite filtrar por tipo de evento (environment, character, chat, mutation) que los bots consumen y los sincronizadores retroalimentan
Arquitectura
Roadmap
Logos como sistema distribuido
#TODO