Damasca
is by far the largest and most involved project that I've worked on in the last few months. It aims to be an open-source online
role playing game, developed by an active community of participants.
My recent focus has been on the development of the game's map editor which is enabling other team members to produce levels for the game. I've also developed rendering, networking and user interface code for the game. To facilitate rapid development, the game and map editor have been developed entirely in managed code - C#, .NET 2.0 and Managed DirectX 1.1.
The two most developed sub-projects are the map editor and user interface libraries:
Map Editor
The map editor (a screenshot of which is just below, and can be downloaded via the link to the right) was designed to be as familiar to its users as possible, whilst being powerful and extensible. To this end, I modelled the design after Photoshop (albeit without the floating windows) and embraced a plugin-driven mechanism for writing tools, filters, and interface extensions.
As it currently stands, maps can be developed with multiple layers (which can support tiles of different sizes, and from different tilesets), multiple tools including shapes, fills and brushes, filters, undo/redo and more. With a built-in plugin manager, it is possible to develop further tools, file formats, etc and install them in the editor without needing to touch the editor's code.
User Interface
The user interface library, also developed in C#, was designed to be:
- Themeable - with XML documents describing control styles (not unlike CSS in capability).
- Data driven - with XML documents describing the layout of controls (not unlike XAML of WPF)
- Bound to code (both script and managed)
As it currently stands, themes and layouts can be written, there is support for 10+ standard controls including things like edit boxes, buttons and list boxes, and the UI can dynamically (through run-time reflection of classes) bind events and properties in the UI to code.


