A Formal Language for Data Definitions
Lately, I’ve started to think again about the irritating problem that there is no formal language for describing binary data layouts (at least not that I know of). So when people attempt to describe a...
View ArticleFour meditations on bad design decisions
I’ve recently been doing a major rewrite of one of our core engine systems, the graph that we use for our visual scripting language Flow. Taking it from something that looks like this: To something...
View ArticleC/C++ Low Level Curriculum Part 10: User Defined Types
Hello again peoples of the interweb. It has been quite a while since the last one (probably even longer than the gap between part 8 and part 9) so I thought I ought to pull my finger out and get the...
View ArticleSurviving a Game Jam
So this being AltDevBlogADay, I’m sure that a lot of people reading this have done at least one game jam. I’m sure that a good deal of people also haven’t had the pleasure yet, so this little write up...
View ArticleImplementing Voxel Cone Tracing
[Updated on 25-2-2013: added a paragraph about lowering the voxel update frequency for faster dynamic update. The demo also added a combo box for choosing the update frequency] Introduction In last...
View ArticleGarbage Collection and Memory Allocation Sizes
As a performance conscious programmer in a soft-realtime environment I’ve never been too fond of garbage collection. Incremental garbage collectors (like the one in Lua) make it tolerable (you get rid...
View ArticleWhy Lua?
A question that I get asked regularly is why we have chosen Lua as our engine scripting language. I guess as opposed to more well-known languages, such as JavaScript or C#. The short answer is that Lua...
View ArticleLatency Mitigation Strategies
Abstract Virtual reality (VR) is one of the most demanding human-in-the-loop applications from a latency standpoint. The latency between the physical movement of a user’s head and updated photons...
View ArticleA Bug in Object Replication and Message Reordering
The Bitsquid network system supports a peer-to-peer model with migration of network objects — i.e., changing the owner of a network object from one peer to another. This recently lead to an rare race...
View ArticleWhat is gimbal lock and why do we still have to worry about it?
If you have ever worked with rotations and Euler angles you are probably at least somewhat familiar with the phrase “gimbal lock”. But like many things concerning rotations, angles and spaces it can be...
View ArticleA Fast, Type-safe & Minimal String Formatting Library, miniformat
The inspiration for this came from tinyformat. Unfortunately it relies on the C++ iostream, basically std::cout, which is somewhat slow and definitely not everyone’s favorite. So I bit the bullet and...
View ArticleCode Share: Source Censoring, Part 2
A while ago I shared the tool we use for censoring source code in the Bitsquid engine. Quick recap: We need to censor the code in our source distributions because there are parts of the code that are...
View ArticleC/C++ Low Level Curriculum Part 11: Inheritance
Hello, and welcome to the 11th part of the C / C++ low level curriculum. About time? Definitely! Last time we looked at the basics of User Defined Types: how structs, classes, and unions are laid out...
View ArticleC/C++ Low Level Curriculum Part 12: Multiple Inheritance
Hello, and welcome to the 12th part of the C / C++ low level curriculum. Really soon after part 11! (No, of course part 11 didn’t get too big and need to be split. Why would you ask?) Last time we...
View ArticleStrattonian Gambit
After a 1 year hiatus from the site (including a bit of crunch), I thought I’d try to start making videos again. Hopefully I can also finish a bunch of the almost dones and post them as well. I...
View ArticleA project management view on IT vs. games
I come from a background of IT development, where I worked in multiple roles from programmer to system architect. During that time I saw many different project management techniques ranging from the...
View ArticleData-driven design with Unity 3d, Part 1 – Brainstorms, Initial Requirements.
This is a slightly-edited re-post of a series that I’ve been writing in quiet isolation (which you get used to doing indie development) on my blog. Currently up to part 4 of the series, they have been...
View ArticleGentle introduction to Google Analytics in Flash
Introduction Being able to check out how many players play your game, from what countries, for how long, on which levels they have problems, how much points do they score, even do they ever visit your...
View ArticleAccurately Reproducing Game Audio in the Playback Environment
Sound Designers are faced with a difficult proposition. Add sound effects, music and dialogue to a game, set rules that determine how those sounds are panned, attenuated and processed in real-time...
View ArticleThere’s nothing like a tidy codebase
There you are! You, yes you! Been tasked with a new feature or a change, to the code or a script, to be done by yesterday, haven’t you? Yes, yes, I know your pain. You’ll be wading through oddly named...
View Article