September 2006

(OT) New System

Ordered sunday evening, the new parts for my dualcore-system arrived tuesday morning and everything went smooth. Assembling went easy as suspected and the system did it’s first boot and Windows XP installed without any problems.

But what I’m most happy with is the noiselevel of my new PC. My old parts already were rather silent, but this time it’s so quiet that you almost can’t hear it, no matter if it’s just plain working or under full load when e.g. gaming modern games.

And in case someone is interested in this, here is a list of the hardware I’ve put into my system :

Motherboard : ASUS M2N-SLI Deluxe
For years I’ve been using MSI boards, but some of the new AM2-Boards from MSI had serious problems in their first revisions (and sadly I built one of those into a system I’ve build for someone else) and had to be RMA’d. So this time I went for an ASUS board, and the M2N-SLI is a great board. Great layout, passive cooling, plenty of slots and connectors and the box was packed with accessoires. The BIOS gives you a lot of options to play with and it has plenty of connectors for onboard fans and also is one of the few AM2-boards that still has 3 normal PCI-Slots, which (as you cann see on the shot above) I really needed.

Graphicscard : Leadtek 7900GS TDH
Graphicscards nowadays usually are very similar, there are mostly no real differences between the vendors like it used to be some years ago. But I have built some systems with recent 7900 cards and they all had an extremly noisy reference cooler (noisy isn’t the right word, it’s almost horribly loud) and since I wanted a silent system I went for a card with special cooling and the cooling solution on this Leadtek 7900GS is totally silent. Although all other coolers in the PC are already rather silent you won’t hear this one at all, at first I even stuck my finger into the cooler to make sure that it’s running. And the great thing is that the cooler won’t get louder under load! And as one is used from Leadtek, the package included a lot of additional stuff. There were 2 full games (Serious Sam 2, Spellforce 2, which aren’t that old), some software (drivers, DVD player, etc.) and the usual amount of cables and adaptors. Great buy for just 177€.

CPU : AMD Athlon X2 4200+
Although Intel is leading in terms of speed right now with their Core DUI, I went for an AMD Dualcore. The reason is simple : Intel is still expensive, especially if you want a good board. And since I’m no hardcore gamer, and because for modern games the GPU is more important, I went for this CPU for ~180€.

Memory : G.SKILL DDR800 CL5 1024 MB
Nothing special here. DDR2 sadly has become rather expensive over the last weeks, so I only bought 1 GByte of memory (will upgrade next month or so). The module has a nice heatspreader, but what’s more important is that the board has no problems with it. If you look closer at the AM2-platform, you’ll notice that most boards are very picky about memory.

CPU-Cooling : Arctic Cooling Freezer 64 Pro
I already used this one for two different systems I’ve built for friends, and it’s a very silent CPU-cooler, so I went for this one too. And with 16€ it’s also very cheap.

HDD : Maxtor Diamond MAX 10, 16 MByte cache, 300 GBytes
I’ve been using maxtor drives for years and up ’till no not one single drive failed on me, so I deciced to stay with maxtor. It’s fast, has plenty of space and is silent even under full access. And it was only a mere 85€.

So much for my new PC. I’ve been putting it under stress for two days now and not one single problem or crash, so I can say that it’s stable. Performance is also what I suspected, and it’s a huge difference to my two year old system (Athlon XP2600+, GF6800).

Game design again

I’ve been doing some game design on PjW the last few days and still work a bit on it. That’s why I prefer doing games over other stuff (techdemos, engines), because it includes a lot of different things to do. It’s coding, game design, creating content (3D models and such) and much more. So if you’re tired of one part you just to something different that’s still related to the project.

And since the cording part of the game is already rather advanced, I decided to finally push myself to at least write down some content for the game. First on my book is the list of buildings for the game, and I already have over 30 different buildings written down and I project about 40 different buildings (some of whom need to be researched first) to make it into the final game. The buildings are divided into civil and military ones and besides that each nation will also have 2 exclusive buildings.

Why so many buildings? Because I want to “force” the player to make strategic decisions. You’ll only have nine building places in each region and so you have to really think about what buildings to construct in what region (your outer regions e.g. need more defensive stuff). So if there would only be a few buildings in the game, or if you would have unlimited building place, then there would be no decisions and the player would just build anything available. This is something that I didn’t want, and I hope the way I implemented this part of the gameplay makes PjW a bit more interesting to play.

And now to something completely different :
After over two yeas with my Athlon XP2600+ system (I did add a new graphics card and soundcard) I finally decide to do a whole system upgrade again. I build systems in my sparetime for friends (and for some years also did this for earning some money) but since my current one was so silent and reliable I refused to change it. But since there are a few new games I want to play in higher resolutions I decided to go for an Athlon X2 42o0+ AM2 with an SLI-Board (Asus M2N-SLI) and I also ordered a Leadtek 7900GS. I went for silent parts again (Arctic Cooling CPU-cooler, the Leadtek should be silent too, Board is passive cooled) and hope that I won’t be disappointed.
Well much blub again, but the bottom-line is : Setting up a new system takes some time (especially a developer system), so it’s possible that I won’t be updating this blog until the next weekend or so.

Coding under the hood

And another post without screenshots. That’s because I’ve mainly done stuff under the hood, so there isn’t really much to show with a screenshot this time.

First I implemented save games. You may think that it’s not the best idea to implement such a feature at this early stage, but for this type of game it’s really necessary. To make it concrete I’ll use army feature of the game as an example : If I want to test this part of the game I would have to open up the army management dialogue, create a new army, assign it to a region and thest e.g. moving the army around or attacking an enemy region. But with savegames it’s just a single click for loading a game with a premade army that’s already assigned to a region. I know that savegames will change drastically during developement, but in some of my older projects testing some gameparts took much longer due to the lack of saving and loading games and that’s a mistake I didn’t want to do again.

Second I continued work on the hexagonal battlefield which is shown as soon as you attack an enemy nation with your army. Contrary to one of the “older” screenshots it’s now an own gameview and not just a window that opens up. It also has it’s own user interface to show e.g. your units (with stats) and you can also see the units involved in the battle, so there isn’t too much left for finishing this part of the game.

And most of the time has been spent finding and fixing bugs and annoyances within the different parts of the game. This is something I always do during my bigger projects : I stop adding new stuff and search annoyances and bugs in the current codebase and then fix them before continuing. I prefer this over having those in the game until I’m finished and then having to fix them at the end of developement. One rather annoying bug I fixed was occuring in the GUI, where it could lead to the modal message dialogue to visually disappear. In the end this meant that the user couldn’t close it and thereore couldn’t continue to play. But besides this, I didn’t find any huge bug (or even a showstopper) and fixed some smaller quirks in e.g. the way that you assign and move armies around the map.

And I also coded my own selection method. As you may remember, in one of my older postings I wrote that the newer series 90-drivers from nvidia make OpenGL’s selection mode crawl to a very few fps. And since even the newest one I tried (92.61) didn’t fix this, I implemented my own selection with a simple color selection. So instead of using OpenGL’s selection I render a very simplified version of the scene where the different objects (regions) have different colors, read back the color under the cursor from the framebuffer and select the object based on that color. Works exactly as good as OpenGL’s selection mode, is faster and I don’t have to care for driver-related problems.

Ah well, that’s it for now. This posting grew bigger than I first intended, but as you see I’m slowly approaching a point in PjW where progress doesn’t anymore directly “turn” into progress on screenshots. But that’s not stopping me from continuing to post, though you may get a few less screenshots in the future 😉

GUI, sciences and stuff

Over the last days I have put some more work into the user interface, so in addition to the overhauled control center I showed you last time I now also have a (small) system toolbar in the top left of the screen which currently has buttons for saving, loading and quitting the game. But more important is the addition of the most important informations to the control center, so the player is always uptodate on the most important values concerning his nation. As with the icons for the control center, I also did those in a 3D modeller so that they don’t break the visual flow. And although they’re still preliminary (some of them may stay, some of them will change) they fit very well into the GUI. And yes, I also have plans for what to do with the last empty space of the control center, but more on that at a later time.
So here is a screenshot of the current GUI (still hot, j
ust a few minutes old), click for a bigger view :

But that’s not all, I also implemented the next important part into the game (though not 100% finished) : science. It’s a new window in which you can select what technique you want to research, and right now there are two different main categories; militar and civil technologies. Besides this ingame-window I also added the needed stuff to WeltEdit to be able to add new techniques and also export them to XML (and load them into the game via this XML-file).
And to give you some more insight on how I integrated this, you’ll get a photo and a screenshot. The photo shows my drawing of the science window and the screenshot shows it’s implementation. But as you may notice there are still some parts missing ingame, like the description and image and stuff. But for that I’ll first have to write down some research techniques using WeltEdit.

New control center

After thinking a bit more about the control center, I came to the conclusion that the four buttons I initially had in mind (and more or less implemented) were not enough, which in the end would mean that the player would have to press more than just one button to get to some of the important parts of the game. And since this was something I really wanted to avoid in my current game, I had to redo the buttons and now there are six buttons on the control center.

But I didn’t only up the number of buttons, but I also redesigned them and exchanged text for some easy to recognize icons. Not only do they take up less space, but they also look a lot better. And moreover I also added an additional animation effect to the one that you could see in the flash animation I showed you some entries ago : Icons now not only just fade in, but they also grow when the cursor moves over them and shrink back to normal size when leaving their mouseover area. In the shot I have selected one icon, so you can see how it looks after fully growing and fading in, though it’s looking much better in motion.

Staff and Espionage

As opposed to what I planned in my last blog entry, I didn’t do any buildings at all cause I haven’t had much time to do work on the game over the weekend. But that doesn’t mean I did nothing!

First thing I did was to flesh out the espionage (and sabotage) part of the game in my design document. At first I wanted this to be a minor part of the game with not many options, but after thinking about the whole espionage and sabotage thing, I decided to give it more importance throughout the game. So it’s now a full part of the gameplay and you can even hire spys to help you get information and they’ll also be able to sabotage enemy stuff (buildings, armies, etc.). But this part of the gameplay also has it’s twists, so it’s not just hiring a spy, infiltratring an enemy region and then easily sabotage stuff there. I’ll put some things in this part to make it risky and not as easy as it sounds, but I also don’t want to tell too much about it.

Next on my list was to reimplement the transfer market. This was already in my first prototype, and I implemented it again into the current build. You’ll use this market place to hire your staff, including generals (for your armies), scientists (no scientists = no science) and spies (see above). Nothing special in terms of coding, but if you spent enough money for good staff you’ll surely have an advantage over your enemy, so this is another interesting strategic part of the gameplay.
And I also made some graphics (with a 3D modeller) for the different professions of your staff members. Up until now I used some photos I got from google’s imag search, but I didn’t like them. They were just some kind of placeholder, and then I just got around making my own graphics for the professions :


Yesterday I took the next step on the stairway to finishing my current game. As you could see from the last postings, I implemented the army feature first, and now I also implemented buildings. And after starting on implementing the feature yesterday night I did a “runthrough” and implemented the whole feature, not step-by-step as with the army feature. So I made my WeldEdit export buildinginformation to XML and ingame you can now build them in a region. Right now you can build up to nine buildings, but contrary to building military units there is no qeue but you can just have one building in construction at a time. The 3D preview is again rendered using PBOs, later one I’ll maybe switch to FBOs and use PBOs only as a fallback for drivers that don’t support FBOs.

Next step now is to create content for this part of the game. Right now I have only three buildings in there for quick testing, but already have most of the buildings for the final game written down in my design document. So I’ll start doing the descriptions, scripts and 3D models for the buildings this weekend.


Sadly there are no screenshots to show off this time. But this is mainly due to the fact that I’ve spent the most time on coding the game mechanics, so on the surface nothing has changed but the game is still on it’s track (actually I’m rather surprised at how fast I advance with all the things I have planned). And besides this due to a personal loss in my family I haven’t had that much time to code since my last update.

As for the game itself, I have continued coding on the army part. In addition to the last update you can now not only build units, but also manage armies and attach (and detach) the units you built to them, and you can also assign them to one of your regions. This is the second big step on the list for the army part of the game, with the next (and final) step being able to move them around and therefore also be able to attack the regions of your enemies. This’ll also be the next thing I’ll start working on.

Another thing I did was to write a little app to convert the different 3D file formats I was using (mostly .x) to my own binary file format. The main reson behind this is just speed. Loading the earth model for my current game (which has a lot of vertices, it’s no simple sphere, it has some light elevations) took around 300 ms (only loading, not creating the displaylists, and also without loading textures) when loaded with my ASCII-.X importer and with the new binary file format it only takes a mere 12 ms. So this is something that speeds up loading off the game very much, and since I later on need a lot of models (buildings, units, etc.) I really needed to do this. The app itself is very simple, you just load it up and drag the files you want to convert onto it and it does the rest for your. Plain and simple, but effective.

One more thing I found out recently : OpenGL’s selection mode is extremly slow with drivers from the 90 series on my GF6800. It took me some hours to realize that this was not my fault, and hopefully nvidia will fix this soon.

Armies and Units

As I already told at some point, armies will play a great role in my current game, especially since it could get a bit hard trying to take over the world without any armies. So I decided this part to be the first one that I’ll try to get playable before getting to the other parts. After having my WeltEdit so far finished that I was able to create the units that’ll be in the final game, I finished the army building window in the game (see the screenshot) and the player is now able to qeue units which will then be build and transfered into a global unit pool (contrary to my first design draft, units will be managed global, not regional anymore), from which the player can assign them to an army later on. And as you can also see, the window also has a nice preview of the selected unit in 3D which is currently realized via an offscreen pixelbuffer. Though I’d like to use FBOs instead of PBOs, FBOs are still to new and I also want the game to run on older hardware.

In addition to coding on the game itself I finally decided to create a small GUI-editor. Up until now I changed the XML files that described the GUI (and windows) in notepad, but some windows (like the above) are rather complex, so changing them by hand was no solution. The editor itself is very simple, you have an OpenGL-preview for the GUI and you can place new elements on it and change their properties, much like what you do with Delphi when creating Win32-UIs. Nothing special and certainly nothing that thousands of other coders don’t have, but somehow I felt the need to mention it here.

And so the game slowly starts to come together and I must also admit that coding games really makes fun again after my longer break. Stay tuned for the next update!