Version 2 (modified by dave, 10 years ago) (diff)


Overview of structure and layers/programming languages involved.

Code can be found here:

Server (Oak)

FAtiMA layer

Running agents defined using XML, standard Lirec codebase, no changes. Each agent runs as a Java process, sending and receiving messages from the world server program.

World server layer

Another Java process, programmed in Clojure. Listens to messages from agents, and dispatches them to the others. Contains the FAtiMA world state, agents and objects,

Webserver layer

Running in the same process as the world server, but in another thread, the webserver responds to requests with information based on the world state. Programmed in Clojure, and based on the Compojure web server.

Client (Fungi)

Multiple clients, running in web browsers, programmed in Haxe, for flash or HTML5 canvas. Responsible for displaying the world state, and allowing players to interact with it. Objects created here are passed up to the world server layer, so characters respond to changes the player makes.