Setbacks, Delays and Trying to Rise Up
Well, the inevitable has happened: I decided to push back my beta "launch" (snicker) for Project WOTAN to March, and quite possibly April or May, of next year.
I did virtually zero work on it in November as I was engaged in the cruder work of making money. Working 14-hour days out in the wilderness with bare access to electricity, let alone the Intertubes, is not conducive to making progress on an ambitious PBBG.
Even if I were able to make up the time this month, alas that is also not happening as I returned to find myself soon to be divorced, separated from my child and homeless leaving me scrambling to find a way just to stay alive. Again, not exactly an ideal situation for creating a browser game.
Rest assured, however, that unless my body washes up on a beach half-eaten I will continue to persevere in my effort and send Gungnir flying true. Of course, the inevitable mediocre anonymity the site will enjoy is not exactly a great incentive, but at least I will be able to say I finished it.
I have continued to develop my long-term idea for the project, and I am not sure if I will be able to make a MUD-for-the-web idea work; I'm not sure how well it would work even with more people (who know what they are doing) working with me. It is a dream, perhaps someday it will be a reality, but I do not believe so with this project.
Rather (long term), I am focusing on creating more of a combination of a single-player RPG and a social networking site. This was the original idea, I envisioned something maybe vaguely similar to Guild Portal. Rather than a guild organization and communication tool, though, it is a place to play and create text adventures as well as store the character(s) you use in the adventures and communicate and organize with others making and playing them.
To that effect, I am going to be setting up the main site for the project in the near future. I will need to get a VPS, and while at the lower levels they are not expensive, it is not exactly an expense I want jump right in and sign up for considering I am a very-soon-to-be homeless person. But running the game, especially how I envision it as a finished site, demand it. In fact, considering operating costs and my lack of a solid business plan, it's enough to make me hope for anonymous mediocrity.
I shouldn't underplay the business aspect of the game too much, but that is part of my extreme self-effacing nature. I actually have some really good ideas about how to make it pay for itself - none of them are original, but that also means I am picking from established practices.
Of Dice and Men
In 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:
- I do not like how character stats are initially determined.
- Character skills become more complex to implement.
- 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.
Welcome to the Wiki World
while ($brain = smoke($weed)) $_SESSION['progress'] = $brain['obsessive_workaholic'];
That 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.