Shindy Leong shared an enormous breakdown of the Abandoned Arcade project, shared a lot of useful tutorials, and explained the workflow step-by-step.
In case you missed it
You may find these articles interesting
Hi everyone! My name is Shindy Leong and I’m an Environment Artist from Sweden. I first studied Game Design in Sweden, but my understanding and knowledge were still quite insufficient. So I decided to continue my education at the University at Worcester, in the United Kingdom. I began the Game Art course in 2018 and will graduate in 2021.
I have worked on several projects including props, materials, 2D group projects, characters, and created environments. There have been a lot of varieties, but I discovered my passion for environments due to having more freedom.
For my most recent project, I have worked on the Abandoned Arcade in order to learn the industry standard. My goal for this project was to help me improve my lighting, composition, storytelling, and texturing skills.
And for my recent project, I have worked on the Abandoned Arcade to be able to learn the industry standard. My goal for this project was to get better at lighting, composition, storytelling, and texturing. I wanted to learn the essential softwares utilized in the game industry such as Substance Designer, Substance Painter, Unreal Engine, Marmoset Toolbag, and Marvelous Designer.
References and Planning
I got inspired by an article I read about the Abandoned Arcade in Fukushima, Japan which was caused by a nuclear accident. As I did further research I also got inspired by Chernobyl as well. The dark environment appealed to me, I liked the ideas I could incorporate into the scene.
I began collecting reference images using PureRef. I took inspiration from games such as The Last of Us II, The Division, Watch Dogs, and Rainbow Six Siege, which I used as benchmarks. I also went to Worcester's Retroids Arcade Bar to gather my own reference images, this is what I enjoy the most about being able to take my own photos because I can capture various angles and details. I used Tim Simpson's method to keep everything organized where I split the references into categories like assets, lighting, textures, materials, and details. Since the scene takes place in 2020 during the pandemic, I had to make sure that the arcade machines and other assets were accurate representations of what you would find in today's arcades.
I created a plan for everything since I had my limitations and time frame, such as creating all of the assets and learning all the software. Due to a large number of assets, I created a spreadsheet to plan the workflow for each asset and divide them into high and low priority assets.
I began blocking out in Maya since I wasn’t familiar with Unreal Engine. I used a game exporter to export the blockout to the engine. I used a human character for the blockout to keep the proportions of the assets correct. I also made sure the pivot point was in the right place, I would place the pivot point on the bottom left or right. This ensures that the asset snaps to the grid, this sped up my workflow. In Unreal Engine, I used directional light and a skylight with an HDRI to quickly set up the light for the scene. I downloaded it from HDRI haven which is free to download.
The settings I used for the Grid Options in Maya. 50 units are half a meter in Maya which is 50 Unreal units in Unreal Engine. I like working with 50 units as it works great for modular assets, smaller and larger assets to work with.
I did a paintover using Photoshop once I was happy with the blockout, it helps me visualize the scene better. My 2D skills aren’t the best, but as long as I could get a concept and visualize the scene, I was ready to start producing the Abandoned Arcade scene.
I made an asset measurement sheet before I started modeling to make sure it’s accurate to real-life scale. I used Arthur Abeen's approach to model the assets, following the first blockout, secondary blockout, and final asset. Secondary blockout brings the shape and allows me to visualize the assets together. The last step was to add details and make the asset game ready. I found this method very useful for someone like me, I tend to get easily distracted by details. Afterward, I used Soften Edge on a few edges to get a smoother surface.
The process for the assets was pretty much the same, modeling an UV unwrapping in Maya, sculpting in ZBrush, baking in Marmoset, and texturing in Substance Painter. Some assets required baking, such as the gas mask. The Abandoned Arcade is aimed at a third-person game, so I worked with a texel density of 5,12 px/cm. I didn’t know much about texel density, although, I recommend Leonaro Lezzi’s walkthrough as a great introduction about texel density.
I started with the dance machine which was a high priority asset and a hero asset. Since this was the first asset I created for the project, I did most of the experiments on it, as I was learning new applications at the same time. I used color ID to separate the different materials to make it easier to texture in Substance Painter later. I created a high poly model to bake the details on the platform onto the low poly model. It was important for me to keep the dance machine detailed because it's closer to the camera and requires more detail. I will explain the texturing process further down.
To prepare the assets for sculpting, I subdivided the model in Maya and imported it to ZBrush to add details. I used alphas and brushes like Clay Build Up, Clay Tubes, Smooth to get the shapes, and Dam Standard to add details. The details I sculpted weren’t too complex.
I exploded the low and high poly mesh to Maya before exporting to Marmoset, I used this method to get a clean bake. My tutor Chris Pearce suggested this method since I had been experiencing issues with bleeding in Substance Painter. Before exporting the low and high poly meshes, I made sure they were in the exact same position. I personally prefer using Marmoset for baking, as I like the preview bake and it allows you to change the cage.
I used different methods for texturing, including Substance Painter and Substance Designer I was unfamiliar with. I did some experiments beforehand to familiarise myself with the software. Substance Painter was used for all assets and Substance Designer was used for modular assets.
I picked up Substance Painter pretty quickly and learned various methods to work efficiently. The texturing was heavily focused on adding damage and getting the worn-off look. I created my own alphas in Photoshop and used the alphas Substance Painter provided to stamp on the mesh. Decals, grunge, broken glass variants, smart masks, and other brushes were other methods I used to add the details.
To create the broken glass I used three layers. The first layer was to outline the mask, on the second layer I painted on the cracks, and for the third layer, I used a soft brush to add soft white shadows to enhance the details.
For the decals, I used something called Channel Mapper I downloaded from Substance Share which is for free. I used the Channel Mapper to adjust the roughness and height of the decals. Looking at the reference images, the decals on the machines had a bit of height and this was a great tool to use. For smaller assets, I used paint layers more often to add specific details.
To save time, I used smart materials and made some manual adjustments to the layers such as replacing the materials as an example. I saved the customized smart material so I could reuse the smart material on the next asset. This was particularly useful for the arcade machines that had the same materials. At last, I used the filter sharpen to make the textures crispier. To keep the consistent quality and achieve realistic results, I used reference images to get the unique details I gathered online and from the Retorids Arcade Bar in Worcester.
In Substance Designer, I created tileable textures for the modular assets. I created two variations of plaster, one in good condition and another one that was in bad condition. I also created a wooden floor and dirt material which I will be using for vertex paint. For the stool, I made a worn-out leather material. Since my knowledge of Substance Designer was minimal, I used lots of tutorials and looked into artist’s graphs to create the materials.
I began breaking down the material shapes first, I followed a method that was used for Assassin's Creed Odyssey. Vincent Dérozier and Pierre Fleau discussed the material process and I found the discussion to be very informative. The process is pretty straightforward, the material shapes are sectioned into larger shapes, medium shapes, and small shapes. Starting with the larger shapes and working my way down to medium shapes, medium shapes are the most important as it tells a story and enhances the details.
Tutorials I followed to create the materials:
Clean/damaged plaster Material:
The materials I created in Substance Designer were then used for vertex blend for the walls and floors. To get a 3 vertex blend and height lerp, I followed the three tutorials below to create a vertex blend master material. This was a good option since I wanted to prevent repetitiveness on the tileable textures.
- To set up the master material I followed the Tech Art Aid tutorial to get a 3 vertex blend and height lerp. Heightlerp was important since I wanted dirt material to sink into the planks.
- I used material functions from Alexander CZ to use the parameters to implement for the master material.
- To connect the nodes I followed Ryan Manning's method to separate the channels.
This is the master material I created for the vertex blend and height lerp.
I used the 3 vertex colors blend for the two plaster materials I created in Substance Designer including a green color tint.
The other material instance was a blend between the wooden floor material, dirt material, and a dark color tint.
I had a couple of repeated textures in my scene that I implemented for the trim sheet. This was my first time creating a trim sheet, I used it for the skirting board, planks, table, painting, door frame, shelf, chalkboard, pipe, and door handle. I followed Tim Simpson's trim sheet tutorial, he goes through the whole process. I definitely recommend this tutorial by Tim Simpson, it’s straightforward and easy to follow.
First, I made a list of assets I could reuse the trim sheet. I quickly created a texture in Photoshop to ensure that the textures were correctly scaled, aligned and which parts needed to be repeated. The older trim had too much unnecessary space, so I reduced the trim space by adding another wood variation.
I used Maya to SubDivide the low poly and then exported it to ZBrush. Although the sculpting was mostly focused on the wooden planks, I used the same method for the whole trim. To show some damage I added some smaller damage around the beveled edges. Once again, I followed Tim Simpson's - Sculpting Wood Tutorial to sculpt the wooden planks. In Substance Painter, I baked the trim sheet and made sure the trim sheet was seamless by duplicating the place on both sides. This was to assure that the skirting board and metal material were tileable for the walls and pipes. The texturing was similar to the other props, although I used the anchor points to enhance the details.
I have never used Marvelous Designer before, but I decided to create the machine covers since it’s a simple asset. It would have been difficult to sculpt all the fabric details, that’s what’s so good with Marvelous Designer as it creates realistic fabric. Whilst looking at the reference images, I was aiming for a water-resistant fabric which is a harder material with fewer folds compared to silk. I also used the sculpt tool in Marvelous Designer to smooth out any weird folds.
I used ZBrush to get a cleaner topology and reduce poly count, I followed 3D Tips - Marvelous Designer to Zbrush Workflow/Clean topology with Subdivision(Maya Required). I used ZRemesher and adjusted Target Polygons Count. Then exported the original flat cloth and remeshed flat cloth to Maya.
I exported both cloths to be able to transfer the original UV to the remeshed flat cloth in Maya. These were the settings I had. To transfer the cleaner topology to the machine cover I used the Transfer Attributes Option. Lastly, I did the texturing in Substance Painter to increase the sewing lines and enhance the folds and wrinkles.
Normal Edge Decals
I used normal edge decals to add damage to the props and modular assets. The assets would look too perfect for an abandoned arcade otherwise. I followed Leonardo Lezzi's guide for normal edge decal. The process consisted of Maya, ZBrush, Substance Painter, Photoshop, and Unreal Engine.
I set up a simple geometry and subdivided it, I softened the edges to prevent sharp edges when baking later. For a cleaner bake I beveled the edges for the high poly, this flattens the empty spaces for the Normal Map. It made the process a lot easier when I had to tweak the texture in Photoshop.
I sculpted three plaster damage variations and one wood damage. I baked it in Marmoset and adjusted the texture in Photoshop to mask the shape. I used a soft brush first and then refined it with a hard brush to make it more precise. It was important I was precise with the masking, otherwise visible black lines would appear. The geometry was then placed on top of another mesh, giving the surface more depth.
Megascans and Gumroad
Due to limitations and time frames, I used free assets to fill up my scene. These are mostly smaller assets to tie the scene together. I used free assets from Megascans such as planks, ivy vines, and trash bags. I already created planks but needed some more variations, therefore I used Megascans. From Gumroad I downloaded a light switch and plug sockets to fill in the empty spaces on the walls.
Composition and Storytelling
I had the composition set up in my concept, but I ended up changing the camera position and moved a few assets to make the scene more visible. It created a stronger camera angle, and the leading lines appeared stronger as well for the dance machine, stools, walls, floor, etc as everything was pointing towards the room with the red flickering light. To symbolize a broken and unstable scene, I kept the decals and assets non-straight square to symbolize a damaged and unstable scene. Since it's a one-point perspective, the focal point is more noticeable, and the red light is in the middle, making the focal point stronger.
I wanted to make the scene mysterious and tell a story. I have used decals to give a hint about the setting, newspaper on the dance machine informing about the location, and the position of the gas mask, which is closer to the camera to show it’s a radioactive place. I focused heavily on the texturing by adding dust, damage, and vertex paint to show it’s abandoned. Besides that, the broken ceiling shows vines have been growing into the arcade giving an idea the place has been untouched. The decals were a way to show the owner’s personality such as the graffiti wall and posters.
I was having trouble with the lighting at first since I couldn’t get the atmosphere I wanted. My knowledge of lighting was also lacking, I still have a lot to learn about lighting but has definitely improved. Before I started over with the lighting, I researched the world's settings and lighting settings in Unreal Engine. I came across this great informative video by Lead Artist Jerome Platteaux going through different ways to light up your scene, I really recommend it.
I used a skylight with an HDR and a Directional Light with an intensity of 4 lux, 3,14 lux intensity provides more natural lighting. To make the light shaft more intense, however, I increased the intensity to 4 lux, the light shaft requires an Exponential Height Fog for Volumetric Fog. I used the Victory 3D tutorial to set up the light shaft and light up darker areas. I placed a light portal near the broken ceiling, this will increase the number of light rays in the light mass resulting in better lighting and shadow.
To capture the surface of the wooden floor, I used a box reflection, which also strengthened the silhouette for the decals. On metallic materials like arcade machines and stools, sphere reflections were used to improve the accuracy of the reflection.
I used Baked Lighting since the scene didn’t have animations besides the flickering light. I also used direct and indirect lighting to highlight the details in the scene and light up darker areas. Since the scene is rectangular, I found it easier to work with Rect Light rather than Point Light, Point Light was used to highlight details. Since the light is coming from the ceiling, I used the Rect Lights to isolate the light from coming from all directions.
While researching into lighting, I came across Brian Leleux's 80 Level Article talking about how to achieve natural lighting and shadows. I adjusted the temperature for the string light between 2000-6000k, which provides more accurate lighting for realism for household bulbs. The scene looked more interesting as it had a combination of cold and warm tones.
Once I was satisfied with the lighting I tweaked the post-processing color grading and color LUT. I wanted to keep the natural lighting and improve the shadows. The post-processing settings brightened the shadows and increased the contrast. I didn’t do a lot of changes, but to change the mood of the environment I used LUT downloaded from the Unreal Engine website. I took a screenshot of the scene and used Photoshop to edit it. I used image adjustments to brighten the shadows and give a colder tone.
To improve lighting quality in the final production build, I increased the values in World Settings > Lightmass Settings. As an example, increasing the value of Num Indirect Lighting Bounces will result in more precise lighting. I followed Polygon Academy and Jerome Platteaux for the settings. Increasing the values will slow down the build time, but the results are definitely worth it!
Now that I have finished my final year at the University of Worcester, my advice from these three years would be to be passionate about learning as it’s going to make the process more enjoyable. I was unsure about this project at first, but I learned to trust the process and believe in your work by putting in the time and effort. And definitely ask for feedback as sometimes you don’t see what other artists see, and there is always some great advice!
Lastly, I’m really glad I got to do this opportunity with 80 Level and I hope this article was helpful and thank you for reading!
You may find these articles interesting