Tech Art Chronicles: Atomic Purple

Remaking Nintendo history with Unreal 4 shaders

The classic gameboy color in Atomic Purple was one of my first gaming devices if you don’t count Duke Nukem II on the after school daycare computer. I played Pokemon Red and other games as I loved that gameboy color to death. Who knows where it ended up but I thought for fun why not re-create it in Unreal 4 shaders as I want to get the hang of making shaders based on real life objects. (photo realism maybe not but who knows maybe one day)



Gameboy by Yandrack
Battery by Anthony Yanez

First Step

Make it Translucent

So the first thing I did was turn on a transparent material in unreal and set it to double sided so we can see in the innards of the gameboy model: 

I also added a Fresnel between the outside color and the inner color, and I took a free PBR plastic material and added some textures... BUT it all kinda looked meh. My colors were not correct and 2 the texture wasn’t quite right, very smooth and silky, I needed to make it bumpy!

If you take a look at the detail from the wikipedia image of the Gameboy Color in Atomic Purple the plastic is bumpy and blurs out the inside: 

Second Step

Make it bumpy 

Now, a normal tech artist would probably make a nice normal map texture that added some bumps and groves get the plastic to look like it has a texture to it. I’m particularly unusual that I forgo textures if I can avoid them because I don’t want to make them and I love to challenge myself to use noise generation and 2D SDFs whenever I can. So it’s probably not a realistic pipeline for a regular game but in general I like to not use any textures as I create these tech artist sketches.

So to make a bumpy normal map I used a noise node in unreal’s material shader editor and looked up online a couple different methods to convert a noise into a normal map. There is an interesting forum post about it and I tried both methods to see what the normal map would do: 

Very bumpy - Uses PreparePerturbNormalHQ and PerturbNormal nodes with Worldspace to Tangent Space 

Grainy - Uses Noise in R/G of Tex Cord

I also wanted to fix the colors, and I found that a Fresnel was always additive to my colors. Meaning it wouldn’t give me a dark rim color it always gave me a lighter rim color.

It took a while I had to figure out how to multiply black in my Fresnel lens and then add that to a darker purple to get the colors just right, or about as right as I could imagine for Atomic Purple.

With this basic shader I’m most proud of the dark purple outside and the lighter near clear purple on the inside. I feel I got that look of those colors really well to the original gameboy color.

Third Step

Make some innards

I searched hopelessly online for someone who has modeled the gameboy color motherboard so I wouldn’t have to do it. I did not find any models out there... alas I had to make some kind of model for the inside of the gameboy classic. Luckily iFixit has lots of great photos of the motherboard and case as it’s being taken apart. So I used those photos as reference and quickly modeled out the inside of the gameboy color in Blender. 

The one little trick I did was in the internal motherboard modeling I also modeled those thicker plastic parts of the gameboy like behind the dpad and other areas of the gameboy that have the darker purple thicker plastic, and I put a variation of my Atomic Purple shader on them to get that thicker plastic look:

Last thing was to create little different color materials for the things on the motherboard, just to get a sense of the electronic colors. Again I didn’t use a texture instead using different materials to color different parts of the model to just avoid using textures. Not probably the most detailed look, but it gives you the impression of electronics.

Along with modeling the inside I found those batteries models and placed them inside the gameboy model to make it look authentic and it really works out all together. It gives you a sense of the plastic/look/appeal of the gameboy color in Atomic Purple.