Mindmap : Elephant

The game development paths winds through the unknown on a continous basis.  And a core component for effectively handling the unknown requires updating one's mental model and pushing the edge of understanding. 

An old Indian parable describes how 3 blind men, holding each part of an elephant are convinced that they have 3 different animals. 

Mindmaps, in my experience, offer a holisitic and methodical approach for mapping out what's at the edge of one's understanding: They capture what you know, and perhaps more importantly, reveal the empty space of what you yet don't know.  

Below is an index to the current mental maps that guide me about the elephant: 



Shaders : The dark side of lighting

IMHO, well crafted shaders address both how light reacts to the surface (diffuse and specular), as well as how the surface behaves absent of lighting (ambient).  Generally what happens when the ambient aspect is neglected, is that lighting flattens out to black.  

This can certainly be used as a great artistic effect, but more often than not it's unintentional.  As a result the spatial aspect of play spaces/environment becomes greatly diminished.  Players have to work harder to discern the play space, leading to visual fatigue.

WebGL Scratchpad : TriForce

Been checking out WebGL as part of my more recent Saturday Morning Project.  And as far as I can surmise, WebGL seems to be an interface that exposes GPU hardware buffers to the browser. And javascript in this context, is basically utilized to push floating-point values to vertex buffers, and shuttling them through the C(?) foreign-function interface into the GL library.

Here's the current code state of my fiddling  with a simple, bare bones WebGL context:


Here's a mindmap of my current understanding OpenGL functions and hardware registers:


There's a lot to love about the how graphics development on the web is trending.  It feels like a reset/re-invention of the industry ~10 years ago.

Tool Development : Interfaces are high mileage

I've written a large number of tools that end up deprecated.  Often times the content creation app will offer a more elegant native solution in an update, or more commonly, the pipeline needs itself changes.

Interfaces however, are much more resilient and surprisingly high mileage.  

I've built many one off animations rigs that languish, while the keyframe tool that drives it continues to find usage.  The animation UI pictured for simple commands such as zeroing out, mirroring and keying poses have been adapted to numerous foreign rigs on a number of various contracts and small side projects.

Unreal : Shader Development

Collaborating with the principle players from art and tech to deliver solutions are my favorite project highlights.  Here's a slice from my time working on Unreal Shader Development for an older Sony Online Project:

  • Initial Standard : The project's character clothing used the standard normal, specular, diffuse uber shader.  There was an interesting tweak to the specular to 'pop' more detail with front facing normals.  And that worked great on surfaces such as leather and velvet.  But not so much on on cloth and materials where specular was minimal.
  • Hue Shift Pivot : Adding a complementary hue shift to the tangent facing normals of the material colors on the character's cloth pumped up the palette.  I utilized calculations already being processed to add minimal perf cost to the process.
  • Art Direction : The art director liked the expanded palette, but felt my shaders defaults were too heavy handed with color usage.  I worked with him to dial down many of the settings(it's easier to rein a shader artist back to push him for more:).  The Lead Tech Artist also exposed a custom sample of the dominant scene light.  Changing the shader to sample the complementary color from scene lighting as opposed to local material colors.  The final look something more along the lines of the palette brilliantly achieved in Unchartered 2. 

Photoshop : Tool And Workflow Visualizations

"A problem well stated is a problem half solved."

                                        -Charles F. Kettering

One of the day to day challenges of tool/workflow development is resolving the needs and wants of diverse disciplines.  That gap can be particularly wide on complex and ambitious projects.  Many times the requests from one department will appear to conflict with what another may be asking for. 

A practical and direct way to address this is with Photoshop wireframes.  Words can be imprecise; pictures and numbers however tend to be concrete.  Photoshop->conversationw/Design->Photoshop->conversationw/Engineers, in my experience has worked as an effective means to iterate.

This process is a great aid in moving the needle forward on plans sidetracked by abstration and ambiguity.  And at times these visualizations will also serve as an ad hoc contract for the tools to implement or workflow to be setup.

Vim : Modal Text Editor

This post over at Hacker News: Vim the Six Billion Dollar Editor reminded me of just how much I love Vim.  If your day to day involves text-slinging, Vim is a bionic weapon that'll return the investment in understanding it many times over.      

It's modal nature is somewhat astonishing at first : Why would a text editor have a mode that does not input text?  The reason becomes a bit more clear when you consider that about half the time of an average text editing session is spent tumbling to and from characters/words.  And by separating those two modes, Vim effectively doubles the available keystroke space.

Originally, I struggled with a number of false starts with picking up Vim.  Persistance paid off.  And the resources that helped me most were:

  • The built in vimtutor or the browser based openvim .
  • The videos at vimcast.org are a gentle, practical introduction to Vim's day to day use.  These videos got me to the critical point of applying Vim idioms to my real world projects.
  • Beautiful wallpaper by Ted Naleid. (My personal variant is attached.)

I also recommend finding a nice .vimrc :

(The jj macro to switch modes will be kinder on your fingers than having to reach for the escape key.)

Vim is ~20 years old, yet IMHO manages to feel ahead of the curve.

Shaders : Hue Shifting

Nintendo characters tend to emphasize shape and volume over details.  In addition to value attenuation, a complementary amount of hue shifting can really emphasize the simplicity and beauty of this style.  And the shaders I've adapted from this approach can run on a wide set of hardware from fixed pipeline mobile devices to highly programmable CGFX/HLSL environments.  Normals are fundamentally one's best friend for getting high mileage here<g>.