In this demo though only few very basic Atlas objects included in media.bach because media format is not yet defined. Sample Atlas object:
{
id: "elf",
parents: ["humanoid"],
specification: "atlas_game_rpg",
interface: "game_interface",
description: "Image of ordinary elf like you would expect
them, real media info object will include pointers to various
media info objects for each type of media available for this
class instead of direct link to image",
image_url: "http://foo.game.org/elf.png"
}
For simple example media file see forge/libs/Atlas-Python/media.bach
For encoding of it see http://www.worldforge.org/website/protocols/tutorial
class MediaServer(server.SocketServer):
def setup(self):
self.objects = files.read_file("media.bach")
print len(self.objects), "objects loaded"
class MediaClient(server.TcpClient):
def get_op(self, op):
id = op.args[0].id
obj = self.server.objects.get(id)
if obj:
self.reply_operation(op, atlas.Operation("info", obj))
else:
self.send_error(op, "no object with id " + id)
s = MediaServer("Simple media server", server.args2address(sys.argv), MediaClient)
s.loop()
For whole example code see forge/libs/Atlas-Python/media_server.py