This was the first game project I worked on at The Game Assembly. I worked closely together with my fellow Technical Artist Elias and Technical Animator Jonas. Together we developed tools and created shaders and VFX for the project.
The game was built using a custom engine developed by our programmers, where we implemented our shaders in HLSL and created effects using the engine’s particle system.
This project was also a big learning experience, since I had never worked with Python or HLSL before, and it was also the first time I ever created any kind of shader. Writing shaders in HLSL and building tools in Python was challenging at times, but I learned a lot during the process and feel that I was able to contribute well to the project and its overall quality. My main responsibility this game project was the texture pipeline, destructible objects pipeline and creating VFX and shaders.
The game is playable on itch.io: https://whiplashstudio.itch.io/spite-equilibrium
Breakables
I was responsible for creating a pipeline for destructible objects from Maya to our game engine. The simulation is done in Maya using the plugin PullDownIt, which fractures meshes procedurally by splitting them into smaller pieces and allowing control over constraints, collision, and break patterns. This lets you simulate realistic destruction and tweak how objects break before exporting.
Once the simulation is finished, the skeletal mesh and animation are exported separately and then imported into the engine. In the engine, the breakable objects remain frozen until they are hit. When attacked, the animation plays, and the object breaks apart according to the simulation.
Below are the four breakable objects I created that made it into the game.
DDS Batch Converter
The DDS batch converter was the tool I spent the most time on during this project. I worked closely with the graphics team to find ways to make their pipeline from texturing to our engine faster and easier.
Textures previously had to be converted manually in programs like Photoshop, which was time-consuming when working with many assets. It was also easy to use the wrong compression settings. In our engine’s texture pipeline, color textures and data textures require different formats and compression types. Using the wrong format can cause visual issues and increase memory usage.
To solve this, I created a DDS batch converter in Python. The tool automatically converts textures to DDS and applies the correct compression based on the texture type. For example, normal maps are converted using BC5 in linear color space, while albedo textures use BC7 in sRGB.
Artists can simply place their PNG or TGA textures into a folder following the correct naming conventions and run the tool. It then processes every texture based on the naming of the texture to export it with the proper settings, saving a lot of time and making the pipeline much easier to use.
Here you can see the documentation for the tool.
VFX and Shaders
I am part of The Game Assembly’s internship program. As per the agreement between the Games Industry and The Game Assembly, neither student nor company may be in contact with one another regarding internships before April 15th. Any internship offers can be made on April 27th, at the earliest.