Customizable Adventuring And Questing Engine

The Customizable Adventuring And Questing Engine, or CAAQE (pronounced "cake") is currently a concept design for a multi-purpose adventuring game engine. The premise is that the engine is so generic that a wide variety of game content and functionality could be used.

The idea is initially inspired by a combination of Legend of the Green Dragon and Yoda Stories - I wanted to create some random, custom Star Wars adventures that I could play a little bit at a time, and persist from one session to another. They didn't need to have graphics per se - I could use my own imagination - but at least use as much Star Wars resources as I could muster. I had also been harboring ideas of designing a RPG game - which in turn introduced me to the concept of "content scripting." Blending all of these ideas together resulted in the "CAAQE."

1st Draft

Features

  • The engine would execute as a simple command-based input—>output.
  • The game content/functionality (static data) would be defined with XML input files.
  • Dynamic data (character info, history, etc.) would be stored in a DB.
  • Output would be XML, to be used by any UI front-end desired (web, console/terminal, GUI)

Architecture

                                                   ____________
____________                    _________         /            \
|          |---Input Command--->|       |        |\____________/|
| UI /     |                    | CAAQE |<------>|              |
| Frontend |<----XML Output-----|_______|        |     DB       |
|__________|                        ^            |  (Dynamic)   |
                                    |             \____________/
                               _____|______
                               |          |
                               |   XML    |
                               | (Static) |
                               |__________|

Possible software to use

  • Engine Core: C++
  • DB: SQLite (C++ Library)
  • XML: Xerces (C++ Library)

Design Refinement

Exploring the above concepts has led me to a couple of design re-considerations:

  • For the sake of portability and maintenance, I've decided to go with Perl for the core functionality.
  • Limiting the static/dynamic data to one form of data storage or another is too restrictive.
  • "Engine" is probably a misnomer now… it will more of an API/Framework

The last bullet is key. It essentially means that CAAQE will become an application module (a la Perl/Tk) to be used to help build a custom RPG/Adventure game (or engine, or backend) in Perl.

So what will the CAAQE now provide?

  • A simple application framework
  • A simple data structure basis (to be expanded by the custom game)
    • Basic data access and manipulation wrappers (to be expanded/added to by the custom game)
  • XML output (most likely be re-ingested by the custom game for its own desired output)

This all leaves to custom game to provide:

  • Data
  • Data storage philosophy
  • Functionality modules
  • (Optionally) Frontend UI

The picture now looks like this:

__________________________________________
| App                                    |
| ___________________                    |
| |                 |                    |
| | App Frontend/UI |                    |
| | (Optional)      |<---------------+   |
| |_________________|                |   |
|          |                         |   |
|          | (Input)                 |   |
|          |                         |   |
| _________V________                 |   |
| |                |  (XML Output)   |   |      _____________
| |                |-----------------+--------->|           |
| | App controller |                     |      | External  |
| | w/ CAAQE       |            (Input)  |      | Interface |
| |                |<---------------------------|___________|
| |----------------|                     |
| | Data : Modules |                     |
| |______:_________|                     |
|________________________________________|
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License