Dime Client Architecture

zzorn, 2001-11-14
zzorn, 2001-12-02, Updated the architecture to reflect the switch from ParaGui to Meadow, updated the other subsystem descriptions a bit too, and added links.

 

Dime - Facade
Gorgon - User Interface Layer
Artemis - Bussiness Layer Meadow - GUI Toolkit
Medusa - Platform Layer LibJanus - Virtual UI
Eris - Session Layer Coal - Map Management
Atlas-C++ - Communication SDL - Graphics and Sound

Dime

Sets up Medusa, Artemis, etc. Loads ini and config files. Sets up SDL display. Creates game components according to loaded layouts (or delegates that to Gorgon & Medusa). Runs main loop, or calls main loop in Meadow.

Gorgon

User Interface Layer. Provides the user interfaces for the different components defined in the Artemis library, using Meadow. Contains base classes for the GameViews, GamePanels, etc. Also contains the different game view and game panel implementations, such as 2D iso view, inventory panel, etc. (Should we split this into a separate library? Or at least a separate subsystem inside this library?)

Artemis

Bussiness layer. Defines the logic for inventory component, character stats component, atlas stream observer component, chat & textual command entry component, etc.

Medusa

Platform layer. Provides Atlas message listening, stores or is used to access models (map caching, entities, avatar control interface), and has a framework for client side prediction modules. Some of these tasks could be split up into separate subsystems.

Coal

Keeps track of all map data, and converts it to suitable formats for different views.

Eris

A client side session layer for WorldForge; Eris manages much of the generic work required to communicate with an Atlas server. Client developers can extend Eris in a number of ways to rapidly add game and client specific functions, and quickly tie game objects to whatever outpu representation they are using.

LibJanus

Janus is a user-interface virtualisation library, which allows UI elements to be passed to clients without knowledge of the display format that will be used. Janus can support diverse back-end toolkits, ranging from simple text controls through traditional widget systems (such as Gtk+ or Qt) to completley custom systems (like libUta).

This is a protocol for sending GUI descriptions from the server to the client, for game or server specific dialogs. We will create an back-end for it on top of Meadow (as a separate library?).

Atlas-C++

Library that sends and recieves atlas messages to/from the server.

Atlas-C++ is the perhaps the most important library in the entire WorldForge project, since nearly every other module requires it. Atlas-C++ provides a native implementation of the entire Atlas specification including negotiation, message encode and decode and the overlying Objects layer.

Meadow

This is a GUI Toolkit built on top of SDL. It's being created for Dime, but can be used for other GUI needs too.

SDL

Simple DirectMedia Layer is a cross-platform multimedia library designed to provide fast access to the graphics framebuffer and audio device. It also handles keyboard and mouse events, as well as encapsulating threads and similar platform specific services.