This might be more of an in-depth programming question, but when I interned at a studio, they had a lot of internal standalone tools for designers or other programmers to use (e.g. an animation previewer, or a dialogue tool). How do programmers make these tools that interface with the engine and other software like Maya?
Whenever a program loads a file, it expects a specific file format for the type of file it is loading. For example, a bitmap (BMP) is literally a map of bits. It starts with a header section that declares file info like how big the image is, and then it goes into a list of RGB values for each pixel in the bitmap. If you have the size of the file and the pixel color data, you can reconstruct the entire image in any app that can read the file and understands how the data are arranged in the file. If the file data don’t match the expected format, the result may not work. This is why many other programs can read multiple file formats - Microsoft Word can read DOC files, but can also read XML files, HTML files, TXT files, RTF files, PDFs, and more. It’s because each of these file types has an established file format that the programmers decided to make Microsoft Word able to read and parse.
Similarly, game engines also read asset data files. A 3D model from Maya is really just a collection of vertex and polygon information. A texture map is an image with some additional mapping data of pixels to vertices on a 3D mesh. An animation rig is mostly a collection of polygon-to-bone mapping data combined with bone movement constraints. An animation is mostly a series of bone positions at specific times. As long as our programmers know how those data are laid out in those specific files, we can make the game engine understand what those data mean. And... if we know how to make the game engine read files in that file format, we can also build other more lightweight tools like animation previewers to read those same file formats and manipulate them.
I’ve worked with tools that allowed me to do more than just previewing animations - they allowed me to attach collision spheres on specific bones in specific animations on specific frames for purposes like the player attacking. We can then create a new file that stores which animation bones that collision spheres attach to on which specific animation frames, and then the game engine can read that data to know when to make attacks active based on animation data. We also made that tool mark which animations can be interrupted during which frames to create attack combo strings - Attack Animation A can branch to combo extender B between frame 35 and frame 60, which can then branch to combo finisher C or combo extender D between frame 24 and frame 56. This means that this tool can be used by combat designers like me to take the animation data from the animators and create and tune cool attacks and combos with the tool for use in game. This is just one example of things programmers can enable when they know how asset data get laid out in a file.
[Join us on Discord] and/or [Support us on Patreon]
The FANTa Project is being rebooted. [What is the FANTa project?]
Got a burning question you want answered?
Short questions: Ask a Game Dev on Twitter
Long questions: Ask a Game Dev on Tumblr
Frequent Questions: The FAQ


















