A simpler design for asynchronous APIs
Accessing Internet services, e.g. to fetch a web page or to store data on a leaderboard, requires an asynchronous API. You send a request and then, at some later point, you receive a reply....
View ArticleVoodoo at Origin!
We all love bugs they are like nuggets of entertainment for programmers that sit roughly between the extremes of love and hate. There are some bugs however that years after they have been squished...
View ArticleCleaning bad code
Guess what! You’ve just inherited a stinking, steaming pile of messy old code. Congratulations! It’s all yours. Bad code can code can come from all kinds of places. Middleware, the internet, perhaps...
View ArticleUsing Chrome://tracing to view your inline profiling data
If you have an inline profiling system, with some slight modifications, you can view that data in the Chrome web browser rather than writing a visualization tool yourself. Having a nice graphical...
View ArticleThe Spector of Game AI
Warren Spector recently gave an interview to Eurogamer that’s circulating pretty widely now about the need for better AI in games. Specifically what he’d like to see is people like John Carmack and Tim...
View ArticlePorting your iOS game to Blackberry Playbook (and future BB10 phones)
Continuing after my latest post about porting existing iOS games written in C/C++ to the Android platform, here I am again writing about my latest porting endeavor that brings Pop Corny to the third...
View ArticleA new way of organizing header files
Recently, I’ve become increasingly dissatisfied with the standard C++ way of organizing header files (one .h file and one .cpp file per class) and started experimenting with alternatives. I have two...
View ArticleC/C++ Low Level Curriculum Part 9: Loops
Welcome to the 9th post in this C/C++ low level curriculum series I’ve been doing. It’s been a long time since post 8 (way longer than I thought it was), a fact I can only apologise for. My 3 year old...
View ArticleFlow – A Coroutine Kernel for .Net
Introduction This post will present a small library called Flow that abuses .Net’s IEnumerable functionality, providing a Kernel for cooperative multitasking based on the concept of coroutines. The...
View ArticleBuilding an HTML5 Game? Don’t Shrug Off Atlases.
HTML5 is an amazing technology for designing web sites. The general flexibility of HTML5 markup and JavaScript often leads web developers to create their content using individual image elements. This...
View ArticleA Data-Oriented, Data-Driven System for Vector Fields – Part 1
A vector field is a function that assigns a vector value to each point in 3D space. Vector fields can be used to represent things like wind (the vector field specifies the wind velocity at each point...
View ArticleThe Elements of Comment Style
Programming comments are a critical, and often overlooked, part of the development process. Comments may not be exciting enough to have certifications and training classes dedicated to them, but in...
View ArticleWindows x64 ABI: Stack Frames
In the previous post, x64 ABI: Intro to the Windows x64 Calling Convention, I explained the rules of the Windows x64 calling convention. Now we’ll take a look at what makes up a stack frame....
View ArticleA Data-Oriented, Data-Driven System for Vector Fields — Part 2
In Part 1 we decided to represent a vector field as a superposition of individual effects: G(p) = G_0(p) + G_1(p) + ... + G_n(p) Here, each G_i(p) is a function that represents some effect, such as...
View ArticleAngle based SSAO
Introduction SSAO (Screen space ambient occlusion) is a common post processing effect that approximate how much light is occluded in a given surface by the surrounding objects. In this year SIGGRAPH,...
View ArticleA Data-Oriented, Data-Driven System for Vector Fields — Part 3
In this post, I’ll finish my series on vector fields (see part 1 and part 2) by tying up some loose ends. Quick recap of what has happened so far: I’ve decided to represent my vector fields in...
View ArticleCover your Assets: The Cost of Distributing Your Game’s Digital Content
Today’s game developers have a wide choice of digital distribution platforms from which to sell their products. When a game is very large it’s often necessary to deliver some of its content from...
View ArticleBeing a negative developer
I want to respond to the AltDevBlogADay post Negative Developers and Team Stability, which hit home. It’s not that I think the advice was particularly interesting (all good, standard stuff), it’s that...
View ArticleBitsquid Foundation Library
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...
View ArticleA Simple System to Patch your Game Content
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. Introduction...
View Article