Chris's Random Ramblings
I mentioned to a few people at the conference that I was thinking of using the same codebase for the Hackfest at next years Linux.conf.au. So to be fair I thought I should mention it more publically as well.
I'm still thinking about different ways we could run the competition - perhaps a cyborg type competition where humans play against each other with the help of AI programs. I'd welcome any ideas that people may have. In the meantime there is quite a lot of work to be done on the server. It really needs a test suite and given the experience of running the competition this year there are quite a few features that I want to add in addition to the standard spellcast rules.
As announced at the conference close, the winner of the GUI section is Russell Steicke and the winner of the AI section is Stephen Thorne. The version of the server which contained a couple of server side bug fixes as well as the entries which were submitted are available at the usual place
Made a new release for the Spellcast server today. This should be the final release before the end of the competition.
Anton has done a great job again this year of setting up a server for the conference (a 4 CPU p630). Anyone should be able to connect to hackfest.conference.linux.conf.au using the sample QT client to play a game against other people and AI's.
The 1.0 version of the code for the Hackfest is now available. Entries close Thursday midnight, so if you haven't started already, getting coding for you chance to win a couple of great prizes!
You can register for the competition here.
Just released 0.9 of the Spellcast code. Had a test game with Rusty today, and although the test gui is pretty dodgy (hopefully contestants will come up with something much better!), the server held up really well and we only discovered a couple of minor bugs. I think we're going to get some quite interesting entries for the competition. Am really quite tired, and the conference hasn't even started yet, so hopefully will be able to survive the next week. At least Pipe is happy and healthy again.
0.7 version of Hackfest code is available. A simple GUI client to get better testing of the server before the conference is now available. Please try it out with some friends if you have the time and report any bugs.
Been rather busy and pipe has been a little sick, so haven't had a lot of time to work on the hackfest code. Thanks to Kelly for keeping me well supplied with food and wine. All bugs in the code are due to the latter.
Adds dodgy qt based gui client
Implements summoning of ice elementals
Implements Charm Person
Implements Paralysis
Implements Charm Monster
Server never exits - waits for start game timeout time before restarting NB. For clients, state information from previous game is invalidated once a MSG_SEND_START_GAME is received.
Only live players cast spells
Adds Protocol version on game start
Adds StartGame message
sends own id and turn timeout
Handle player disconnects gracefully. Disconnecting during the game results in losing
If no gestures are sent from a player within the timeout, GST_NOTHING is used for both hands
Fixes bug in winnerID code sent
Remove SPL_STAB1 as redundant
Filtering of gestures for Fear and dual stab were not working
because network byte conversion was not done on gestures first
Fixed bug introduced in 0.6 where many enchantments were not removed or processed at end of round
Fixes calculation of visibility of gestures
Implements Fear (was really done in 0.6). Note that SC_EVT_PLAYER_FEAR is received by a player if they will be restricted as to what gestures they can do. If they send a gesture that cannot be used it is converted to a GST_NOTHING
0.6 version of Hackfest code is available. I think I'll have to write a simple GUI client to get better testing of the server before the conference. Time to swap in that QT knowledge.
Add check so can't stab with both hands
Fix bug where if player was blinded then their gestures weren't visible. Reversed now so blinded player sees no gestures
Invisible player's gestures are not seen
Implements confusion effect on monsters and wizards
Fix bug where state of monsters was not updated (eg counters) at end of round
Send messages about events, eg "Amnesia", elementals merging etc. (protocol addition)
Implement Amnesia effect
Fix amnesia not timing out
Support games which end in draws (required protocol change)
Removes use of getline, replaced with fgets for portability
Fixes gestures for SPL_REMOVE_ENCHANTMENT and SPL_CAUSE_HEAVY_WOUNDS
Adds Ice Storms and Fire Storms
Adds Ice and Fire elementals
Fixes gestures for SPL_DISEASE
Busy Easter weekend moving dishwashers, helping Kelly get her house ready for selling and catching up with friends, but managed to get some time to work on the Hackfest code. Release 0.5 is now available for download. Major changes:
Adds check that targets for spells and monsters are valid
Fixes surrender code
Fixes target code for spells which do not need targetting
Adds end game code for client side
Adds logging to file capability
Adds auto-start after 30 seconds (or StartTimeout config)
Adds configuration
Fixes bugs in read/write ring buffer code (Sean Burford)
Fixes compilation bugs for OS X (Neil Conway)
I have just uploaded the 0.3 version of the code for the Linux.conf.au 2005 hackfest competition. Lots more testing is required, but a fairly complex 2 player game is now possible.
Valgrind has been extremely useful in finding bugs in the code. There are some bugs in the code that I think would have hung around for a long time unnoticed without they help of this wonderful debugging tool.
Details about the Linux.conf.au 2005 hackfest competition are now available on the LCA website.
Source code is available here and includes a simple text based client as well as a very dumb sample AI.