For the past few months I have been looking into modular based level construction and have taken a specifically interest in learning about it’s processes and and how it optimisation. Here am going to try to review what i’ve found out about it so far.
What Are Modular Components
From my understanding, modular components are a series of, sometimes compartmentalise, architectural assets that are made to so level designers can construct full levels from reusable parts in the editor. While this method can limit some visual variation it, when done right, can offer a lot of befits from a production and performance perspective.
How to make them
My first look at modular components was the game jam in January. Here I stuck to very simple geometry based components and worked on ensuring they all simply synced up together properly. After referring to some industry examples such as those seen on this blog: http://www.thiagoklafke.com/zestfoundation.html and the modular sets I could find on unity assets store I started to go into more detail with my experiments when working again on ‘Balance’
Separating The Sides
While still block shaped, these newer components had an individual model for each side to reduce the amount of wasted faces(based on what I found looking at this example http://www.thiagoklafke.com/starcraftscene.html). While supposedly increasing the efficiency of the components(I need to look into this bit) it did make them significantly more complex to use, especially for my designers. To counter this I started to look into editor scripting.
Editor Script Version 1
It was at this point I made my firsts block editor script, as show in the video above it made it so all potential 5 sides of the block could be handed by simply ticking a check boxes and moving a slider in the inspector, greatly increasing the ease of use of these components.
It was after this point I finally got some design maps from our designers to start planing some practical level construction with. I continued on to update my workflow from these block based prototypes to actual architectural assets.
At this stage I started to use the process of whiteboxing so I could give the designers something to use while I worked on finishing the assets as soon as possible. To do this I focus on first figuring out the block variations the level would need before making the block-outs to use temporally in engine. Above is the visual list I made for all the potential variants for the under temple area before modelling.
As I had started with the block experiments I still separated the architecture by it’s sides, floor objects and their accompany walls stayed separate as shown above.
Editor Script Version 2
Once these blocks were finished I updated the old editor script to make setting up the new set prefabs easier and arranged them engine side. Above is a video showing how it worked with the under temple wall and floor sets. Primarily my focus was to try to make this script as easy to use as possible so the designers could have easy access to all the different variations of my components but without having to learn how they worked in-depth.
In the end the designers still found the script, and majority of the assets, to difficult to build with. In the future I am going to try and figure out how I can reduce the amount of needed variants while still keeping the models properly synced to help make this simpler.
Optimisation And Future
While i’ve done the most I could from just observing assets made for modular workflows there are certain things I just can’t figure out without seeing them in use, such as how they are set up for real time optimisation.
My hope is to continue this research into making my assets run as efficiently as possible in runtime. Making objects static, reducing draw calls, texture atlases, merging meshes, LOD and occlusion areas are all things my research has lead me to believe I will need to look into to fully be able to utilise both modular based and other systems in the future.
For now, while I still believe there is a lot I need to figure out, I feel I am at the least looking into the right areas to start and will be continue to experiment this whenever I can, specifically in regards to the performance and technical side of things which I think is essential to be able to do this, or any element of game art or design, properly.