Sunday, April 27, 2008

The Base, Part 1

Casa laments in one of his first posts the difficulty of creating a base for a world, and he's spot on. The problem when making a persistent world is that you can't simply start building and expect it to work well. Remember one of the points in my last post: coherent design. If you want everything to flow together, you have to design it that way, and that means building a solid foundation for everything else to stand on.

What composes a foundation? Well, if you're designing a persistent world, you've obviously got to have a persistency system. You'll need to keep track of things like whether players have completed important quests, joined a guild, rented a room in an inn, and so on. You also need to prevent exploits, such as players logging out to avoid death or to regenerate spells. NWN allows you to set persistent variables on items, but what if something gets set by mistake? You want to have the ability to edit or delete any persistent information you store on a character, so the ideal thing would be a database. So then you need to design a way for your scripts to talk to a database and reliably get the information you need. NWNX fills this need, but the included scripts are really only a start; you need to customize it heavily to get any real use out of them

And what about XP? Players want to be able to gain experience, and the default system is certainly not built for PWs, which usually call for slow level advancement. And what do you do about high-level PCs teaming up with low-level PCs to get better XP? How about spawn camping, where players sit and kill the same thing over and over?

How do you design treasure drops? What about encounters? Crafting? Do you want any of those "realistic" systems like hunger and thirst that so many PWs have? How are you going to make them all work together and not be a mish-mash of random junk?

When builders realise just how much work goes into designing a PW, they often throw up their hands in despair and just drop the project. I made a commitment to myself early on that I was going to put as much effort into this world as was necessary to get it to meet my vision, and that it wouldn't be just another project that I get excited about and then put up on the shelf a month later. It was about this time last year that Casa and I started planning on how to build our awesome PW (and I'm suprised that both of us are still excited and producing stuff). He decided to focus on the building while I went to learn how to use NWNX, MySQL, and NWScript. We've both finally got something to show for it, but a lot of work remains ahead.

I settled on the Hardcore Ruleset as my method for tying all the various systems of the PW together. While it's mostly known for systems that allow permadeath or keep your characters from resting more than once a day, the core system doesn't enforce any of these. Mostly, it's just there to let you run multiple scripts on a single event so you can easily mesh plenty of systems together. It also comes with a decent and customizable persistency system that you can modify based on the type of database you use. Even better, the scripts are carefully designed to be self-documenting and follow a careful naming convention. I adopted both of these practices, and every system I've designed for my base I've designed to work with HCR2. I've also expanded a lot of HCR2's functionality, such as allowing hook-in scripts for creature and placeable events, rather than just the default module and area events.

To this, I'm adding plenty of custom systems:
  • A custom XP system with class-based rewards
  • Persistent reputations with NPCs and factions
  • Persistent quests and journal entries
  • Persistent chests and banking
  • A D&D 4th Edition-style resting system
  • A D&D 4th Edition-style bleeding and death system
  • A cut scene system
  • A crafting system
  • An inn room rental system
  • A whole new magic system (yes, you heard that right)
  • And a whole lot more

So yes, it's a lot of work. But with the foundation built, it's coming together quickly.

No comments: