Printing Pretty Ascii Trees
I’m terrible at writing recursive algorithms. Absolutely horrible. So for practice I decided to try printing a binary tree where all branches have two children, all in the console. It turns out this is...
View ArticlePath of Exile – Righteous Fire Calculator in Lua
Lately I’ve been playing Path of Exile and created a Righteous Fire character. Since it’s important to make sure you have enough life regeneration and fire resistance to play with Righteous Fire I...
View ArticleFreelist Concept
A freelist is a way of retrieving some kind of resource in an efficient manner. Usually a freelist is used when a memory allocation is needed, but searching for a free block should be fast. Freelists...
View ArticleThe Concept of Polymorphism
For a while I thought of many computer science terms as useless hype. For example, as said by Jon Blow in one of his recent videos, some terms can be vague or hard to recollect. Buzzwords....
View ArticleA Star
Recently I’ve found a nice piece of pseudo code for implementing A Star after searching through a few lesser or incorrect pseudo code passages:clear open and closed let s be start node let e be end...
View ArticleCircular Orbits | Planetary Motion | NBody Simulation
I took a few hours yesterday to start on a simulation for a job application. Part of the simulation involves trying to figure out how to create stable nbody orbits, at least stable for some amount of...
View ArticleGood If Statements – Self Documenting Code
Here’s a quick trick for documenting those pesky if-statements, especially when littered with complicated mathematics. Here’s an example from Timothy Master’s “Pragmatic Neural Network Recipes in C++”...
View ArticleFinding Heap Corruption Tip on Windows
If one is fortunate enough to have access to <crtdbg.h> from Microsoft’s Visual C++ header, when running in debug mode there are a few _Crt*** functions that can be pretty useful. My favorite...
View ArticleSingle 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...
View ArticleCompute Basis with SIMD
A while back Erin Catto made a cool post about his short function to compute a basis given a vector. The cool thing was that the basis is axis aligned if the input vector is axis aligned. Catto noted...
View ArticleI hate the C++ keyword auto
Warning: rant post incoming! I’m not really sure what other programmers are thinking about or focusing on when they read code, but personally I’m thinking mostly about the data being operated on. One...
View ArticlePreprocessed 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...
View ArticleForest RTS – Unfinished Game
Decided to release an unfinished game that will never be finished. RIP. The game started as a for-fun game jam to test out working with a couple friends of mine. In the end we ended up working for...
View ArticleEssentials 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...
View Articlememfile.h – Reading files from memory with fscanf
Often times it is extremely convenient to compile certain assets, or data, straight into C code. This can be nice when creating code for someone else to use. For example in the tigr graphics library by...
View ArticleFaster 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...
View Articletinysound Release
I’ve released tinysound.h, a C header implementing a an API over DirectSound for game sounds! Details found here :) Demonstration code:void LowLevelAPI( tsContext* ctx ) { // load a couple sounds...
View Article#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...
View Articlegit isn’t so bad!
If readers are anything like myself they may have tried out git from the command line and decided it was way too ridiculous to be worth the time. A quick google search for git tutorials yields very...
View ArticleCross Platform Time for dt
Generally a game loop will look something like this:while ( 1 ) { float dt = Time( ); Game( dt ); }Generally the delta time slices between each game loop are useful to advance the game to the next...
View Article