¿Por qué el archivo guardado de un juego es tan pequeño en comparación con el juego en sí?

– – – – – – – – – m C 3
l – y 0 0 0 0 0 y 0 2 j

Este es un código para Metroid, uno de los primeros juegos que recuerdo que jugué donde pudiste continuar donde lo dejaste. Metroid ni siquiera tenía espacios para guardar, solo tenía estos 24 códigos de caracteres. Esos 24 personajes eran todo lo que se necesitaba para serializar la información necesaria para continuar su juego, qué recogidas había recogido, qué jefes había derrotado y en qué punto de guardado para comenzar. El juego tenía una función para leer esos personajes y configurarse para parecerse a tu juego anterior.

A pesar de la mayor complejidad, los juegos modernos guardados no son fundamentalmente diferentes en lo que están haciendo, serializando la información necesaria para que pueda retomar donde lo dejó. La serialización de datos generalmente toma la forma de un archivo codificado con un estándar como XML o JSON almacenado localmente.

Estos contienen un registro de dónde estás y qué has hecho en el juego. Los más avanzados pueden contener una instantánea completa del estado del juego en el momento en que lo guardó para que pueda restaurarse exactamente en el mismo momento.

En comparación con los 24 caracteres que Metroid usó, esto puede ser bastante información. Un guardado rápido debe contener no solo su historial de juego completo, sino también los datos relevantes para cada entidad activa del juego, su posición, velocidad, salud, poderes, incluso qué pose de animación y tiempo a través de la animación. Los juegos guardados son mucho más complicados que en los días de Metroid, hay mucha información para almacenar.

Pero aún más importante para su pregunta es qué no está incluido, el arte, los modelos, los sonidos, los efectos de partículas. El juego guardado solo necesita una porción de los datos relevantes, todo el contenido ya es parte del juego.

Es por eso que los archivos guardados del juego son pequeños en comparación con los juegos, ya que son solo una colección de datos codificados, mientras que los juegos contienen todo el contenido, como modelos, texturas, sonido y video, que constituyen la mayor parte del juego.

No necesitas una copia completa del juego para guardar tu progreso y el estado del juego. En un sistema de guardado ideal, existen datos de nivel dentro del juego en sí, mientras que su archivo de guardado refleja específicamente cosas que son diferentes de la configuración inicial. Las propiedades seleccionadas de cada objeto se guardan en lugar de toda la información sobre el objeto. Al cargar un nivel, puede recorrer en iteración todos los objetos dentro de él y verificar la lista de estas propiedades.

“La posición de este está aquí, su rotación está aquí … esa está muerta, esa está muerta, HOHO, muchacho, esa está muerta, esa puerta se abrió …”

Solo imagine un personaje del Dr. Seuss caminando haciendo esos ajustes con un pequeño portapapeles. La sala es el nivel del juego que estás jugando, y el portapapeles son los datos guardados. Eso es lo que sucede cuando cargas un juego.

Algunos juegos lo hacen aún más simple al mantener el estado mundial relativamente transitorio. Ten en cuenta que cada vez que abres un nivel de Mega Man, comienzas el nivel desde el principio con todos los enemigos en su lugar; ninguno de ellos guarda realmente sus datos. Todo lo que tiene que guardar es una bandera que indique si vence o no al jefe de ese nivel.

No toma mucho entender por qué ocurre esto.

Un juego guardado requiere muchos menos recursos que un juego real.

Un juego guardado es esencialmente un archivo que revierte un sistema de juego a un estado anterior. Sin embargo, este debe ser de tamaño minúsculo (relativo a la totalidad del sistema de juego), dependiendo del juego en particular. Esto no toma mucho.

Entonces, tenemos un estado de juego: ubicación, mapas, elementos recopilados, en qué nivel estás, etc. Esto requiere muy poca información para capturar y marcar.

Es una colección de “marcadores” para cada variable que el juego ha aislado para el jugador.

El juego completo incluye todos los datos sin procesar necesarios, archivos, modelos, texturas, mapas de nivel, etc. Este gigabytes de tamaño.

El sistema de juego aquí se refiere al “software”.

Usemos pacman como ejemplo. Solo hay una vista, las cosas deben almacenarse. Coordenadas de los fantasmas, coordenadas del jugador, la fruta que todavía está allí y el nivel en el que se encuentran. Eso no es mucho. Son solo un par de números. A diferencia del juego en sí mismo, bueno, esa es toda la funcionalidad del juego. Eso consiste en la lógica del juego, las funciones / métodos de inicio del juego, los métodos de datos como los datos de carga del juego, los datos guardados del juego y muchos más bytes que un par de números.
También depende de qué juego. Por ejemplo, si tenemos un programa que le permite ver una base de datos (la base de datos es el archivo guardado). ¿Qué pasa si la base de datos es masiva?

Las texturas grandes y los posibles archivos de video ocupan abrumadoramente la mayor parte del espacio del juego cuando comienzas a usar muchas texturas grandes, lo que generalmente te gustaría hacer si quieres que se vea bien.

No es necesario guardar las texturas, solo guarda cosas como estados vectoriales, enteros y flotantes. Para muchos juegos es difícil hacer que el juego tenga el tamaño de una textura de muy alta resolución. Tampoco quieres hacerlo porque el tiempo de carga para guardar podría ser una larga espera.

Si tu juego consistía en hacer pinturas y videoclips de alta resolución y tuviste que guardarlos todos para continuar el juego o si el juego tenía un arte bastante simple y guardar los estados necesarios para almacenar grandes cantidades de lugares y cosas, entonces en esos casos guardar archivos podría Ser más grande que el juego en sí.

No puedo encontrar ejemplos de ninguno de los dos. Es muy raro y la mayoría de los juegos son mecánicamente increíblemente simples, lo que no dice nada sobre lo divertidos que son.

Como programador de partes iguales como ignorante, aquí está mi opinión:

En el código, definiría ciertas variables que desea rastrear a lo largo de un juego, y un archivo guardado compila esas cosas en un solo archivo, y cuando lo carga, vuelve a donde estaba. Entonces, por ejemplo, podría realizar un seguimiento de sus coordenadas en el nivel / mundo, cuántos enemigos había a su alrededor, hora del día, hp, etc. Básicamente, el juego está lleno de archivos y objetos y cosas renderizados en 3D, mientras que el guardar archivo es un archivo de texto pequeño con algunas palabras y números. Honestamente no es mucho.

No estoy seguro, pero supongo que solo contiene los datos del perfil de usuario como Nombre y los punteros a los puntos de control / logros / autos / armas / niveles, etc.

Déjame etiquetar a Daniel Super. Él es un desarrollador de juegos y podría responder esto 🙂