Hola, llevo bastante tiempo sin pasarme por los foros entre el ciclo que ya acabe y cinco meses trabajando para un negrero amante de pagar poco y la ilegalidad (una larga historia), y vengo con una idea que comentarles a ver que opinan, si tienen ideas o sugerencias, y hablarlo un poco.
He pensado en crear un servidor de juegos (para multiples juegos, no solo uno, tipo steam por hacer una anologia, o google play, etc; aunque no sea exactamente igual), la idea que luego el servidor funcione siempre y sin cortes ni siquiera para actualizaciones, etc; pero ademas que se pudiera jugar desde el ordenador propio de uno, o cuando no lo tenga a mano poder jugar desde otro ordenador pero sin instalaciones, pues cuando el ordenador no es de uno no siempre se puede estar instalando cosas, y que fuese multiplataforma los juegos. Además, pues, si son juegos online obviamente hay que evitar que se pueda toquetear demasiado, cosas que lo mismo en un juego de una persona da igual y hasta resulta interesante y queda como truco etc, pues en un juego multijugador pues lo mismo no hace tanta gracia que uno juegue limpiamente y aparezca uno en plan dar un click y pierdes asi por la cara.
La idea basicamente viene a ser eso, y que el código sea software libre, y hasta pense en que hubiese juegos que ademas de libres sean gratis y otros de pago o con opciones premium de pago, para intentar darles rentabilidad a los juegos libres tambien. He pensado en tener en el navegador unicamente una especie de terminal tonto, 3 canvas para dibujar lo que le mande el servidor (con canvas 2D porque el webgl aun no es compatible con todas las tarjetas graficas, al menos no con la mia en mi linux mint probandolo desde chromium y desde firefox) (3 canvas para poder tener controles en primer plano y no estar todo el rato redibujando y lo mismo con el fondo y asi en el del medio poder dibujar solo lo que mas cambie, la idea es mejorar el rendimiento), el navegador los eventos de teclado y raton los envia al servidor de igual forma que recibe del servidor que tiene que hacer. La comunicación he pensado hacerla con WebSockets (estube probandolos con el servidor websocket de una aplicacion de ping que encontre y la verdad que parece buena la velocidad lograda). Para los graficos, he pensado tanto el enviar desde el servidor que puntos son los que han cambiado (esto es parecido a lo que hace VNC por lo que estuve leyendo en wikipedia) o en enviar la información de que imagenes o formas dibujar y que lo haga el navegador. Para el servidor, aunque tengo mas experiencia con php y python (en python con django) he pensado en hacerlo en erlang ya que asi podria por ejemplo actualizarlo en caliente aunque estubieran jugando en ese momento y tiene hilos propios en vez de los del sistema, con lo que los limites del sistema para evitar bombas fork o limites propios del hardware no le afectan, y que es facil conectar varias maquinas a ejecutar el servidor como un cluster.
Hasta ahora unicamente tengo hecho la terminal tonta web donde se jugaria, y estoy usando el servidor de un ejemplo de ping con websocket que vi para hacer pruebas. La velocidad del websocket como ya dije parece buena por lo menos de momento, aun solo capturo y envio los eventos de raton y teclado aunque seria interesante capturar y enviar tambien los eventos touch para mejor compatibilidad con los moviles. En la terminal tonta tengo hechas funciones para descargar las imagenes desde javascript y el audio, y algunas funciones para dibujar el canvas de forma un poco optimizada, por ejemplo tengo una funcion para dibujar un trayecto a partir de un array de arrays que indiquen los puntos, una funcion para dibujar puntos, etc, y sigo intentando mejorar el rendimiento lo mas posible. Tambien hice unas funciones envoltorio para dibujar imagenes en el canvas que comprueba que esten ya descargadas, para evitar errores de javascript que pudieran parar todo el funcionamiento de la web.
Del servidor, aun no lo he empezado (llevo solo dos dias con esta idea), pero estoy ya mirando como podria montar el servidor con SSL para que fuesen websockets seguros.
Y poco mas que comentar, que seria empezar con juegos en 2D, ya teniendo un juego se podria ver mejor el rendimiento de todo e intentar optimizarlo para poder soportar juegos que necesiten mas potencia, etc; o intentar pasar al 3D.
¿La idea que os parece?