Sunday, October 11, 2009

A quick overview of what I am attempting to accomplish with this project.

Why another game engine? With all of the game engines out there, why am I writing a new one? The answers to those questions and more may take a bit of explaining.

First of all, finding an engine that is geared to roguelike style role playing games are difficult to say the least. Why roguelike? Well, to put it simply, roguelike RPGs can be unpredictable. With most RPGs, once you have solved the game, replaying it again can be boring. It is predictable. You know where to go next to solve the next part of the game. With roguelike, the levels are generated randomly, and in some cases, the quests as well. To me, that is far more enjoyable.

Okay, we've established that, so what am I going to bring to this engine?

Obviously I will be making the levels randomly generated. In the generation, the levels should be done in a logical manner. For instance: a level representing the dungeons below a castle should be arranged with small cells, a main corridor, with a spattering of guard rooms and other utility rooms. A cave should consist of caverns and tunnels, and look cavern-like. There should be a randomly generated world that looks realistic, with logical placement of cities and towns. The territories of different nations and races should be logical. The player should automatically be away of the region where they grew up. With my generators, they utilize a variety of methods for generation along with patterned randomness and include analyzers to determine if it was generated correctly and how to place objects, monsters, NPCs, etc....

To make the game more random: the quests, including the main quests, are generated randomly. Once again, the generation should be done logically as well as pertinent to the character. One way I will achieve this is by defining a variety of possible quest goals using scripting. The script will only be a skeleton of the quest, with the details filled in by the parameters of the script as well as the needs established by the engine.

To add to the replayability, the engine is being designed in a modular fashion. To explain: the generators for the different levels are designed to be dynamically detected and loaded as plug-ins. This allows others to develop different type of generators and include them in the game. The game it self is run by a main script, with helper scripts to handle the details. The scripts can be modified or new scripts written to include the new generator. Also, the module that handles how the game is displayed can also be custom, as it too is a plug-in. Currently there is only one graphics manager and it is designed to use the traditional ASCII characters for the art. Other, capable users who wish to see better graphics may write their own manager and plug it in.

For more expandability, most of the operation of the game will be handled by user customizable scripts. I will also include the ability to package user created scripts and modules with the appropriate data files together to form a module (Mod). As previously mentioned, most of the flow of the game will be handled by scripts, other scripts will manage things like: races, character classes, world history, AI, actions like spells and special attacks. There will be scripts to handle how the dungeons are created and populated. There will be scripts to handle quests, both main and secondary.

That is a small summary of the things that will be in the engine.

No comments:

Post a Comment