Eamon CS
Eamon in C#
This webpage is dedicated to the Eamon CS (ECS) project - a successful port of Eamon to the C# programming language. ECS is a hybrid system - functionally, parts of Donald Brown’s Classic Eamon and Frank Black Production’s Eamon Deluxe have been integrated, but the system itself was written from scratch and contains many new features. It is the production version of Eamon AC, a prototype which is now obsolete.
Eamon, with its record-oriented structure, is surprisingly well suited to the C family of languages. Although the feature sets of C# and BASIC overlap somewhat, they are aimed at different audiences. Adoption of BASIC by hobbyists in the 1980s contributed to Eamon’s popularity as a game development platform. The C# language, on the other hand, was designed as a modern, object-oriented replacement for C/C++, and has a fairly steep learning curve. By porting Eamon, many possibilities open up that have never been explored before. The expectation is that custom adventure design with ECS will appeal mainly to advanced users or professional programmers.
The software repository includes a Dungeon Designer, a Main Hall, an Adventure Runtime and The Beginner’s Cave (as required for any true Eamon port). Additionally, a Test Adventure is included which showcases the system in a more rounded way. The documentation set typically found in BASIC versions of Eamon has been omitted, but is planned for the future; at this point, a README file is provided. It is assumed you are already familiar with Eamon as a system and (for designers of custom adventures) comfortable stepping through it in a debugger to discover its nuances.
Features
Here is a partial feature list for the game:
- Complete system rewrite that fully leverages the C# language. Uses namespaces, inheritance, generics, interfaces, LINQ, etc; extremely restricted GOTO usage.
- Highly portable. Currently Windows is supported, but future versions may expand on this.
- Native 64-bit Windows console apps — state of the art. These are structured like typical C# utility programs — lots of command line interface flags to control behavior.
- Formal high-performance in-memory database architecture — no array based implementation. The concept of #s (eg, Artifact #) has been replaced with Uids so you can create/edit/delete as many objects of any type as you want — dynamically, at run time.
- The system stores data files as ASCII XML object graphs — far more powerful than files containing simple data.
- Polished text aesthetics — looks more like modern IF.
- Extensive use of constants throughout code — minimal use of —magic numbers— make this system fairly easy to enhance (game object Uids are an exception).
- Each artifact can be up to 4 ‘types—. For example, this allows artifacts like light source weapons or wearable containers to exist.
- You can configure each adventure with how many save slots it has, from none (Classic Eamon) to N. It defaults to 5 which is typical.
- Adventure game state is defined by a GameState object which can be any size and contain any type of data. You can even build complex game states spanning numerous save game files.
- Control over game state cleanup is delegated to the adventure itself, making complex game states possible.
- An Intellect stat has been added which affects, among other things, spell casting (The Beginners Cave also puts it to use).
- The Dungeon Designer has an Analyse Record Interdependencies menu option that can catch a variety of logic errors like dangling references, invalid artifact types, etc.
- The Dungeon Designer is fully interoperable with custom game subclasses (eg, Room, Artifact, etc) when proper scaffolding code is added.
- The Adventure Runtime has been implemented as a formal Finite State Machine, a construct used to model complex program behavior.
Github
Here is the Eamon CS GitHub repository with full binaries and source code. This repository is all you need to play ECS and build non-customized adventures.
For inquiries, bug reports or further assistance please email firstmethod@hotmail.com and include EAMON CS in the subject line!