Older blog entries for alriddoch (starting at number 6)

Acorn 0.4 is now done, and released. Announcing as soon as it is on the mirrors. This is basically a note to myself to sort out my priorities over the next few months.

In the near future we basically need to create a stable branch to finalise Acorn as playable and stable. I had not initially planned to do this, but I am now shifting towards thinking that it will be a long time before any other WorldForge game efforts are stable, and it will be useful to have a good looking working demo on the side to show off on demand. STAGE is getting close to the point where it will run in-game, and they really need the new Atlas-C++ API to be ready to minimise the effort of switching later on.

Tasks for the next few months are therefor as follows:

  • Complete Atlas-C++ 0.5.x API and release.
  • Port cyphesis over to working as an AI client.
  • Write RIMs for stage that implement Acorn.
  • Clean up and improve playability of Acorn on the server side.
Wish me luck.

Loads of progress in cyphesis. Collision detection is now working well, and allows objects to move along next to each other in contact.

Spent easter weekend doing a comprehensive review of the code. Re-wrote quite a lot of it, especially re-naming things to fit in with conventions, and using iterators properlly. The code is now the fastest and most robust it has ever been. I will probably release a version as soon as there is nothing left that I am ashamed of.

The main work to complete in the short term is the persistance layer. Loading a list of client entities into the persistance database before the world is started is probably the best way to handle the whole area of maintaining client side entity maps.

Debugged the collision detection code in cyphesis, sorted out the problem with created entities inheriting bounding boxes from the creator, and made an attempt at handling two moving entities colliding.

Added Structure base class for buildings or other server entities that the player can move into. Modified collision rules so that if an entity collides with a structure bounding box, the entity move into that structure, making it possible to move in and out of buildings.

Started work on a simple library for rendering building blocks using the off screen Mesa GL library.

Loading of terrain info into the client must be separated from loading of entity information, as the two are not that closely related, and the server must be able to get full information about the pre-defined entities in the world, which it currently cannot do from the terrain map format.

Started work on a simple astronomy system, basically so that the moon can be represented properly for the werewolf system, but I figured I should probably do it right the first time, rather than have to come back and re-visit. Initially started working on it as an earth-centric system, but Sal pointed out that it would be better if it was sun-centric, which actually makes alot of it easier.

Still struggling with how to deal with loading Acorn map files into the server, and handle entity id parity with the client, which may have loaded a slightly different version of the same map. Do we need to extend the map format to include id?

First update for a while, been very busy.

Early last month I wrote a watchdog daemon for cyphesis that keeps a server running, initialises it and monitors it, to automate game server administration.

Ranges have now been implemented, which massively reduces the bandwidth used by each client in a game. Range is currently based on axis aligned square areas rather than circles as it really should be. The reason for this is primarily to maximise performance.

Cleaned up and optimised much of the cyphesis code. This together with changes to the Atlas protocol library means that server load is much lower than previously.

Wrote the collision detection code for cyphesis using AABB collision detection and prediction algorithms. Finally added in simple collision resolution so walking characters can no longer walk through each other.

Added MetaServer functionality to cyphesis, based on the WorldForge metaserver example code provided. All seems to work fine, but is as yet unsupported by any clients. This combined with the information that a client can now retrieve by sending a "get" operation directly after connection should mean that a client could offer a nice menu of all current running servers.

Currently working on making the handling of C++ base classes with python derived classes more generic so that more code can be moved into C++.

Fleshed out the media server ideas a bit more, and wrote the basis for some clients. Came up with a debug message control scheme that I am happy with, and fitted it into cyphesis-C++ to get rid of all the nasty warnings it spits out.

WorldForge main website is down, so announcing Acorn today does not seem to be an option

Acorn debs are now up, and apt-getable thanks to Demitar.

Started work on a media metadata server for WorldForge. Basic concept is that it will deliver entries from a database over an Atlas connection in response to queries made by a client. Format for the metadata is currently using the Atlas schema proposed by Karsten Laux for the config file sprites.xml used in uclient.

Did some more work on the whitepaper describing Acorn internals, and put some more time into infrastructure work for Acorn. Should be able to announce Acorn to the world this weekend.

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!