Node.js(как вариант для хранения временных данных)?
В БД (или быстрый кэш, типа Redis). Причин несколько:Ваше приложение может упасть. Игрокам не понравится, если у них вдруг пропадут карты. БД тоже падают, но вероятность этого гораздо меньше (у них больше разработчиков и тестеров).Массивы в памяти не масштабируются. Положим, пару десятков одновременных партий в памяти держать можно, но когда счет пойдет на тысячи, это будет жрать RAM, плюс тормоза на GC. А БД можно вынести на отдельный сервер и даже на отдельный кластер.
Ну, понятно, что в учебном примере пофиг на надежность и масштабируемость, но почему бы не делать сразу правильно?
Я бы сказал NoSQL или память.
Это от приложения конечно зависит, но если ляжет сервер, то думаю данные сессий один фиг надо обнулить. Хранить в память всегда быстрее.