En el anterior post, mostré el procesamiento del juego en el Windows Azure Toolkit for Social Gaming (versión 1.1.1, hay una nueva 1.2.0 pero aún en beta). Ahora, es tiempo de ver cómo agregar Node.js como servidor de juego a nuestro simple juego de Ta Te Ti.
Vean que todo el código client de Game Service es agnóstico del juego, es decir, no depende del juego que se está implementando. Y vean también que ese Game Service en javascript puede ser cambiado para usar otros servicios. En este post, veremos cómo cambiar el procesamiento de las jugadas para usar una instancia del servidor Node.js.
Primero, bajarse el código a agregar de mi GitHub:
https://github.com/ajlopez/SocialGamingExtensions
Entonces:
1 – Bajar e instalar el Windows Azure Toolkit for Social Gaming versión 1.1.1, desde:
http://watgames.codeplex.com/releases/view/77091
1 – Instalar Node.js para Windows, desde http://nodejs.org/#download
2 – Cambiar al subdirectorio server de mi código, y ejecutar el comando:
npm install socket.io
La librería socket.io se bajará e instalará en el subdirectorio node_modules:
Vean que baja bastante:
3 – Iniciar el servidor de node:
node gameex.js
El servidor comienza a escuchar:
4 – Copiar el directorio client de mi código al directorio del proyecto SocialGaming.Web. Los archivos Web.config, BaseController.cs, TicTacToeController.cs serán reemplazadas. Hay nuevos archivos: Scripts\game\GameServiceNodeJs.js, Areas\Samples\Views\TicTacToe\NodeJs.cshtml.
5 – Abrir la solución de Microsoft en el Visual Studio 2010 (run as administrator) y agregar esos nuevos archivos al proyecto SocialGaming.Web. El nuevo GameService a usar para Node.js:
La nueva vista TicTacToe que usa al Node.js:
La nueva acción en el controlador TicTacToe:
Y la nueva entrada en el web.config:
El reemplazado BaseController lee esa nueva configuración, que queda disponible para ser usada por la vista:
6 – Iniciar la aplicación, debería ejecurtarse como http://127.0.0.1:81 (en puerta 81) para ser aceptada por la seguridad federada configurada en el portal de Access Control Service.
7 – Navegar a /Samples/TicTacToe/NodeJs. Ver la URL de invitación:
8 – El cliente se conecta con el servidor de Node.js. Dependiendo de las capacidades del cliente, socket.io usará WebSockets o XHR long polling:
9 – Abrir un nuevo explorador, en una sesión privada, y navegar a la URL provista en el paso 7
10 – Hay dos jugadores. El de la derecha (el invitado) jugó en la celda del top izquierdo. El primer jugador (el de la izquierda) recibe la nueva movida y actualiza su tablero.
11 – Ver la consola del servidor Node.js: la movida fue recibida y enviada a todos los participantes de esta instacia de juego:
Bien! Trabajo para el hogar: agreguen el Node.js para publicarse en un worker role. Vean el post de @ntotten NodeJS on Windows Azure).
Próximos temas: explicar en detalle el código del servidor que ejecuta Node.js (por ejemplo, soporta sockets TCP además de socket.io; de esta manera podemos programar un cliente en otras plataformas, desde Silverlight a IPhone a Android, sin depender de tener que usar una librería Socket.io en esos clientes).
Nos leemos!
Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez