The Const Nazi

The Const Nazi

Anybody who worked with me or saw any of my code, would know right away why they call me the Const Nazi. That’s because in my coding style, I make use of the keyword const everywhere. But instead of going on about how const is so great, I’m going to let Hitler tell us how he really feels about it. No Flash? Try the QuickTime video version. Let me get one thing out of the way to stop all the trigger-happy, const-bashing, would-be-commenters: const doesn’t make any guarantees that values don’t change. ...

When Is It OK Not To TDD?

When Is It OK Not To TDD?

The basic principles of Test-Driven Development (TDD) are very simple and easy to understand. Every programmer quickly grasps those and is able to apply them to simple cases and low level libraries (math libraries seem to be everybody’s favorite TDD proving ground [1]). What becomes significantly more difficult is learning to effectively apply TDD to code with more dependencies. A question that I’m often asked from people trying to use TDD for the first time is “How can you possibly use TDD for high-level game code? It’s impossible!”. ...

The Always-Evolving Coding Style

The Always-Evolving Coding Style

This is my first entry into #iDevBlogADay. It all started very innocently with a suggestion from Miguel, but the ball got rolling pretty quickly. The idea is to have one independent iPhone game developer write a blog entry each day of the week. At first we thought we would be hard-pressed to get 7 developers, but it’s starting to seem we might have multiples per day! Check out the new sidebar with all the #iDevBlogADay blogs. We’re also putting together a common RSS feed if you want to subscribe to that instead. ...

A Day in the Life

A Day in the Life

High Moon Studios is an unusual company in the games industry. We’re applying agile methodologies for all of our development. My team in particular is using both Scrum (an agile management methodology) and Extreme Programming (an agile engineering methodology). And yes, that means we’re doing pair programming, test-driven development, and all the other often controversial practices. I expect that in a few years, these practices will be a lot more common than they are today. ...

Agile Game Development: Dealing with Chaos in the Real World

No plan survives first contact with the enemy. In game development, detailed milestones, complex schedules, and careful planning often go out the window as soon as the project starts. Agile development provides a set of techniques to steer the project in the right direction and embrace change. Is your game not shaping up to be as fun as you thought? Has a game come out with features that you must match to remain competitive? Has your code degenerated into an unmanageable mess? ...

Simple Is Beautiful

Simple Is Beautiful

If you’ve read some of my other articles, you know that I believe that the best code is no code at all. But what if you actually have to write some code? What then? This article deals with that question and shows the importance of simplicity. ...

GDC 2004: Software Engineering Roundtable Summary - Session 1

GDC 2004: Software Engineering Roundtable Summary - Session 1

This is the summary of the first session of my GDC 2004 roundtable: By the Books: Software Engineering in the Games Industry. Unlike other years, each session focused on different topics. This one starts with a general discussion of what we need software engineering for in the games industry and then looks into specific techniques that teams can adopt as part of their development process right away. ...

GDC 2004: Software Engineering Roundtable Summary - Session 2

GDC 2004: Software Engineering Roundtable Summary - Session 2

The second session of the GDC 2004 roundtable “By The Books: Software Engineering in the Games Industry” concentrated on processes and methodologies. In particular, we had a good look at agile development and how it can be applied to game development. ...

GDC 2004: Software Engineering Roundtable Summary - Session 3

GDC 2004: Software Engineering Roundtable Summary - Session 3

It is true that no tools are necessary to apply good software engineering techniques, but they can often be a big help. The third and last session of “By the Books: Software Engineering in the Games Industry” concentrated exclusively on languages and tools, and participants shared their favorite tools and warned others about potential duds. ...

Physical Structure and C++ - Part 2: Build Times

Physical Structure and C++ - Part 2: Build Times

For small projects, we can blissfully code away without paying any attention to physical structure and we won’t be any worse off for it. However, as a project grows, it reaches a critical point where build times become unbearably slow. This article looks into the reasons for such slow build times and explores some techniques to speed things up. ...

Physical Structure and C++ - Part 1: A First Look

Physical Structure and C++ - Part 1: A First Look

The physical structure of a C++ program is very important yet it is often overlooked. This two-part article will attempt to explain why the physical structure of a program is so important, present some useful guidelines, and show its effect on compile times. ...

Maintenance, The Hidden Cost of Software

Maintenance, The Hidden Cost of Software

“Maintenance? I never do maintenance!” I hear you say. “I’m a game programmer! A coder who lives on the bleeding edge and doesn’t have to bother with boring stuff like that. That’s for stuffy database programmers, not for me.” Have you ever tackled a problem that was supposed to be solved by writing some code in half an hour, but that code haunted you (or your coworkers, much to their chagrin I’m sure) for months or years to come? Then you have felt first hand the consequences of maintenance, the hidden cost of software. ...