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.
Progress Report – W O T A N
It'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.
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!