Jason Chisolm and Hailey Williams explained how indie games and book covers helped build their final project at Ringling College of Art & Design.
Hi There! Our names are Jason Chisolm and Hailey Williams and we’ve put together a little breakdown of our current project, “Keeper.” Both of us have just graduated from Ringling College of Art & Design’s Game Art program. We’ve been in-production on Keeper since the end of August 2017 and did initial concepts for the idea back in the Spring of 2017. One of our main goals with Keeper was to create not only stylish environments but engaging gameplay as well. As we would sit brainstorming about what our thesis project would look like, we always knew it would be a balance of art and gameplay: a fully-realized “vertical slice” of what the full game could be.
A little bit about us: Jason’s primary field of study is Realtime VFX. He has two internships at Riot Games under his belt and will be returning to Riot post-grad as a VFX Artist on Champion team. He also just recently won Blizzard’s Student Art Contest in the VFX category, so all around a pretty talented guy. As for me, I’ve primarily focused on Environment Art, but I’m also a big material/shader nerd (which some of you may remember from the Gerstner Wave tutorial I did awhile back for 80 Level). Last summer I interned at Hi-Rez Studios as an Environment Artist on Paladins. Post-grad I’m heading to Gunfire Games as an Environment Artist on Darksiders III.
We were lucky enough to be able to show off our game at Ringling’s booth at GDC this year, which was a ton of fun. In this article, we are going to look behind the scenes about Jason and I’s process for this project. Hopefully, you get inspired or learn something new, or at the very least enjoy the article!
Inspiration + Influences
One of the biggest inspirations for both Jason and I is the thriving indie game and indie dev community. Both of us are avid Twitter users who follow a lot of devs, so very early on in pre-production we knew we didn’t want to just treat thesis as another school project, but more like a demo for an indie game like you might see at E3 or GDC. Something we always talked about was building a small slice of what a full game would be that we could release on itch.io once we finished.
Artistically, we were heavily influenced by the surface treatments and chunky style of Overwatch, the sense of color, silhouette, and lighting in Firewatch, and the set dressing and atmosphere of games like Life is Strange and What Remains of Edith Finch. We spent a lot of time playing and analyzing these games throughout pre-production and production.
Gameplay-wise, we definitely were looking at a lot of the “walking sim” types of games. Although we already mentioned it as an artistic influence, the style of gameplay in What Remains of Edith Finch definitely was a huge influence. Jason and I both loved the idea that it was a walking sim, but it also had these little unique minigames within the main game. I think that’s something both of us wanted to integrate into our thesis gameplay, and would continue to add if it was a full game. One of the notes we got during GDC when people played our game was that it reminded them of Myst and Riven, which I grew up playing a lot.
In addition to all of these influences, we both really wanted to make a game that catered to our own interests and strengths. For Jason, that meant environments that supported strong, stylized VFX. For me, I wanted environments that let me push my materials and surface treatments. In order to achieve this, we also had to develop our own “style” for Keeper. We knew we wanted something stylized, but not in “The Blizzard Style” or anything like that, we wanted a blend of stylized shape language paired with visually-rich PBR materials and sharp, graphic VFX.
The Process and The Plan
As far as our actual process it was pretty straightforward, nothing too different from the standard production pipeline; we just had a strong vision of the final product. We started with an initial idea pitch, something that could be summed up in just a few simple sentences. Before moving into actual artistic blockout, we actually did a VERY ugly whitebox blockout with just BSP’s, but we built out all of our gameplay systems and UI functionality before we even hit production.
Because of how tight the timeline is at Ringling for thesis, we both knew if we wanted a playable game demo we would need to get all of the programming out of the way as early as possible. Around the same time, we were also doing look-dev and mood paintings to help flesh out what this world would be like when we added art. Also, we tried to identify biggest risks to production and address those early. One really prominent example of that was my Ocean shader, I made that as proof-of-concept last spring because I knew I wouldn’t have time to build it during production.
After addressing biggest risks, we did a 1st pass modeling blockout and lighting blockout. During this stage we also established multiple lighting scenarios and Sublevels within UE4. This allowed us both to work on the same level with source control without having to wait for the other person to check things in.
After we had a proper blockout, we did a detailed modeling pass, then a textures and materials pass. Around this point in the process, we had a playtest with underclassmen to get feedback on gameplay and doing a second pass on those systems as well. Then we had a “final” lighting and polish pass before moving onto UI and gameplay polish. Each of these phases was about a month long.
Part of the reason that Jason and I both were able to add so much polish and set dressing was we kept the scope of our project really small. We only have two playable levels: the interior of the lighthouse and the exterior minigame, which Jason and I both internally referred to as the “Vista Shot.” The exterior shots of the lighthouse were originally created from pre-existing assets to serve cinematic goals that are part of our school curriculum. Each senior project is required to make a trailer, hence the need for the exterior shot of the lighthouse. However, as we started polishing out our playable build we realized it would make a perfect backdrop for our main menu screen as well. For these “cinematic” levels (one for the beginning and one for the end of our trailer), I would lay them out and get the lighting, camera, and mood set before Jason would go in and give it a VFX pass.
For the actual playable levels, we built the entire lighthouse interior in one big level and then sectioned off the “Upper Lighthouse” and the “Workshop” into different levels. I was responsible for all of the upper level while the workshop was Jason’s environment, we both were responsible for the models in each environment. For the Vista Shot, it was a little less organized. Jason did almost all of the programming for the gameplay and all of the VFX while I was responsible for the environment and lighting. We would both take turns working on these levels, usually one of us would be tweaking the Vista Level while the other made changes to the level blueprint in the interior level. When we worked in the persistent level for gameplay, only one of us could work on a level at a time so having the levels split this way worked really well, we always had something we could work on.
The Exterior – Process
Now that we’ve covered most of the high-level overview of the project, we can start getting into the more nitty-gritty details of how the environments are actually made. Something that I think really sets our project apart is the water, which I already broke down in another article. While it looks more polished than it did at the time of that tutorial, all of the basics are the same. It’s still the same base, just with more time and attention to the motion and color of the water. What really helped sell the surface was getting good reflections on the surface and using lighting and post process to help give it a more cohesive style. The biggest update to the water was the addition of the “wake” or moving ripples around objects, which I made a breakdown of on Twitter. This was achieved using mesh distance fields in UE4, and then using a series of sine waves to create different rings. They dissipate at different rates by looking at the Absolute World Position on the Y axis to create more variation and interest in the way they break up.
Beyond the water, color and mood is something that we really focused on with Keeper. I’ve already mentioned that Firewatch was a huge point of inspiration for us, something that really inspired me was Jane Ng’s 2015 GDC talk, “The Art of Firewatch.” In this talk, Jane broke down the idea of using a “color-graded fog” to create the distinctive sense of color, depth, and silhouette in Firewatch. This inspired me to create something similar as a post process material with parameters so it could be instanced off for the different levels to help enhance the color and atmosphere of our environments. Although our color-graded fog isn’t as sophisticated or prominent as Firewatch’s, it helped capture the moodiness of the Pacific Northwest in our exterior environments.
Something we’re very proud of in Keeper is the level of set dressing we managed to squeeze into the environments. Because we were so crunched for time for this whole project, coming up with a pipeline that worked for a majority of the models was critical. Everything was modeled in Maya and it’s actually fewer models than it looks! I believe our final count was somewhere around 100-110 models for all of the environments, interior and exterior.
As Keeper entered the polish and set-dressing phase, I played through Life is Strange and What Remains of Edith Finch multiple times to see how they created such visual density without compromising frame rate. Something I noticed was that they would reuse assets as much as they could get away with and focused more on the composition and feel of the whole scene instead of the detail or fidelity on one particular asset, something I think helped create visual hierarchy in their games. So, taking what I’d seen in these games into consideration, I created flexible tileable textures to help speed up the texturing of assets too and used different material tricks and texture sets to help hide repeating assets. One of the only props I broke this rule on was the book covers, which are full of little easter eggs from friends. The book models all had the same UV’s so I would just swap out the covers (which I usually made while I was waiting for lighting builds).
As far as the unique style of our models, I think it kind of just happened organically throughout our process. Both Jason and I spent a lot of time developing an art bible and “look” to what level of stylization we wanted in our thesis. Because of my experience over the summer on Paladins, I really focused on keeping the models appealing silhouette while still being economical with the polycounts. The “cool stylized curvy look” comes from consistent bevels across all of our architecture and props, it kind of just happened as we kept working.
Something we did have to keep in mind, especially with all of the big architecture pieces was placement and making sure everything snapped together perfectly while hiding seams. All of the large architecture pieces are modular, and let me tell you setting up snapping on a radial room with angled walls and a curving roof is something I will NEVER do again. I probably had to remodel the modkit pieces 4-5 times just to make sure all of the angels lined up properly while still being appealing, so the pivot points were incredibly important for production. While we didn’t exactly use a grid for the layout of the Upper Lighthouse we did build all of the bones of that environment on a radial pivot point to help with ease of placement. The walls were divided up into quarters with a beam that would hide the transitions and the alcoves were their own piece of architecture. Beyond all of the elements that needed to snap and be radial, all of the props and medium-small models aren’t on the grid, they’re placed by hand making sure they feel right.
Now we’re finally getting into my favorite part of the process, setting up the materials. If you haven’t already gathered from this article or my previous one, I’m a material nerd and for Keeper I really wanted to leverage Substance Designer to create a series of procedural stylized grayscale textures and masks that could be mixed and matched in the editor to create different materials. One thing I’m really passionate about and was curious about was the potential for more stylized textures created in Substance Designer, something I hadn’t seen a lot of when I started roughing in materials back in September. All of the tileable textures in Keeper were created in Substance Designer and then assembled into a few “Master Materials” in UE4. I think the most successful example of this pipeline was my wood floor and wood wall materials, which are entirely procedural and tileable with parameters that control everything from color to an age of the wood.
Because we were crunched for time and needed to be as efficient as possible throughout this process, I’d estimated more than 85% of the models are textured using only tileable textures, only a select few props got 0-1 treatment using 3D-Coat and Photoshop. These tileable textures were texture packed into different channels of one texture to help improve performance. This also was helpful when building out a system for creating Master Materials for both Jason and I to use. I created a series of parameters that then when you instance off a material could be changed. This was great for our project because it allowed for a series of materials to all stem from one large material that we could change. It was more efficient, insured stylistic cohesion, and freed Jason and me up for more gameplay polish and overall polish to the project within our limited time frame.
One issue that arose from using only tileable materials was the lack of unique detail on each individual asset. I addressed this using several material tricks like world-aligned grunge maps, decals, and dust based on the object’s world vector, something I picked up from UE4’s documentation on World Aligned Blend. The most important material trick I ended up using on these tileable materials was enabling Procedural AO to create stains and roughness variation on all of our surfaces. I discovered this trick from Nick Reynolds Baked AO Dirt Mask video which helped a lot with making our surfaces more interesting.
Something I think we really executed well on was the lighting in all of our levels for Keeper. I’ve already mentioned that we only really have two playable levels, the Interior and Exterior, but we also had the level of the main menu and a few cinematic levels for our trailer requirement. Because we were actually making playable environments we set up different sublevels with lighting scenarios to help with load times and while it was initially more work to set up it ended up being much simpler for Jason and me in the long run. Almost all of our lighting is motivated lighting, with the Directional Light in each lighting scenario doing most of the heavy lifting. The big windows in the Upper Lighthouse allowed for a lot of natural light to come in which was great and there were motivated light sources too, but I still had problems getting enough bounce light into the environments. This led me to tweak the world settings to try to get more bounce and also a little more Diffuse Boost too.
Even with these changes to the World Settings I still wasn’t getting enough bounce light into the environment, which led me to use lighting channels to get more ambient light into the interior. Lighting channels are great because for each mesh and light you can tell it which lighting channels it should take information from which helped especially lighten up the ceiling without creating conflicting shadows. What I found when lighting these environments was that a simple approach is best. It made my life much easier to just start with the directional light and skylight and get as much done with that as possible before just peppering the scene with a bunch of lights. We were very fortunate to not have any issues with light bleed, I think this stemmed from making sure all of our meshes were two-sided, which helps a lot with light bleed. This combined with hi-res lightmaps and a few BSP primitives that were hidden in the game to block some places where there was light bleed seemed to do the trick for us.
Post-process was also a huge part of lighting and polish for these environments, I already talked a little bit about how I created a Post Process Color Graded Fog that was instanced off and used with the Post Process Volume to help do the final touches on the lighting and level.
That pretty much wraps up all of the nitty-gritty of how Jason and I created the art for Keeper. Some last things that were really important to our process were constant communication to make sure we were both on the same page at all times. Beyond being partners for this project we are also super close friends, so we didn’t have a lot of communication issues and we worked through technical issues together as a team. Source Control was hugely important since we were both working in the same persistent level and building in the same level made scripting for gameplay much easier.
Although I’ve shown some in-progress images from Keeper, it barely scratches the surface on how many iterations we went through in this project, we kept iterating on every aspect of this project even throughout polish phase. We faced technical issues like lighting breaking, blueprints breaking, and materials breaking but because we kept the scope small we were able to finish the project strong. Finally, I think the biggest aspect of Keeper which isn’t really even shown in the screenshots was that we really wanted our project to focus on environments that supported gameplay, not just building for the screenshot. We had numerous playtests with friends and faculty to help not only have it look nice but be fun as well.
And that wraps up this breakdown of Keeper, I hope you found it useful and/or engaging! As always please feel free to reach out if you have any questions or want to connect. Both Jason (@TheKledBoi) and I (@hwilliams_3D) are very active on Twitter but also feel free to shoot me an email! Thanks so much for taking the time to check out our work and hopefully you’ll see it on itch.io soon.