#ifdef vs #if and if

Compile-time settings and whatnot often make use of #define, #ifdef, and #if. I would like to make the case that using none of these is the best option, and plain old if-statements ought to be used most of the time. Here’s a typical example:

Some debug code runs inside of a paged allocator to try and detect Continue Reading →

TwitterRedditFacebookShare

tinysound Release

I’ve released tinysound.h, a C header implementing a an API over DirectSound for game sounds! Details found here :) Demonstration code:

 

Faster vcvars32.bat

Recently I noticed vcvars32.bat was taking up a significant portion of my compile time. Usually this isn’t a problem if the console that ran vcvars32.bat only needs to run the command once. However in some cases the environment variables setup by vcvars32.bat need to be set each time a batch file build script is run. Continue Reading →

Essentials of Software Engineering – With a Game Programming Focus

I’ve been commissioned to write a big document about what I think it means, and what is necessary, to become a good software engineer! If anyone finds the document interesting please do email me (email on my resume) with any questions or comments, even if you hate it and deeply disagree with me! This is the Continue Reading →

Preprocessed Strings for Asset IDs

Mick West posted up on his site a really good overview of some different methods for hashing string ids and gave good motivation for optimizing this area early on in a project. Please do review his article as it’s a prerequisite to this post, and his article is just really good. I’ve been primarily concerned Continue Reading →

Single File Libraries – bundle.pl | incbin.pl

Sean T. Barrett makes a lot of very cool single-file libraries in C. Recently he’s also been making another big list of other single-file (or two files with src/header) that he likes. The great thing about Sean’s libraries is that they contain functions that do exactly what they intend to accomplish, without doing anything more or less. Continue Reading →