Thursday, June 22, 2006

Know your market - OPTIMISE!

Going back to Yoda Soccer, I had earlier talked about performance issues on my 1ghz laptop. Upon reporting the problem, I had this response:

This is likely because the game requires a graphics card with 64MB of video ram.

Let me get this straight. A remake of Sensible Soccer - a game that ran on the Amiga 500, an Atari ST, the SEGA Mega Drive, and a 486 PC - requires a 64mb graphics card? That is ludicrous.

If you are making an open source game, know your market. Your market is typically not people with high-end graphics cards. If anything, it's people with older PCs who have less cash who do not want to invest in an uber-PC to play games. Of course, you have the ideological few who purchase a Cray to play Supertux, but they are the minority.

So, with your market in mind, and knowing the kind of graphical and computing intensity your game requires, an open source developer should not be satisfied with something that performs badly.

Optimise, and optimise early.

Why optimise early?
  • Your game will be respected more by players if it performs well, regardless of how complete it is
  • More people will come to play your game and spread the word about it
  • You will understand the underlying architecture of your codebase better if you focus on refining it
  • Your codebase will become cleaner as you work on optimising it
  • You will naturally eradicate bugs and improve user experience during the course of optimisation
  • You'll become a better programmer through learning while optimising code
  • Future development of your game, by yourself or by attracting new developers, will be easier because of the above reasons
Is your game slower than it should be? Why are you waiting? Stop feature creeping and start making it faster and smoother. A simple game that plays well is better than a complex game that barely works. Of course, the pragmatic position lies somewhere between those two extremes but err on the side of the former because that is what will impress people the most. It will also help keep you motivated because of the reasons I have mentioned.

Certainly, requiring a 64mb video card for a game that was written on 15 year old hardware is outrageous. Perhaps it is because they use BlitzMax, but surely BlitzMax can't be that inefficient. Hopefully in the future the Yoda Soccer developers will consider porting away from BlitzMax so this game can be enjoyed by those of us who are not using fast machines.


Cellfisher said...

Hear! Hear!

Unfortunately, there's a tendency that while computing power increases exponentially, so does the number of computations needed to do even basic things. The good news is that it has become easier to write software: No need to load files progressively, no need to keep track of dirty rectangles, no need for advanced culling techniques. But often, it would only take just a small effort to increase performance by an order of magnitude.
Too bad that people often neglect to spend those few extra hours, thus forcing yet another user to upgrade or give up running the program.

Anonymous said...

I don't think asking for a 64mb graphics card is too much. You won't need it for anything but games, but this is Free _Gamer_.

Evil Mr Henry said...

Have you seen yoda soccer? There is no reason for the game to require a 3D card, let alone a 64MB one. It might require a fast CPU, depending on the language, but it shouldn't need a video card.

It scales up, too. A game that normally would require a 64MB card might require a 256MB one, and so on. Somewhat annoying....

Anonymous said...

Spoken like someone truly ignorant of software development.

(skip to the summary if you want the short and sweet of it)

Given the nature of this product, chances are any optimization needed will require major rework on an architecture level and not some quick-fix. And that will inevitibly lead to bugs - a lot of them - not to mention a reduction in features as things get sorted. Given a choice between that and adding a couple more features to a game that already assumedly runs well on the creator's pc, guess which one the creator is going to choose.

You need to realize that these free games are done by people in their spare time, for the love of the game. You are (rather, should be) a happy recipient third party. They have no commitment to you to make a game that works for you. If you think they do, send them money to do it. Simple as that.

On the other hand, you could poke fun and/or make demands that, for all we know, are unreasonable. Maybe there won't be another version of that software. Or maybe someone else will see what other people are having to deal with and just not release their game.

In the mean time, send an email to the guy telling him how much you appreciate his work. If you really feel the need to tell him what problems it has (no one died and made you QA...) be sure to do so in a constructive manner - and if it's open source, why not fix it yourself and submit a patch?


Anonymous said...

Ok, I admit, I hadn't looked at it. Now that I have, wow. I agree mr henry.

Charlie said...

I was trying to offer advice in the article, not complaints. I apologise if it came across that way.

Needless to say, I was shocked by the 64mb comment from a Yoda Soccer developer. I appreciate their efforts and their Free Software, but they alienate their userbase with such silly requirements.

Anonymous said...

it's strange that the football requires accelerated graphics at all.

but i don't agree with "optimise early". too early optimization is evil. developer should first focus on good architecture (which of course cannot be made without a thought about performance). good architecture can be optimized later. too early optimization can bring lotsa bugs and problems.

Charlie said...

You confuse low-level optimisation with "should run ok on hardware X" optimisation. One introduces bugs, the other eradicates them.

I am not saying, "squeeze out every last drop of inefficiency." I am saying, "make it perform adequately given the complexity of the game graphics/logic."

Cellfisher said...

Well, not "early" as in "as soon as possible", but early as in "preferably not too long after the first few releases" or as in: "you don't have to wait until v1.1".

Anonymous said...

Can you really call Yoda Soccer Free Software, if you need a non-free, non-open source tool to actually do something with the code?

(I know the developers have every right to use the tools they like and I am not blaming them for that)

Albert said...

I'm with you on this one, Charlie... If you understand your code well enough, optimization shouldn't be that tricky. (Maybe someone should run Yoda Soccer through a profiler?)

Albert said...

... Another thought:

All this stuff about knowing your market being said, one of the reasons I wrote my "Next-Gen Linux Game Roundup" was because I was ticked off that nobody makes free games with high-end graphics. I'm speaking with experience developing a couple of 3D engines here, and "bling" isn't the hardest part of building a 3D engine. (Although if you tire yourself out building everything else, then you're not going to have the energy to bring the graphics up a notch.)

Charlie said...

The problem with high-quality graphical games is not the engine, it's the content. The time and expertise required to create maps, models, and textures for the game obviously rises the more detail per pixel* you go for.

* [or however you define detail]

Anonymous said...

I agree with the posting here. Yes it may be critical, but is that really so bad? I can't believe that someone is really making the argument that any kind of criticism of free software is uncalled for. I would rather not have someone develop, honestly, than know they are so seriously injured by even basic constructive criticism. Sure, it's valid to suggest that critics submit patches (if they can, but many don't have the skills to do so) but suggesting that anyone who hasn't programmed can't say anything is just a little ridiculous. And it's worth keeping in mind that criticism means people actually care about what you do. Rather than getting injured personally about it realize instead that there are people out there interested in what you do who want you to improve.

Now, on balance of course we should remember to be thankful and mention and show that we are. But I definitely don't agree with those who say that open source or free software shouldn't receive any critical commentary. By virtue of releasing something you can expect such comments to be made, or at least should. It's far better to get that than to get no interest at all, I think.

Provide feedback:

Due to SPAM issues we have disabled public commenting here.

But feel free to join our forums or easily chat via IRC with us.