Pregunta

Estoy iniciando la programación del juego nuevamente. Hace 10 años estaba haciendo juegos en qbasic y desde entonces no he hecho ninguna programación de juegos, así que estoy bastante oxidado. Sin embargo, he estado programando todo el tiempo, ahora soy desarrollador web / DBA / administrador. Tengo varias preguntas, pero las limitaré a una por publicación.

El juego en el que estoy trabajando va a ser un mundo muy grande. Será algo así como URW , pero un mundo aún más grande y más parecido un 'RPG'.

Lo que he estado tratando de decidir es cuál es la mejor forma de diseñar el mapa, guardarlo y acceder a él. Pensé en la idea de usar sqlite para almacenar los datos. Incluso podría usar el sqlite db como archivo de guardado para el juego, agradable y fácil.

¿Alguien tiene algún consejo sobre cómo debo hacer esto o ideas para otros métodos de almacenamiento?

Estos son los requisitos para mi juego:

  • Necesito acceso aleatorio completo para detectar en el mundo del juego (los NPC, los monstruos y los animales estarán activos todo el tiempo).
  • Estoy usando Stackless Python 3.1, las opciones son bastante limitadas a menos que haga mucho trabajo.
  • Necesita poder manejar un mundo muy grande.
  • El soporte de concurrencia sería una ventaja, pero no creo que lo necesite.
¿Fue útil?

Solución

No te metas con bases de datos relacionales a menos que estés obligado a usarlas por factores externos.

Mire el pickle de Python, shelve .

La estantería es rápida y escala bien. Elimina la conversión desordenada entre representación Python y no Python.


Editar.

Consejos más importantes. No se atasque en las opciones tecnológicas. Obtenga las ubicaciones, elementos, personajes, reglas, etc. para trabajar . En Python Tan simple y correctamente como sea posible.

No queme una sola caloría cerebral en otra cosa que no sea el modelo básico, la corrección y un conjunto de características básicas para demostrar que las cosas funcionan .

Una vez que tiene un modelo que realmente funciona , y puede hacer ejercicio con algunas pruebas unitarias sofisticadas, puede tomar decisiones tecnológicas.

Una vez que tenga un modelo, puede escalarlo significativamente a millones de ubicaciones y ver qué tipo de almacenamiento se requiere. El modelo no puede cambiar, es la esencia de la aplicación. Solo la capa de acceso y la capa de persistencia pueden cambiar para ajustar el rendimiento.

Otros consejos

Parece que lo que está pidiendo es un tipo de índice espacial . Para un juego 2D muy grande, recomendaría usar un quadtree . Quadtree funciona bien cuando tiene un área grande y la actividad tiende a ocurrir en regiones localizadas del área, como es el caso de la mayoría de los juegos de tipo RPG. Mantendrá bajos los requisitos de almacenamiento y, con suerte, también acelerará la detección de colisiones.

En cuanto a guardar el juego, cosas como estadísticas de jugadores y monstruos pueden ir a una base de datos, si te preocupa que cambien a menudo. Para el diseño de nivel real, recomendaría usar un formato de archivo binario específico para su juego. No hay muchas consultas de tipo de base de datos que normalmente necesita realizar en el diseño de nivel y puede hacer grandes optimizaciones utilizando su propio formato. No sabría cómo comenzar a almacenar un formato de tipo quadtree en una base de datos (aunque estoy seguro de que es posible).

Estoy usando una base de datos no relacional para almacenar grandes cantidades de datos. Si puede trabajar en un hardware de 64 bits, MongoDB con su El controlador de Python es realmente muy bueno. No sé si esto está bien con Stackless, pero es una posibilidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top