Articles by olano

Marc Olano is an Associate Professor in the CSEE department at UMBC and Director of the Computer Science Game Development Track. Dr. Olano’s primary area of research is real-time 3D graphics, with forays into other applications of programmable graphics hardware.

We have 30 participants in the Global Game Jam at UMBC this weekend, working on eight different games. Fitting for a world-wide event, the theme this year is non-verbal, it is the sound of a human heartbeat. They started at 5PM Friday, to build games around this theme.

Starting around 3:30PM, each team will be demoing their game, with the demos live-streamed on the web at Watch and be amazed!

This weekend, UMBC will be one of 320 sites from 65 countries around the world participating in Global Game Jam 2013. This year’s theme is announced at 5pm local time on Friday, and teams all over the world work all weekend to build games around the theme. If you want to participate you can sign up through the Global Game Jam global organization. UMBC’s site is full, but there are other sites in the MD/VA area for those interested in participating. You’ll be able to track our progress on twitter (#ggj13 for global twitter feed, #umbcggj for UMBC), and on our live streaming feed (to be announced here when the game jam begins).

For those signed up for the UMBC site, here are some basic details on what to expect Friday.

  • We’ve got a talk about the Corona mobile game SDK at 4:30 Friday.
  • The main GGJ activities start at 5:00 this Friday, and will conclude by 5:00 on Sunday.
  • The UMBC site will be closing down from 11pm-7am Friday and Saturday night. Do not plan on being able to spend the night in the lab.
  • We’ll be in the GAIM lab, room 005 in the Engineering building. For those not already on campus, there are campus maps online.
  • Permit (not visitor) parking spots are free after 3:30 Friday and through the weekend.
  • Thanks to a generous donation from Next Century Corporation, we’ll have food for all participants all weekend.



OnyxFest is an independent game showcase, with networking opportunities, presentations by area indie game developers, and games to try. It will be Saturday, February 2nd from 10:00-3:00 in the Gameroom in the UMBC Commons. Details on the facebook event page.

According to a story on the Washington Post web site December 17th, a study of game sales per capita and gun-related murders per capita in 10 countries shows no real correlation. At the end, there’s a graph showing a linear fit through the data, showing a weak negative correlation, but as scattered as the data is, even drawing that line makes no sense to me. None the less, it certainly doesn’t look like correlation (much less causation) between the two.

Here’s a post that’s interesting for both programmers and artists. Sébastian LeGarde is an game engine and graphics programmer at Dontnod entertainment in Paris. He has a blog with a variety of good posts on the programming side of achieving realistic physically-based illumination. He’s just started a series on rendering rainy and wet scenes, starting with a collection of photos and observations showing the different ways rain actually appears in the real world. Whether you are an artist or programmer, when you’re trying to get something new, it’s always a good idea to go out and observe the world. You can’t get it right, if you don’t know what it is supposed to look like. Check it out!

UMBC will once again be a host site for the 2013 Global Game Jam. This is a weekend-long game development event with hundreds of host sites across the world. Participants at each site form teams and work all weekend long to build games on a common theme, announced at the event. The 2013 Global Game Jam will be held from 5pm Friday, January 25th to 5pm Sunday, January 27th.

For Maryland/DC area participants, this year there are sites at UMBC, College Park, the Universities at Shady Grove, and George Mason. Some sites charge entrance fees, but thanks to generous support by NextCentury Corporation, the UMBC site is free and open to anyone 18+ years of age. Space is limited, so participants should register in advance for the UMBC site on

For those of you with an AI programming bent, there’s is running a game AI contest, details at The contest started November 7th, but you can build and submit your entries through December 10th. You (or a team) creates an AI commander to direct your bots in a game of capture the flag in a complex world. If you like AI and have some time, give it a shot!

Another linked article, this one about a set of foundation libraries released by bitsquid under the MIT license, the Bitsquid Foundation Library

Some observations…

Memory management and avoiding C++ STL

Memory is often as critical a resource as execution time. Bad memory management can result in lots of little fragments of unusable free memory and a game that crashes when trying to load the next level. In addition, many standard memory allocators serialize the memory allocation in order to be thread safe when running on multiple CPU cores. With lots of memory allocations, this can turn into a performance bottleneck. The C++ Standard Template Libraries are handy, but mostly consider memory allocation and deallocation as free operations, and are waaay more willing to do them than most game developers would prefer. Consequently, you’ll find a profusion of different memory allocators and data structures that most people think of as being part of standard C++. This is one such library.

Header organization and compile time

Compile time is a big issue for major game projects. Some use Visual Studio precompiled headers. They are good for relatively unchanging headers, but any change to any file in the precompiled header will result is a sloooow rebuild of the entire project.

Some try to reduce the dependencies between header files to only include what you absolutely need, and (in C++ at least) declare by name the classes you just need for pointers or references. This reduces the number of files that will need be recompiled for a header change. I first read about this technique in Large Scale C++ Software Design, by John Lakos. That book also advocates the pimpl approach, where rather than declaring private members in the public include file, the class will just contain a pointer to an implementation class. The implementation class is declared and defined with all of the implementation code, so does not need to be part of the class include file, and implementation changes do not cause recompilation for anyone using the class. Most games that I’ve seen do not use the pimpl method, because each class (even if created on the stack) results in an extra memory allocation, and each member function has an extra pointer dereference into the implementation class.

Bitsquid uses another technique, where the public class only contains data declarations. Rather than use member functions, you use regular functions to operate on the class. The idea is that most of the header interdependencies that increase compile time are just member-to-member dependencies which only need to know the data layout. Source implementation code may need to know about the functions too, but that’s still fewer dependencies (and faster compilation).

I have not done much coding in this style, but the key takeaway here is that game developers spend a lot of time compiling, and anything that makes compilation slower is potentially hours per day of lost work.

Most game developers I know have a network of other developers and online sources they follow to keep up with game development trends and ideas. Most students haven’t developed this set of sources yet, so I plan to start posting a series of links to things I run across and find interesting. Since my own postings are admittedly graphics focused, I thought I would start with an AI article. This one, originally from Game Developer Magazine, gives a high-level comparison of AI options as used in games: AI Architectures: A Culinary Guide



Make plans to come to the 2012 UMBC Digital Entertainment Conference (DEC) on Saturday, April 28th, starting at 10am in UMBC Lecture Hall 1. This day long event is organized by the UMBC Game Developers Club, and sponsored this year by Zynga.

The DEC is open to anyone, and features an all-star lineup of speakers from Firaxis Games, Zynga East, Pure Bang, and Mythic Entertainment. Whether you are a High School student, go to UMBC or another University, or are already working in a different industry, you are sure find interesting information about how the games industry works, how some current developers got started, and what they do. If you are a game developer, you are sure to find High School students, UMBC students and students from other Universities who are interested in jobs in the games industry.


10 AM Barry Caudill, Director of Gameplay Development at Firaxis
11 AM Tim Train, Studio Manager at Zynga East
12 PM Lunch Break
1 PM Eric Jordan, Programmer at Firaxis
2 PM Ben Walsh, CEO of Pure Bang Games
3 PM Brian Johnson, Director of Online Operations at Mythic Entertainment

If you are unfamiliar with the UMBC campus, there’s a convenient online map. Note that permit parking spots on campus are free over the weekend, so only head like a lemming to the visitor meter spots if you like spending quarters.

« Older entries § Newer entries »