Insomniac Games have recently released another update to their Nocturnal Initiative. This update boosts a number of cool new libraries which I haven’t yet had time to take a look at, although I certainly plan to at some point.

Something that I have been looking at is using their ‘EShell’ script for one of my personal projects. ‘EShell’ is a small perl script for setting up a development environment. This seems like a simple task but is key to providing a stable environment for developing a piece of software. I have worked on numerous professional game projects now and have worked on both projects that handled the environment setup very well (Rare’s Build Lab did an awesome job for Banjo for example), and other projects that didn’t handle this so well (which will remain anonymous).

To illustrate the problem (and how an environment setup process improves the overall experience for the developer), I present two scenarios:

A Good Environment Setup Routine

• I am a developer and I want to work on my project
• I sync up to the latest version of the code base
• I run the environment setup tool
• The environment setup tool prepares my machine so that I can build and run the latest version of my code
• I build the latest version of the code
• It was successful
• I run the latest version of the code
• It ran without any problems

Without A Decent Environment Setup Routine

• I am a developer and I want to work on my project
• I sync up to the latest version of the code base
• I try to build the latest version of the code
• It fails because its missing the ‘PROJECT_ROOT’ environment variable
• I open up my Environment Variables settings (in Windows) and add the environment variable
• This new environment variable leaks into any other project that I might want to work with
• I try to build the latest version of the code again
• It fails because the latest version of the DirectX SDK isn’t installed on my machine
• After waiting 30 minutes for the project to build, it tries to execute a post build step, and can’t find fxc.exe as the DirectX SDK’s Bin directory hasn’t been added to my ‘path’ environment variable