Newsletter #55 - Building an Engine

A technique for automatically building systems in an engine, and new sketches.


There is no news to report this week.

From the Programmer
Written by Invisible

After struggling with manually keeping track of system dependencies and which systems need to be rebuilt due to changes in other systems, I have found a way to automate this.

Microsoft Visual C++ 2005 has a couple tools which make keeping track of a complex engine much easier.

  • Project Dependencies - Using project dependencies in a solution, you can set the order in which the projects are built.
  • Custom Build Step - Gives you the ability to copy the header files required to use the engine into the output directory when the engine is built. Additionally, this makes your header files part of the build process, meaning it will check if they need to be copied to the output directory or not, and cleaning the project will also clean out the headers from the output directory.

I'll give a short tutorial on how to set this up.  This tutorial assumes that there is an "include" folder located in the same folder as the solution which will contain the header files for the engine once it has been built.

  1. First off, you need to create the engine's solution and add the system projects into it (right-click the solution in the Solution Explorer and select "Add->New Project" or "Add->Existing Project").
  2. Right-click on the first project in the Solution Explorer and select "Project Dependencies..." (this option will only appear if there are multiple projects in the solution).
  3. In the window that appears, place a check-mark next to each project that this one depends on.
  4. Repeat steps #2-3 for each project in your solution.
  5. In the Solution Explorer, right-click on the first header file that is required to use the engine. Select "Properties" from the menu that appears.
  6. In the Configuration drop-down box, select the first configuration that you want the automatic header output to apply to (probably "Debug").
  7. In the tree to the left, select "Configuration Properties->Custom Build Step->General". The header file we have selected is called the "Input" for the custom build step. We want to copy this header file from its current location into the output "include" folder. So make use of the "copy" DOS command by placing this into the field labeled "Command Line": copy "$(InputPath)" "$(SolutionDir)include\$(InputFileName)"
  8. Now we need to tell MSVC++ what file the command line that we entered previously will be outputting. MSVC++ checks if the output is an older version than the input, and runs the command line if it is (or if the output doesn't exist). Place this into the field labeled "Outputs": $(SolutionDir)include\$(InputFileName)
  9. Repeat steps #6-8 for each configuration that you want this to apply to. (probably just "Release" after you finish "Debug").
  10. Repeat steps #5-9 for each header file in the solution that is needed to use the engine.

Artist's Easel

Written by GreyKnight

iScribble Sketches #13

(Click to enlarge)

(Click to enlarge)

Community Spotlight

Sorry, there isn't a community spotlight article this week.

Latest Jobs

Xbox Game Studios

Redmond, Washington
Technical Lighting Artist


Hamburg, Germany
Game Designer - Elvenar

Six Foot

Houston, TX
Six Foot Director, Player Relations

Hometopia Inc.

Lead Engineer
More Jobs   


Explore the
Subscribe to
Follow us

Game Developer Job Board

Game Developer Newsletter


Explore the

Game Developer Job Board

Browse open positions across the game industry or recruit new talent for your studio

Subscribe to

Game Developer Newsletter

Get daily Game Developer top stories every morning straight into your inbox

Follow us


Follow us @gamedevdotcom to stay up-to-date with the latest news & insider information about events & more