CategoryIndie Game Dev Programming

Performance is not always important


Articles like this annoy me. I think the comments by Cliff Harris about how indies are not trying to push the envelope from a technical stand point are misguided.

Cliff Harris - Performance

Cliff Harris on indie games and performance

If you read this article and then read the comments below, you’ll notice that most people disagree with Mr. Harris, just like I do. They say that performance doesn’t matter. It’s the quality of the game itself, through narrative and good game play; not graphics or other technical aspects that make a game interesting. I wholly agree with these comments, but I would like to add an extra aspect to the discussion: history.

The good old performance days

When you look at the history of game development, technology has always been an integral part of gaming culture. Engineers (computer or otherwise) were the ones building the first games. And as technology evolved, game developers have always been on its bleeding edge, trying to squeeze out performance out of our gaming machines. I remember the race for the best 3D video card features of the late 1990s and early 2000s. I remember blast processing and other fantastical claims by first party console manufacturers. It truly was a grand age. So when some people miss the days where pursuing performance was a mission, I get it. And, it’s probably this relentless pursuit of hardware and software performance that led us to the production of high-quality graphics we have today.

The other side of that medal is that it’s this significant increase that has led us to the (relative) creative stalemate that is the AAA gaming industry. The reason for this is simple. With the improvement of technology came the obligation of creating lots of high-quality content to showcase this technology. And in order to create this content, companies needed to hire more people. And people cost lots of money.

So, as technology evolved, the number of people required to make a high quality AAA game increased tenfold, while the market for AAA games has not expanded as much throughout the years. Because of this reality, AAA companies slowly shifted towards making blockbuster titles that sell high numbers, which meant doing fewer projects but with lots more features (and people). And in order to compensate for the high risks that these mega-projects represent, large companies would take less creative risks. From a financial point of view, it makes total sense. If you invest a lot of money in a crowded market, you need to make sure that you are going to have the sales to compensate for your high costs. So, to do that, you need to reduce the risk on the creative side, which usually means reusing known intellectual property or doing the Nth sequel of a known game franchise.

The aforementioned situation we find ourselves in today is a direct consequence of this technological arms race for performance!

And let’s not forget the pressure that the first parties put on developers to deliver games that highlight their console’s performance. The oft acclaimed Castlevania: Symphony of the Night was almost refused by Sony on the first Playstation because it was a 2D game and Sony was pushing for 3D games at the time!

Now, I’ll agree there are good things that come with this increase in cost. The first obvious good point is more jobs. This is usually a good thing, though some may argue that those jobs become too highly specialized. The second is that the existence of the indie scene is partly due to the risk-reducing decisions of the AAA game industry. By making games that appeal to a larger number of people, the large companies have cast aside certain genres and styles, which left some holes in the market. Some of today’s indies survive thanks to these holes.

While both these points are generally positive, I still think that indie game developers should not care about performance. Sure, a few of them might get noticed in the market through performance prowess. However, I don’t believe this is a path we indies should take lest we end up taking the same path the AAA industry took a few years back.

It is through originality and non-technological innovation that we should make our mark.


Make a Game, not an Engine


I recently was speaking to a colleague about his personal game projects. Always interested in what engines other people use, I asked him which engine he was using. He answered that he was writing his own game engine. As programmers, we’re often motivated by writing new code and programs, even if it means reinventing the wheel sometimes. But, while creating your own engine is an impressive endeavor, I think it’s generally a mistake to do this if you’re trying to be an independent developer. Here’s why.

Why you shouldn’t write your own engine

The general reason is simple; building an engine is a tremendous task considering you need to write both the engine and the tools that support it. Most engines or frameworks that are out there have months or years of work put into them, especially when they are cross-platform. And depending on the size of the team using the tools you need to design and implement, you may find yourself doing a lot of support and features for these users. If you are working alone or with a small group, this will mean that you will use up time and resources for the engine, while the game itself will not move forward. And as an indie, your most important objective is to finish the game (and get the public to know about it). Building your own engine is usually contrary to this objective.

Even in a large studio, writing a new engine is not a task that is taken lightly, because it can take years before the engine and corresponding tools become really stable and usable. In my experience, I’ve seen projects that have come close to failure because someone decided to write a new engine from scratch.

Finally, never forget the three virtues of a good programmer.
The important one in there is lazyness!

A Game Engine - Too much work!

The Unity game engine – Imagine reprogramming that!

What about a using a framework

Yes, using a framework, such as SDL, Cocos2d-x or Starling/Feathers with Adobe Air can be really efficient also. They are usually designed to be fast to learn and easy to use. In many cases also, the frameworks are also multi-platform. Keep in mind, however, that they usually don’t come with tools (which is why they are only frameworks, according to my definition).

If you’re project is programmer-oriented or you know of a way to leverage other tools for your designers/artists, then frameworks can be very interesting. Personally, I tend to use frameworks more than engines, simply because the games I make don’t require tools. And when I do need tools, I’ll usually resort to widespread tools, such as Excel. For example, on The Order of Souls, the designer and artists built the data in Excel. I wrote code to export from Excel into a engine-compatible format. That format was XML, by the way, so I didn’t reinvent the wheel either.

Why you may want to write your own engine

If you need to do something so different that you require a special engine, you might want to consider doing so. If ever you find yourself in that situation, I still suggest that you try to find a good framework from which you can kick off your project. You will also want to minimize the amount of code you write by using open-source code and the like.

Your situation

I’ll admit that my recommendation is directed at those who want to make a business of their indie development, rather than a hobby.
If you’re making games just for fun and are writing the engine as part of the exercise, then by all means, write an engine.
It can be a great way to make a programming portfolio and could even be a marketing vehicle to get known by the public.
I believe the author of the Flixel framework got more visibility by making his work available for public use and gave him some extra exposure.

Finally, if you’re a indie veteran and have made many games independently before, well, you already know what you’re getting into, so it’s entirely up to you!

Oh, and if you’re wondering, I’ve never written an engine before! (but I have started projects based only on frameworks)


© 2017 Indie Dev Guy

Theme by Anders NorenUp ↑