Hola,
Estoy haciendo un MMORPG puramente en JavaScript (Kinetic.js + Socket.io + Node.js + MongoDB), como saben, con JavaScript cualquiera puede ver el código que tengo del lado del Cliente y así manipularlo (aunque la principal parte del código esta envuelto en un Closure) y así surgir distintos tipos de hacks para el juego.
Al principio había planeado, para evitar esto, que el servidor con cada petición realizada, me devuelva un lista de posibles acciones, las cuales se encriptan y desencriptan en el servidor, de esta forma, este rechazara cualquier petición que no pueda ser desencriptada. Pero este método requiere las respuestas del servidor sean mas pesadas por lo cual, a largo plazo, requeriría mas recursos para que las respuestas sean fluidas.
Por otro lado también pensé en crear las peticiones desde el cliente, y que en el servidor pasen por una seria de comprobaciones antes de ser procesadas. Sin embargo esto haría que el servidor tarde mas en procesar las peticiones y a largo plazo también seria un mayor requerimiento de recursos para que las respuestas sean fluidas, ademas siempre esta la posibilidad de que uno olvide alguna comprobación y de cabida para hacks.
No me decido en cual método utilizar, ¿Ustedes que opinan? ¿O acaso conocen algún otro método mas eficaz?