Notes from Day 4 of UCalgary CPSC 585 Winter 2014

Monday 6th:

Game Engines & Middleware

Some subsystems are hard to create so it often gets factored out into middleware. Common middleware used for Physics, trees, movie players, rendering, sound. Middleware became popular around 2000 during the ps2 era.

Blink is easy to integrate, you must give it a way to alloc, output rendering, and file io.

Physics is harder to integrate.

Game Engines:

  • Quake Engine (1996) – 3d acceleration
  • Unreal Engine (1998) – modular arch, unreal script
  • CryEngine (2004)
  • Unity (2005) – multiplatform

Why use an engine?

  • content tools & pipeline
  • state of the art rendering
  • cross-platform support
  • cross-domain integration
  • easy gameplay prototyping
  • Saves you from writing glue code for a bunch of middleware
  • Piece of mind, the code is not junk

We looked at Unity and Unreal. Licensing fees were discussed but I assume again the discussion was not meant to be public.

Unity was design without a single game in mind. Meanwhile unreal was forked from a FPS. Thus Unreal is built around levels yet a sports game must then fit around this.

Why we do not use an engine in this course: They want us to learn the basics and what an engine does and how. More words were used but I’ve simplified.


  • Competition and your artist are going to be pushing your hardware’s boundary.
  • Targeting a test may make you miss the the real use case.
  • Takes more time to develop than the faster languages
  • You’ll be running a optimization on a compiler optimized build so debugging will be hard.
  • Hard to find the real gains
  • 90/10 rule, most code has little performance impact
  • watch for pitfalls like virtual functions
  • Cache can cause inversion of inpectations

How to optimize:

  • Profile and find performance bottlenecks
  • Fix them
  • Goto step 1

Instrumented profiling versus sampled profiling versus system trace.

Structure of Arrays versus Array of Structures

We talked about optimization tricks and avenues. Its now 12:00 and we’re taking a break for lunch. I’m hungry.

Coming back at 13:05 we’re talking about C++ internals.

This talk is pretty cool, I should be writing it down =\

Took ten minute break and now we’re back at 14:00, going into networking gameplay.

Sound was covered, I’ve been working on integrating bullet.

Now we’re talking about debuging and recounting our hardest bug stories. Good stories, haha. In theory I should be writing this down but I won’t since I’m lazy and you may want to enrol if you have the chance.

Leave a Reply

Your email address will not be published. Required fields are marked *