In Part I in the series on C++ Metadata, I explored how to build the basics of a runtime metadata system for C++ types, including custom classes, third-party libraries’ classes, and even C++ primitives. The article detailed building the low-level facilities to have metadata, but did not cover any real-world uses of metadata. Today’s article [...]
Class metadata systems allow C++ applications to have a sizable fraction of the runtime reflection and introspection available in other high level languages, such as C#, Python, or Java. While C++ does not offer any true metadata system itself (excluding the nearly useless typeinfo/RTTI system, which is barely enough to handle dynamic_cast‘s needs), it’s certainly [...]
C++11 has brought us a few significant language and library improvements which can make for greatly increased API ease of use and performance. Several of these features have a huge impact on how we write custom containers. Since I haven’t seen any in-depth articles on this topic, and honestly haven’t seen any truly in-depth articles [...]
Our game SONAR is now available on the Chrome Web Store! SONAR is one of the first commercial WebGL games released (possibly the first one ever to be written from the ground up in pure JavaScript). The gameplay is very similar in spirit to Subsonic, our sophomore DigiPen project. Aside from snazzy new 3D visuals, [...]
String libraries have been a frequent topic of conversation lately. There’s a lot of things wrong with the C++ standard’s implementation, a lot of missing functionality, and a lot of discussion about the best ways to fix it or work around it. I’m going to go over a few suggestions that I and my fellow [...]
I have written a small demo (tested in GCC 4.6) showing how to get compile-time hashing of a string literal in C++0x.
Just a few years ago, we had it easy. Optimizing a game engine was all about low-level code. Machine optimizations. Instruction counts. Black magic mathematics. As technology rolled on, however, things got more complicated. CPUs got faster while memory stayed slow, invalidating many optimization techniques relying on tables and pre-computed values while new optimizations involving [...]
To say that the object-oriented programming paradigm is the most popular and widely supported method of creating software today would be an extreme under-statement. Not only entire sets of tools but entire organizational development processes are built around the object-oriented model. The popularity of languages like C++, Java, C#, and other object-oriented languages has skyrocketed [...]
For those who are interested in using the Xbox Gamepad in cross-platform titles, I’ve written a small library to help out. On Windows it is just a thin wrapper around XInput. On Linux, it uses the native joystick interface provided by the xpad driver. OS X and other platforms are currently missing (I don’t have [...]