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 macton@gmail.com

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. ;)

Life can be better (part 2 of 3)

In the previous article, I set the context of a personal journey of health within the backdrop of larger issues of quality of life in our industry. In this article, I continue that journey with my own personal experience of burnout and depression and what it took me to regain my own health, vitality, and enthusiasm for the work that we all do. My personal wish is to not see any more bright, creative people suffer from work-related stress. Extended stress has odd effects on both the body and the mind.

Read more on Life can be better (part 2 of 3)…

C/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 in memory; and (some of) the implications of memory alignment on this picture.

In part 11 we’re going to look at how inheritance affects this picture, in particular the implications for memory layout of derived types and also for their behaviour during construction and destruction (note: we’re leaving multiple inheritance and the keyword virtual out of this picture to start with). Read more on C/C++ Low Level Curriculum Part 11: Inheritance…

Code 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 covered by NDAs to third parties and cannot be publicly disclosed. We do this with a tool that strips out the secret code and replaces it with blank lines, based on preprocessor definitions.

Read more on Code Share: Source Censoring, Part 2…

“App Of The Day” type apps can help indies with app discovery

Let-Me-Give-You-A-BoostApp discovery has to be one of the biggest hurdles that independent developers will face in the mobile marketplace. When limited marketing budgets butt up against a crowded app space, it’s difficult for small devs to attract attention to their work. This is one of our primary obstacles we’re facing with our new release, Vex Blocks for Android. We’ve made the game, people seem to like the game, how do we get people to notice the game with our marketing budget as constrained as it is? I’d had a successful mobile developer recommend to me in the past that when you launch a new game, all you need to do is to pay the Russians $5,000-10,000 to get you to the top of the app charts and then see if you stay there. If your app doesn’t stay there, move on. That wasn’t the particular answer we were looking for with this game release and that’s where App Turbo helped out.

Read more on “App Of The Day” type apps can help indies with app discovery…

Life can be better (part 1 of 3)

TL;DR – If you’re happy, healthy, and have energy to make things happen most of the time, then keep doing what you’re doing. If not, or if you used to be and now aren’t, then you may be interested in what I have to say.

Read more on Life can be better (part 1 of 3)…

A 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 got around to implement my own with minimal dependency and speed in mind.

Read more on A Fast, Type-safe & Minimal String Formatting Library, miniformat…

Android piracy still sucks

you_are_a_pirateI don’t consider myself naive.  I understand piracy is rampant; I’ve known this for years and when I decided that I’d form an indie studio two years ago I like to think that I did so with my eyes open.  Deciding to switch careers and go indie wasn’t a decision that was made lightly and my family and I knew beforehand that it wasn’t going to be a walk in the park.  The reward of creating even a modestly successful business would be worth it.  I still believe that.  Still, with the release of our new mobile puzzler, Vex Blocks, there’s an emotional, open-handed slap across the ear to be had when you realize that your release is being pirated at a rate of 20:1.  On the Android market, a developer’s hard work is so devalued that 95% of gamers would rather pirate your game by the thousands than pay a dollar to help support what you’re doing and enable you to feed your family.  Even though I was aware that piracy on Android was bad, it’s a soul shaking realization when it hits in relation to your own product and it left me to question if it’s even possible to make a living as an independent developer.  All piracy sucks and the Android market isn’t alone in fighting this scourge, but what can be done and how has it impacted the games we make?

Read more on Android piracy still sucks…

Designing a game to behave in ways for which it was not designed

Prologue

I’d like to start this article by pointing out that it is merely a documenting of my own personal experience and thoughts that led from it, and in no way is a treatise on what I think everyone should do. Please take it with a grain of salt.

Read more on Designing a game to behave in ways for which it was not designed…

Designing “10000000″ as a Free To Play Game

1000000 [iOS, Android, Steam] is a puzzle-runner-rpg-like game developed by Eightyeight Games. If you haven’t played it, I seriously recommend to check it out since it’s awesome, and its story of development and success is as amazing and inspiring as the game itself.

Read more on Designing “10000000″ as a Free To Play Game…

What 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 tricky to visualize and get a good grasp of.

Read more on What is gimbal lock and why do we still have to worry about it?…

Launch Day 2.0

Rocket LaunchI didn’t sleep well the night before our Sunday launch of Vex Blocks. Despite the weeks we’ve had the game in the hands of testers, a new bug had come to light late Saturday evening. While not game breaking it still needed to be addressed. I stayed up working on the problem until solved. Chat messages, frantic on my part, went back and forth between myself and my partner until between the two of us we were able smooth things out. I then prepped the build for the next morning’s launch and finally after a long day allowed myself to push back away from my desk just after 1am. I tried and failed to sleep after that.

Read more on Launch Day 2.0…

30 Weeks of Game Development

Outland Games is an iOS game I’ve been working on at Uber Entertainment since late last summer. We just released the game to the app store this week (iTunes – $0.99). This post is the first in a short series on it’s development.

Read more on 30 Weeks of Game Development…

A 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 condition.

Read more on A Bug in Object Replication and Message Reordering…

Latency 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 from a head mounted display reaching their eyes is one of the most critical factors in providing a high quality experience.

Read more on Latency Mitigation Strategies…

Why 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 is lighter and more elegant than both those languages. It is also faster than JavaScript and more dynamic than C#.

Read more on Why Lua?…

Vexing puzzle design

PuzzleI enjoy a good puzzle.  At my core, I look for patterns in pretty much everything around me and I think we all do to some extent.  Looking for order in chaos is just something that we all do from the time we’re toddlers.  That’s when toddlers aren’t creating chaos, as I’m sure other new parents can attest to.  It’s no surprise that puzzle games are among the most popular games available for mobile devices.  A good puzzle game will keep us captivated for as long as we find it challenging.  I thought I’d take a moment and share my design process as a new game designer working on the puzzle mode for our imminent title, Vex Blocks.

Read more on Vexing puzzle design…

Brewing Your Own Game Analytics Service

In this post, I describe how to implement a game analytics system to collect and store game data.  At the end of the post you’ll find links to the source code for my sample implementation.

Read more on Brewing Your Own Game Analytics Service…

Garbage 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 of the horrible garbage collection stalls), but there is still something unsettling about it. I keep looking at the garbage collection time in the profiler, and I can’t shake the feeling that all that time is wasted, because it doesn’t really do anything.

Read more on Garbage Collection and Memory Allocation Sizes…

Implementing 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 year SIGGRAPH, Epic games presented their real time GI solution which based on voxel cone tracing. They showed some nice results which attract me to implement the technique and my implementation runs at around 22~30fps (updated every frame) at 1024×768 screen resolution using a 256x256x256 voxel volume on my GTX460 graphic card. The demo program can be downloaded here which requires a DX11 GPU to run.

Read more on Implementing Voxel Cone Tracing…

An update to Single Joystick

Two weeks ago I posted an article showing progress on a new type of touch screen joystick, that allows you to move and rotate using a single touch. The response to that was really positive, and so I’ve continued working on it in the background. This is a short post updating on progress.

Read more on An update to Single Joystick…

Put On Your Game Face (revisited)

TL;DR

About a year ago, I wrote a blog post here about a weekly blog series on our company blog called “Game Face”. A blog post revisiting a blog post about blog posts? It’s blog posts all the way down. As a refresher, “Game Face” is “our weekly round-up of our internal and external open source work at Agora Games. Internal open source refers to our public projects that you can find over at our Agora Games GitHub account. External open source work refers to projects that we contribute to in off-hours and may or may not have anything to do with video games because we’re swell folks like that.” How’d we do in our open source efforts over the last year? Read on…

Read more on Put On Your Game Face (revisited)…

The Crowdfunding Experience

So, just recently, I was asked to give a 90 min lecture in my home city regarding crowdfunding after managing to run a successful campaign myself in mid 2012. The lecture is pretty long, but I’ll include the video at the end in case anyone’s interested in sitting through the whole thing. If not, I was also asked to write a shortened version of it for people to read, so I thought I’d share it here.

Read more on The Crowdfunding Experience…

Surviving 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 is for them. This isn’t really a full article, just a jot-down of some musings that are kind of rushed because I’m most busy when an article on it is most timely.

Read more on Surviving a Game Jam…

Aesop’s Games

My wife and I just had our first child. While our daughter was baking in my wife’s belly, we would talk about what kinds of video games she would like to play when she grew up or if she would wind up liking them at all. I thought long and hard about what games I would want her to play. Which games in my library would I leave on the table for her to discover, and at what ages? What I’ve been looking for are games that teach morals and lessons, particularly ones that do so in a way that cannot be done in other media. A game puts the audience in control, which brings a high level of teaching possibilities to the table.

Read more on Aesop’s Games…

A new type of touch screen joystick

This post is going to be a little different to my usual posts, as it’s going to be more akin to how I write a document for a mechanic. The mechanic in question is a challenge I set myself: try and design a touch based joystick that, in a single stick, provides the functionality that usually requires two. I’ve decided to call this task “Single Joystick”.

Read more on A new type of touch screen joystick…

What Happens Next? (2013)

In June 2011 I wrote an article called What Happens Next?, where I had a quick go at peering into a crystal ball and predicting the future of video games. Recently I did a talk for Social Media Cafe, discussing similar thoughts with 18 months worth of additional future taken into account. Parts of what I discussed in the original article still hold true, and I elaborated upon them in my talk. This article is an amalgamation of the original article, the talk, and a few more bits that I realised I could have discussed at the time.

Read more on What Happens Next? (2013)…

Networking Tips and Tricks Part 1

Wow, it’s been a long time since I’ve posted to AltDevBlogADay! Life has been massively crazy for the past six months or so, and I’m nearing the end of my time in school. In almost 30 days, I will be a college graduate! In the midst of our final project sprint, I was asked by a friend of mine if I ever thought about doing a blog post about networking.

Read more on Networking Tips and Tricks Part 1…

C/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 next post in the C/C++ Low Level Curriculum done.

In the previous posts we’ve covered the structural aspects of the language: flow control, functions, and so forth; and so now we move on to looking in detail at user defined types in C/C++ (i.e. struct, class, and associated keywords) which I naively expected to comprise the bulk of this potentially never ending series when I started it. D’oh!

Read more on C/C++ Low Level Curriculum Part 10: User Defined Types…

Video Game Industry Predictions 2013

Well, the world didn’t end (of course) so it’s time to look to the next twelve months and predict what we might see in 2013. Below are my predictions for the video game industry in 2013.

Read more on Video Game Industry Predictions 2013…

Almost everything you need to know to enter mobile game development on 2013

This is a list of useful resources to help you refine, define, execute and possibly reconsider your decision to enter mobile game development this year. The resources are a little more inclined to the business and game design parts of game development, except for a couple of ones linking other lists.

Read more on Almost everything you need to know to enter mobile game development on 2013…