Estaba pensando en como hacer un demo de mi juego y se me ocurrio que quizas con un poco de inteligencia artificial se ponga divertida la cosa. Divertida pero un poco dificil de implementar:
Generalmente la inteligencia artificial en juegos de video es un proceso en paralelo que consume recursos computacionales (memoria ram, ciclos de reloj, el hamster que le da potencia a tu cpu,etc) de forma moderada en el mejor de los casos.
IA Desde el Servidor
La primera idea que paso fugazmente por mi mente fue que los calculos los haga el servidor como en el siguiente esquema:
Inteligencia Artificial desde el cliente
Asi que me decidi a investigar un poco que se necesitaria para correr la IA en el cliente. Estamos hablando por supuesto de usar javascript para los calculos de IA. Seria quizas mas facil usar algun plugin como javafx, flash o hasta silverlight, pero hay algo en esas tecnologias que no me gustan, el tiempo de espera quizas, que se yo.
Asi que investigando un poco encontre a los fabulosos Web Workers, que me podrian ayudar a pasar el calculo de IA del servidor al cliente. Chequen el siguiente esquema:
Web Workers y Tu
WebWorkers es una tecnologia que te permite ejecutar codigo Javascript en forma paralela al codigo javascript de la pagina web. Recordemos que el codigo Javascript se corre en un solo hilo. John Resig habla un poco de como funciona este hilo principal con ejemplos del timers. La situacion se vuelve mas compleja en la mayoria de los navegadores ya que actualmente, con excepcion de Chrome y su sandboxing, no solo el javascript de la pagina se corre en un solo hilo, si no el javascript de todas las paginas abiertas se corre en un solo hilo.
Si no usaramos ese hilo especial del webworker, nuestra pagina detendria todas sus acciones hasta que haya terminado de computar el codigo fuerte. Imaginate 10 segundos sin poder usar tu pagina web, ¿Nada usable verdad?
Ahora no todo es color de rosa ya que por ahora esta en la etapa de Draft por la WHATWG la comunidad que dicta los estandares sobre HTML, CSS, Javascript y esas cosillas web.
¿Que que significa Draft? Pues que pueda que esta en proceso de ser estandar. Lo bueno es que hay navegadores como Firefox3, Safari 4 y por ahi dicen que una version de pruebas de Chrome, ya tienen funcional el uso de WebWorkers.
¿Y con los demas navegadores que hariamos? Pues no todo esta perdido, Google Gear ofrece WebWorkers, con el nombre de WorkersPool, solo que tendriamos que instalar el plugin primero. Nada mal, si lo pensamos bien podriamos hacer un wrapper para usar Webworkers Nativos si existiesen o en su defecto usar GoogleGear.
¿Que les parece esta idea?. webworkers puede llegar a convertirse en una tecnologia muy poderosa, no solo para juegos si no para paginas web en general. Imaginen una pagina muy visitada, con un webworker calculando secuencias de ADN o codigo para desencriptar un password. El poder de muchas computadoras en un solo sitio.
¿Te gusta la pagina?, socializame haciendole click a tu color preferido: