I watched the introduction to this video and thought: "Wow, someone should tell this guy about yak shaving." But after watching the rest, their tools are super cool. The profiler where you can see performance frame by frame and then jump back in time to the specific invocation of an expensive function blew my mind.
I'm in the camp of "probably unnecessary". Runtime debugging is a place that you don't want to stay in, because it shows lack of confidence in the upfront specification. And the bigger your code problems are, the harder it is to enforce the underlying stack of dependencies that keep a system like this afloat.
Like, if you want to iterate on the design of something quickly, you may be better off figuring out how to define it as something you can type in or draw, rather than introduce a whole set of concepts to master so that you can stay close to the running gameplay loop. If you don't know what game you're making then of course you want to do huge iterations on it quickly, but then the mode of iteration probably shouldn't be tied to anything resembling final assets, because those are a miserable pile of dependencies.
The video spends a lot of time discussong the value this adds for debugging issues people hit in the game. If an artist gets an exception while testing, they can send the game session and a developer can replay that session and debug it to find the issue.
Sure they could get dumps and debug those to try and understand how the game got in that state, but these tools are incredibly useful for a small dev team.
This was incredibly impressive, I just wonder how expensive it is to save everything like this, for every frame they save the code, the compiled result, the game data, the changes, and code stepping.
6 comments
[ 4.0 ms ] story [ 28.1 ms ] threadLike, if you want to iterate on the design of something quickly, you may be better off figuring out how to define it as something you can type in or draw, rather than introduce a whole set of concepts to master so that you can stay close to the running gameplay loop. If you don't know what game you're making then of course you want to do huge iterations on it quickly, but then the mode of iteration probably shouldn't be tied to anything resembling final assets, because those are a miserable pile of dependencies.
Sure they could get dumps and debug those to try and understand how the game got in that state, but these tools are incredibly useful for a small dev team.