Fortuente
29Sep/09

Of Dice and Men

WOTANIn my last post I talked about my first steps into Ryzom's world of Atys. Sadly I have not logged into Ryzom since last I wrote so I don't have the follow-up I said I would write. Instead I spent the weekend and Monday working and researching on project WOTAN. To blow off steam I played myself a rare game of Civilization 4 on a huge ring map on Prince difficulty ... and got stomped. I never was all that good at Civ, but oh well I still love that game.

What I want to talk about in this post is the dice system I have finalized for project WOTAN. While putting the finishing touches on the character system, I became highly unsatisfied with how the  DnD/GURPS hybrid I was creating was turning out in regard to stat progression and potential inflation. I am also now free to more finely develop the roll system for the dice.

Rolls and Skills

First, if you haven't read my previous posts on WOTAN or I wasn't clear (happens a lot), let me talk about the original system. It was based heavily on a GURPS-like 3d6 roll-under mechanic for use with a character system that ... I'm not sure that it is based on anything, the character sheet is sort of growing on its own accord, ameoba-like ... is based around unlimited skills and roughly 14 stats which are also determined with a 3d6.

So, for instance, your character (we'll call him Fang) has Strength of 15 and needs to move a large boulder. The boulder is pretty big but nothing amazing, so we'll set the difficulty at -3. This means to move the boulder Fang must roll at or below a 12 (15-3) on 3d6.

This is fine and all, and I could work controls into the character system to make sure point distribution is not abused (i.e. trying to roll initial 18s on as many stats as possible), but somehow for me it feels inelegant. And that might not be the best way to put it, but in trying to come up with proper skills in my system I was running into a brick wall.

Do I make a skill a modifier to a stat roll? Example: If Fang has a weightlifting skill of 2, then in the previous example he would need to roll 14 (15+2-3) 0r under. That would be the common-sense way to handle it. But then what about skill skills? If Fang also has a Dexterity of 17 but no sleight-of-hand skill (i.e. +0), could he still pull off a pick-pocket?

It doesn't seem logical as tricks, lock-picking or pick-pocketing are all greatly benefited from high Dexterity but require practice and instruction. Anyone can still basically move a big rock with no training if their physical muscle allows it, but can't necessarily pick a lock just because they have good hand-eye coordination.

I am at a loss somewhat because one thing I am very much set against is using modifiers based on stat levels. The old "12-13 +1, 14-15 +2, 16-17 +3, 18 -19 +4," et cetera. When I act uptight about using modifiers, this is what is causing it - I basically just dislike those for reasons which largely come down to personal preference and opinion.

image from Wikipedia

There are also some technical reasons for my not wanting to use this. For one I want to shy away from the use of signed operators (the + and -) in the code just because that is me. It's not a big deal and there will be some, I would prefer to not have to scale difficulty with ever-expanding negative-levels.

Also, and more importantly, I would like to avoid having to add in a special logical check to see if Fang has the skill needed to perform an action in the first place. This is not a huge deal, but it seems like there could be a more elegant way of handling it. But maybe not, this is something I am not confident I can avoid.

Probability Curves

While the six-sided die is the most common and can be found everywhere and the math of a 3d6 system is not that hard, at higher levels I think it becomes less easily-intuitive. For a computer this is not a problem, but sadly I suck at math and I am the one who is going to have to figure it out for the computer to run it in the first place.

The aspect of the 3d6 dice system that I want to preserve is the basic distribution of results -- a bell curve. Here you can see it plotted out on the AnyDice Calculator. Why is this important? You should read this article on dice systems - it helped me really refine my ideas and come up with the new system. You will see on that page that the outcomes for a dice roll on a linear system like a d20 will be more evenly distributed. In other words you have a much better chance of rolling a 20 on a d20 than you do of rolling an 18 on 3d6.

To me, at least, this makes the job of implementing both criticals and rare loot and random occurrences easier. If you want an item or occurrance or outcome to be "common" then assign the difficulty to the middle range, if "rare" then assign it to the fringes. The basic dice probability of the bell curve takes care of the rest.

Jumping in the Dice Pool

So I am basically satisfied with the 3d6 system as it stands except for two considerations:

  1. I do not like how character stats are initially determined.
  2. Character skills become more complex to implement.
  3. I do not like the basic difficulty qualifier system as it stands.

What I have done is tweak the system more to my liking, and in the process changed to dice system, which I will call Xd10. The X is an integral part of my tweaking both afore-mentioned issues of mine, it stands for the fact I am now using a Dice Pool system. And if you didn't read the Darkshire link above or are not already familiar with dice mechanics, that means the number of dice rolled is a variable. A situation might require a d10 roll or even a 8d10 roll.

The reason I chose the d10 (it could have been Xd6 after all) is mainly out of mental laziness on my part - honestly, a decimal system is just far more intuitive to me than base-6. It is also has a higher granularity of outcomes - a 3d6 has 16 outcomes with 216 combinations while a 3d10 has 28 outcomes with 1,000 combinations.

The reason I have decided upon a dice pool system is primarily due to its easy and elegant ability to scale a character to a situation. The difficulty of an action is determined by number of dice in the pool. And therefore it also allows me to start every stat and skill at ZERO.

This also allows me to keep to one of my initial design principles which was to use as few modifiers as possible. A skill can be looked at as a specialized stat, in that while it might have a modifier it does not itself modify anything. This is a concept I want but am not wedded to.

What the dice pool difficulty scaling means for the character is that his stats and skills will grow organically over his or her life and I will be able to refine the leveling process to a fine degree. It will make it easier to make (i.e.) d10-level mobs and loot or 8d10-level versions of the same. I will likely address from the character's standpoint by dividing levels into tiers, where the tier level is the same as the number of dice the character will mainly encounter.

For progression, what I am planning at the moment (very basically) is that every character will start off with X stat points and X skill points, to be assigned as they wish - stats will begin at one and skills begin at zero. Lets say we give fang 20 stat points and 10 skill points, he now distributes his 20 stat points between 10 stats and if he is wise he will now have all stats in the range of 1-10 with a few key stats close to 10, a few non-essential ones near 1 and others somewhere in the middle - remember, he has 30 stat points total as all stats start at one. When he gains a level he will be presented with X new stat points (depending on whether I want lots of high levels or low levels) to distribute as he sees fit.

When designing obstacles for Fang, I will now keep in mind that a level 1 character is going to have 30 stat points, so I will design most of them as d10 difficulty with a few really hard ones at 2d10. This means that most of his stats are going to be between 1-10 and most rolls are going to need between 1-10 or less. A few will require between 2-100 or less, making the roll improbable but not impossible. And help Fang out a bit if he put all his points in one stat and has been having an extremely hard go at everything else not related to that one super stat.

Skills work in a similar way, except that they start at zero and you choose them for the character, where the stats are pre-determined standards for all. This also allows for easier customization on the GM end. It's just as easy to have either an archery skill, a laser rifle skill or both at the same time. Stat modifiers influence skills through the use of two skill levels:actual and virtual.  A skill's v-level is equal to the average of its actual level (the points you have put into it) and a governing stat. So if you are Archery level 5 and Dexterity level 15, your Archery v-level is 10. Likewise at later levels, if you are Archery level 50 but you neglected to build Dexterity and it is only level 10, your Archery v-level will only be 30. For almost all instances of skill rolling, the v-level will be what you are rolling on, so it will be important to define the key stats for your character and stick with them as he/she progresses.

A drawback of the system at this point is that a master archer could not shoot a rifle at all if he had never bothered to take an initial point in the skill. This arbitrariness and the skill/stat interaction are the current weak links in the system, but I'll be revisiting them when I am at the stage really fleshing out the various roll types. I am afraid I still may have to end up using a logical check for every single obstacle. Maybe that's not such a big deal and I'm just being anal.

To overcome the skill-exists logic check, I may have to define characters as already having every skill in game, but starting at level 0, which would effectively nullify "knowing" them all. So to specialize your character, rather than selecting skills to learn then upgrading them through points, you merely upgrade skills on a universal skill list. The end result would be mechanically identical but it would alter the player experience a bit. And if a game utilizes 100 or more skills, that could get too unwieldy.

Anyway, it's a cold rainy day here. Perhaps when I get a spare free hour I will revisit Ryzom. However, if I am going to make my January deadline, I suppose I should get in every minute of work I can.

20Sep/09

Welcome to the Wiki World

while ($brain = smoke($weed))
  $_SESSION['progress'] = $brain['obsessive_workaholic'];

WOTANThat is how I have been feeling the past week. The downside is I do not get enough sleep and that makes me cranky. The upside is that I can power through any workload (for so long).

The beneficiary in this case was, once again, my pet obsession Project WOTAN. I have begun a new iteration, which I'm calling GUNGNIR (after Odin's fabled spear). This time, I have focused on getting the wiki system up and running alongside the user system before anything else. I am happy to say it has been a great success.

I abandoned the idea to integrate the wiki system Wikepage in favor of its own foundation, Tipiwiki, which is about as basic and stripped-down php wiki you can get. Perfect for my needs and as the past week has proven, easily modified.

I have already completely converted it from using a flat-file storage system to a MySQL database. On top of that, I converted the function list to a class ... which is the key to my ultimate plan for designing special game wiki elements. For example the showPage() function which is called when I want to output an individual wiki page to the web page.

The first two examples of what I am talking about come from the User Control Panel and Character Sheet and Sidebar pages. I created a class extend from the wiki class for both a user wiki and a character wiki object. So I have little mini-devices now which have their own special showPage() method to display information from and interact with the database.

Meaning by making a wiki page called [charactersheet] and putting <charactersheet> in it, I can now display that with the php command:

$object->showCharacterSheet('charactersheet', 'last');

So now the URL ending with /index.php?wiki=charactersheet now displays the actual character sheet with all the dynamic data along with anything else added to the wikipage. (The 'last' value refers to the page version.)

I did the same with the sidebar, which is merely a stripped-down version of the Character Sheet. I control it on the web page with a conditional (i.e. "if user is not logged in, do not show character sidebar" etc etc) and it runs through the same class object as showCharacterSheet(), except it is:

$object->showCharacterSidebar('sidebar', 'last');

This tells it to display the Character Sidebar (kinda like a WordPress widget) on the wiki page "sidebar."

The power is that I can now quite easily make as many of these little widgets as I need for a wide variety of purposes. Considering I build the overall webpage block-like out of individual wiki pages through php includes and conditionals, I am only limited by my imagination ... and VPS  resource caps.

So at any rate, the display pages I have created and am working on are only the first step. While I hold to my original assertion that what I am making is of and for interactive fiction, I have refined my original vision of late. It came when I both realized my original desire was to make something of a web-based MUD and when I started to really understand the power of the wiki. That is, ultimately I see WOTAN as a Wiki Virtual World.

At least that is what I aim to bring about. For the time being I am focused on a more single-player environment in order to make the basic system a reality and work out any major security or performance issues.

But ultimately I want to be able to make a wiki-based "virtual world" where players can build their own structures and even vie against each other for territory. Wouldn't that be funny? To go to war over what is essentially a wiki category?

Another example: I have already worked out movement and areas within the game world. Each character will have X movement points (based on race, stats, etc.). These will allow you to move through the game world, i.e. wiki pages. Because each wiki page could be a closet or an entire galaxy depending on the description, each page will be assigned a movement-point value that will subtract from the character's total. (When the total reaches zero they must rest.)

This will give some actual "physical space" to an environment that otherwise be identical to all others like it. Building houses also becomes both viable and strategic - an "area" would have a limit of how many "structures" it can hold. Each "structure" itself can then hold so many smaller "rooms."

Smaller, specialized object methods like showCharacterSheet() can be used to create pre-defined structures and rooms (not to mention items like furniture, etc) while still allowing the player to customize it at will by adding a signature or more detailed description.

You can probably see by now also why site security is going to be a big issue. I'm sure there will be more than one house full of ASCII penises, but I would rather not have entire continents emblazoned with them.

So I am sticking to my near-term goal of producing a single-player RPG site, I'll just be keeping the multi-player experience in my mind as I design it. Oh, it could be truly glorious.

Anyway, I know I disappear for months at a time. I'm a rebel like that. But suffice to say, when I have not been playing 1701 AD, Imperium Romanum or LOTRO I have been working away. OK, who am I kidding? Wasting away is more like it.

I had to take a break from it tonight, though. I am using the old Baldur's Gate 2 portraits as test avatars and I swear Cernd's eyes are moving on their own now. That's funny, I should make an animated gif of it and use that.

20Jul/09

Progress Report – W O T A N

WOTAN logoIt's me checking in again to write out what I have been working on with my web-based solo RPG project W O T A N.

Well I continue to shape and modify the game and have had two new breakthroughs. First I want to list my project milestones publicly. I have to admit, while I am great about planning and conceptualizing projects, I am pretty abyssmal about actually keeping it all written down. So these posts I make actually serve me as well as anyone else who happens to be curious.

Milestone 1:  Creating the User, Character and various Actions

Milestone 2: Creating the World interface

Milestone 3: Creating a World

Now, these obviously aren't all happening in a nice, orderly fashion as I get a hankering to work between them depending on how the mood strikes me and a very large overlap occurs between MS1 and MS2 where the Actions and World Interface are heavily reliant on each other and therefore need to be created somewhat in tandem.

I am fairly far along the path of MS1. While I am still adding, subtracting and heavily modifying the existing parts, I have the User system in place and (mostly) functioning and I am nearing completion of the Character system. This past week I heavily rewrote my initial code to be more streamlined and reduced the lines of code in place. The User and Character objects are fully in place and only have tweaking left to do.

Some things I still have to write for User: a method to ban problem users, e-mail activation, player age restrictions and some admin features such as the ability to delete unused accounts. More issues may came up, but I am at the point where adding them is rather painless. I do have the ability register new accounts, log in and out and differentiate between levels of users (for admin purposes) among other things. I have gone through more than one large change already as I am defining more and more the role of the user, mostly I have actually been deleting unnecessary data fields and opting for a simpler user interface.

I have already detailed in previous posts how the basic character is shaping up. I may have overstated how similar to GURPS my system will be, but no doubt there are still valid comparisons. One of the interesting concepts I came up with recently are what I am currently calling "Action Stats."

Every action within the game is basically going to come down to a success roll (or saving throw if you will). An Action Stat is determined as the average of three existing stats and is used for more specialized success rolls. For instance, the Combat stat is derived from the average of Strength, Agility and Luck. As of right now all Action stats are actually derived from two master stats and the Luck stat.

Speaking of stats, they are shaping up to be 90% of the character. I have added more stats since I made my last post, and along with Action stats, now number 14 ... 12 Prime stats and four Action stats. And there may end up being more, though I have a good feeling we are now at a stable working point. Currently:

Prime Attributes:

  • Strength: raw muscle power
  • Dexterity: hand-eye coordination
  • Agility: body coordination and flexibility
  • Stamina: physical endurance
  • Intelligence: ability to reason and remember
  • Luck: the grace of the gods!
  • Spirit: affinity for magic and the paranormal
  • Willpower: ability to exert oneself on one's environment
  • Perception: sense and wisdom
  • Charisma: ability exert oneself on other beings

Action Attributes (+ luck):

  • Combat: strength + agility / used for fighting skill
  • Influence: charisma + perception / used for npc interaction
  • Magic: spirit + willpower / used for making magic
  • Handiwork: dexterity + intelligence / used for thievery/crafting

Interestingly, I have come to the conclusion that I will not be using stat bonuses at all in the game (i.e. a Strength of 18 gets you a +4 bonus). At this point I only plan on using the raw stats for the game.

Things I still need to do for Character are: refine the actual creation process, add character options to the admin interface, refine the sheet (stats, attributes, etc.) and finalize its components, create a portrait and/or paper doll system ... and that is about it - the basic foundations have been laid with two very prominent exceptions.

Those would be items and skills. I have not only not created database tables or coded any logic yet, but I am still stalling at the conceptual stage. The vision is slowly taking hold in my mind, however, so I am not overly worried about hitting a wall here. But I am a little worried I might stall here. But I have a vague though fundamental concept so I am not entirely in the dark. I think I am procrastinating these more than anything.

To make the character height and weight I have already begun on W O T A N's basic (crude will be more a propos) physics engine. As this is 100% text and not even text in the sense of being a MUD, but rather interactive fiction, physics will not play a large part in the game.

The next and final phase of Milestone 1 I will be starting soon and that is the creation of the Action class. This will hold the base Success Roll (I decided to just use the GURPS term from now on) and any variants. But it's basic logic and organization are heavily determined by the World Interface, and I am happy to say I actually made the first tentative steps toward realizing that aspect this weekend!

I already decided to use a wiki system for the World - for a few reasons but basically and largely because it will greatly simplify making adventures - creating the World in other words. So rather than attempt to re-invite the wheel I would prefer to find a very small and simple wiki script to adapt to this system.

And I believe I found it in the Wikepage project. I have already stripped out the XML/RSS and have begun work on sifting through the code and commenting it. At this point, I have decided that come what may this is likely what I will be using to create and run the adventures on any given W O T A N site. Things to do: convert from using a flat-file storage scheme to using the MySQL database and then the basic user integration into W O T A N, and add in Action methods as I create them to the wiki markup parser.

My other breakthrough this past weekend came with my inspiration for a solid plot for the originating W O T A N site. It is still too early to really go into, but essentially I am conceiving your character must collect four sacred object for some wizard or other powerful guy. The quest for each object will be rather involved and each story arch will be released separately - that is, at this point I only plan on having the quest for the first object completed when I launch the site. Of course this could all change radically between now and release. Which I am hoping for sometime either Winter 2009 or Spring 2010, there I said it. Oh god, now I have pressure! Where's the bong, I need my nerve medicine.

But in all seriousness, once MS1 is complete and MS2 is mostly complete (and therefore one would assume MS3 well underway), I plan on taking the project to Alpha stage and will be setting it up on a (semi)public server. Considering the work I put into the game before Alpha stage, I assume the transition to Beta will be rather smooth and hopefully much more swift.

A lot of that will depend on the player testers I am able to recruit. If you feel the least bit interested, make sure to bookmark this site and come back every week or two for the next few months - once I feel comfortable the game is near-Alpha-worthy, I will be taking simple requests here on a post for those who would like to help me test the game.

I'll also probably be marketing the heck out of the game on various forums and whatnot, but as of right now, this blog is the main source for the project. I already have a domain for the main game, however, and once the Alpha is live that is where the project will probably live indefinitely.

14Jul/09

And the Clouds Parted …

I spent much of the last week of June camping in the wilds of Oregon with relatives. While it was quite enjoyable, I am troubled by my constant feeling that I was in a Ranger camp like Esteldin. I kept expecting Earthkin to jump out and start beating me with giant clubs.

I would like to say I spent much of last week working diligently on my web project, but no. I did revamp some of the user code, but mostly I've been on a strange Team Fortress 2 kick - the Huntsman is now probably my weapon of choice, though I'm still pretty bad with it.

As far as project W O T A N is concerned, I recently reached a major breakthrough in terms of the game's conceptual design: I discovered GURPS - the Generic Universal Role-Playing System. (Note that link takes you to GURPS lite, a free pdf of the basic rules.)

OK, I know GURPS has been around since forever ... I've just never been much of the PnP gamer. I have heard GURPS mentioned often in nerd circles long before I was legal to drive a car and I know the basic concepts, but I had never actually sat down with the rules. Until now.

It is a little eerie to me how similar the GURPS "success roll" is to what my "saving throw" was shaping up to be. Even had I not been exposed to this, it is likely there would have been a number of striking similarities between the basic mechanics.

I was led to GURPS because I have been having a hard time conceptualizing the combat system. I have been immersing myself in initiative rolls and weapon stat modifiers and what-not, and frankly it's enough to make all but the most seasoned Grognard's head asplode. So I did what any "normal" lol person does in that situation. I started searching the web for why RPG combat sucks.

That led me to this post on the Forge forums, which I have really taken to heart. My main goal for this game is really about textual interaction of a variety of sorts. While combat is one of those - even a major one at that - it does not necesarily need to be somehow different or more expanded than the others.

I have been trying to keep in mind that complexity must be balanced simplicity - by relegating combat to a series of atomic (meaning independent, not related) skills rather than it's own system which has skills to modify its outcomes I will be able to code much easier for one thing. Reducing combat to mere saving throws will also allow me to focus on really fleshing out that system, which then will also benefit the other aspects of the game like npc interaction, thief-mechanics and the like.

And understanding the basic of mechanics of GURPS is going to save me some extra brainwork. I suppose at this point you can expect the basic rules to come down to a heavily simplified and bastardized GURPS homebrew. Though for the sake of me not being a total hack I have to say my original system is almost scarily similar to the basic rules in outlined in GURPS lite - I suppose great minds think alike, lol. The really funny thing is that I came to this path strictly for site extensability issues in that I want to make modding the game for new websites a snap.

But seriously. While combat perhaps occupies a place that might justify it's own system, npc interaction would as well, as would other systems I would like to elaborate as well. So in the end it will be more beneficial to me getting this done and to system resources to keep them all running in the same way, with only minor embellishments.

Then the focus stays where I want it - on creating specialized characters which have as large as possible variety of strategic options. I didn't mention it, but I actually solved my issue referring to Dexterity as Agility by simply adding Agility to the game and keeping Dexterity for saving throws that require handiwork. So now we are up to nine stats for a character and I still may add another or two.

So the scales of complexity and simplicity tip a little, but still stay in balance ... for now!

26Jun/09

Project W O T A N coming along

I know two posts ago I promised a rundown of a typical character sheet in the php/MySQL-based fantasy RPG PBBG I am writing. That is a lot of freakin' acronyms.

So I right now I am going to both defer and deliver: rather than give a specific rundown, I am just going to talk for a moment what stats currently comprise a typical character and how they will be working together. I say currently because any of this is subject to change, but I have already decided upon and (mostly) designed them into the database and logic. But we're not to 100%, yet.

First there are the basics: Name, Gender, Race, Description, Portrait - what you would expect in basic character conception.

Name: limited to 20 characters, spaces allowed

Gender: Male or Female - currently no statistical difference in abilities (might change), this will sometimes be very important one way or another in npc interactions - also I plan on using traps and spells to allow gender-bending - i.e. if your character is too much of a male chauvanist pig, a deity might decide to play a trick on him.

Race: Your race currently will have an effect on not only positive and negative modifiers for stats, but also will establish a baseline height and weight for your character.

I am trying to design W O T A N to be extensible as possible. I really want it to be easy to add or remove races from the game, so any list I give is going to mainly be my list, which will exist on the "official" web server. Right now I have the following par-for-the-fantasy-course races: Humans, Elves, Dwarves, Halflings and Gnomes.

As to the specific archetypes, I plan on mirroring Elves with Halflings and Dwarves with Gnomes. Or in other words the latter is the miniature and more inherently magical version of the former. A halfling will look like a miniature Elf, which will be modeled more on traditional Tolkien First-Borns than pop-fantasy Elfdom - in fact you could say a Halfling is more like a traditional Dungeons and Dragons Elf (and in other words, not at all like a Hobbit).

Gnomes are modeled after the the gnomes of modern folklore - i.e. garden gnomes. They have the pointy hats and long beards and look just like tiny dwarves. They have similar habits also, but where Dwarves burrow into mountains, Gnomes burrow into the trunks of ancient and giant trees.

I might add another race or two, or maybe not. While I want to create a high-magic environment, I would prefer characters to be closer in spirit to humans than more fantastical creatures like Merpeople or Half-Dragons or such. Though down the road I may add "flavor" sub-races that further define the main five races.

Description and Portrait are pretty self-explanatory. You get decent size spot to type in some message about your character (which is html-stripped) and for your portrait you can choose from a gallery of pictures. As of now I have not made an interface for choosing a portrait, but that will be in before I consider the project moved to Alpha. I am testing with the original Baldur's Gate 2 portraits - pretty fun ride down memory lane there, but I am sucking with code execution for some reason. I think I have just been in a funk.

Height and Weight: Options given are along the lines of "short," "tall," "skinny" and "obese," et cetera. Each choice will modify your racial baseline height or weight. Right now I am just using a simple scale of values (like 1.2, 1.05,1,.95,.8 for instance) and multiplying them by the base values. I may make this more complex later on, but for right now keeping my eye on the specific values and tweaking them slightly when needed is working just fine.

Stats: The bread and butter of (most) RPGs since the glory days of the mid-1970s. I am currently in a funk (to reuse an odd phrase) as to how to handle these, as I am of the mind to access and use them directly within the course of the game rather than simply use them as a measure and rely mainly on the bonuses particularly high or low stats give the character.

As an example of what I mean is that rather than make a separate stat for Hit Points which is determined on its own yet influenced by constitution, why not make constitution the same as hit points and design around that? Currently I am casting about for ideas and reading up on old game manuals (I kinda have a slight collector-fetish for old PnP RPG paraphernalia).

Here are the stats I have in the game - these are pretty much set in stone at this point. I also have decided to dispense with extensibility on this as well. Hopefully the code will be clear and simple enough to allow someone to change it to add or subtract the values, but they will have some work tieing it all together with the adventure system. I'm not going to add the work on myself to make changing the actual stats themselves an Admin Panel affair.

Strength: Physical strength - the same as pretty much every other RPG in existence.

Dexterity: I would like to change this to Agility to be semantically correct for the intended meaning (Dexterity only refers to agility in the hands, not the whole body), but I feel a certain need to keep it as an homage to the original AD&D.

Stamina: This is either going to be a character's hit points or it will modifiy hit points. Haven't firmly decided yet.

Intelligence: Same as every other RPG since the dawn of time.

Luck: I got this idea from Tunnels and Trolls, though I have seen it used in other CRPGs also. Simply put this is something of wildcard stat to be used for strange savings throws or to add to (or subtract from) other actions. I plan on weaving Luck into as many aspects of the game as possible so this will be the most important stat for the min/max-style player.

Spirit: Wisdom in traditional D&D, though I plan on using this as the main metric for all magic so that magic will therefore also likely not have a distinction between arcane and divine magics.

Charisma: As with most RPGs that have it, it is your character's personal magnetism and ability to lead and inspire others. Even in games where it is not officially considered such, many people still think of this as also measuring the sexual appeal of a character. This is most definitely NOT the case in W O T A N, as you will see when I cover Character Traits.

And that is that for character stats. As I wrote earlier, these are pretty much set in stone. I plan on using them extensively within a system of savings throws that I will be using as much as the physical constraints of a typical shared hosting plan will allow.

I say shared hosting because one of my personal goals is to be able to run W O T A N or a W O T A N-like derivitive on a virtual web server because they are cheap and numerous. It will make it both easier on me and anyone else who may end up using this down the road. Honestly, I don't know if I will be able to pull it off in terms of resource-usage, but that is why this is a learning experience, no?

OK, I am going to cut this short as it is becoming too long of a semi-coherent babble for any sane person to read at any rate. I will try to summarize the remaining stats I have and then go more in-depth in a later post.

Skills and Classes: Originally I envisioned W O T A N with a class system like many other RPGs. After all, I am trying to capture a bit of a nostalgic, retro feel of old PnP RPGs from the 70s and 80s. But I ran into something of a loggerhead making my conception of skills and spells work with the basic concept of classes.

When I say loggerheads, I do mean a jam though it is a jam borne largely out of time constraints and sheer laziness. I suppose if I worked hard enough I could make it work, but I can't, don't want to, and 86ing classes completely will end up freeing some server system resources. So they are gone.

What we are left with is basically a long list of abilities that can either be called skills or spells. Whether it is skill of lock-picking or the ability to shoot energy beams out of your hands, it will technically be the same and any character will be able to combine them as they see fit. This will also enable the adding, modding and deleting of skills through an admin panel.

I haven't done a great deal of work on these yet, this is basically where I am at right now in terms of writing the system.

Character Traits: These are already in the system, and will be extensible via the admin panel. Basically a Trait is a 1,001-point scale from 0-1,000. These will be used as a meta-savings throw or more advanced form of a savings throw used exclusively for interaction with NPCs.

Some current traits I have for default inclusion are:

Morality (Good, Neutral, Evil)

Personality (Chaotic, Detached, Lawful)

Ethics: (Charitable, Prudent, Greedy)

Sexuality: (Chaste, Lusty (i.e. healthy, not lustfull), Perverse)

There are several more, I just don't want to go on too long and the list of default traits is not completely set in stone. (I actually currently have sexual preference ((i.e. gay, bi, straight)) on the list.) It is my hope with the Trait system I can really bring a sense of real role-playing to the game which is basically a single-player computer RPG. I covered most of this ground in a previous post, actually.

I still think of this game as an RPG because of the stats and presence of experience points and loot, but I might actually start calling it Interactive Fiction instead as I really want to make an environment that feels like you are taking part in a real book, not necessarily what we would today call a "virtual world."

Lastly, you noticed I always spell the project name with spaces between the letters. It's because I want what is going on between the lines in this game to be just as important as what is openly stated. Or something like that.

18Jun/09

DDO Beta

Hooray! I got into the DDO relaunch beta. The Lammania client is downloading as we speak. I'll make sure to take notes so I can post them as soon as the NDA is lifted.

Also, work on the basic character sheet for W O T A N is almost complete. I ran into a snag structuring the character creation process having to do with my noobish attempts to take my database to as clost to 3N as possible. While I believe I am structuring my database in decent (if not good) way, it is forcing me already to make certain decisions with my programming logic. In this case, the character table is divided into sections like stats, money, skills, inventory, et cetera. Each section has its own table with an ID that is written to the character table. So far so good.

But that means I either can't make the character creation process a 1-click affair, or it would be difficult for me to write it in an expedient fashion because each dependent table requires the character ID which isn't created until the character row is inserted into the character table.I suppose its a quasi- chicken/egg situation.

So I need to split the character creation process into stages. But I had each stage writing itself into the appropriate table, meaning if someone got halfway through and quit, it would create one or more orphan rows in the database. I can see this would be common user behavior, so I could also see my database growing to enormous size with junk data.

So before going to bed last night I decided I would make character creation two-stage: first the name and physical description is entered and then the user can fill out the details at their leisure. I'm not sure if it is the optimal solution, but it should work and it feels more "rp" to me at any rate.

Speaking of old-school rp mechanics and potential user abuse: I am still going ahead with a random-roll stat creation process. Meaning if you roll an 18 for strength you get an 18, if you roll a 6 ... you're gonna be one weak barbarian. Assuming I stick with this system, I know most users are going to abuse the refresh button. Rather than try to prevent that behavior I am considering just designing around it to mitigate its impact on system resources. I have a strange nostalgic feeling for this "exploit" myself, so rather than lock it down or use a distributive point system, I am going to test out leaving it in. I still might move to a distributive system, though, as it has game-play benefits beyond preventing system abuse.

I need to get back to work now, but in the next post I am going to recreate a character sheet and explain the basics of what it means. I'm not sure if it will be final, as there might be more things to add or delete, but it should be pretty representational of what the final sheet will be. If you are interested in the W O T A N project and want to give some feedback, look for the post in the next day or two!

16Jun/09

World of Neurosiscraft

Work proceeds apace on my php WebRPG project, codenamed W O T A N. To recap, this is a browser game which will feature a full character, combat  and loot system driven by a pluggable single-player text adventure games. Pluggable meaning whole adventures and series can be (relatively) easily written and added to the game with little to no hassle ... or even generated randomly and dynamically upon entry.

As I have been writing the engine I keep thinking "Fan Fiction 2.0" though I myself have no desire to base any adventures in existing IPs. But the way this is coming out, it seems like something a fan fiction person would like, if not go ape-shit over.

The bulk of the adventure screen will be descriptive text and actions the player can take are represented by hyperlinks. So, if you walk into a tavern within the description scene actors will be linked to a conversation/action page for them (basically another scene) where you can choose to trade, fight, use social engineering, et cetera. The point of structuring the game in this way is to create a very strongly story-driven experience but take advantage of the interactivity that computing provides. If we reach back a couple decades, we find the perfect genre name for this type of game: Interactive Fiction.

To be more clear about taking advantage of being books and stories on a computer rather than the printed page, this game doesn't simply have just "Alignment" for meta-gaming, so far I have added Morality (Good, Neutral, Evil), Personality (Chaotic, Detached, Lawful), Sexuality (Chaste, Lusty, Perverse), Politics (Libertarian, Statist, Autocratic) and Religiosity (Atheist, Agnostic, Believer). And I will probably add more as I think of them.

These exist both to define your character as well as open and close options within adventures. Each of these attributes have a value from 000-1000, where (to use Sexuality as an example) 000 is someone profoundly devoted to chastity, 500 is the height of virility/fertility and 1000 might represent utterly reprobate perversion.

So if you wander into a tavern and speak with Fang the Delectable, who turns out to be rather on the unsubtle and kinky side - the author can write his dialogue this way then set his mechanics to to respond to both male and female characters with sexuality scores between 550-700.

Imagined another way, suppose your character must negotiate a deal for a trade monopoly with a tyrannical and controlling queen but is scored at a soap-box-screaming 050 Politics - making him an outspoken and zealous libertarian. That's one negotiation that could go south very quickly ... unless their sexuality scores are a perfect match, that is.

And so each of these attributes will have bonuses and negatives depending on the adventure and what the author decides to put into it. Of course these values will be changeable according to decisions made within the adventure, and like loot and experience will be tied to to the character and so carry over between adventures. I'm also considering giving them the ability to affect stats, i.e. if you manage to rack up a donkey-show-participating score of 900 on Sexuality your Charisma could lose a couple points - possibly disastrous to a character with a Charisma-based class. Or a similar mechanism to something like that, I'm dealing with stuff as I come to it.

I also plan on putting languages into the game. While the game will have localization for non-English speakers (though I will not be able to actually provide translations myself), when I say language I mean like Elvish or Orc or what-have-you. So in other words, some dialogue will be conditional in that if you speak Dragon you will see "My, you look delicious!" and if you do not speak dragon you will see "Shhhdral yszzophaxiziz!"

Stuff like this is the true strength of text-based games and is a mechanic no graphic-based game can begin to touch (in my opinion, of course). Another common situation you may find in the game are text entries based on skills or stats. Of course there are the obvious situations like a conditional text  about a hidden door (with hyperlink to "open" said door) that is only shown if the character passes a saving throw on their search skill, but what about that dragon? Let's say the character saw the gibberish text, but had a high enough Intelligence to pass a saving throw allowing her to see text describing the dragon as looking extremely hungry and drooling a bit when looking at her plump flesh.

Something else I added in today was height and weight. Idecided to go with a base racial height and weight - the most normal of averaged normals for that particular species - and then allow character customization by choosing "fat" or "skinny" etc. - I actually think each has a five-value range. And each option will just be a name for a modifier number. In the case of the fattest value, Obese, the character will be 1.75 times the normal weight for their species.

So height and weight will also play into the game in a similar way to the characteristic attributes mentioned above. If you are Obese then getting across that rickety bridge is not going to be easy. If you are small and thin then intimidating that bugbear into running away is not going to happen.

I have also been looking for technologies, if not actual third-party scripts to add in to this to expand player social interactions. I have been thinking about WordPress and may attempt a WordPress edition (probably pluginized) after I have a solid beta version 2 or 3 on a live server. However today I had the idea perhaps to integrate or attempt to write simple wiki functionality into the game.

The reason for this is to deal with the wheres and hows of actually building an easy web interface to write adventures in for both myself and (hopefully) others. I may be able to code in multiple if/then/else dialogue trees and pull variables from the database, but I do not really want someone else I have only met on the Internet to have that level of control of the site. A converted templating system might also work for this and I am considering that option as well.

That part of the game is a bit down the road, however. I do expect to get the character system along with the framework for basic classes, races, skills, spells and items (+inventory) into a functioning state by the end of the week if not sooner. Taken as a whole probably not sooner, but hey, the insomnia prevents me from dreaming in my sleep, I might was well do it while I'm awake.

13Jun/09

RePhaos and W O T A N

It is so interesting to go back and read old posts. Here it is, yet again, an extended time since my last post. And a big change has come upon me in the intervening time, so if you are at all interested you might as well read on.

For one thing, I have decided to put all Civ4 and Colonization modding on complete hiatus. Meaning I am not abandoning my Grow Tycoon mod, but hey - if I get to it, I get to it; if I don't oh well. GASP!

There is, of course, a good reason and it comes from a sort of realization I had a week ago:

Why am I putting this much time into a mod that may only ever get played by a couple people?

Maybe several dozen if I am very lucky, but the point was for this to be a learning exercise for producing my own stand-alone game. I am at the point where I am learning Blender, of all things. While it and 3D Max are  great tools for a 3D artist, I am not one nor do I aspire to master that skillset.

And that too me, is the other and more important realization - that is, what skills am I advancing by making this game nobody will likely ever play?

And in all honesty I can say my time playing with the SDK, Python and XML files was really helpful in getting me into the right frame of mind to begin the next stage of the journey. The brainstorming I did for the mod also has given me a pretty solid vision of what I want out of that game also. It is a shame I don't have a completed project to show for it, but oh well, time marches on.

I am moving forward with my desire to master PHP and using a browser game to do that is perfect. I had hoped to learn Python and experiment with building web apps in that language but I am already familiar with PHP so I'm just going for it.

Currently I consider myself working on two projects, both of the fantasy RPG variety. I actually touched on both in the last post, writing it is probably what got me thinking in the first place.

Project 1, working name: W O T A N

I am developing this game literally from the ground up as an exercise. And exercise it is for my flabby brain muscles, I am just now finishing off the user system, with only an e-mail activation method and a form/method for updating user data to go. Then on to the character system!

The plan for this game is simple:

  • develop a character system with all the requisite stats, skills, inventory and such
  • write combat, magic and savings throw system for character system
  • write a system that allows you to carry out and respond to actions in text using these systems
  • make smallish text entries utilizing this and have them display randomly

tl;dr --> A random textual dungeon generator with a character that interacts with the environment.

The character system will come with all you would expect out of an Internet computer game - storage on the server database, linked to your own account, etc. Items will be able to be carried from one dungeon to another. I would like to add in achievements (God, I know) to show which dungeons you have completed with so-many points awarded.

Points will be experience, so the top-ranking players will also be the highest level. The game is, however, very much a solo game. Characters are completely cut off from each other by the very nature of the game.

What I hope to do on the community side, though, is to heighten player interaction by experimenting with blogs or other CMS concepts. Think a WordPress-Mu-like setup where everyone will get there own blog. I am so considering that idea, actually, I mirrored the wordpress user table in my own database design.

I'm hoping that will encourage people to role-play, keep track of their adventures or even write guides ("how to kill that nasty yeti mini-boss that sometimes pops up on level 5 of the Dreaded Dungeon"). I have to admit, my.lotro.com was a big inspiration for that aspect of the project.

Project 2, working name: RePhaos (dev blog)

So after giving World of Phaos a test-spin, I found myself both repelled and irresistably drawn to it. After throwing up a couple times and realizing it was probably just those morning glory seeds I ate, I realized what I must do:

Create an MMORPG on TEH INTERWUBZ.

Overly obnoxious catchphrases aside (at least I didn't write "KTHXBAI!!1!"), this is something I want to do. Something I really, really want to do. And yet it seems so enormously difficult. Oh well, getting out of bed in the morning can be difficult, too.

So I was going to use World of Phaos as a starting point, and I am guess I still am, but I have a feeling by the time everything is said and done not a great deal of original code will be left. Right now this project is on a temporary hiatus whilst I steamroll my exhausted way through the noob-php-coder landscape of W O T A N.

The reason why I have halted this project to work on that one, however, is both to get my skillset up to level to tackle RePhaos but mainly to develop the game engine that I will then integrate into RePhaos.

To put it bluntly I am very dissatisfied with WoP's combat. I am also generally dissatisfied with the browser RPGs I have come across, the exceptions being the various MUDs which have made themselves available via flash and java web clients.

It seems like the run-of-the-mill browser RPGs invariably fall short the one area where they should excel over graphical games: minutiae. Why log in to take a few turns in "the forest"? What is the point? There is pretty much no character customization. I think you get my meaning - I generally find them shallow.

And that is precisely why I had the idea for a web-based MMORPG: because MMORPG players bitch and piss and moan have multitudinous cows, but how many do something about it? Well, I am. I've always wanted to make my own little world, and I want to play to the strengths this medium by replacing eye candy with mind candy. Well, mind candy if you are an accountant or statistician, perhaps.

HOWEVER, I do not, gentle reader, wish to mislead you as to my proper intentions. And those are to pursue another long-time desire of mine, which is to create something that is or approximates an MMORPG framework.

That is a generic engine that anyone with some skill and time can turn into their own functioning MMORPG. This is why I am so bent on rewriting the WoP code rather than simply subverting it to my own needs. I fully intend for RePhaos to be easily customized and highly extensible.

Essentially, once the various aspects of W O T A N are completed, I'm going to be integrating them into RePhaos. I'll probably be keeping (though modifying) systems like the darksmith shops, map, guilds and such. The thing I genuinely like about WoP is the easy flow of travel, explore, fight, explore some more - I like how MUD-like the system is.

I think that by refining the basic systems  to make it actually enjoyable to play as well as making the code modular for plugins and customization, it could be big hit.

If you looked at the Google Code repository you will have noticed there are as of yet no changes. That is because I am having a hard time understanding SVN. I am such a noob.

24May/09

Status Update

Well it has been about a month now since my last post, so I suppose I should make a record of my pernicious and insouciant behavior over the past month:

Game Making

Hard to believe, perhaps, but I am still latched on to my ideas for pot farming games. I am still working on the details of Grow Tycoon as a mod for Civ4 Colonization. I have delved into the SDK, toyed with .py files and even managed (with a lot of help) add a basic zombie into the game.

The current path of learning I am treading is to figure out how to add these zombies into a simple modcomp where they will be generated randomly and automatically at the start of a game. This behavior is very similar to how Barbarians are handled in Civ4, so I may try to re-add Barbarians into Colonization. I figure (assuming it is feasible) this will be a great way to become more familiarized with both C++, XML and graphical elements at the same time.

As I continue to get better at PHP, I am looking more seriously at my capability of producing a Browser Game. The deeper I delve into mod-making for Civ4, it almost seems like it would be easier. That is probably the me-trying-to-get-used-to-Blender talking, though. After all, you don't have to worry about site hackers or bandwidth limits with a Civ4 mod.

While my vision of a pot-farming browser game is more along the lines of Travian than an xRPG, I was hopefully in search of potential travian-like frameworks but instead found and installed World of Phaos on a test server to have a go with it. So far I am enjoying myself quite a bit with its basic setup, and it looks like it both requires the code love and has the ability to be easily modded that may make me want to stay with it. I've always wanted to do my own RPG, perhaps this can provide the basic framework for it.

But maybe not as I have been none to keen lately on making a multi-player for some reason. For an RPG I was considering adapting the Tunnels and Trolls PnP system or even Dungeons and Dragons (basic 1981 version) to a simple php single-player game system. The php would only really be used as a glorified character sheet and dice-roller, perhaps with the ability to save character and location information to a persistent cookie or as a text file. Not really sure why I'm not feeling the multi-player browser game love at the moment.

But if I decide to rework World of Phaos and get something interesting going, I'll put it on a public server so anyone can play. And did I mention something about a test server? That is right - this past month I finally got off my ass and repurposed an old computer as a web server so that I can avail myself of the joys of CLI with SSH tunnels and whatnot. Thanks go to Verizon FIOS for allowing the ability to create remote access to it as well. But if you think I'm linking it here for everyone to see, forget about it - my security skills aren't good enough yet to lead the world to my door.

Game Playing

I have been playing a lot of Lord of the Rings Online lately. I've fallen out somewhat with the MMORPG genre this past year, but still LOTRO keeps me coming back. Even with all its warts (like the dreaded pathing system) Turbine really did a quality job with this title.

I attempted to get back into World of Warcraft again, and just couldn't do it. I don't know why I even try to rekindle the passion, that game is utterly dead to me. If I were playing any other MMORPG right now, it would probably either be Dungeons and Dragons Online or Vanguard.

I have been playing a lot of Colonization and a bit of Civ4 lately, as working with the modding requires it. I have been playing mods, both official and not, a lot more and I can't believe how rich and diverse the modding scene for Civ4 is. Playing the mods made by other people as well as attempting to come up with my own has really rekindled some of the passion I have held in the past for the Civilization franchise.

Lastly, I bought Defense Grid: The Awakening on Steam a week or two ago (when it was on sale) and it was more than worth every penny. I truly enjoy this game, I only wish I had more time to really crack-out on it. I enjoy the progression also, making it a game that is easy to learn and play, but very difficult to master. I'm not really a tower defense afficianado so I can't really compare it to anything else, all I can say is I really enjoy playing it.

14Feb/09

Ikariam – Civ in a browser game

For the past few days I have been enjoying the Travian-like browser game Ikariam. So far I have been really enjoying, it in fact.

It has all the elements you would expect: real-time-based harvesting of resources and building construction, construction of defensive walls and military units, trading with other settlements, establishing colonies and forming alliances with other players.

What is mainly attracting me to Ikariam at the moment is the polish and depth that has been put into the game.

You can tell just from the design of the site and its graphics that there is a high degree of polish. This is evident also in the presentation of information on the game screen, though there can be some room for improvement - I find the way they use the sidebar a bit unwieldy at times. I have also caught more than one misspelling.

But those are minor quibbles, as the depth they have added to the game is something to be admired.

First, like a Sid Meier game (don't you think their mascot looks a little like Sid?), they have a tech tree. To construct certain buildings, train certain troops or access bonuses you can research a technology. There are even classes of technologies (military, economic, etc.) with research interdependencies between each other. To research technologies you must build an academy and staff it with scientists.

There are also advisors that will assist you with information about your production and consumption, military affairs ... even happiness. Yes, there is a happiness metric in the game that you must pay attention to or suffer negative bonuses.

Perhaps the reason I find myself so immediately fond of this game is that it is basically Civilization translated into a Travian-like.

So far my one complaint is that it doesn't have a really good trading system in place - but it does have one, so I am ultimately reserving my judgement on it until I have played it longer and seen more of what it has to offer. At this point it doesn't appear many people around me are using it and there are only a few basic trading goods in the game - Nile Online's trading feels somewhat limited to me, but so far I like it much more than Ikariam's system.

Ikariam is free to play, but does have a micropayment system in place. Points, called "Ambrosia" can be purchased for real money and then used to activate a bonus system that makes managing multiple cities easier. These Ambrosia points can also be used to boost your production and research rates.

While it seems Ikariam can be fully played without ever spending a dime, I suppose the Ambrosia points are useful when managing larger empires with the aim of being competitive in the leaderboards.

For now I am having a lot of fun with it, just building up my first town and harvesting the bejeezus out of wood and marble.