noticias

De vuelta en linea
gorlok — 26 November, 2009 - 20:30
Después de un tiempo con el sitio caído, debido a que se murió el viejo servidor, ya está restablecido con nuevos bríos.
El proyecto sigue su lento y paulatino curso
. Tengo algunas novedades por el lado del servidor AOJava que compartiré en otro momento, y hubo avances con el nuevo cliente.

Bug fixes
gorlok — 10 February, 2009 - 19:59
Corregí el paquete PlayWave, que le falta enviar las posiciones (x, y).
Corregí el decodeData(), que estaba todo mal
, y adapté el generador de paquetes para que lo genere.
Pendientes:
Arreglar el encoding de los .dat, tal vez falta especificar el encoding al abrir el archivo, o esté en utf-8.
El comerciar con NPC falla. Revisar ChangeNPCInventorySlot, ChangeInventorySlot, UpdateUserStats, CommerceInit.
Actualización 23:57:
Ya está incorporado el módulo de Areas, y parece funcionar bastante bien. Hay algunos bugs, pero ahora se puede caminar (con algunos tropiezos) por el mundo nuevamente! 
- gorlok's blog
- Inicie sesión o regístrese para enviar comentarios

Actualización del Protocolo a 0.12.1b y novedades
gorlok — 10 February, 2009 - 00:02
Hacía mucho que no comentaba nada, así que haré un rejunte un poco extenso.
Hoy se actualizó el protocolo a 0.12.1b, el actual en el trunk del AO oficial. Con esto, nos ponemos al día, y permite usar el cliente de AO para realizar pruebas y verificar la compatibilidad... o por los menos un poquito 
El servidor ahora está muy inestable, y algunos paquetes estén fallando y hace falta revisarlos. Por el momento se puede conectar, crear usuarios (aunque falla la conexión luego de crearlos), pedir estadísticas, ver el mapa, etc.
Gran pendiente: desarrollar el manejo de áreas de forma equivalente al oficial, y resolver todos los cuelgues.
Hace un par de semanas estuve viendo alternativas para el cliente. Hace un par de años hice un rendering en Java2D, usando FSEM (full-screen exclusive mode) y "active rendering". Volví sobre este diseño para ver cómo había quedado, y si había posibilidades de resucitarlo. Si bien el código estaba bastante bien, recordaba muy bien las dificultades al tratar de integrar los controles de Swing con el Active Rendering, o mejor dicho, este último y el EDT (Event Dispatcher Thread).
Buscando otras alternativas, llegué a Slick: es una API para desarrollar juegos 2D en Java usando OpenGL. La verdad que me impresionó, por lo sencilla que es, y la calidad prometedora de los juegos realizados por su comunidad. Muchos son muy entretenidos, y se pueden jugar desde la web gracias al JWS (Java Web Start). Con un par de horas nomás, ya había portado mi viejo rendering desde Java2D a Slick, y un funcionamiento impresionante comparándolo a Java2D.
Slick trae librerías para el manejo de tilesets, mapas, gestión de las imágenes, fonts, sistema de partículas, sistema de sonido 3D, sistema de física, y mucho más. Para la GUI, por lo que estuve viendo, la que más me gustó fue Thingle, que está basada en Thinlet, y a su vez está basado en XUL. Es muy intuitivo, aunque al comienzo no veía ni cómo empezar
. Pero apenas vi un par de ejemplos, fue muy fácil agregar algo de GUI al cliente de AO.
Por el momento, el nuevo cliente solo realiza rendering y poco más. No tiene nada de red.
Volviendo al tema servidor, necesita urgente un refactoring total, y reescribir gran parte. Hay cosas que son un asco, y que ni siquiera me gustaría reconocer que alguna vez fueron escritas por mi
. Es una tarea pendiente desde que comencé con él, porque inicialmente traté de mantener cierta similitud con el fuente y rutinas del AO, facilitándo mucho el port. Sin embargo, esto llevó a una implementación lejos de un buen diseño OO, y ahora se hace más que evidente la necesidad de replantearlo. Con el conocimiento y experiencia adquirida, ahora me encuentro en una mejor posición para llevarlo a cabo.
La elección de usar NIO allá en sus comienzos, ha sido un gran acierto, pero el diseño no resultó tan limpio como quisiera. Me gustaría migrar todo el manejo de red al framework Apache MINA. Por lo que vi, no sería complicado, y resultaría en un diseño claro, intuitivo, y extensible, con muchos extras: compresión de datos, encriptación (SSL/TLS), logging y gestión por JMX, etc.
Hoy agradecí haber usado el generador de paquetes del servidor y cliente con metaprogramación. Cuando porté AOJava al protocolo binario, AlejoLP me dió un script php y unos archivos de definición, que él había usado para generar los paquetes del protocolo para Python. Yo lo había adaptado para generar paquetes para Java, tratando de mantener actualizados los archivos de definición de tanto en tanto. Hoy encontré algunas diferencias con respecto al protocolo actual, el 0.12.1b, así que una vez detectados los cambios y corregidos los archivos con la descripción, regenerarlos fue unos segundos. Me puso muy contento eso 
Hace un tiempo que recolecto info técnica de AO cuando encuentro algo sobre formatos de archivos, o especificaciones y explicaciones sobre algoritmos usados, y cosas así. Sinceramente es muy poco lo que hay o lo que se encuentra, y está todo muy desperdigado. Intentaré juntar lo que pueda, para subirlo en algún momento a una wiki o algo similar, para consolidarlo, y que quede disponible como biblioteca técnica siempre a mano.
Bueno, esto es todo por ahora. Cualquier cosa, el último código fuente del servidor está en el CVS. Si alguien se anima a probar algo, no dejen de comentarme cómo les fue. Probablemente migre el repositorio a Subversion en alguna oportunidad, pero ya habrá tiempo para eso.
Hasta la próxima.
- gorlok's blog
- Inicie sesión o regístrese para enviar comentarios

Feliz 2009
gorlok — 3 January, 2009 - 16:50
Espero que hayan pasado bien el fin de año, y que en este que recién comienza, puedan concretar todos sus deseos.
Para festejar, tiramos la casa por la ventana cambiando el aspecto del blog
Y el proyecto AOJava sigue su curso, lento, pero seguro 
- gorlok's blog
- Inicie sesión o regístrese para enviar comentarios

Inauguro un nuevo blog
gorlok — 18 October, 2008 - 00:00
Les comento que finalmente me creé un blog en entrellaves.blogspot.com, donde escribiré sobre diversos temas, en general relacionados a la programación, la internet, Linux, Java, y de todo un poco.
Los espero,
Gorlok
- gorlok's blog
- Inicie sesión o regístrese para enviar comentarios

