Long story short, I like programming and I don’t like working in video editing software, so this makes perfect sense to me.
Most devs I’ve shared this with think it’s a step too far: that it’s most sensible to use this technique to export just the gameplay clips reliably, and then you use those in editing software to add transitions and titlecards and whatnot. “Best of both worlds” they claim. But I gotta say, being able to re-record and re-export the trailer at the touch of a button in my IDE is just so nice. Especially with my latest game, I did some last-minute changes and it was trivial to keep the trailer and screenshots up-to-date.
I’m curious to hear what folks think about this system!
Clever solution. I have heard of scripting gameplay sessions for repeatable video capture, but I don’t think I’ve heard of automating the entire production process. That is probably more work than I care to put in, but it does at least get me thinking about how I could implement the gameplay scripting component. Capturing and recapturing footage for even my meager trailer was kind of a pain.
One thing that I’d have to deal with for my use case is controlling randomness, especially in combat. Since combat is not strictly deterministic, it can be difficult to capture the right flow, and two recordings of the same encounter will play out differently. If I were to implement something like this, I’d probably want to come up with a way to load a set of predetermined values, so that I can program exactly what I want to show in the video.
Yes, the cutscene code can end up being quite specialized and scripted beyond how the game normally works. Do you use a seed for randomness? I suppose you could build your trailer around a particular seed if you don’t want to change the fight logic or make hard-coded fights specifically for the trailer.
I just let the randomness flow for my latest trailer, since wasn’t gameplay critical. It was mostly pretty aesthetic stuff like which backgrounds are displayed, what the cooking button says “yippee/wow/I did it” etc, where items are hidden in the redecorated room, stuff like that. I thought it was kind of fun seeing how the trailer “turned out” each time, but I get that’s not usually ideal!
I wish I could find the post/tweet where they were demonstrating this but I know this is similar to what was done for the Earthblade trailer:
which is why it looks so seamless as the player is acting out while the camera is panning through the walls, etc
To me the strength of this really depends on how event driven the game/engine is - for example I can’t really imagine a case where you want to do “TAS” inputs, but setting up event hooks that are triggered automatically seems like the way to go, and it usually means theres some good architecture for the game itself. I also imagine if you are using something like unreal you’d need to find ways to avoid stutter and pop-in for higher class 3D games, but who here’s doing that u_u;
Wow that trailer looks great, thanks for sharing! My games are all pretty static camera-wise, so it’s cool to see this technique (or something like it) for a platformer’s more dynamic trailer.
My current project is 3D, but not at all what you’d call “higher class” ahaha, we like to target very low-end machines so that’s a no-go. I’m sure you could force the loading system to get with the picture somehow for your trailer runner…