25 February 2008

Problems with OpenGL implementations

For this update, we are having 3 major new (new as in for EL) OpenGL features:
1. Using vertex programs to render the actors.
2. Using a different selection mode to determine what we have under the cursor.
3. Pixel shaders for the water.

The first two features can increase the frame rate a lot, as I posted before, so it is very important that we can use them in this new client.
Unfortunately, there are a few problems with different OpenGL implementations.
OpenGL is a standard, and it mandates how the programming interface with the video hardware is done. It's not very flexible in terms of the API used, so, in theory, all the video cards that are OpenGL compliant should be 100% compatible, although they don't have to support the same set of features.

The problem is that many video drivers from the major 3d card makers (Intel, NVIDIA and ATI) have problems. Usually, older drivers have more bugs than newer drivers, although this is not always the case.
Some of those bugs are pretty bad, where even if your program respects the OpenGL specifications, it can still crash due to an error in the driver.

If a new player downloads the game, he or she might not have the latest video driver, so it is important that the client detects their specific driver version, checks to see if there are any problems with it, and if so, disables the features that will cause problems.

Xaphier proposed to have an ini file where we can store which OpenGL extensions must be disabled for each video card manufacturer and each driver version.
The problem is, there is no standard way to find out the driver version, so we must rely on the OpenGL Version string returned by the video driver. Sometimes the driver version is there, and sometimes it is not. We asked our players to post some information about their video cards, and then based on that information we might be able to compile that ini file.

Once we are done with it, we will be able to use the auto update feature to constantly add new information in the ini file, so in case a new driver will missbehave we can maybe solve the problem 'on the fly', without a whole client update.

15 February 2008

Eternal Lands' 5th Birthday

Yesterday, Eternal Lands turned 5.
It's quite amazing to look back and see how much the game changed since the first day it was 'released'. 'Released' because at that time, it wasn't really a game, it was mostly a 3d chat, and there were many bugs.
It took us almost 1 year to break the 100 players online barrier.
We have some old screenshots, and as you can see, it had a totally different look.

We are going to have all kind of events this weekend, and since a lot of people will gather in some small locations, it will also be a good time to observe the server load, and plan for more improvements.

Speaking of improvements, this new client release will have lots of them. People with real 3d video cards (Nvidia and ATI) should be able to get up to 1000% in FPS (in extreme cases, such as 100 dragons right near them), but in practice probably something around 50% or so. People with older video cards might not benefit from it, because they lack the new extensions we are using.
The camera should be more responsive as well, and this will benefit pretty much everyone.

Because of these new speed improvements, and because of the arrows, the update will take slightly longer than we estimated, the release date will be probably sometime at the end of March.

10 February 2008

No title

Since my last blog entry, the following things happened:
1. We bought IPB Gallery, an IPB forum add-on that allows people to post images. So now our players with a forum account won't have to host their screenshots on 3rd party sites. While there are free image galleries out there, IPB Gallery is integrated with the forum, so the players won't have to create multiple accounts, and the existing moderators can moderate the pictures as well.

2. We added an unregistered caregory in our forums so that guests can post stuff too, mainly for asking troubleshooting questions, or to confirm their validation (we have lots of spam bots that try to register our forums daily, so an admin validation is required for all the new users).

3. Just an hour ago my host installed FreeBSD 6.3 on the server (we were using 6.1 I think), and the server has multiple CPU support. While the server is not threaded, multiple CPU support helps by running the 3 servers we have on different CPUs (if needed), and also for the system and interupt code (which is mostly network related). Later on, I will start adding some threading on the server, to make it even faster.

4. We didn't have as many users as we expected from the c't magazine. Before it was published, I thought they will give us a bigger review, but it turned out our little game was one of many other games in that magazine, and we just got a few paragraphs. That's not bad, we are not ready for a lot of new users at once anyway,

5. NASA wants to develop a MMO, and they are asking for the public to come up with some ideas. I submited a document with my ideas, and I'll see if they are interested (the deadline is February 15). While I don't have much hope they will select my design (who knows how many people and companies submited theirs), it would be cool if they at least pick some of my ideas.

6. Xerafax is working at a better mouse seletion algorithm (the part where you get the object or player under the mouse). This should increase the frame rate by up to 100% in some situations (but mostly 20%+), and also increase the sensitivity and accuracy, especially for small monsters. We discussed some ideas today, and we'll see what happens.

7. I added a new item in the game, called "invasionmeter". With a few invasions every week, that new item is quite useful. What it does is show you how many invaded creatures are in the game at one moment, and how strong they are. This item has a 10% chance to break on each use, so it will be good for the economy too.