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