AltDevConf is an online community-driven conference that will take place February 11-12, 2012

We aim provide free access to a comprehensive selection of game development topics taught by leading industry experts, and to create a space where bright and innovative voices can be heard.

Q: What is #AltDevBlogADay?

#AltDevBlogADay is a group of game developers and otherwise interested people (generally found on Twitter), ranging from experienced devs to students and educators to hobbyists, that want to blog more regularly. An idea inspired by iDevBlogADay.

Q: What do/can the developers post about?

Our peeps will post about anything they think might be interesting. That can vary from the extremely technical to the very high-level. It can be specific to their experience in game development, or simply a marginally related topic of interest. Basically we post what we think is interesting. And hopefully that's interesting to you too!

Q: How can I participate?

If you're a game developer (or related) and want to contribute, contact @mike_acton on twitter or email at

Also see: #readme (for Writers)

Q: Can you slow down the rate of posts? I'm having a hard time keeping up!

Nope. It's not live TV. You don't have to read it as it's written. You're welcome to read the posts at any rate you like. It's the nature of the internet that more information is generated than you could possibly consume. I suspect there are Wikipedia pages you haven't read either. ;)

Multi-Threaded Programming 3: Locking, Lock-Free, Wait-Free

Now I want to cover the basic terminology used when talking about concurrent algorithms. This will be helpful so that you are familiar with the available techniques you have when you have multiple threads operating together. The term concurrent itself refers to an algorithm that can scale from being synchronous on a single thread to utilizing multiple threads at the same time. The terms I am going to cover also exist independently of any architecture, though the actual implementation will vary due to the underlying hardware differences. I am going to cover them in order of increasing difficulty to implement, so if you are interested in implementing an algorithm of your own, I would suggest starting with the simplest implementation and moving on only as needed.

Read more on Multi-Threaded Programming 3: Locking, Lock-Free, Wait-Free…

Custom Vector Allocation

(Also posted to, number 6 in a series of posts about Vectors and Vector based containers.)
A few posts back I talked about the idea of ‘rolling your own’ STL-style vector class, based my experiences with this at PathEngine.In that original post and these two follow-ups I talked about the general approach and also some specific performance tweaks that actually helped in practice for our vector use cases.I haven’t talked about custom memory allocation yet, however. This is something that’s been cited in a number of places as a key reason for switching away from std::vector so I’ll come back now and look at the approach we took for this (which is pretty simple, but nonstandard, and also pre C++11), and assess some of the implications of using this kind of non-standard approach.

Read more on Custom Vector Allocation…

GDC 2014 Report

It’s that time again. Personally I think GDC this year was more interesting that a few preceding ones. Next-gen consoles have arrived, mobile gaming is really big still, and a quality Virtual Reality is becoming a reality.

Read more on GDC 2014 Report…

Principled Design

What makes good software?

Lots of properties, certainly, are probably required for us to consider a bit of code to be good. It’s probably robust, and well tested. It probably has a clean API, a lack of temporal coupling, informative error messages. Perhaps it’s well documented where it needs to be.

Read more on Principled Design…

Zero Initialisation for Classes

(Also posted to, number 5 in a series of posts about Vectors and Vector based containers.)

This is a response to comments on a previous post, roll your own vector, and has also been rewritten and updated fairly significantly since first posted.

Read more on Zero Initialisation for Classes…

Video game research sucks. Here’s how you can help.

At moments that an industry undergoes a fundamental change, market research is most valuable. Retail game sales are down. Digital sales are way up. Mobile and tablet have everyone excited, and equally clueless. Today more people than ever before play games. The industry is now a mosaic of new platforms (both hardware and software-based), and offers a slew of new distribution methods and revenue models. For the first time, the games industry is a truly a global market, as even markets that historically were inaccessible to publishers have now become viable. Opportunity abound, but where do we begin?

Read more on Video game research sucks. Here’s how you can help….

Unity3D Resumable Downloads

The Problem

I keep working with mobile games built using Unity, most of which have a target executable size of 50MB. These games however  tend to have more than 50MB worth of assets, so they pack content up into asset bundles, and download them later using Unity’s WWW class. At this point these games all run into the same problem. On a flaky mobile network downloading a 2MB file can be a challenge, often the download is disrupted or worse yet the player walks into an underground tunnel (or something like that).

Read more on Unity3D Resumable Downloads…

Challenges with projects and kids

10 years ago my husband and I decided we wanted to make games. We had tons of time to learn anything we needed to even with both of us having jobs.

Read more on Challenges with projects and kids…

Keyboard shortcuts info in debug builds – IMGUI style

I want to share a little discovery, a trick easing the creation and development of games. First a short motivational and historical introduction.

Case study

I don’t know if you have it too, but when I’m creating a game, I often add to it a lot of keyboard shortcuts – even a few dozens. Player avatar, enemies, map, camera, physics, rules etc. Shortcuts use normal letters, digits, F keys, special keys (tab, home, backspace), and their combinations with ctrl, shift, alt. Sometimes it’s hard to figure out what is available and what does what.

Read more on Keyboard shortcuts info in debug builds – IMGUI style…

Company growth and the development approach of Fragments of Him

This blog is intended as a write-up of recent events and activities of our game development company SassyBot Studio. As a result, the contents of the blog reflect personal approaches and insights that we like to share and should not be taken as industry facts. We hope that by sharing our thoughts and experiences of past and future events it may help other start-up indie devs with struggles and questions of their own. We embrace contact and encourage you to share your adventures and lessons with us either here or through Twitter @SassyBotStudio.

Read more on Company growth and the development approach of Fragments of Him…

Musical Dimensions: What Music Reveals About Your Game

The effort it takes to make a game is divided between several individuals, even more so that members of indie teams are often spread all over the world. Somebody does visuals, somebody game design, programming, 3D models and so on. But no matter what role I had in an indie team, be it composer, sound designer, team lead or producer: The more I knew about how other departments worked, the better I could do my job. Normally, composers are only needed for a short period of time. Thus, composers join and then leave indie teams again after they delivered their part of the puzzle. But what do composers work with so one can make the most of their time?

Read more on Musical Dimensions: What Music Reveals About Your Game…

Vessel Post Mortem: Part 3

This is the final part of the Vessel Porting Trilogy. The previous parts can be found here

After the Christmas break (where I was forced into yet another family vacation) I dove straight back into the code, hoping to get the final issue fixed and the game submitted as soon as possible. There was still time to submit and if I passed Sony’s submission process first time then we could still have the game on the PSN store by the end of January. I fixed the remaining problem with the start up error reporting and added in a little more error checking just to be sure. I was pretty paranoid about the submission process as I didn’t want to delay the game anymore by failing – I carefully checked everything twice, crossed my fingers and hit the ‘submit’ button to Sony America (SCEA) on January 9.

Read more on Vessel Post Mortem: Part 3…

Vessel Post Mortem: Part 2

In the last episode, our intrepid heroes had discovered that rather than having almost finished the PlayStation 3 port of Vessel, they were barely half way there. Read on to find out what happens next…

(This is part 2 of a 3 part series on the porting of Vessel from PC to PS3. Part 1 can be found here)

Read more on Vessel Post Mortem: Part 2…

Going Free To Play

Battle Group 2 LogoWe’ve spent the last few months working on a sequel to Battle Group, aptly named Battle Group 2. The game is coming along well and the team is excited to be showing it off at GDC Play this year. Other than the incredible new visuals, deeper gameplay with satellite strikes and reworked rendering system we’ve decided to make the game Free to Play. This post is about the why, how and when of this decision.

Read more on Going Free To Play…

Data Structures for Entity Systems – Contiguous memory

This year I’m working on two different projects that need an Entity System (ES). One of them is a non-game app written natively on iOS + Android. The other is an FPS in Unity3D.

Read more on Data Structures for Entity Systems – Contiguous memory…

Implementing a code generator with libclang

[DOI: 10.5708/szelei.2014.A.1]


Click here to skip the introduction and see the code.

The following article covers the process of implementing a practical code generator for C++ in detail. You can find the full source code for the article on GitHub. This was originally posted on my blog, Source Code Tales.

A code generator is a very useful asset in a larger C++ project. Due to the lack of introspection in the language, implementing the likes of reflection, script binding and serialization requires writing some sort of boilerplate that essentially keeps the data which is otherwise thrown away by the compiler. These solutions are either intrusive (heavily macro-based, thus hard to debug and require weird syntax in declarations) or fragile (the boilerplate must be constantly updated to follow the actual code, and might break without warning). One way to improve the robustness is to automate writing this boilerplate. In order to achieve this, we need to parse the code somehow, in other words, understand what information to keep. However, parsing C++ is an extremely complex task, and with the copious amount of weird corner cases, we are in for quite a ride if we attempt to do so. Read more on Implementing a code generator with libclang…

Fragments of Him prototype – designer’s post-mortem: Scope, sexuality, and scripts

<foreword>Hello dear #AltDev community. Thank you for including me into this community and hopefully your trust will not be misplaced in allowing me to submit my contributions to this blog. My name is Tino and I write from the perspective of a co-founder and creative at a young independent game development studio called SassyBot Studio. What you can read below is a look back on the narrative experience ‘Fragments of Him’, a well received Ludum Dare game that is currently in development to be a full title. Hopefully, the contents of this blog will be valuable to you.</foreword>

Read more on Fragments of Him prototype – designer’s post-mortem: Scope, sexuality, and scripts…

Vessel Post Mortem: Part 1

(This article has also been posted at and is the first part of a 3 part series)

I started looking at Vessel in January 2013 – initially just in my evenings. In my ‘spare’ time. I was looking at it because John and Martin (the founders of Strange Loop Games and the creators of Vessel) had asked me to consider porting it to PS3. We knew each other from our time together at Pandemic Studios in Brisbane where I had worked closely with Martin in the Engine team while John worked on AI. I was keen to do the port but I wanted to be as sure as possible that I knew how much work was involved in it before committing.

Read more on Vessel Post Mortem: Part 1…

Multi-Threaded Programming 2: Communication

The next step in learning about multi-threaded programming is going to involve seeing how threads communicate with each other. This is important so that it is understandable why many of the pitfalls when programming with multiple threads exist. I am going to stick with x86-64 based architectures for simplicity, but this is pretty applicable to all computing devices from my experience.

Read more on Multi-Threaded Programming 2: Communication…

Don’t Lose the Beauty. Don’t Lose the Art.

I’m sure this will will bet yet another inflammatory article from me, and for that I apologize, but this is something that I strongly believe needs to be discussed. I’ll try to keep it short, but it is something worth thinking over, if only for a moment.

Read more on Don’t Lose the Beauty. Don’t Lose the Art….

ESports Experts Weigh In On Growing Opportunities

Also posted on:

Some top eSports executives convened at Game Connection Europe in Paris, December 2013, to discuss the opportunities in the growing space.

The advent of Twitch, Azubu and livestreaming over the past three years has helped fuel the explosive growth of eSports, or electronic sports. With companies like Valve (Dota 2), Riot Games (League of Legends), S2 Games (Heroes of Newerth) and Blizzard Entertainment (StarCraft 2) offering millions of dollars in prizes with annual tournaments and seasons and full-on leagues like Major League Gaming, Electronic Sports League and others turning pro gamers into cyber athletes; there’s a new way to connect with the elusive 18 to 34 year old male gaming demographic.

Read more on ESports Experts Weigh In On Growing Opportunities…

Agile Game Development is Hard

I’ve spent the last few weeks trying to write a blog post about why Agile software development is inherently more difficult for games than other software. I searched for some fundamental reason, such as games being works of art, or being entertainment, or being more difficult to test, or anything about their very nature that makes game development different from other types of software development.

Read more on Agile Game Development is Hard…

Multi-Threaded Programming 1: Basics

This will be a series of posts in which I will cover a good portion about what I have learned in terms of multi-threaded development in the realm of video games. I am writing this since I have been inspired by informative series of posts here such as Alex Darby’s Low Level C/C++ Curriculum. So my goal is to explain how multi-threading works at a low and high level, as well as looking at a few common scenarios that can benefit from these techniques. I might even touch on a few situations you can get yourself into and some techniques for debugging them. I hope you will enjoy reading about it as much as I enjoy discussing it.

Read more on Multi-Threaded Programming 1: Basics…

The Lasting Excellence of Legacy of Kain: Soul Reaver’s Writing

Raziel in Legacy of Kain: Soul Reaver.
Raziel in Legacy of Kain: Soul Reaver.

Legacy of Kain: Soul Reaver is widely regarded for its excellent writing. There’s a reason for this that may not exactly surprise you: its writing is excellent, and deserves to be studied as an exemplar of what game writing can be.

Read more on The Lasting Excellence of Legacy of Kain: Soul Reaver’s Writing…

Game Designers are all on Steroids

Video Presentation:


Game Designers around the world are addicted to performance enhancing drugs and many of them don’t know it. They are addicted to progression and escalation.

As game designers we are often playing with human psychology and tapping into the various triggers and ticks of human behaviour; our reasons are varied. Some of us want to give the player a roller coaster ride, to make them feel, to make them pay, to get our message burned across the heart but almost all of us want them to keep on playing.
Read more on Game Designers are all on Steroids…

“Unearthed: Trail of Ibn Battuta” game development analysis


This game development review has many spoilers on the game, if you didn’t play the game yet and you’re intending to play it soon, then you may want to skip reading this until you play it.


Read more on “Unearthed: Trail of Ibn Battuta” game development analysis…

How to Build an Indie Arcade Cabinet

(This post was written by my Studio Mercato colleague Jon Stokes, and seemed like a great fit for something different!)

Back in July of last year, Studio Mercato was offered an opportunity to exhibit our game Crystal Brawl on an actual freaking arcade machine in a charming, tatted-up dive of a music venue in Brooklyn called Death By Audio. The one caveat: we had to build it ourselves. Obviously we jumped at the chance, and thanks to the excellent Mark Kleback of DBA, construction kicked off in August and was completed the following December.

Read more on How to Build an Indie Arcade Cabinet…

Reading The Papers: Ludus Ex Machina

Screen Shot 2014-01-17 at 19.03.47

I haven’t discussed my own research in this column yet, but you may know that I’m interested in automating the process of game design in its entirety. At the highest level, game designers produce mechanics that connect to our understanding of reality – gravity makes you fall, projectiles hurt things they hit, touching food heals you – and through this convey meaning that can be anything from representational to metaphorical and artistic. Can machines do this? This week on Reading The Papers: a system that tries to connect the real world to game mechanics.

Read more on Reading The Papers: Ludus Ex Machina…

Reading The Papers: Exhausting

Screen Shot 2014-01-03 at 17.00.03

When programming systems it makes sense to keep complexity and scale in mind. Don’t try and render 400,000 sprites all at once. Don’t try and send the entire world state to every player on the server. What about our design tools, though? Are we being too cautious when it comes to coding, and what riches might we be able to access if we jumped in the deep end from time to time? This week on Reading The Papers: the power (and responsibility) of computing everything at once.

Read more on Reading The Papers: Exhausting…

Avoid Resize()?

(Also posted to, number 4 in a series of posts about Vectors and Vector based containers.)

This post is essentially a response to feedback to this previous post.

In that post I talked about a change we made to the initialisation semantics for PathEngine’s custom vector class, and described a specific use case where this can make a difference, with that use case involving calls to the vector resize() method.

Read more on Avoid Resize()?…