С точки зрения типизации можно еще посмотреть в сторону структур (это например класс с одними лишь public полями и без методов) - использование подобных контейнеров может уберечь от ряда ошибок в дальнейшем.
Удобнее всего, конечно, использовать тот же язык, что и на фронтенде, то есть node.js и websockets. Но для данных целей (небольшое количество запросов) будет более чем достаточно PHP в связке с Realplexor-ом.
Вместо php — node.js, т.к. сможете использовать один и тот же код для игровой логике и на клиенте и на сервере. Еще я бы рекомендовал писать не на голом JS, а на Haxe или хотя бы TypeScript.
Бэкенд на nodejs, фронтенд на javascript, транспорт через websockets. Если потребуется база данных, возможно есть смысл взять mongodb/couchdb, т.к они хранят данные в json, что удобно, т.к и на фронте и на бэке яваскрипт.