Aspiring environment artist Dominic Shaw gave a detailed explanation of how he managed to build the amazing project “American Diner”. It’s a great example of how you can use Unreal Engine 4 to build complex interactive environments with very complex lighting setups. Plus Dominic also talks about his experience with Substance Painter.
I’m an environment artist from the UK currently graduating from the Game Art Design Course at De Montfort University in Leicester. I originally studied a game design course at college before going on to study a more art specific course at University. Throughout the past few years, I spent my time mainly drawing and focusing on concept design, I have only just recently started to focus more on 3D environments and I have learnt all that I know from the tutors and fellow students on my course. Some of the past projects that I have worked on is a group project of four where we recreated the Andy’s room from the film ‘Toy Story’ and a New York rooftop game level.
Final Major Project
Currently, I have been working on my final major project of University, this is a long project where we get to write our own brief to suit our specialities and interests, in which I focused on environments. I decided to make an American diner in two different points of time where my main goal was to test different lighting scenarios and to show how the same diner building can be set dressed to suit different time periods and themes. The two time periods that I focused on was a 1950’s diner and a modern day diner, I wanted to gain has much variation as possible between the two game levels so I decided to make the 1950’s diner colourful, brand new and in a day lighting scenario whilst in the modern day diner I made it into a horror crime scene so that I could mess the place up in a night time lighting scenario.
The biggest challenge that I faced in this project, was making the 1950’s diner, this is because there was a lot of different design decisions that I had to make to build the original level, such as the layout of the level, the style, the assets and many more. Whilst in my second level, I already had a solid base to work from, I knew my composition, I knew the level layout and overall there was just a lot less decisions that I had to make at this point of the level. All I was doing is making assets more modern, changing the lighting, textures and adding new assets to suit the theme. The reason that the 1950’s diner was such a challenge is because this level was the foundry of the entire project, if I didn’t get this level right, the horror level wouldn’t be right either, so there was a lot of pressure on the making of the 1950’s diner.
Due to me having two separate levels, I knew that I needed to present each level in the same way so that you would have a good comparison to look at, I did this by using the same camera angle and position in the engine. I wanted to take this opportunity to show to you how I decided what area of my level I was going to focus on for the final renders and the design process that I used.
I started out at the beginning of this project by making a lot of blueprint variations so that I could come up with an interesting player route and game level. I then used this blueprint to create a basic block out using BSP in the Unreal Engine. I always like to start out using BSP for the basic layout and then once I am happy with the scale of the level, I go back in and change everything to static meshes.
I then did some drawings over my 3D base model so that I could get an idea of what the level was going to look like which helped me gain a better understanding of the assets that I needed to make.
Once I made all of my 1950’s game level, I had a lot of different areas and compositions that I could focus on, I decided to focus on the area that you see in my final renders because it had a really interesting base to work from with nice perspective. I took a print screen of the level, took it into Photoshop and used the rule of thirds to place my assets. At this point I open up an new viewport in the engine and set it to my camera viewport, I then place this on my right monitor and work on my engine file on my left monitor, allowing me to place assets in to the scene and instantly see what the final result will look like.
This is a great method to work out composition in an image, I started out with a simple rule of thirds represented by the blue lines, and I then broke this down further by splitting each half of the image into another rule of thirds represented by the green lines. As you can see each of assets are placed where the lines cross each other and I went onto place my focal points which are circled in red. Three is the magic number when it comes to composition, it’s good to have three focal point whilst also having a good foreground, middle ground and background.
The next version of the level that I made entirely for this one render rather than making an entire level and I also had a good starting base. I made a copy of the 1950’s level and deleted all of my assets out and removed all the textures, this allowed me to keep the exact same camera angle and meant that I didn’t have to start the level from scratch again. Therefore, I spent a lot longer focusing on this one area unlike I did in the 1950’s level when I was focusing on an entire level. I yet again used the same rule of thirds method which you can see in the images below. If you would like to see more of how I made this part of the level, check out the blog on my portfolio linked at the end.
When it comes to my asset production I always like to model in 3ds Max, Zbrush for sculpting more complicated assets and details, then I use Substance Painter or Bitmap2Material for texturing. Asset production was a very important part of this project and I had to make sure that each of my assets suited the correct time period that I was working on. When I am designing a level, I always do a lot of research on each asset that I am going to create, this way I can really understand the object and gain good modelling and texturing reference. As this is a very time consuming stage of any project, it is important to work a quickly and efficiently as possible, in my case I like to keep everything in separate stages and complete each stage at a time. This means that I will model every asset, then I will unwrap every asset and then finally texture asset, I find that this way really helps me speed up my workflow and it makes it easier for me to sort what assets are going to be placed onto the same texture sheets. Another aspect that was important in my asset production is excel spreadsheets, for any project that I work on, I always make a list of all of my assets and prioritise them into how important they are in my scene. I always start with my hero assets and work from there, I will then mark down in different colours when the asset has passed each stage in the asset creation from modelling to texturing. This can sound a bit dull and pointless, however it really helps to make sure that you don’t forget about any asset and it shows you what work that you still have left to do on each asset. You can see a few examples of my assets below.
In my opinion the perfect way to build assets for a project such as this one is to always start out with research and reference into each specific asset making sure that they fit the time period. It is also important to make sure that each asset has the right amount of weathering, for example in my 1950’s diner, everything was nice a brand new so there was not much dirt, however in my modern diner, some of the assets has been there throughout several years so it was important that these assets had the right amount of ware and dirt.
At the start of any project that I work on, I always do a lot of research and create several mood boards that I can refer back too, I do this so that I am able to gain some ideas of what visual style I am aiming for. I knew that I wanted these levels to be as realistic suitable for Triple-A games, one game that I was looking at for reference throughout the project was ‘The Last of Us Remastered’ as this does a great job at gaining realism and material definition. I found that I did a better job at creating a realistic level on my horror diner due to improvement over the project and the fact that for this part of the project I only focused on the area of the camera rather than an entire level.
Throughout this project I created several mood boards to help me, I started out by making a mood board that focused on diners in general to give me ideas of what a diner actually looks like. I then made a mood board of just specific 1950’s diner reference and then I made a mood board that focused on modern bars and restaurants and another one for the crime elements of my horror scene. Whilst doing this I was also looking at a lot of reference to help me with each asset and lighting scenarios, you can see the mood boards I created below.
All of the images above really helped me with developing the visual style for the level and they helped me decide on the colours that I was going to use.
In my levels, it was very important that there was as much variation as possible and colour was one of great ways to do this. To work out the colour on my 1950’s diner I did some really quick colour comps to figure this out.
I always find that when it comes to texturing an interior, it’s best to get the walls, floor and roof figured out, it already feels like 70 percent of the level is textured and it makes it a lot easier to figure out what colour the assets in the room should be. In my horror level, I knew that I wanted brick and wooden panels for the walls with laminate flooring so once I had they textured it became a lot easier to figure out what colours to use for each asset. If you have done your research on each asset you will already know what colours are used in real life for each asset so this makes it a lot easier.
When it comes to texturing your 3d assets, the materials are what can make and break them, they are what make the assets more believable to the viewers and makes your piece a lot more realistic. I find that using Substance Painter is a great way to gain realistic and believable textures.
My workflow for texturing is to first figure out what assets are going to be on the same texture sheet as it is important to save as much texture space, I normally put assets with the same material definition on to the same texture sheet or just assets that group together such as all the furniture in the level like chairs and tables. I will unwrap all of my assets separately in their own file without packing them, I will use excel again to work out what assets are going to be on the same texture sheet and use that as a guide.
Furthermore, I will create a new 3ds Max file and import each asset that will be going on to the same texture sheet into one file and then texture pack all of them on the same texture sheet, this is pretty standard workflow. I then go onto assign each asset a different material ID and export the file and bring it into substance painter, by doing this you can hide each asset in substance and they all get their own folder to work on and I will assign objects with the same texture to the same material ID to make this faster. The only problem with this workflow is that when you come to export your textures it will export each asset to their own texture sheet, so if you have five assets in one substance file you will get five separate textures. You can avoid this happening by not giving them separate material ID but this mean that you won’t have separate folders to work on in Substance Painter and they will all export as one texture at the end to save compositing. This is a faster workflow but for me personally I like to be able to focus on each separate asset at a time and having separate folders really help for this. Once I am happy with how each textured asset look in the engine I will go into Photoshop and composite the textures so that you only have one texture sheet, this process can take a while but I have not yet found a way to composite the textures straight from Substance. An easy way to composite textures is to render a UVW template for each of separate asset from the file you used to pack that the texture and then in Photoshop you can use masks for each asset area, you can see this process in the photos below.
Texture pack in one file.
Give each object a separate material ID and export and import into Substance Painter. Notice that on the left you can see the title of each asset, I did this by naming the material ID in 3ds Max, this is also the name that your textures will have so it is important that you keep this tidy. When I come to export these textures from Substance, I make sure that to select the setting that exports the files for UE4.
I then import them into engine and keep a folder for each texture sheet so that it is easier to find each texture. Once I am happy with how this turned out, I will go into Photoshop and make a new folder for each asset on the texture sheet. I tend to normally only use an albedo, normal, roughness, metallic and emissive maps. In each asset folder, I will create a sub folder for each of these maps and then place the correct textures exported from substance into the right folder in Photoshop.
I render a UVW template for each object from the 3ds Max file shown above and use this as a mask for the bag folder in Photoshop.
I made the majority of my materials this way, other textures I made are all tile-able in which I have two different workflows for this. The first workflow is to take the texture into bitmap2material where you can gain some good results and you can make the tile-able quite easy. The main workflow that I want to show you though is how I made my tile-able brick texture in my horror diner.
I started out by making tiling bricks in 3ds Max, these are really quick and easy just to get the right size. Once I happy I took this into Zbrush to sculpt the brick details and damage. I exported this back into 3ds Max and changed each brick to have a different colour materials and added a skylight. I then baked down onto a plane a normal, height, diffuse and lighting map. I then brought the plane that I baked the models down on to in to substance painter and used the masks that I got from the diffuse map by changing each brick to a different colour to texture each brick.
In the image below you can see how I made the material, I created a simple UV tiling so that I could make a material instance and change the brick size and I inserted a bump offset to get the depth of the bricks.
I always love this part of the level as I love to see the difference that adding light and shadows does to your level, it’s amazing how much more realistic this makes the level. The way that I worked out of what type of lighting I needed to use in my two levels for day and night scenes was simply through a lot of research and collecting lighting reference. I found the lighting was a bit more simple in my 1950’s because once I added the directional and skylight into the level and gained so interesting shadow shapes, it was simply a case of adding low intensity spotlights for the lights inside, whilst in my horror level it was really hard to keep the level dark and on a few occasions I had to lower the intensity of my lights and delete a few out as the level became too bright.
When it comes to lighting my scenes, I have a process that I follow and it’s work quite well for me so far, they may be some better and more efficient ways out there for this but at the moment I am happy with this workflow that I will show to you.
I start out by working in unlit mode in the engine throughout the entire modelling stage and unwrapping stage, I will then quickly place lights within the level so that I am able to see what my textures will look like and I start to work in the lit mode. When I am happy with the placement of all my assets and everything is unwrapped and textured, I make a copy of the level just to be safe. The reason that I make a copy at this stage is because it allows me to reload the level at this stage and light the level in different lighting scenarios and it’s always good to back up your work!
I now have everything ready to start the actually lighting stage of the project, I open up the new copy of the level and start out by deleting every light in the scene including the directional and skylight and then rebuild the lighting. At this point everything in the level will be black and this is simply like a blank canvas to work on, where you go from this point depends on what time of the day you are aiming for. Yet again at this point it is great to research some more reference and really look at what time of the day you are aiming for, by using some reference you can see how the shadows react and it gives you a good idea of what the colour of the directional light will be.
In my levels, I was aiming for a nice morning scene with long shadows and sun beaming in, I changed the directional light to be a bit more yellow and I was going for an overall yellow/ blue colour pallet. In my horror diner I didn’t include an directional light as it was night and the directional light normally represents the sun, I did originally place one in to get some nice moonlight coming through the windows but I just didn’t like the shadows that I was gaining from it so I decided not to keep it. It is always good to get some good light and shadows as this really makes the level look interesting and realistic, at this point I am constantly rebuilding lighting and comparing the before and after by taking print screens and placing them into Photoshop. I will also place a skylight in which will make the level a bit lighter.
The next aspect that I add into the level is an exponential height fog and change the colour of this to match the colour of the directional light, it just gives you that extra bit of realism and mood. Lighting plays a big part of the mood of your level so yet again it important to research what type of mood you are aiming for, looking at film screen caps is a great way to do this. The next stage is adding spot lights and directional lights making sure that they are set to static and I place them at where the correct positions of where the lights are. I also play around with IES profiles of lights which you can download for free offline here and they allow you to change the way the light scatters so that you can gain more realistic lights, to use these simply import them into your level and change your light to moveable then drop them into the material spot in the light settings.
Once I am happy with the colour and intensity of each of my lights and I am happy with the way that look when the lighting is built, I move on to add low intensity spotlights around the emissive parts of my level, this is because emissive do not affect the light in any way and make sure to change the colour of each light to match the colour of the emissive, you can see how I have used this method on my exit sign below.
It is important to make sure that you have a light importance volume in your level that so that covers the entire level so that the engine can focus on what areas of the light which should make the lighting build faster. Another thing that I add into my levels are sphere reflection captures which allows you to gain some really nice reflections on your materials adding another level of realism. I then add a post processing volume and play around with post processing settings making sure that it is set to unbound so that it covers your entire level. The setting that I use for this change depending on what type of level that I am working on but some settings that I often use are bloom which just makes the lights a bit softer and gives it a Gaussian blur. Depending of what scene I am working on I add a vignette which makes edges of the camera render darker allowing more of a focus to the centre of your image. I also add some slight depth of field using a Gaussian depth of field, it is important not to go too overboard with this has it can ruin your level if it’s not used properly. Furthermore, I add some ambient occlusion into the level which makes the shadows a bit darker and more realistic.
At this point I am practically done with the level, I sometimes take a render of the level and place it into Photoshop then use the colour look up table to do some slight colour grading, however I have found that this doesn’t always work for the best and you can gain a good level without in my opinion, but if you want to do some slight colour tweaks this is a great way to do it.
That’s the full process of my lighting that I use for each level, the settings will always change depending on what the level and the lighting scenario that I am going for, I have included a few images below that shows you the lights in my levels.
I started this project by making a fully playable game level for the 1950’s diner to show my environment art skills, I managed to achieve this goal and I have included a few more shots of the level below. I had around 6-7 weeks to make each level which broke down into two weeks modelling, one week unwrapping, two weeks texturing and one week lighting. I found that in my levels I wanted to go for more quality rather than quantity, so in my horror diner I decided to only focus on the area of the camera render rather than the entire level. I had enough time to make two entirely playable levels but they would only be two average levels for the time that I had, so I wanted to really show off my skills in asset creation and texturing and by focusing in on one area I had the time to do this. Even though the horror level was only for the render, I used the exact same technique as I would to make a playable level. Most of my assets are very modular so I could easily turn this horror level to match the full 1950’s level, but I would have to change the layout of some of the crime assets in the Horror level so that you would be able to walk around the level smoothly.
Advice that I would give to people trying to make 3D scenes like these ones would be to make sure that they start out by doing the research into the environments and assets that they are making and then doing the right amount of project management. What has helped me improve so much over this project is by setting myself goals for each stage such as finish all unwrapping in a week and by doing this you get used to working to deadlines and you will become a lot faster at working. When working on big environment projects, it is so easy to forget about an asset and to lose track of the work you was doing as there is so much to do, so I would definitely recommend using to do lists and creating asset lists and texture lists. It’s important that you work on your assets in order of importance to your level because there is no point in spending a lot of time working on one asset that is a very small part of your level, so work from big assets to small.
I also recommend doing a lot of sketching and paint overs of your level, yes you might be making a 3D level but 2D is a great and fast way to get your ideas down and to problem solve, I always do this on any project I work on and it is has helped me to make some of the major design decisions in my level.
When it comes to the creation of your levels, I recommend starting with the layout of your level, build a basic block out to scale and come up with an interesting route that your player can take before adding any assets. Then start out with the big and modular assets and work from there, do several design passes you model smaller and smaller assets each time. In my project, I started out with a block out in BSP in the engine, changed all the walls and everything to static meshes and then started with the big assets such as tables, bars and booths and then did several design passes of smaller and smaller assets, an example of one of my design passes was creating all of the assets you would find on a table at once. This way you just get more of an order to your modelling process and you can decide on your compositions early on. The final advice that I will give you is to make sure you focus a lot on your material definition of each individual assets, you can worry about the placements of them in your level later, and it’s the material definition that will really make your level look interesting and realistic.