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.
