Samuel Dubois - Tool Designer

XML To Sequencer Tool

During my internship at Atelier Daruma, I was asked to create an Unreal plug-in to link an editing software to a Level Sequence of the engine in two clicks.

Utilization :

The user creates his tracks on a software that can export XML files, he needs to name its track according to the convention so they can be parsed. Then he exports the editing in XML

la_sixème_collection
Now he opens Unreal Engine, select a Level Sequence, right click on it and shows to reimport the XML file. If it’s the first time doing an import, the user needs to register the XML location so as the folders where are and will be located each type of files. Then the tool looks for every elements and imports them .Uasset in the right folders if needed. For example, if a soundtrack is created, the tool will look for the .WAV register in the XML and will import it in the folder Sounds.

Then, the tool does some reflection for every event and functions of actors that are referenced in the XML and the scene. It places the keys event trigger and repeaters at the key frame referred in the XML. Following are all the element of a sequencer such as cameras handling, sub sequences handler or skeletal animations.

After few seconds, the Level Sequencer will open and a window will described what the tool imported, modified and the eventual error

Creation:

This tool was created to reduce to minimum the work of the producer on Unreal to obtain a screen looking like his editing. I had to discuss a lot with him about the UX of the tool. Furthermore, the tool is used to import sounds, animations, Niagara particles or gameplay events, so I talk to every member of the production to adapt the tool to their needs and capacities.

I did a lot of reverse engineering on the tool to recreate all the event that can be call when any .Uasset are drag&drop in a Level Sequence. To do so I analyzed the code of the UMovieScenes module and all its dependencies and linked library. I had to rework most of the helpers and extensions so the tool can be implemented on any project that only have the UMovieScene module.

I also workaround some problem of the Level Sequencer like its UI repaint and serialization. To do so I had the opportunity to use the Unreal Development Network and directly asked Unreal developers about issues that they haven’t yet been focusing on.

Finally, with the C++ I also used Python for its XML parser: Beautiful Soup that didn’t had restriction like the XML parser proposed by Unreal.

Timeline:

In order to debug and visualize easily, I create a sequence player in runtime that I called the Timeline. It works like a video player like you can find on VLC or Youtube, we can move forward or backward in time with a slider, pause the timeline and chose which chapter we want to go to. Because the Sequence tool can create a lot of actors’ events, I adapted the Timeline so every gameplay, sound or cinematographic events appear in the state they should have been if the experience was played without the Timeline (which was easy for triggers but way harder for repeaters and Niagara emitters).

Sills acquired:

- I improved my skills on Unreal C++ and on Python.
- I learned to use reflection to create the most adaptative tool possible.
- I learned to create modules, plug-ins and libraries on Unreal.
- I improved my knowledge on needs of every production job of video games.
- I improved my UX skills to create an ergonomic tool.