Test Driving Godot's New Movie Maker Mode
Over the last few years, the major game engines have been pushing to get into the film and video production space. After all, video game graphics have been steadily pushing towards more and more realistic visuals, while the machines that run those games have to crank out new frames fast enough to keep up with the player's actions in game. This level of performance can drastically change the way movies and TV shows integrate CGI into scenes, as artists can now make tweaks to the models, animations, lighting, and environments without having to wait through long render times just to see the results of a minor change. At this point, the technology is even good enough to work for Disney's The Mandalorian (though Baby Yoda is still just a puppet).
Does this mean I can make something like that in Godot now?
Well, that depends. Unity's credits for the Adam demo include nine people on the Demo Team, 19 people from Unity Technologies R&D, and a combination of several people and organizations under Additional Art, as well as a credit for the music at the end of the video. To throw even more cold water on your Godot filmmaking aspirations, Unity has a lot of features that make it easier to build something like this, which Godot hasn't implemented yet. The process to create this kind of short film in Godot is still a lot harder than in Unity or Unreal Engine.
Then again, a sufficiently masochistic person might be able to get the Adam demo ported to Godot. Hell, using new rendering features like SDFGI on better hardware than a GTX 980 might get it to look even better than what the Unity team was able to achieve in 2016. I'm not going to do it, but it's probably at least technically possible. Even though the latest builds of the engine have all the pieces necessary to put together a short film and spit it out as a video file (with sound!), there are several limitations that can make the process frustrating.
- Movie Maker is only available in the 4.x branch, which is currently in an unstable Alpha development stage
- There's no equivalent to Unity's Cinemachine in Godot, so cameras will need to be animated by hand, or paired with a custom camera system
- There seems to be some level of support for posing and animating skeletal rigs in engine, but I'm either way too dumb to find it, or the current implementation is the animation equivalent of writing x86 assembly by hand
- For some reason, the video output path is configured in Project Settings, so don't forget to change that after every recording session unless you want to keep writing over the same file every time, without so much as a "File exists. Overwrite?" popup to warn you
- Movie Maker only supports PNG Sequences or MJPEG for video exports, which means all but the shortest HD, 4K, or larger video clips will be utterly massive
Of course, most of this really only applies at the time of writing. Godot 4.0 will eventually reach stable. If the engine catches on as a filmmaking tool, someone will probably create a Cinemachine style extension that everyone can use. Animation rig support will improve. Maybe someone can create a tool like NaturalMotion's Euphoria. The output path being in Project Settings is pretty inexplicable, but I'm sure that can be tweaked or changed in some way. As for the massive size of video exports, that's probably a good thing. Trying to compress the video at the time of recording would have an impact on performance, while editing compressed video only degrades the quality further when exporting the project to a new file that uses its own compression. (This MKBHD video shows a wildly exaggerated example of what that can look like.)
In other words, things need to improve a bit before we can all go wild with this, and things are improving.
How does it work?
Recording video in Godot is relatively straightforward. Versions of the engine that support the feature will show a Movie Maker mode icon in the top right corner of the editor window.
As mentioned previously, we will need to specify a path for the movie file in the Project Settings. To get there, open the Project Settings dialog, and select Movie Writer under the Editor section.
This settings page also allows configuration of the target frame rate (default 60 frames per second) and includes the option to disable V-Sync. Note that the engine will render a smooth video at a stable framerate, even if the actual device is not capable of running the game at that speed.
To test this, I decided to use the old reliable Sponza model, threw in a bunch of dynamic lights, turned on SDFGI, and created a very crude, 25 second animation for the default camera in the scene, which I set to start automatically on scene load. The laptop I used would run the scene at around 40-50 fps in the editor with SDFGI enabled, and took a couple minutes to record the scene at full HD, but the video plays at a smooth 60 fps. Shockingly, the MJPEG file weighs in at over 300 MB.
While my feeble first attempt at Godot filmmaking is obviously a lot simpler, shorter, and way less pretty than what the big guys have been doing for years, it does show how easy it is to use the Godot Movie Maker mode. We have a long way to go before it can rival the more full featured setups that Unity and Unreal offer, but the engine is growing pretty rapidly.