Showing posts with label scripting. Show all posts
Showing posts with label scripting. Show all posts

Saturday, November 21, 2009

I am convinced…

…that Obsidian is woefully incompetent.

How else do you explain the fact that the NWN2 script editor crashes when you try to scroll down in a script? How the hell do you mess up a freaking script editor? Is it really that hard to design things that work, Obsidian?

Thursday, November 5, 2009

NaNoWriMo and Other Stuff

Amidst this silence on the blog, a lot has been going on in the forums. I've been going back and reworking the Core scripting framework that Shadows & Silver uses so it's more powerful and flexible. I've also been working on a lot of documentation so that others who want to use the Core will be able to do so with minimal hassle. Meanwhile, Sherincall has started work on a ground-breaking custom ruleset that will establish S&S as a game that just happens to use NWN as its engine, rather than yet another NWN module. We're working hard to develop something new and exciting, a server like you've never seen before.

Also, as if I didn't have enough on my plate, I've decided to join NaNoWriMo, the National Novel Writing Month, wherein wannabe authors like me try to crank out a 50,000 word novel in a month. I'm starting a couple of days late, so I have a little catching up to do. Even though I've been working on this novel for years now, I hardly ever get anything of substance written. I'm very critical of my writing (not here, on this blog, where I just ramble as I see fit), and I usually decide what I said sucks and then destroy it.

Not this month. No, in November I will be committing myself to writing like I was playing in my Oblivion blog: no reloads. I'll write what comes and run with it. No going back and fiddling with wording, no rewriting a weak paragraph. I can always go back and edit it after I'm done, but the point will be to get it out there, even if it's not perfect. Hopefully this will be a good exercise with lots of fruit.

If you want to follow my progress, you can do so here.

Friday, May 29, 2009

Elminster... S&S Style!

So I've gotten a bit bored with scripting. Things seem to work alright on the ambient system, but I haven't the energy to test it thoroughly or to try putting it to use. I'm itching to build again, but we haven't finished work on our haks, so that's off the table. Well, no, not entirely. I can do some stuff with 1.69 content.


I got to designing a coupla NPCs. Here's one, an NPC named Dante.




Dante is the owner of the Haven Inn, a cozy little place in Manheim Court in Midport. He's a genial old fellow, and a retired Churchman and adventurer. Few but his friends know that he is also a powerful alchemist. In fact, Dante's years of research have fueled the current age of scientific discovery. Despite this, Dante is humble and down-to-earth. Though he no longer goes out on adventures, preferring his comfortable life in the city, Dante heads the Order of the Ouroboros, a group of adventuresome alchemists.


Dante is the Elminster of S&S, though he doesn't look it. In fact, he's largely responsible for the retreat of the Nerathim forty years ago. The question is, though, how do you keep him from overshadowing the PCs? In the FR setting, for example, you have to wonder why powerful NPCs are always giving out quests instead of just using scry-and-die tactics. In most settings the answer is that these NPC powerhouses are just too busy with the really big epic planar threats to handle the goblin invasion. That's what the PCs are there for.


Dante's reason for delegating is much simpler: he's old. Dante has had his fair share of adventure, and it's time for him to settle down and relax. Why risk your neck out in the wilderness when someone younger and fitter can do it?


I've got a lot of story ideas for Dante, and a lot of secret lore, too. But you don't think I'm going to tell you them here, do you? :)

Tuesday, May 5, 2009

Ambience

I like it when games come alive. I want to see characters going about their lives oblivious to me, proving there's more to the world than just my character. I like seeing NPCs go to work, grab a meal, and chat with each other. I like seeing them vary their activities from time to time.

I also like being able to make that happen. I've hashed together the beginnings of an ambient system that allows NPCs to be given hourly schedules rather than the day/night waypoint walking used by NWN. The waypoint system is just the beginning, though. It gets the NPCs where they need to go with great flexibility, and it allows the builders to attach scripts to waypoints that the NPCs can fire when they arrive. That's the skeleton, and now I'm putting meat on the bones by designing the scripts that will run on the waypoints.

What will it be able to do when it's done? Imagine a farmer rising just before dawn and heading to the barn to milk the cows before the sun rises. Next he heads to feed the chickens. Then to till the fields on the back forty. At midday, he returns to the farmhouse where his wife (who has her own schedule) pours him some lemonade as they sit in the shade. Then it's back to work, this time planting corn rows. Before sunset he heads to the local swimming hole to cool down, then it's back home for a meager dinner. Finally, bed so he can rest and do it all over again.

Now, that's almost certainly more complicated than most of our NPCs' schedules will be, but it's not beyond the realm of possibility. One thing is for sure, though. You won't just have NPCs standing on the street corner and staring dumbly at you.

Lore snippet: The Confederation of Adun was founded desperately forty years ago. Nerath, the eastern empire of old, swept across Emorlad, claiming the territory by divine right. The splintered Adunean states, weak from civil war, were no match for the might of Nerath individually. Forced by the Church of the Archons to put aside their differences, the states formed a defensive pact and successfully drove the invaders out. The pact later became the basis for the Confederation, but the tensions between the states remain strong.

Saturday, May 2, 2009

Slow progress

Hey there, Sherincall here with our progress report.

Progress has been really slow this month due to a very busy life we're forced to deal with. However, it is not right to say we haven't been productive. On the contrary, we keep getting new ideas, really cool ones too. Unfortunately, that results in a much bigger to do list. Anyway, what has been done (or almost done) is a very nice ambient system (Squatting Monk) and a mana based spellcasting system (Sherincall). Here's a list of script systems taken from a 'Builder's Guide' I'm working on.

Finished systems:
  • Core Framework (SS) - Authors: Edward Beck, Squatting Monk
  • Generic System (G) - Authors: Squatting Monk, Sherincall
  • Persistent Reputation and Reaction System (PRR) - Authors: Vendalus, Squatting Monk
  • Experience System (XP) - Authors: Squatting Monk, Knat
  • Spawn System (SP) - Author: Sherincall
  • Persistent Storage Chests (PSC) - Authors: HerMyT, Sherincall, Squatting Monk
  • Persistent Quests & Journals (PQJ) - Author: Squatting Monk
  • Hunger, Thirst and Fatigue (HTF) - Authors: Edward Beck, Squatting Monk
  • Chat Control System (CHAT) - Author: Sherincall
  • Rest System (REST) - Authors: Edward Beck, Squatting Monk
  • Bleeding and Death (BD) - Authors: Edward Beck, Squatting Monk
  • Visual Effects System (VFX) - Authors: Sunjammer, gaoneng, Sherincall
  • Cutscene System (CS) - Author: John "Gestalt" Bye
  • Dynamic Dialog System (DLG) - Authors: Paul Speed, Greyhawk0, Sherincall

In the works:
  • Ambient System - Squatting Monk
  • Spellcasting System - Sherincall

To Do:
  • Inn System
  • Horses and Pack Animals
  • Crafting and Alchemy
  • Bulletin Boards and Newspapers
  • Custom AI
  • Player and DM Tools
  • Weather System

There is light at the end of the tunnel, though. Starting June 5th, I'll have a few more hours per day for scripting, and starting July 5th, I'll have a few more.. About 8. My estimate is that by August all scripting will be done.

Apart from scripting, the other thing that requires a lot of time is custom content. Placeables are done, though a bit outdated (we'll need to look at the stuff that was released in the past month). Tilesets are half-way done. The other half will require a skilled modeler. We also have a ruleset base, which we'll build upon. I estimate the haks will be completed sometime mid August.

After that, it's building till we drop.


-------------------------------------------

In other news, we have a few more enthusiastic people helping us (A big round of applause for Ociros and Esayitch). Though they are busy as well, more people means more progress. It will all change soon, I'm certain.


-------------------------------------------
And finally, some lore (Pardon my poor narative skills.)

Umec Adkal
Umec is a respected noble of Midport. In his early days he was a famous warrior and adventurer, before he got crippled. Now, in his early 40s, Umec is a successful merchant, dealing in exotic trinkets. He is the employer of the Purple Masks, an assassin squad he uses to get rid of his enemies and aquire valuable trinkets.

Umec does not have a family. He seems completely emotionless, caring only about profit. The truth is that he has become obsessed with a relic he had acquired. A book that belonged to a powerful alchemist, a book he believes holds many secrets known to very few men. He has been studying it for years, yet hasn't been able to decipher and understand the writings contained within.

Umec is not an irrational person, he is well aware of the dangers he is putting himself into. He will never act prematurely, and always carefully calculates everything before making a decision. Ever since his retirement from adventuring, he has not failed in anything. His prosperity is slow but certain.

Anna
People who know her true name, Sarah Sol'Dath, are very rare, and often get even rarer once she finds one of them. Anna is possibly the deadliest of assassins in Midport. She is currently working for one of the nobles, Umec Adkal, who has given her a place in his mansion to use as headquarters for her squad known as the Purple Masks.

Despite being a professional killer, Anna is not without morals and codes. She has a perverted sense of loyalty, and considers betrayal worse than anything. She will cruelly punish anyone who betrays anyone, even her enemies. She dislikes pointless killing, and will always avoid ending a life unless necessary. This does not mean that she will forfeit an assignment she has been given. If she has been hired to kill a man, she will not stop until one of them is dead. It is not uncommon for Anna to give charity and help other people, especially children.

Sarah is the daughter of an elven priestess and one of their nobles. After her father has done some very wicked things, both him and Sarah were exiled. Sarah later killed her abusive father during their visit to Midport and tried to survive on her own. She thrived on the streets, and rose high in the ranks of a guild. The leaders of that guild thought her to be a threat and tried to eliminate her. She viciously punished all who were involved in that betrayal and with the remaining members founded the Purple Masks.


-------------------------------------------
I don't have any new screenshots to show, so here's an old one, to break the monotony.

Saturday, March 14, 2009

A long overdue update..

Hello all, Sherincall here.. Sorry we've abandoned this blog lately, we're both very busy with building. No matter, here comes a full update to make up for leaving you folk in the dark.

First of all, scripting. Progress is really good, and soon we should have all the basic (and not so basic) systems in place. The only big piece that is really missing is a crafting system. However, my SHC project originally started as a crafting system, and luckily it's very modular, so we can recycle huge portions of that code. All in all, scripting is the least of our problems.

Haks. These things are problematic, as by the time we've collected everything we want, a lot of new content appears. So, best approach is to wait for as long as we can. We have the placeables pretty-much finished, and they are at 55 megabytes 7-zipped. Tilesets are a bit more annoying, as for example, Gothic City was made using old BioWare models before full camera control was unlocked, and is thus missing geometry on the bottom side of the models. These bugs have been fixed by BioWare and CTP, and we need to take all those models, and apply the gothic texture to them. Not really a hard job, just tedious. Then, some textures in the Gothic City are dull and boring.. Or just don't fit, so there's the job of retexturing as well. I think (hope) other tilesets won't need this much work.

And now, here are some screenshots using default tilesets to show our placeables..




















































And finally a lore tidbit: Here's one of our NPCs.

Alaenna the Witch
Alaenna is a half-elven sage, alchemist and sorceress, living in a tower about 15 miles away from Midport. The church of the Archons despises her, and has given her a bad reputation. She doesn't really care, though, as long as she is left alone. It is said that the church had attempted to remove her by force in the past, but was unsuccessful, however it is uncertain how much of that is true. One thing is certain, should the church, or anyone else invade, she would never leave her tower and valley again, and is willing to fight to her death.

Alaenna is very fond of mirrors. Rumor has it that she has the ability to create fast and slow mirrors, that allow you to look a few seconds into the future / past. Alaenna is not naturally beautiful, however, through alchemy and practice she has managed to change her facial traits to that of a very attractive woman. This is very exhausting though, and when she is alone she will relax her face and revert to her original appearance.

Her only servant, and closest friend is Isrrak, a blind monk, who is one of the last connoisseurs of the forbidden alphabet, symbols that when written in a special manner cause death to any who see them. Isrrak speaks only when it is absolutely necessary, so most who've met him think he is dumb as well. Alaenna sometimes asks him to inscribe the forbidden symbols on her eye-lids, to keep her protected from enemies while she's asleep.
Alaenna spends an hour every day living the life of her mother. She dresses in her clothes, and acts like she would. During this trance, she forgets all the details of her own life and only knows what her mother knew. This is her way of repaying her mother for dying while giving birth to her.

Alaenna values knowledge above anything else, and will always trade an information for an information. Even material objects she is willing to part with for a good tale or some news. Once she gives herself an assignment of understanding something, she will be able to do little else until she is satisfied with her knowledge of that thing - Meaning until she has full understanding of everything about it.

Thursday, January 8, 2009

Progress!

But not the kind with screenshots, unfortunately. I've finished the lite version of my core scripting system (thanks to Edward Beck, creator of HCR2, whose code I murdered trying to pare down) so now Sherincall can start scripting things too. I'm getting to work on a basic rest system and then fixing up the nearly-completed XP system for the new framework. We've also got a whole lot of other things in discussion, including firearms, some player background customization, and that magic system I mentioned (though I don't think it will be as spectacular as I'd originally hoped, due to time constraints).

Also in the news, I managed to purchase the domain name shadowsandsilver.com, so I hope to be moving the blog and the forums soon.

How about a lore tidbit in the meantime?

The world Shadows & Silver is set in is called Enna, roughly translated from ancient elven as "tears", while the continent Midport rests on is Emorlad, roughly translated as "it is barren". Elven culture has left its mark on scholarly work, and in more than just names of places. Most of the ancient history of the world was recorded by the elves, who possessed a writted language long before men. It is only through the account of the elves that we know of the gods' wars, and it is only because of their knowledge of nature and its courses that we know so much of alchemy.

Ironically, elves have all but vanished from the world. They're rarely seen in the cities, having been less able to adapt to the changes of society than any other race. Most of them cling to their old ways in whatever scrap of wilderness they can find. What elves are found in the cities tend to be very hesitant in getting involved with society. Scholars speak of this trait as the Shame of the Elves, though not even the elves are certain what they could be ashamed of. What is certain, though, is that the long-lived elves have watched the magic that is their life-blood drain away from Emorlad. In a world devoid of magic, there's little place for them, and they know it.

Friday, July 11, 2008

Some progress

My computer's fixed now, so I'm getting back in the swing of things. It's coming rather slowly since I keep letting the basics of scripting trip me up, but I'm getting a decent spawn system worked out. I got things to spawn OnAreaEnter, but I still haven't begun work on trigger spawns yet. Still, I've got enough that won't need to be changed that I can begin working it into my building. One of my goals has been to have my NPCs spawn in and remain only when there are PCs in the area, which will keep them from using up cycles unnecessarily. I wanted to get that taken care of before I got too many NPCs for me to go back and change each one individually.

In other news, I've picked my building back up. I've connected two area to Manheim Court, but they don't have anything in them worth showing yet. Here's some screenshots, though, that show how my first area is beginning to fill out:



Saturday, July 5, 2008

The Scripting Continues

Building a PW is a lot of work, I'm finding. I've spent hundreds of hours scripting the systems for Shadows & Silver, and I'm beginning to feel rather worn out. The XP system and reputation system Casa and I are sharing are still in beta. I keep running into brick walls with them, and the frustration has been mounting for quite a while. One of my problems, I think, is that I refuse to incorporate anything into my world unless I know exactly what it does, how it does it, and why. This means breaking open every script and reading through it line by line. What's more, I'm making everything conform to my own scripting standards and making it easily customizable, which means rewriting pretty much every script from the ground up. This is what I did with Knat's XP system and with Vendalus's PRR. They're totally redesigned, rewritten, and expanded. That's a lot of work, but I hope the gain of being able to customize the settings and understand things enough to change them at will makes it worth it.

I while back I published the list of things I was wanting to script. Here they are again plus a bit more, reorganized by priority:

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

The first three are in beta (though I'm about certain the quest and journal system works flawlessly, I'd like to add a feature or two before I call it final). I had an old working version of persistent chests before I lost the mod in a hard drive crash, and I've got a tweaked version of Gestalt's Cut Scene System in alpha. Both of these are rather low on my to-do list, though, since there's few places I intend to use them. I've not even begun my crafting, death, magic, resting, or inn systems yet, and I want to have all these in place before I open the server up for beta testing.

*sighs*

Well, let's at least start getting a working prototype of these systems in place. Getting things started is half the battle with me (the other half is getting them finished).

As I've said previously, the difficulty with scripting is that you've got to know what you're trying to accomplish before you ever open the script editor. If you sit down and just start scripting with no predefined direction, you're going to be lost in a sea of tangled code. So I'm going to begin with the spawn system, listing the requirements of the script:

  1. It must conform to HCR2 coding standards. This means the code should be broken up into short, manageable functions, and it should be self-documenting, requiring few, if any, comments to explain how things work. There should be no inline strings used in the code (e.g., int nNum = GetLocalInt (oPC, “somevariable”);); strings should be defined as constants elsewhere to cut down on errors. Lastly, anything the user may need to change should be placed in a separate configuration file so the user need not wade through large amounts of code.
  2. It must be able to spawn NPCs, monsters, items, and placeables. Preferably, the same code would be used to handle all of these spawns.
  3. It must be able to spawn on a timer or when a PC enters a trigger.
  4. It must be able to spawn multiple creatures or items of the same or varying types at one waypoint.
  5. It should be able to vary spawns based on time of day, the level of the character triggering the spawn, etc.
  6. It should allow a DM to quickly place spawns for on-the-fly encounter design.
  7. I should be simple for non-scripters to use. The easiest way I see to accomplish this is by making the system be based on waypoints and triggers, which can easily be added to the palette.
  8. It must require a minimum number of scripts to operate. I would find 10 or less scripts acceptable.

This is a good list, and it gives me a bit to start with. But one thing that is lacking is user configuration. One of the things that made my XP system so flexible was its massive list of customizable variables. What sorts of things would a user want to be able to modify that would need to be set in a customization script as opposed to on individual waypoints? The first thing that jumps out to me is default settings, which was what the bulk of my XP customization was. As for what things in a spawn system to have defaults set for, though, I have no idea. Anyone?

Wednesday, June 11, 2008

Frustrations... Again

Well, I finally got my computer back from the repair shop today, and I'm glad, because I've been going through withdrawal after not having it for a month. I've been working on my fiancée's computer, but I've found it's extremely difficult to do anything productive on a computer not my own. Unfortunately, it'll be a while before I can actually use my computer. See, HP wiped my hard drive, which I expected. The problem is that they installed Windows XP Media Center Edition, rather than Windows Vista Ultimate, which is what I had. So now I get to spend several hours getting the computer back in order and everything set the way it needs to be before I can get anything productive done.

Further frustrations are in my scripting work for Casa. The XP system has some bugs that need to be worked out, but the biggest problem is a design flaw: it requires creatures to have a particular death script set on them. Now, that's fine for any custom creatures. But CEP creatures and those from the standard palette can't have their scripts changed, and that means creating a custom copy of those creatures. While I plan to pretty much use all custom creatures myself, thus negating this issue, Casa doesn't, which means he needs me to rewrite the default death script to use my scripts instead. Simple enough. But then it occurs to me that this problem could pop up all over the place. What about when I write a spawn system? The creatures will need custom spawn scripts. And what if I have a standard creature that needs one custom death script and another that needs two? I can't have the same script run two different things. So I'm basically rewriting all the default creature scripts to use my HCR2 1.6 creature events, and putting the original BioWare code into their own scripts, which he can set to be called if he wants. The problem is, it's insanely tedious, especially since I'm having to write documentation on each one (something everyone should do in their scripts but, lamentably, few do). Add to that the difficulty in working on someone else's computer and you see some of my problem. The good news is that I'm almost done. Hopefully this weekend the scripts will be fixed and I can go back to bug testing the XP system.

Speaking of the XP system, if anyone wants to help me test it (not sure how many folks there are who read this), please shoot me an email (squatting_monk at yahoo.com) or comment and I'll send you a sample module. I plan on posting it on the Vault when all the kinks are worked out, both in an HCR2 version and in a stand-alone version.

Monday, May 12, 2008

Scripting the XP System

I said that this time I'd offer some more information on the world, but instead I felt like ranting about scripting. The reason for this is that I'm needing to get a lot of scripting done before I can really build anything that's guaranteed for inclusion in the draft of the module. Earlier I listed several custom systems I'm planning on/am in the process of scripting, and they're some of the things that make up the core of the world. You've gotta have a foundation before your walls can stand.

Well, the problem with scripting is that it's not like building. With building you can open the toolset and fiddle around until you have a nifty idea or a fit of inspiration. With scripting, you need to know what you want and have already figured out how to get there. It's harder, I suppose, though I honestly prefer scripting because constant planning is more reliable for me than fits of inspiration, and I'm more likely to get a bunch of scripting done than a bit of building.

Why the rant, then? Well, I'm getting jittery. I've got so many neat ideas that I want to pull off in this world, but I'm still stuck doing the basic systems. I know that if I jump into scripting the cool ideas I have that I'll just have to come back later and restructure things to work within the confines of my base, which means more work and lots of headaches. Still, it's aggravating to still be working on an XP system, my current project. That said, I've accomplished quite a bit on it, and it's an extremely robust system that Casa and I will both be using in our worlds. The trouble is, I've had to cut some of the features because they were just impractical. That's the problem with designing large systems (and the XP system is well over 1500 lines right now): you're tempted to throw too much in, and if you're not careful, it becomes a veritable maze.

I'm to the point where I can start writing some documentation on it, and documentation helps, not only because it lets others know how to use the scripts, but also because it makes sure you've covered everything you needed to. You'd be surprised how often you can build a large system only to realize later that you've forgotten one or two pieces of the puzzle that are necessary to actually make it work. For now, though, let's look at the features of my XP system (based on Knat's Flexible PW XP System and the Vives class-based rewards). The following is a list of features I told Casa the system should have. What I've finished (for the most part) is crossed out, what I still have to do is in red, and what I've dropped from the system is grey:
  • Change the overall XP gain rate in one setting
  • Change XP gain for custom subraces
  • Overcome multiclassing XP penalties
  • Keep players from exploiting the game by not levelling up as soon as they get the chance
  • Change XP gain for individual levels to make advancement easier or harder
  • Change XP gain for individual classes (useful for putting those HiPS-spamming
  • Shadowdancers in their place)
  • Modify the XP gain of each class based on whether it's Ability, Combat, Crafting, Discovery, or Magic XP
  • Change the overall Ability, Combat, Crafting, Discovery, and Magic XP gain for all classes
  • Easily change whether or not XP types base their rewards on DC or flat rates
  • Award extra XP for extraordinary success in skill rolls
  • Reward partying in combat
  • Give a kill bonus to the PC to deliver a killing blow
  • Modify the XP gained from monsters too far from the PC's level
  • Reduce XP for PCs too far from the average party level
  • Persistently reduce XP gains from killing the same monster or casting the same spell over and over
  • Give Rangers a bonus for killing their favored enemies
  • Keep PCs who are miles away from the party from getting everyone else's combat XP
  • Change the XP soaked up by other PCs in the party, henchmen, and summons
  • Gain XP for using skills, including perception, diplomacy, and thievery
  • Gain XP for using Bard Song, Animal Empathy, and combat-related feats
  • Get XP for crafting based on the difficulty of making the item
  • Get XP for discovering new areas, tidbits of information, and random things of interest
  • And most importantly, every setting can be customized or even turned off

As you can see, things have come a long way. Using the system will be easy, but there's a lot of complicated stuff going on in the background. There's only a few things left in the list, but those things are incredibly tedious. I need to hook into Bard Song, spells, combat-related feats, and plenty of other really boring things. Hopefully I'll force myself to do it in just a couple of days and I'll have something Casa can test.

Until then, folks!

Tuesday, April 29, 2008

The Base, Part 2(ish)

I'm currently beating my head up against a wall. After spending days working on my XP system and Reputation system (and, by the way, getting only about three hours of sleep a night), I have about 4000 lines of code, none of which work the way I want. I can't nail down what the systems are even doing, much less where they are messing up. I'm tired of looking at code, but I don't want to get up until I fix the damn thing. I suppose I'll go pour myself a stiff drink and try to cool off.

As important as scripting is, that's not all there is to building a persistent world. You've also got to have areas, and building areas is Casa's strong point, not mine. Nevertheless, I thought I'd show a couple of scribbles of my own to show the direction I'm planning on taking my world. Shown are a couple of the intro areas: the jail cell the PC wakes up in, and a shot of home base.

It's not much, and it's practically devoid of placeables right now. But it does give a general idea of how the world will look. Dark, gritty, and ominous. I think proper lighting will play a large part in the design, as will strategic use of placeables to make everything look dirty and cluttered. This gets my creative juices flowing. I'm not great at building beautiful areas, but I can definitely think up how things should look based on an artistic style.

Next time I'll start outlining the layout of the land, especially home base, the city where the PCs will likely spend most of their time.

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.