Today I want to talk a bit about the Bitsquid Foundation Library that we recently released on Bitbucket (under the permissive MIT license). It's a minimalistic "foundation" library with things like…
The Ins and Outs of Native Client By Jeff Ward Curious about Native Client? Google's new technology allows native C/C++ code to be run in a web browser -- which is great -- but what are the practical…
Back in January, I had the pleasure to attend Jeff Ward’s talk “Data-Driven is Half the Battle” (slides) at the Game Forum Germany and— looking back now—it really…
Motivation All interactive game architectures are, by their nature, forced to be somewhat event-driven. There are various hardware-based events for input, audio and network systems, etc. Furthermore,…
So we’ve all done it. You’re coding away and you want to call say, a math function from your templated utility class that lives in your header. So you #include its header in your…
If you don’t understand the motivation behind Git’s design, you’re in for a world of hurt. With enough flags you can force Git to act the way you think it should instead of the…
Game Object Structure: Inheritance vs. Aggregation By Kyle Wilson Wednesday, July 03, 2002 Every game engine I've encountered has had some notion of a game object, or a scene object, or an…
This is a story about Doom 3's source code and how beautiful it is. Yes, beautiful. Allow me to explain. After releasing my video game Dyad I took a little break. I read some books and watched some…
The Registry By Kyle Wilson Sunday, November 03, 2002 When I first started work at HeadSpin, one of the most mind-expanding concepts I encountered was the notion of an object registry. …
Game Object Structure: Scene Graphs Revisited By Kyle Wilson Saturday, February 08, 2003 The last time I wrote on this subject, I suggested that scene graph-based game engines had the benefit of…
Game Object Structure: Scene Graphs By Kyle Wilson Monday, July 22, 2002 Last time around, I discussed the benefits and costs of using a static class hierarchy for game objects. Such use of…
Continuing a series of posts where I try to detail the past, present and maybe have a glimpse at some possibilities of where the Game Entity might evolve in the future. Game Systems You might call…
Continuing a series of posts where I try to detail the past, present and maybe have a glimpse at some possibilities of where the Game Entity might evolve in the future. There is a part of me that…
Below is a transcript of me playing around in bash with git branches and merging. I hope this helps to demonstrate the basics of how to create branches, merge them back together, and handle merge…
This article explains why it’s important to have your own patching system, and describes how to implement a simple patching system modeled after the Quake3 file-based patching process.…
In Oodle, I use my own allocator, and I wish to be able to still construct & destruct classes. (Oodle's public API is C only, but I use C++ internally). The traditional way to do this is to write…
This is too long and rambling, but to steal a joke from Mark Twain Blaise Pascal I haven’t had time to make it shorter yet. There is some discussion of this post on the git mailing list,…
Atlassian is the company behind several well-known developer tools: the defect tracker JIRA, the Confluence wiki, Bamboo continuous integration server, and others. We also run the BitBucket project…
Version control used to occupy a sleepy corner of programming technology. After Subversion replaced CVS, it became the de facto VCS system for open-source projects and in small IT organizations.…
Continuing a series of posts where I try to detail the past, present and maybe have a glimpse at some possibilities of where the Game Entity might evolve in the future.Just over twelve years ago I…
In this post I present the development model that I’ve introduced for all of my projects (both at work and private) about a year ago, and which has turned out to be very successful.…
Moving an organisation from SVN to git involves convincing people to unlearn a lot of SVN stuff they're comfortable with, then learn a lot of new git stuff they don't understand. It takes several…
When I started learning build engineering, one of the first things I spent some time on was grokking the concept of Continuous Integration. In a nutshell, Continuous Integration says you should…
In this part of the series, we will discuss Molecule’s task model in detail, and have a look at the underlying C++ code and some subleties we need to watch out for, as well as some unique…
Organising your game code into component-based entities, rather than relying only on class inheritance, is a popular approach in game development. In this tutorial, we’ll look at why you might…
Since about 2002 to 2009 the de facto shader language for games was HLSL. Everyone on PCs was targeting Windows through Direct3D, Xbox 360 uses HLSL as well, and Playstation 3 uses Cg, which for all…
In the last part of this article I covered working out the basics of the memory you have available. I mentioned that the next stage is to break this into modules to help create an effective game…
I have had to plan many budgets for many games, including memory, polygon and animation budgets. The first memory budget I ever did, I approached poorly and unsurprisingly it didn’t turn…
SIGGRAPH 2011 took place a couple of weeks ago. Whilst I wasn’t fortunate enough (or rather, could not afford) to attend, I’ve been reading up on the games related presentations which…
I’m going to start my #AltDevBlogADay escapade by discussing a subject of great interest to me. There is a lot of buzz recently around virtual worlds which can be modified in realtime by the…
The Unity 3D toolkit is a great platform for development – but it can be quite confusing to a developer coming from a more traditional, ‘code it all up’ kind of background. I…
No matter what we do, if we are Agile or fall down the water… if we are senior or junior… if it is big or small… for nearly everything we do we have to define tasks and…
To err is human. But it is also quite computery. Unfortunately, error handling tends to bring out the worst in APIs. Error handling is what makes your program go from something nice, clear and…
Custom memory allocators are a very popular solution to the problem of memory management in C++. Unfortunately, operator new isn’t ideally suited to this strategy. In this article I will…
I was recently reminded of an old conversation I had some twenty odd years ago, a fresh faced and innocent programmer (yours truly) was discussing with his fellow engineers the future of CPU…
Today we will see how the preprocessor and some lesser-used C++ features can be used to enhance the standard assert functionality, shipping with the C runtime. assert() is a very useful tool for…
Note: You might also want to read Some Thoughts on Build Servers, which discusses software packages for running automated builds on a shared server. The hardest part of software development is often…
Continuing from last week’s thoughts about build systems, let’s talk about build servers. Say you’ve gotten a build system, like CMake, up and running in your project. Now the…