Interactive games, online and single-player, have gained in use over the past several years.
Role Playing Games, where a user takes on an in-game persona, have been around for decades as
both pen-and-paper and computer medium. Even more so, Massively Multi-player Online Role Playing
Games (MMORPG) have gained huge ground in both the number of players online and general user playability.
Many RPG's, regardless of their genre, are composed of the same primary components. RPG's, however,
have become incredibly complex in order to provide the "user experience" that players expect.
It is the author's contention that the primary goal of software engineering is in managing complexity. While software engineering provides the tools, methodologies, development and management of software systems, these products are directly related to the complexity of any given software project. Donald Knuth has said that while the complexity of the software problem domains has increased drastically in the past many years, the tools and mechanisms to cope with these problems have not increased at the same rate. Even simple software systems have a high inherent complexity so engineering principles have to be used in their development.
The goal of this project is to produce a library with which the software developer may create RPG games and applications more rapidly and with a higher quality level (via consistency). The RPG library and project is known as RPG++, indicating that this library was developed - and is to be used within - large-scale C++ applications. The library should help to increase production of such applications and provide a consistent interface for their development. The RPG++ library does not intend to provide every aspect of game programming, specifically not supporting graphics engine development. However, since many components of RPG's share the same requirements, these requirements have been distilled and are represented in this System Design Document through the Requirements Engineering phase. It is envisioned that multiple libraries both custom designed and 3rd party will be needed when rapidly developing RPG systems.