Last time I talked about what database products I’m using, how I’m using them and started the discussion of building a database back end for Changed Earth Worlds with the creation of a Character_Classes table that contains some starting stat values for the different types of characters players can roleplay.
This time, I’ll talk a bit about some other foundational tables that I’ve constructed, mostly the Characters table.
The Players table isn’t really that interesting right now, mostly just a record of usernames, passwords and PINs that players will eventually be able to use to log in from the game client to the game server. A copy of this table will also be used on the eventual web site for the game to allow players to purchase in game money, sign up for discussion forums and so on. At some point, we’ll have to build a login screen on the game client so we’ll revisit this table later on. The only reason to build it now is because the Characters table will have a foreign key that will connect one or more characters to a given player.
The Characters table is where we’ll get to wallow in some actual game mechanics for the first time.
+------------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+------------------+------+-----+---------+----------------+ | character_id | int(10) unsigned | NO | PRI | NULL | auto_increment | | player_id | int(10) unsigned | NO | MUL | NULL | | | character_name | varchar(255) | NO | | NULL | | | character_class | int(10) unsigned | NO | | NULL | | | stat_thought | int(10) unsigned | NO | | NULL | | | stat_imagination | int(10) unsigned | NO | | NULL | | | stat_matter | int(10) unsigned | NO | | NULL | | | stat_energy | int(10) unsigned | NO | | NULL | | | character_level | int(10) unsigned | NO | | NULL | | | stat_health | int(10) unsigned | NO | | NULL | | | stat_power | int(10) unsigned | NO | | NULL | | | stat_armorclass | int(10) unsigned | NO | | NULL | | | stat_tohit | int(10) unsigned | NO | | NULL | | | stat_plurfulness | int(10) unsigned | NO | | NULL | | +------------------+------------------+------+-----+---------+----------------+
Again, we’ll keep things very simple, leaving optimization and any encryption of data fields for another time.
When you inspect the table, you might notice that there’s been a change from when I did the Character_Classes table. I’ve changed the base stats, largely as a result of a conversation with my friend Jeremy who possesses an absolute wealth of knowledge about building RPGs.
We were discussing the way that elemental forces such as earth, air, fire and water are naturally opposed to each other and how this leads naturally to skills in RPGs being associated, either naturally or through ‘buffs,’ with certain elements. When these skills are used against opponents who are associated with a certain element, they are made either stronger or weaker depending on the nature of the opposing elements. For instance, a water attack will be weak against a water based creature but strong against a creature associated with fire.
Similarly, certain base stats are naturally opposed to one another. In classic RPGs, a fast, agile character (with high agility) can get in close to a large, strong character (high strength) and do lots of damage. However, if the larger opponent gets in a hit, they are going to do a lot of damage to the smaller, agile character.
I knew that I wanted a novel stats system for CEW, one that would accurately represent the nature of reality in the CEW universe, a reality in which the outcome of conflict is determined more by the manipulation of reality itself rather than whether a character has certain objective attributes.
What we came up with is a system of 4 base stats in 2 pairs of 2 opposing stats.
Thought (Left Brain Logical) opposes Imagination (Right Brain Holistic).
Matter (Physical Mass) opposes Energy (Non-Physical Potential or Action).
Because all skills in CEW are essentially “magickal,” even those normally considered non-magickal such as hand to hand combat or used a ranged weapon, these 4 stats represent the 4 spheres in which skills can be used. Skills can affect matter or energy or some combination of both. They can also use logical thought or holistic imagination or some combination of both.
If you go back to the character classes defined earlier, it’s not to difficult to determine which will be the primary and secondary stat for each.
A Maker’s primary stat will be Thought because a Maker must be able to think logically and understand the working and structure of physical objects. Her secondary stat will be Matter because she is dealing largely with inanimate physical objects.
A Healer’s primary stat will be Imagination because, as a class that works largely with living beings, the complexity of trying to understand them in a reductionist fashion would simply be overwhelming. Consequently, she must be able to imagine the objects of her work in a holistic fashion, not as an assemblage of units but as a system of cycles. Because she is primarily concerned with animate beings, her secondary stat will be Energy.
A (Peace)Keeper’s primary stat will be Matter because she uses her skills to affect the abilities of her physical body. Her secondary stat is Imagination because, like the warrior who uses Zen to enter a state of no-mind so as to perform “Right Action” without having to think about it logically, she must use her skills in a holistic, in-the-moment manner.
Finally, a Traveler’s primary stat will be Energy because she opens portals to other subrealities and manipulates energy so as to appear invisible, to move with great speed and so on. Her secondary state will be Thought because she must use her logical, problem solving mind to defeat traps and locks, detect dangers and use her cleverness to move stealthily.
The Characters table contains 4 fields that will contain the current values for these stats: stat_thought, stat_imagination, stat_matter and stat_energy. Right now these are absurdly large integer fields which I’ll pare down later.
Although these stats can be changed, either permanently or temporarily, they are base stats because they are relatively stable and because the other stats are calculated, at least in part, from them.
Except for character_level and stat_plurfulness (which I’ll explain later), the other stats are all calculated and can change substantially during a single session of play. There are a few stats missing from the table right now but I’ll add those, such as a field to keep track of experience points and another to keep track of current maximum values for certain stats.
For now, let’s focus on stat_health and stat_power. These two are extremely important because they indicate whether you’re able not only to perform actions but, indeed, whether you’re even able to stand.
