Varios juegos almacenan cosas de diferentes maneras. A menudo, las compañías de juegos crean alguna forma de hacer esto, y la mayoría de sus juegos usan de la misma manera. Por supuesto, diferentes estudios a menudo usan diferentes formas. SQL ciertamente se usa para juegos, por ejemplo, CCP (EVE) tiene (o al menos ha tenido) una red de servidores SQL, no estoy seguro de cómo lo hacen ahora. Otros, solo usan muchos archivos.
¿Quizás comenzar creando un "mecanismo de agente de datos" agnóstico para manejar varias transacciones de datos del juego? Como de todas formas solo estás probando, crea un mecanismo que te permita no tener que preocuparte demasiado por el almacenamiento, desde el punto de vista del juego en sí. Es decir, concéntrese en cómo, desde la aplicación host, va a manejar esto.
Personalmente, creo que sería una gran ventaja si pudieras cambiar la tienda real, sin tener que volver a escribir el juego y el corredor en sí. Simplemente cambie a otro módulo con la misma interfaz para que el corredor pueda hablar.
El almacenamiento de datos en sí mismo probablemente no será un problema, per se. El envío eficiente de datos, a / desde esa tienda, entre el host y todos los clientes, podría ser más complicado. ¿Envío todo el conjunto de datos del reproductor, o si lo desgloso en partes, qué granularidad elijo para dividir, etc. Cuál es más intensivo en recursos en qué situación, etc.
Un formato para enviar los datos podría ser XML. De esa manera, puede ser más dinámico en cuanto a cómo puede dividirlo. Un carácter frente a varios caracteres, o un elemento frente a una colección de elementos, etc. A continuación, puede "almacenar" el XML como XML (en SQL) y / o hacer que SQL lo distribuya de una manera más transaccional desde el XML, hasta cómo quiere que se almacenen los datos.
Otra forma es binaria, que es más eficiente en términos de envío, pero puede generar más costos en otras situaciones.
Con 1,000 clientes, puede comenzar y almacenar fácilmente 10 MB por cliente y solo usar 10 GB de RAM efectiva + agregar algo de RAM administrativa del sistema para administrar esos datos, digamos otros GB o dos. Puede mantener eso en la RAM del host que ya está en la estructura de datos lista para usar. Y cargue / guarde dinámicamente, dependiendo de quién esté en línea, en varias frecuencias dependiendo de la actividad, etc.
Incluso podría almacenar la información de cada cliente en un archivo separado, y así sucesivamente.