So pretty much exactly what you would expect someone to do.
But he got to get his clicks somehow!
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-...
Not trying to start an argument, just good to know.
... It does seem real obvious _now_
Released over a year after Braid.
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.
«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-....