July 23rd, 2008, 06:14 PM
I made a big discovery this week regarding Dirk Dashing performance on certain computers.
Ever since we first released the game, I've had various folks tell me that the game doesn't run very smooth on their machines. Some were older computers or computers with older video cards, but some were fairly recent machines (mostly laptops) with decent graphics capabilities. This has really stumped me, because I could never figure out why... until now.
I found the cause while working on Dirk Dashing 2. I was experimenting with different ways of doing the rendering so that I could possibly add lighting and other effects. In one experiment, I changed the way I was rendering the background layers immediately behind Dirk (the ones that contain the floors, walls, windows, and ceilings). In the original game, these are all 40x40 tiles that are mosaicked together to form the background. In my Dirk 2 lighting experiment, I pre-combined the tiles to form one large tile that filled the whole screen. Same amount of graphics, but fewer polygons. The game speed increased significantly! Apparently, certain graphics cards can't handle the number of polygons that Dirk Dashing uses.
I guess this should not have been a surprise. Fashion Cents Deluxe doesn't seem to have the performance problem that Dirk Dashing does. But Fashion Cents Deluxe only renders about 100 polygons at most, while Dirk Dashing can render as many as 500 (if there are a lot of gas clouds dissipating or particle effects from bullets striking walls).
So now that I have found the problem, I can build the Dirk Dashing 2 levels in such a way to keep the polygon count low. Dirk 2 should run very well.
The question, though, is what to do about Dirk 1? It will take several months (at least) to "fix" the levels in Dirk 1 to eliminate the performance problem on those particular computers. On the one hand, I feel I should fix Dirk 1 so that the game is the best it can be. On the other hand, is it worth the investment in time? Is it worth delaying Dirk 2 to fix Dirk 1? Would I get enough sales from an improved Dirk 1 to justify spending that kind of time? That's my dilemma. Guess I'll keep working on Dirk 2 until I decide what I want to do.
What do the readers think? You folks are my customers, and your input is valuable to us. What do you think? Should we put Dirk 2 on hold to fix Dirk 1, or keep working on Dirk 2?
July 26th, 2008, 03:43 PM
It's your call, but Dirk Dashing has always ran fine on my machine. I want to see Dirk 2.
August 3rd, 2008, 10:44 AM
I personally agree with Thurmond. Dirk runs good on my Linux box. Me and my kids are waiting to play Dirk 2.
On the other hand, part of what makes your company so great IMHO is your customer service and the way you keep supporting your games, even years after you release them. So if you feel you need to take the time to fix Dirk 1, then that's cool. We'll be disappointed, but we'll try to wait patiently.
August 6th, 2008, 05:31 AM
Thanks, guys. I've decided that there is some amount of optimizing that I can do without having to completely rebuild all of the levels. So I am taking a couple of weeks to make those changes.
Additionally, there are a few features I planned to add to Dirk 2 that I feel should also be in Dirk 1, like a new shortcut method for saving your game and giving Dirk the ability to throw grenades while jumping. So I am adding these new features directly to Dirk 1 before bringing the source code over to the new game.
There's also an SDL upgrade that fixes some joystick issues, adds support for PulseAudio on Windows and Linux, and eliminates TEXTRELs on Linux to solve some issues with SELinux.
I expect to release an update to Dirk Dashing by the end of the month.
August 14th, 2008, 05:16 AM
I think I found the real cause of the slow game performance a couple of days ago, and I have since confirmed it. It turns out that it wasn't the polygon count after all. The game was calling glFlush() after every drawing every polygon. This is, of course, a very bad thing because it forces the game to wait while the drawing commands in the OpenGL queue are sent to the graphics card. When I removed the rogue glFlush() call, I noticed a significant performance increase on my Mac Pro.
So it turns out that I won't need to rebuild any game levels to fix performance, nor do I need to change the way I build levels for Dirk 2. The next Dirk Dashing update should run exceptionally smooth on just about any computer. Watch for this update within the next few weeks.