¿Por qué el savestate está en desuso en los nuevos emuladores?

La tendencia en nuevos emuladores es no programar el famoso guardar estado. Algo que es un chollo para emular. Puedes guardar en cualquier momento sin necesidad de usar datos de guardado. Por ejemplo en el típico Zelda que estás a mitad de mazmorra y tienes que dejar el juego. Si guardas en el juego tienes empiezas desde el inicio.

También sirve para pasarse más fácilmente juegos que cuestan mucho. Por ejemplo un enemigo final que dura mucho y esas cosas. Al guardar en medio del combate no tienes que repetir de nuevo todo.

Pero la tendencia en emuladores modernos es no poner esa función. El de 3ds, cemu, el de switch, el de ps3.... Ninguno de esos traen esa función y posiblemente no la implementen nunca.

¿A qué es debido eso?. ¿Falta de interés o que eso es complicado en sistemas modernos o actuales?.
Duendeverde escribió:Pero la tendencia en emuladores modernos es no poner esa función. El de 3ds, cemu, el de switch, el de ps3.... Ninguno de esos traen esa función y posiblemente no la implementen nunca.

¿A qué es debido eso?. ¿Falta de interés o que eso es complicado en sistemas modernos o actuales?.


No creo que la tendencia sea evitar los savestates cuando todas las Minis lo están usando. O sea, que su utilidad e interés son tan notables que ya se usan incluso oficialmente.

Creo que pasa algo parecido a lo segundo que comentas. Falta de interés en el usuario no existe, pero desde el punto de vista de un programador, que está desarrollando un emulador de un sistema moderno, me imagino que se pensará principalmente en pulir la emulación en sí y acabar con errores de primer nivel antes de implementar funciones como la de los savestates, que pueden causar más y contaminar enormemente el feedback.

Además de que en la emulación de sistemas modernos los savestates pueden ocupar un montón de espacio, también pueden generar multitud de problemas a la hora de aplicarlos para todos los juegos; no son como si guardaras con el sistema propio de cada juego, sino que con lo savestates estás guardando y cargando el estado de la ram. Por ejemplo, en el caso de PS3, ya que hablas sobre su emulador, su ram es bastante enrevesada, dividida en dos o no sé que rollo; a eso súmale que también cargaba el menú ingame, el cual creo que también consumía ram. Puede ser toda una quimera juguetear con la ram de PS3 para conseguir savestates funcionales y sin fallos para todos los juegos.

Vamos, que en sistemas modernos la emulación es más compleja, por lo que es normal que determinadas funciones, como esa, queden relegadas hasta que los emuladores se optimicen lo suficiente y puedan centrarse en ello. Seguro que requiere un señor currazo añadir la función de savestates en los emus que comentas, por lo que veo normal que en fases beta no esté presente.
Las consolas actuales utilizan la RAM para buffer y toda la memoria la generan en caché.

La PS3 por ejemplo tiene 256 MB de RAM y 256MB de VRAM... Pero si quisieras agrupar toda la caché que genera necesitarías 1 tera de memoria (esto lo leí hace tiempo, desconozco la veracidad).

Imagina generar un savestate de todo eso.
Aquí tienes la respuesta de un desarrollador de rpcs3 en reddit:
https://www.reddit.com/r/pcgaming/comme ... e/eyo5gwp/

No es que los desarrolladores no quieran añadir savestates a esos emus, es que cuanto más moderna es la consola, más compleja es y más dificil es implementar esa funcion bien, sin que corrompa partidas o cree bugs.

Por ejemplo, hay algunos juegos de GC que se llevan mal con los savestates de Dolphin... usandolos en Mario Sunshine puedes perder la capacidad de guardar la partida, en Pokemon XD (y creo que Colisseum) puedes corromper ligeramente la partida guardada.

También está el tema que cuanta mas memoria RAM y VRAM tiene la consola, lógicamente más pesados serán los savestates, que además tienen que guardar información del estado del emulador y su JIT, más lentos de guardar y cargar. Sería más de 512MB para PS3, más de 2GB para WiiU, más de 4GB en Switch...
De toda la vida el "savestate" es una opción que se ha añadido a posteriori cuando la emulación ha alcanzado un punto bastante estable, los emuladores que mencionas aún están en "rodaje".

Fijate que no hace ni un año que existen los savestates en Dreamcast.

Como añadido a lo ya expuesto.
Los states guardan la ram y a veces es sorprendente lo que pasa.
No se recomiendan si traduces juegos,
porque cargas state con el tocho de texto del estado anterior de la traducción, hay que guardar partida normalmente, cerrar el juego, no vale reset y cargar.

En psx ocupan la memoria de 1MB quizás y al menos epsxe los comprime, creo que tipo gzip
En GC ocupan mucho.
Ya con máquinas más nuevas no sé.

También debe pausarse el juego mientras se escribe el state. Y también sería una locura buscar trucos que es en Ram.
Hola, en mi caso, ya no lo suelo usar, porque desde que estoy jugando en modo HARDCORE para sacar los trofeos o desafios que ponen de cada juego, esto me ha hecho, volver a jugar los juegos de la forma como lo hacia naturalmente en mis tiempos.

retroachievements, esta pagina es la culpable de eso, y un usuario que la posteo por aqui hace muchisimos años atras.

Realmente, te cambia la forma en como jugar un juego.
Bueno usar states depende de tu costumbre,
hay juegos como el slayers de snes traducido,
que no guarda partida en snes9x y otros (más bien luego no carga), en bsnes va bien.

También puedes usar trucos hasta con cheatengine (y lo mismo adiós a la realidad de los logros esos retro)

En algunos es que te quieren torturar sin grabar
como la cueva antigua del Lufia 2, que pueden ser 7 horas farmeando bajando 99 pisos.
Los savesstates en los sistemas actuales es una perdida de tiempo no solo por el consumo de ram que debes de guardar en ram ps3 se iria a más de 512MB , wii u a unos 2GB , wii a más de 4GB

Y luego está la compatibilidad entre diferentes versiones pues también guardan la configuración del apartado gráfico , si utiliza frame skip , La api a utilizar si es vulkan , opengl , directx en el caso que lo utiliczará y casi siempre es un follon pues suelen existir regresiones cuando hay caracteristicas nuevas o bien la estructura del emulador ha cambiado que ese save state no servirá para esa versión .

A veces se corrige y a veces no , por lo tanto es una opción que prioritaria no lo es por los problemas que con lleva y el tiempo en mantener dicha opción costantemente sin romperla.
Gracias por las respuestas. Ya me ha quedado claro. Resumen:

Es algo que se implementa al final del desarrollo del emulador
Problemas con diferentes versiones del emulador, bugs y algunos juegos incompatibles
Lo que ocupa un save state en un sistema reciente debido a lo que ocupa la ram de esos sistemas.
9 respuestas