Darkworld : A game of intergalactic conquest
Project Page

Status of server dw.deenlo.com

The 26th game crashed Aug 27th at 0210 EST. This was the most stable and intense game yet. I think it is the first game where there was clear winner. mds1 dominated the Universe. The server crashed with an out of memory error. I am not going to start a new game at new game as I intend to upgrade the server and prepare to the 0.2.1 release.

Created a 26th game on Aug 12th at 2305 EST. The 25th game crashed sometime last night. I believe I have fixed the bug that killed the 25th game along with some other games. This bug would not occur until the game had been running for a while. The 26th game also has some other bug fixes in it. It is using the apache DB pooling library, so this should solve the MySQL connection problem I ran into early in the game. Also, sometimes a players connection will get stuck preventing them from logging. I added some code to close the connection and also print out information about their previous connection so that maybe I can see where it is getting stuck at.

Created a 25th game on May 18th at 2330 EST. The 24th crashed two days ago.

Created a 24th game on May 22nd at 2130 EST. The 23rd crashed with a new error on May 10, need to debug it.

Created a 23rd game on May 4th at 0240 EST.

Created a 22nd Game on Apr 7th at 1300 EST. The 21th game went down on Apr 7th at 1200 EST because I accidently killed the server process DOH! This was the longest running game ever, although it was running very slow... the server needs more memory. Might be getting more memory soon.

Created a 21st Game on Feb 10th at 1305 EST. The 20th game went down on Feb 06.

Created a 20th Game on Jan 27 th at 1016 EST. The 19th game went down on Jan 18, but I have been preoccupied and was not able to restart it immediately.

Created an 18th game on Dec 20th at 2350 EST. 17th game was brought down by same problem that killed game 16, will probably fix in January.

Created a 19th Game on Jan 15 th at 2045 EST. 18th game was brought down on the by same problem that killed game 16. The 18th game went down on Jan 11, but I have been preoccupied and was not able to restart it immediately.

Created an 18th game on Dec 20th at 2350 EST. 17th game was brought down by same problem that killed game 16, will probably fix in January.

Created a 17th game on Dec 11 at 2200 EST. This new game was created with one start planet per galaxy instead of two since the game is running longer. Game 16 crashed on Dec 11 at 0140 EST because of a database error when trying to obtain a DB connection. This should be fixed when I add database connection pooling to properly fix the bug that caused the first few 0.2.0 games to crash.

Created a 16th game on Dec 2 at 0023 EST. I am not sure exactly why game 15 crashed, but I added code to print more information if that particular bug occurs again so I can fix it.

Game 15 crashed on Dec 1 at 0900 :( ... this was the longest running game yet and was starting to get very interesting.

Created a 15th game on Nov 19 at 0150 EST. Game 14 actually did not crash, but I killed it because it had a serious bug. If a player ever sent some of their ships to another one of their colonies, those ships would never be able to leave that colony. This bug was caused by a fix for a bug that occurred in game 13.

There is a bug that is affecting the 14th game. The bug has affected me and someone who emailed me. It seems ships are simply dissapearing after orders are sent. I have not had time to track down the bug down. I will probably look into it this weekend.

Created a fourteenth game on Nov 13 at 2115. Game thirteen crashed Nov 12 in the morning, however I did not have time to debug until the next night. I actually triggered the bug that crashed game 13. I attacked someone and destroyed their colony. I sent a colony ship to the same planet. A few moments later, I ordered the ships that destroyed the colony to attack another colony. When the colony ship arrived and created a colony, the warships on the planet automatically started refueling. A few moments later the orders I sent to the ships arrived and they all tried to start refeuling again. Since they were already refueling this violated a uniqueness constrain in the database. I added a check to make sure a ship that is already in the port queue does not try to add itself again. The changes are checked into CVS.

Created a thirteenth game on Nov 11 at 2240 EST. Game tweleve was brought down by an interesting bug. After a ship was destroyed, it was erroneously still available to receive orders. Uncovering this bug was all about timing. Player A must have destroyed player B's ship. However player B sent orders to the ship after it was destroyed, but before they received the report indicating it was destroyed. So player B's orders reached the defunct/destroyed ship which tried to process it and crashed the game. Ships now properly deregister themselves from receiving orders when they are destroyed. So now when this happens there will be no one to receive the orders and the orders will be dropped into a black hole.

Also, I definetly put two starting planets per galaxy in this game. I think I did in the last game also, even though I was unsure, and that is why this bug was uncovered so quickly because people were able to start battling each other right away.

Created a twelfth game on Nov 11 at 1105 EST. Game eleven was brought down by a new bug. When a player attacked and destroyed a colony with no links this crashed the game. I fixed the bug and checked the fix in to CVS.

I also fixed a bug that prevented ships from leaving an uncolonized planet. A player emailed me about this bug in an earlier game and I finally saw it first hand and tracked it down.

For game twelve I put two starting planets in each galaxy. This means you may run into someone much more quickly than in the past games. This was done to allow battle to be tested more w/o having to get to far into a game. When the game is more stable, I will probably switch back to one start planet per galaxy.

Update Nov 11 1949 EST. I did not put two start planets in each galaxy as I thought I had, I forgot to change the configuration before starting the game.

Created an eleventh game on Nov 9 at 0030 EST. The change I made for game ten quickly froze. This made it apparent to me that my reader/writer database locking code was flawed. When multiple reader threads tried to promote themselves to writers they all ended up waiting on each other. I commented out the reader/writer locking and replaced it with simple exclusive database locking for now. This may not perform as well, but it should be more reliable. I took a quick look at the new Java 5 read/write locks, but it does not support promoting readers to writers.

Created a tenth game on Nov 8 at 2350 EST. The bug that killed game nine was a result of the fix for the bug that killed games 6, 7, and 8. I think I have fixed this new bug, but we shall see.

Created a ninth game on Nov 6 2025 EST. The same bug that killed games 6 and 7 killed game 8. I fixed this bug and updated the game server on dw.deenlo.com with the fix. I also checked in the changes to CVS. Now lets see if the fix causes problems :)

Created an eight game on Nov 4 1300 EST. Suprisingly, it seems the same bug that killed game 6 killed game 7. I thouhght that this bug might rarely occurr, but I guess not.

Created a seventh game on Nov 3 0100 EST A serious bug occured in the sixth game, it is documented here . I do not know what caused the bug at this point, but I collected alot of info about it from the crashed server. It seems to be related to something the player xarvia did, so xarvia if you remember what you did please let me know. If I can not figure out what caused the bug I can lessen its severity, make it affect one player instead of all.

Nov 2 0753 EST. When I try to log into the sixth game it hangs. I assume this is happening for others as well, but I am not going to restart the server this morning. I do not have time to debug it before I go to work, so I am going to leave it like this so I can connect with a debugger when I get home.

A sixth game was created on Oct 31 at around 2300 EST. Two new bugs reared their ugly head in game five, which I think crashed around 1000 EST. I was at work so a new server could not be started until this evening. I have deployed a new version of the server that I think will fix these bugs. Also, upping the max database connections seems to have helped prevent the first major bug since game five was not affected by that bug.

My hypothesis about the first bug is that it was caused by someone using an unadvertised feature of the client. When you hold down shift you can tell a ship to go to multiple planets. This means a ship will arrive at a planet and immediately leave. When this happened the ship tried to shutdown its comms that were never setup in the first place because a ship only sets up comms when it is going to stay at a planet. This caused a severe error which brought down the server. I fixed this paticular bug. The reason this feature is unadvertised is because it is not well tested :) So please refrain from using it for now as it may cause other problems, or on second thought use it the bugs have to be found somehow. Someone must have looked at the client source code, I think it may have been a player called Jay. If you did do this I would really like to know so I will know if I am on the right track.

My hypothesis about the cause of the second bug is that multiple sets of orders were sent to a ship. I believe a ship was busy loading fuel as a result of its first set of orders, when a new set of orders arrived. This caused the ship to try to start loading fuel again. However since it was already loading this violated a uniqueness constraint in the database. To prevent this I added a check on the server that only allows order to be sent to an idle ship. I need to make an update on the client side too for 0.2.1, sometimes a ship will show back up briefly on the client after a player sends orders to it but before the server can process the request. I suspect this is what caused the error. For gods sake people stop clicking so fast!!! :)

I have saved the database from game five, I can use it to test reloading a crashed game. If anyone is interested in aquiring a database from a crashed game let me know.

A fifth game was created on Oct 29th at 2200 EST. The fourth game created on Oct 29th at 1200 EST crashed because the server ran out disk space. The disk space issue was resolved and was not caused by a bug in the game :).

The first, second, and third games 0.2.0 games crashed. I found what was causing these games to crash. Every time a new user joins the game four database connections are created. Eventually the database runs out of connections and the server crashes. A fourth game was created on Oct 29 1200 EST and the max number of connections on the Database server was upped from 100 to 1000. I will not be able to properly fix the connection issues for a few days. In the meantime I will keep a server running so people can at least easily try the game and hopefully upping the max connections will allow the server to run more than a day :P Upping the max connections could lead to performance problems on the server so it is only a temporary solution.

In my testing before releasing 0.2.0 I only used three players (weef, joe, and bob) and always used MySQL. This is why I did not find this serious bug that is occurring now.

The first DarkWorld 0.2.0 game was started on Oct 26th at 0200 EST and crashed on Oct 27 at around 1500 EST and a new game was started at 1900 EST. The logs and a database dump were kept for debugging.

© 2004 Keith Turner