4 ms·
Jeez guys, have none of you ever played a ROM on an emulator? You know how they save and resume? By taking a snapshot of the RAM and restoring it later on. Sure
by mambodog 17y ago
Jeez guys, have none of you ever played a ROM on an emulator? You know how they save and resume? By taking a snapshot of the RAM and restoring it later on. Sure, its not great to have to take a snapshot of the 2gb+ of memory being used at runtime by a modern AAA game, but it wouldn't be hard to work out what is just content (textures, geometry, sound), and what are the variables (player location, progress, etc) and just save/load that. And that's only if its too much work to emulate the back-and-forth with the DRM server. And even that is only if its too hard to patch those functions out.
All these people talking about 'significant portions of the game running on the server'... are you serious? Do you realise how fast game engines run? People have enough trouble putting up with the lag on multiplayer games with relatively few actors/entities, running on dedicated servers. If this were truly the case, single player games would also be susceptible to lag, not to mention the amount of load of millions of players' AI routines running on Ubisoft's servers. Damn.
No, this will be cracked, patched or emulated, and the only people negatively effected will be legitimate customers. I'd say that would be the exact opposite of the system 'working'.
- danparsonson 17y ago> it wouldn't be hard to work out what is just content (textures, geometry, sound), and what are the variables (player location, progress, etc) and just save/load that As the saying goes - I'd love to see you try it! In order to capture the state of a running application in such a way that it can later be restored, you need, not only the memory contents, but also the processor state. Imagine that the app is in the middle of modifying an in-memory data structure: the variables used while doing that (e.g. loop counters) will likely be stored on the stack and/or in processor registers. Just as an example! Even assuming you could accurately pause an application and capture its state completely, how do you propose restarting it? You'd need to reinitialise all the external stuff (graphics device, sound, file handles, etc.), then start the application code at exactly the right instruction. Maybe installing some sort of hypervisor underneath the OS would allow these things? Good luck :-) Emulators can do all this with impunity because they're virtual machines - a computer running within a computer. The emulator always has complete control over the memory and (virtual) processor state, display, sound devices, etc., and saving/loading that state is therefore much easier.
- jcl 17y agoIt's not that outlandish of a proposal. The application does not need to be savable at all times; it just needs to be savable at some point, which could be a point when the game state is particularly easy to capture. For example, most applications can go into a minimized background state where almost no code is running and nothing is loaded in the graphics card.
- Retric 17y agoFYI: You can just push the stack, and read the values below yours.
- akgerber 17y agoDid you ever notice that a process running a single thread of execution can run multiple processes, apparently all at the same time? Yeah, that. It's called a context switch. It works by "captur[ing] the state of a running application in such a way that it can later be restored". I personally have at least 20 friends who have implemented it, as I would assume most college students at strong CS school would.
- jcl 17y agoRAM snapshots will only work if all of game state is local, and the remote server is being used as a glorified backup system. However, if only a portion of the game state is local to the client, a snapshot of RAM will not be sufficient to progress through the game.