Tutoriales sobre Tecnologías

Aqui va una lista de tutoriales/manuales sobre algunas de las tecnologías que podríamos usar en nuestro proyecto:

Applets

Este tutorial explica cómo utilizar NetBeans para desarrollar applets Java. Seguramente los applets sean la forma que utilicemos para implementar el chat y los juegos (o al menos una parte de ellos).

Applets usando NetBeans

Varios tutoriales sobre como pintar cosas, manejar eventos y cosas varias en applets

Tutoriales de Applets

XStream

Permite serializar (esto es, convertir un objeto java en datos xml) lo cual nos puede ser util para transmitir objetos enteros a traves de la red.
Página del proyecto XStream

Carga dinámica de clases

Si se pretende que el servidor no necesite reinicios cada vez que añadimos un juego o un módulo es necesario un mecanismo para carga en tiempo de ejecución clases que no estaban disponibles cuando se compiló la aplicación. Aqui van un par de tutoriales al respecto (nos interesaría principalmente la opción de carga segun interfaces (parte 2) pero nunca se sabe)

Tutorial carga dinamica (parte 1)
Tutorial carga dinamica (parte 2)

Un brevísimo ejemplo de carga dinámica:

URL url[] = new URL[1];
url[0] = new File("<ruta del archivo jar>").toURL();
URLClassLoader loader = new URLClassLoader(url);
Class juegoClass = loader.loadClass("<ruta completa de la clase>");
InterfazJuego miJuego = (InterfazJuego)juegoClass.newInstance();

Descarga de extensiones

Todos los juegos creados en forma de applets Java van a tener muchos elementos en común (muchas clases serán las mismas, el chat será prácticamente idéntico para todos los juegos…). En lugar de repetir en cada applet todas las clases comunes, se le puede indicar al applet dónde puede encontrar dichas clases o recursos comunes. El siguiente tutorial explica cómo se hace esto.
En este tutorial se habla un poco del fichero de manifiesto, por lo que se recomienda haber leído un poco sobre ello.

Descargar extensiones

Codificacion/Decodificación de Strings

Aunque la serialización resuelve en gran medida la conversión de objetos en datos listos para mandar por red, habrá casos donde haya que usar métodos de envio por red a nivel mas simple. En esos casos corre de nuestra cuenta la conversión de string a vector de bytes y viceversa lo que se llama Encoding/Decoding

Encoding/Decoding

QuickServer

QuickServer es una librería java que gestiona un servidor TCP con multiples clientes, envio/recepción asíncronos y un monton de cosas más. Nos puede ser util para llevar las tareas básicas del servidor de juegos sin tener que pelearnos con los Sockets de java.

Página principal del proyecto QuickServer

Sockets

Si finalmente hay que pelearse con los sockets, hay un breve tutorial elaborado por Sun (la empresa que creó y mantiene Java) que explica su funcionamiento.

Tutorial: comunicación cliente-servidor usando sockets

Fichero de manifiesto

Los ficheros .JAR con librerías de java contienen aparte de las clases un fichero llamado MANIFEST.MF que contiene metadatos que describen la librería. Puede usarse entre otras cosas para permitir que el programa servidor conozca las características de la librería en tiempo de ejecución facilitando así la carga dinámica.

Un post con varias maneras de acceder al manifiesto de un jar
Un documento con información sobre los ficheros de manifiesto

Editor de texto web:

Tutorial sobre como currarse uno de cero:
[http://www.webreference.com/programming/javascript/gr/column11/]

Ejemplo en la web:
widgEditor.zip