Tommy Hallam talked about the work process behind the Destroyed Street project, shared how better optimization was achieved, and explained what helps to make an urban scene.
My name is Tommy Hallam, I am a newly graduated 3D Environment Artist from Escape Studios. I got into 3D art four years ago when I started studying Game Art at university. I have worked on a bunch of student and personal projects in the past and have just graduated from university with a Master's degree in Game Art and am now looking for job opportunities in the games industry. I learned a lot of the basics of 3D art at university and developed them in my free time through tutorials and articles/breakdowns from other artists.
The Destroyed Street Project
I wanted to learn how to create destruction for games, this was the focus of the project, so I picked references that helped me break down and understand what I wanted to create as an end result. I love the “grungy”, dusty, destroyed look of the environments in games like “Tom Clancy's The Division'', which is a game that I used a lot for reference and wanted to somewhat imitate when creating this scene.
I gathered a lot of references from real life and from other artists and picked parts that I liked and wanted to bring into my own work. When working with references, I tend to stick to one main reference image that I want to create but use aspects from others that I like and want to include if they fit with the style and theme.
On the production side, when it comes to making the modular assets, planning them out is in my opinion the most important stage of the process. When working modularly, it is incredibly important to make sure that all the pieces you make snap together properly before you start working on any details for the individual pieces. The size of the modular pieces was also important when it came to meeting my desired texel density, due to this, I wanted to keep the majority of my modules at a multiple of 2 meters to make sure all of the tiling textures tile properly across each piece.
Before starting on a modular kit, I always make a modular breakdown of the main reference image so that I know exactly what pieces I need to make, which I then block out with simple primitives inside a modeling software, in this case, Blender. Once I know the sizes of all the pieces work out, it's just a case of adding more detail and developing each piece into a final asset.
I used Blender to do all of the non-sculpted modeling and took anything that needed a sculpt pass into ZBrush. When doing work in ZBrush, I always like to create a base mesh first in Blender so that I have something to sculpt from. I find it easier to get the base shape and scale down in Blender and then take that into ZBrush and start sculpting damage.
A challenging workflow that I learned for this project was rubble simulations and using them to create rubble pile materials and assets. This involved creating high polys in ZBrush, simulating in Blender to bake in Marmoset and do some clean-up of the texture maps in Substance 3D Painter, then using these materials in combination with already made concrete and brick assets to create the rubble piles.
This was by far the most challenging asset and complicated workflow I used in this project, but some amazing tutorials by Troy O'Shaughnessy and FastTrackTutorials really helped out and explained the workflow completely.
Simulating meshes for materials isn't something that I had really done before, so learning this was a top priority for me as it is really useful to simulate when making destruction assets rather than having to place all of the rubble meshes manually.
As this is a game environment, it needs to run in real-time, so optimisation is important when thinking about how you approach certain assets. For assets like the banners and the signs, I used atlas textures so that I didn't have to have a different texture map for each variation. An atlas texture is when multiple different assets are textured on the same texture sheet. This means that I have only one texture set each for these assets and can simply swap to meshes with different UVs if I want to change to a different sign or banner variation.
My scene is very modular, so to help break up the repetitiveness, I created a master material with vertex painting and a lot of controls over each of the materials it had inside of it.
Vertex painting is a really useful tool when a lot of the environment is using the same or similar materials because it lets you easily add different variations and breakup to each modular piece. I then added more controls for each different vertex paintable material, such as lightness, roughness, desaturation, and more. Using the “MaterialAttributes” and “HeightLerp” nodes allowed me to blend multiple full materials together using vertex colour and a custom mask, this means that I can get good-looking vertex paints on my modular meshes even though they are low poly.
Being able to make texture adjustments on the fly with these controls speeds up the process of working with these materials a lot as it means I don't have to go back into Substance 3D Designer or make a new material every time I want to slightly change, for example, the roughness on a specific modular piece or asset.
Decals were also something that I used extensively to get the scene to the quality bar that I wanted. Here are some of the decals that I made for this scene. These deferred decals do a really good job of adding more interest and breaking up the repetitive "gamey-ness" of the environment.
Places like Textures.com and Megascans are really good if you need to find some quick decals for your projects. For creating these, I used Textures.com to find the base decals and then took it through a small Substance 3D Designer graph to generate some normals and a roughness map which I could use in Unreal Engine.
I also made a master material for my deferred decals so I had more control over how each decal looked. This allowed me to instance them and quickly make changes to individual decals with controls such as opacity, roughness, and a colour overlay.
For texturing, I used Substance 3D Painter and Designer alongside Blender and ZBrush for any materials created using geometry like the rubble.
I found that the key to a good urban, especially destroyed, look is the right level of grunge. I like to work on textures in sections, like focusing on the bricks and grout separately and then blending them together but adding a final few global dust or dirt passes to the texture at the end is really good for tying everything together and making it all look cohesive.
When making a material in Substance 3D Designer, I always like to start at the large forms and gradually work to smaller and smaller details. On the bricks, for example, I started by making sure the actual bricks were the right size and shape and then went in and gave them some larger form edge damage, then a few passes on some more granular edge damage before blending them all together.
I like working this way as it helps me stop making a material that is too visually noisy or does not have the noise focused in the right places. Approaching texturing in this way gets you some really detailed materials while still making sure they are readable from a distance.
Due to time constraints, I didn't want to have interiors to all of the intact rooms for the buildings. This meant that I needed to fake the windows and have them opaque. I did this using roughness and metallic maps to create a shiny reflective effect and blended that with a lot of grunge.
This works in the context of the destroyed street as the building is grungy, dirty, and damaged. This had to go through quite a few iterations before I got something that I was happy with as it is pretty easy to make the windows look really bad when faking them in this way by having the metallic and roughness values set incorrectly. Decals in the engine also helped a lot to vary the look of the windows and add some additional interest.
Scene Assembly & Composition
During projects, I always like to block out the scene in Unreal Engine as early as I can so I can iterate a lot on the composition, lighting, and set dressing. The more time I get to experiment with lighting and composition of the scene, the better it will look in the end, so an early blockout is crucial.
I wanted to showcase the destruction of the main buildings, so I needed to house them in an environment with a composition that pushes these destroyed elements, making sure I had laid out my focal points of detail where I wanted them, using the rule of thirds and leading lines to help guide the viewer's attention down the street and to the important areas of the scene.
Creating a story for the environment also helps to give it some life and believability. For this scene, I wanted to convey that perhaps a bomb had gone off or landed near one of these buildings, and police barricades have been set up to stop citizens from getting near the danger zone. Little stories like this bring the scene up a little bit, from being just a simple street to a street that has a bit of interest and narrative behind it. Having a story can also help to inform how you should place assets around your scene so that it is told to the viewer through the environment.
For lighting, I went with one main directional light and sky light for the main light direction to mimic sunlight and ambient light. The sunlight is really important to the composition of the shot and I didn't want to have lots of different light sources alongside this.
I used a few point lights for ambient light in darker areas around the scene to light them up a little more as I didn't want to have any dark black areas, which would draw attention away from the intended composition.
Like I said above, lighting was a very iterative process which took a while to get it how I wanted and went through a lot of changes in light direction, colour and so on.
I did some colour grading and ambient occlusion changes through a post-process volume. This was mainly to add a vignette, increase the ambient occlusion intensity, reduce the colour temperature of the overall scene and add a bit of brightness and contrast to some specific areas, like shadows and mid-tones. Much like adding grunge at the end of the texturing process, I think doing a pass with the post-process volume helps to tie everything in the scene together and make it all look really cohesive.
I usually leave any post-process changes until close to the end of the project unless it is something major like exposure as I don't want to mess around with things like colour grading or vignetting while I am still getting things in the scene textured and adjusting the composition.
All in all, this project took about two weeks from start to finish, for which I was working pretty consistently on this project over that time. Using some Megascans for the street and keeping the scene relatively small helped a lot in letting me get the environment done in a reasonable timeframe, I didn't want this project to last too long as I was working on this over a couple of weeks' holiday from university, so when the holiday ended, university work would take over as my priority.
The main challenge I faced with this project was the rubble material and rubble pile assets, creating them and getting them to look high quality and reference-accurate. Learning a new workflow on a tight deadline is always tough, especially one where you have to jump between lots of different softwares. Focusing the project around these destruction assets really helped me in being able to focus on them and get them done to a good standard within the time I had.
Some advice I can give to those new to 3D or starting new projects – I am by no means an expert by the way – which is something I have realized from being a student the last four years, is that overscoping in personal work is something that happens incredibly often. I think a key thing for beginners and artists starting out with new projects is to make sure that your project is focused. Keeping the scope small and focusing on developing a few key skills is really important to produce good quality work. I was guilty of this when I was starting out in 3D, you want to make this big awesome project, but so often the quality just won't be there and most of it will end up looking rushed and unfinished.
Making sure to stay small and ask yourself “what do I want to get out of this project, what skill do I want to learn, develop or showcase?” is something that I always try to do when starting new personal work. I live by this way of working as it ensures that I will have the time I need to push quality and not have to worry about rushing to get things done, and it gives me a clear goal with each project.
Thanks for giving this a read, and I hope you find some of it useful for your own projects. Have a great day!
This content is brought to you by 80 Level in collaboration with Unreal Engine. We strive to highlight the best stories in the gamedev and art industries. You can read more Unreal Engine interviews with developers here.
You may find these articles interesting