informa
/
DISCIPLINES
Blogs

Newsletter #55 - Building an Engine

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


News

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

Sucker Punch Productions

Bellevue, Washington
08.27.21
Combat Designer

Xbox Graphics

Redmond, Washington
08.27.21
Senior Software Engineer: GPU Compilers

Insomniac Games

Burbank, California
08.27.21
Systems Designer

Deep Silver Volition

Champaign, Illinois
08.27.21
Senior Environment Artist
More Jobs   

CONNECT WITH US

Register for a
Subscribe to
Follow us

Game Developer Account

Game Developer Newsletter

@gamedevdotcom

Register for a

Game Developer Account

Gain full access to resources (events, white paper, webinars, reports, etc)
Single sign-on to all Informa products

Register
Subscribe to

Game Developer Newsletter

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

Subscribe
Follow us

@gamedevdotcom

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