The unique algorithm behind rewind in Braid
twitter.com
twitter.com
«Waaaay back in 2010 I gave a talk at the GDC detailing exactly how rewind was implemented in Braid, including e.g. how does it reproduce all the particles perfectly without using tons of data.«
But I was able to find his original blog post, which show the particle system code and crucially shows the animation of what parts of the visuals the particle system (with the random number seeding etc). was actually for:
http://number-none.com/blow/blog/programming/2016/07/07/brai...
(The particle system - recreate particles from scratch every time, and just go one step less, N-1, when rewinding - reminds me of Redux’ time travel algorithm, as demoed by Dan Abramov.)
I also found the original GDC talk Blow referenced, where he details the rewind system more fully, with illustrations. It becomes more clear that the world state is comprised of regular game objects in addition to particles. His overall approach was:
«Record full world state for every frame, always. Do not drop frames. Compress data somehow.»
(Reminds me of React’s «rerender whole UI, but virtual DOM diff afterwards», approach.)
Skip to 3:00 for the various rewind approaches he considered but dropped (including the StarCraft replays like approach of capturing actions and playing them back): https://www.gdcvault.com/play/1012210/The-Implementation-of-....
Released over a year after Braid.
So pretty much exactly what you would expect someone to do.
But he got to get his clicks somehow!
Not trying to start an argument, just good to know.
Obviously after reading it, it seems obvious. And if I were implementing it, I am pretty sure I would have came to the same solution.
But it was not immediately obvious to me from the title.
... It does seem real obvious _now_
As the same time, to be fair, plenty of people do not realize closed form formulas are the best approach here. I'd say that requires a level of intuition for the physics and maths involved that is not strictly necessary to make functioning particles the "regular" way.
Anyway, to switch the topic to something more fun: do you think one could make Age of Empires 1 and 2 perfectly rewindable?
[0] https://www.gamedeveloper.com/programming/1500-archers-on-a-...
The trouble is, I found the gameplay difficult. I had to lean on walkthroughs a lot.
Some games are hard and punishing. Celeste is hard and forgiving, and I love it. Braid is a puzzle game, so you can get stuck for ages with no clue what you're even doing wrong, and the forgiveness is worthless then. At least with Celeste I know which way I'm headed - Usually up.