Hi, I’m Andrew Gebert, a junior 3D artist based in Melbourne, Australia. Currently, I work at Zero One Studios as a junior artist specializing in hard-surface modeling, however, I cannot yet disclose anything regarding our current projects. As of this writing, I am celebrating my first full year of working in the game industry, thus I want to quickly extend my gratitude to Zero One for helping me turn my passion into a career.
Although I have learned a great deal during my time at Zero One, there is much for me to improve and some of this will be reflected in the pages to follow. Regardless, I hope you will come out of this having learned something new.
Nintendo GameBoy Classic: About the Project
Anyone who knows me in person is aware of the fact that I’m a bit of a Nintendo fanboy, especially when it comes to the Legend of Zelda series. With much of my childhood spent playing and replaying Ocarina of Time, it would be an understatement to say that this series had a huge impact on my life as a creative professional. So after a mandatory binge on the recent Link's Awakening remake on Switch, I felt inspired to create a piece that would hopefully recapture the warm nostalgic feelings for those who grew up during that important for gaming era.
The first step to any project, big or small, is to gather as much reference as you possibly can. This includes front/side/top/bottom profiles, blueprints, measurements, disassembled pieces, similar plastics, potential side props (boxes, cases, etc.), composition examples, etc. Once I have adequate reference material I throw everything into PureRef organized into basic groups, nothing fancy.
A lot of this was pretty bog-standard in terms of general approach: set up reference planes, block out mesh, refine high/low poly, UV unwrap, etc.
The challenge came when it was time to approach the GameBoy screen. I knew Marmoset Toolbag wouldn’t offer me much flexibility regarding its transparency options. To be more specific, Opacity masks will cut into all your maps, not just your base color. The end result of this will be a sharp cutout in your glass with no normal/roughness/metallic information.
The solution was to divide the elements up into separate pieces: the plastic cover, the display cutout, and the LCD itself. Not only would such layering give the screen depth, but it would also allow me to assign each of these elements a unique shader once we load everything into Marmoset.
I also opted to model the holes within the display window instead of using a transparency mask, the reason being that I didn’t want any edge dithering should my texture resolution be inadequate.
When it comes to texturing, Substance Painter is my weapon of choice, primarily because of its non-destructive workflow and ease of use. Before I continue, it's worth noting that I will be skipping through some parts that I felt weren’t all that interesting or useful.
Now with that out of the way…. let's bake.
After making the necessary adjustments it’s time to talk briefly on how I approach grunge maps. Overall, there isn’t anything too special here; simply put, I just layer my scene with fill layers to represent a specific type of grunge (dirt, fingerprints, scratches, etc.), then I will alter them using a variety of different masks. Smart masks are especially useful during this stage of the process.
The cartridge stickers were relatively simple, but ultimately a bit tedious to put together.
The process goes like this:
- Snap your camera forward (use alt+shift+left mouse)
- Use the projection tool to map the sticker on the geo (base color only)
- Create an anchor point
- Create a fill layer, create a fill inside the black mask and reference the anchor point inside the grayscale value
- Now you can adjust the height and roughness values independently of the original projection. You can create more layers if you wish to add effects, in my case I added some air bubbles underneath. The same process went for all 16 stickers.
Now that the texturing phase is complete it’s time to work out the general composition we want for the final image. Here are some of the reference photos I used.
After settling on some reference guides, I began laying out the pieces inside a fresh Maya scene until I came up with something that looked suitable. You can do this inside Marmoset if you wish, I just find it a little slow and awkward to do so. Side note: I added some extra cartridges on top of the main stack in order to create more variation in the composition.
Once I imported everything into Marmoset I created 4 different materials for the base of the GameBoy.
- MatA_Base: General plastic shader
- MatA_Glass: Front Screen shader
- MatA_Light: Power bulb shader
- MatA_ScreenEmmissive: LCD Shader
For the screen glass/plastic, I decided to go with the Add based transparency option. I’m certainly no expert in regards to how the other presets differ from each other, but this works just fine for simple stuff like thin plastics. Tweak the opacity/roughness sliders in order to get the look you’re after.
Now comes time for the LCD screen. For this, I simply plugged the base color into the emissive channel and adjusted accordingly. The original GameBoy did not include backlight, however, I opted to include it as I felt it would give the piece more visual interest. Plus, I could turn it off if needed. The same process goes for the power bulb.
Сartridges were pretty standard in terms of shader setup. I plugged the normal, roughness, and metallic maps into a standard shader, then I duplicated it as needed. From here, all I needed to do was to plug the appropriate base color in to ensure I had a nice variety of GameBoy stickers.
Note: Make sure you have adjusted your render settings BEFORE you begin lighting. These settings will greatly affect the final look so make sure they are set beforehand to avoid further trouble. You can toggle more intensive settings on and off with the rocket icon in the top left if your performance is slow.
Here are the settings I used:
Lighting for this project consisted of a simple three-point lighting setup (spotlights) in combination with an HDRI.
One thing I like to do is spawn directional lights by left-clicking inside the HDRI light editor if I want to add more specular highlights on certain areas. This is definitely cheating and should, therefore, be used with restraint, but it can produce some nice results if your object is completely static.
Now it’s time to add some post effects. Enable Depth of Field and set the focus of the camera, from here you can adjust the near/far blur sliders to get your desired look. In this case, I opted for a shallow depth of field in order to replicate a macro photography style aesthetic. Next, I softened the border with a vignette in order to help draw focus away from the repetitive background elements and complemented it with a little chromatic aberration and film grain. Overall, you will need to play around with the available tools until you get something that works for your desired composition.
Here is a list of the effects I used:
Before we conclude we need to talk about emissives. Unfortunately for us, the stock emissive settings do not emit light, but rather raise the brightness of the existing images. Depending on what you’re trying to make this can hurt the realism aspect of your model since your emissive elements won’t match the scene lighting. To remedy this I first turned off the lights within my scene so only the emissive elements were present.
Next, I exported the emissive render and overlaid it on top of the beauty render inside Photoshop. From here, I set the blending options to screen, added gaussian blur, and finally adjusted the opacity until I got the effect I wanted. This isn’t a perfect solution, but it’s an acceptable cheat for small elements. All that was left was to do some minor color corrections in Photoshop and the piece is finally complete.
Despite its simplicity, I had a great deal of fun working on this project. It taught me a great deal about Marmoset rendering as well as its limitations.