You are here

Designing Modules That Hopefully Do Not Suck

Stefan Gagne
  • Introduction (or Why "Fetch Me a Pint" Ain't Gonna Cut It)
  • Plotting It Out
    • The Higher Meaning
    • Your Main Quest
    • Adding Nonlinearity
    • Subquests
    • Notes on Campaign Design
  • Making It Happen
    • Create As You Go?
    • Area Design
    • Creating Appropriate Atmosphere
    • Ridiculously Common and Simple Scripts
      • Checks and Sets for Plot Variables
      • Triggered Visual Effects
      • Learning vs. Scrounging
  • Simple Custom Content
    • NPC Portraits
    • Music (Including How You Can Make Some Easily)
    • Voice Acting & Speech
  • Post-Production
    • Writing Documentation
    • Glossy Packaging
    • Beta Testing
    • Promoting Your Mod

Introduction (or Why "Fetch Me a Pint" Ain't Gonna Cut It)

Neverwinter Nights is a remarkably powerful gaming system which allows for the rapid development of traditional D&D modules. You can bang out a module, complete with monsters to kill and loot to grab and epic quests to fulfill in just a few hours...

In fact, it's tempting to just dive right into the toolkit, whip up some areas, toss in encounters, maybe have an NPC reward you for bringing back a chalice of some god or another and call it a finished work... but that sort of module isn't going to cut it if you want to stand up and be seen in the crowd. Even writing a twenty page backstory for the chalice of such literary weight and wisdom as to make insert your favorite author here weep in joy won't change the fact that the IN-GAME STORY itself isn't very well designed. Your work has to be more robust than that -- getting recognition in a crowded playing field is hard, and an average module instantly becomes a below average module if it presents a weak, poorly thought out design to the player.

A lot of people have e-mailed me, asking questions about how I did the Penultima series. How long did it take me? How about constructing it, how long did that take? How'd you plan it out? What can I do to get my module project off the ground, got any tips? So, I decided I'd write a little thesis about it. This is not "THE" way to develop a module. I don't believe there is one singular optimal way to do a module, really -- just a variety of techniques and approaches which may or may not work for you. Take it as you will, as long as you have SOME design philosophy, some method to your madness...

But don't worry, it's not all philosophy -- also included as a meaty bonus are some scripting tips and tricks, and some custom content lessons so you can really perfect the complete experience of your story. But first you're going to need A story...

Plotting It Out

Step one. Ready? Okay, settle down into your chair, load up Notepad (or EMACS or vi or whatever) and get ready to write. We're a long ways away from even touching NWTOOLSET.EXE. But I think you'll find that this time spent away from NWN will prove to be quite valuable in the end...

The Higher Meaning

Okay, so your quest involves venturing forth into the caves of the ancient dragon in order to slay it and free the princess. Don't laugh -- even if it's been done before by Dirk the Daring, it's still a perfectly valid and workable concept. The key is not in WHAT happens, but WHY it happens. Your goal is to wrap the player up in an epic storyline, to give them an emotionally satisfying nugget of adventuring goodness, right? (If it's not, and you're doing a non-story based module, I'm afraid I can't help you. But good luck, I love pure action driven modules too!)

There has to be something going on beyond the basic facts of the action. I know you were probably bored to death by your literature teacher droning on and on about symbolism and layers of meaning, but honestly, your teacher was on the right track here. We're not talking high art snooty nose in the air mentality "MEANING," but some genuine purpose behind the story that works on an emotional level.

You can find that in just about anything, even the movies you watch. Good example: who here has seen "Aliens"? Okay, you remember the ending battle between the queen alien and Sigourney Weaver in giant mechanized armor? Kicked ass, yeah? Did you notice that they were technically fighting over Newt? ("Get away from her, you BITCH!") Let's look at that -- we have two women fighting over a kid. Two MOTHERS, since the Queen is the mother of her species, and Ripley had a daughter lost in time. *sniff* Suddenly, this is more than a raw battle for survival -- it's a conflict over motherhood in general, with Ripley representing a more natural sort of human birth process (life) and the alien queen representing the destructive, unnatural birth process of of the alien (death). I'm serious! It's not even buried that deep, if you look for it -- this is something the director put there on purpose, not to make it a Great Work Of Weight and Meaning, but just to make it something more than a stock action sequence with neat effects.

That's what you want. You want a story that's about something beyond the desire for the player to get rich and stay alive. Back to the Dirk the Daring example. The dragon captured the princess. Why? What's the dragon's motivation? If it's just that he wants a nice light snack, it's kinda plain. Perhaps the plot is thicker -- the dragon was actually helping the princess escape her tyrannical, overbearing father. Perhaps the meaning is thicker -- the dragon representing the rule of tyrants who can flex their power any way they feel like it, as noted when the king gives you the quest and you see that the king's just as much of an abusive and bloodthirsty scumbag as the dragon.

Let's look at Penultima for a working example. (Spoiler ahoy.) It could easily have been a quest to stop a dark god from destroying the country, but there's more going on than that. The 'god' is actually the innate spirit of humanity -- the drive to succeed, to create, to prosper in all its combined glory and its horror. Then you have the antagonists, who want to either crush that spirit into the ground in hopes of achieving peace, or drive that spirit to its blackest potential for mass destruction. It's not hard to see philosophical themes about the nature of man's ambition and what should be done about it, if anything. And there's ninja chickens, too. ...which were probably not a good idea, but hey, ninja chickens, who can RESIST doing ninja chickens? It was just BEGGING to be done by Bioware putting chickens in in the first place! I... err.. anyway. Onward!

Therefore, before you even consider what your areas are gonna be or how many goblins you'll toss at the player... think about WHY your story exists, think about what you want to say. It doesn't have to be a preachy moral, it could be a simple examination of an issue ("Wow, life as serf sucks" or "Love is a powerful thing"), or even a study of a philosophy without any conclusions drawn. Watch some movies, read some books, see if you can get what the creator was digging at and what he wanted to express to you behind the actuals of what's happening on screen. There's very little genuinely "mindless" entertainment out there, you'll find... more often than not what people see as mindless is simply entertainment that tried to be mindful and failed miserably. Learn from those mistakes.

Your Main Quest

Okay, raw intellectual time is over. We need to take your abstract concept d'jour and actually implement it into a fun game, so it's time to get practical in your writing. Let's create your main quest.

Ask yourself, "I have an end goal. Where do I start, and how do I get there?" If the goal is to slay the dragon, then pick where your player starts (at the king's throne room, where the quest is assigned), and then the many, many steps to get there. You could technically go straight from the throne room to the lair of the dragon, with no resistance and no complications along the way, but c'mon, let's be serious. Your players want gameplay. They want those complications and twists and turns.

I like to think in bullet-points, so start a list. Similar to...

  • King assigns quest in throne room.
  • Player arrives in dragon's lair, and slays dragon.

Now we expand a bit. Expand how? Well, let's make some intermediary steps. Tasks to be completed before you get to the big showdown. There are a lot of ways to do this -- for example, what if the journey is long and perilous?

  • King assigns quest in throne room.
  • Player proceeds to Mango Village (places to buy supplies are here)
  • Journey down the bandit-laiden path.
  • Into the caves, which are loaded with zombies the dragon put in your path.
  • Player arrives in dragon's lair, and slays dragon.

Notice the variety there -- you start in a castle, you go to a village, then a forest road, caves, and the lair. You could use one tileset for each one, giving the player a bunch of different and visually interesting places to visit. This beats the hell out of three transition steps that all read 'On the road through the forest', which would get really, really dull.

This is a good time to breathe some variety into your module. Give the players a lot of different things to do, different sorts of monster encounters, and vary up puzzle elements and dialogue and combat. These steps from A to Z are the meat of your quest, and they should be as interesting as possible to a fairly jaded NWN player who has 'seen it all'. Of course, you shouldn't add tons of variety at the expense of your story -- if you want it to take place entirely in an underground series of caves, hey, do it. You can find ways to add variety other than the locales.

It's a good idea to have them reaffirm the story with these transitional steps, too, rather than having them act as mindless speed bumps in the way of the player's progress. Let's use the example that we're showing the dragon and the king to both be tyrants, one no different than the other, with the population as the oppressed. How about this?

  • King assigns quest in throne room; illustrate his attitude by having him execute a servant who bungles in front of you (maybe allow player to intervene for good-align bonuses?)
  • Player proceeds to Mango Village (places to buy supplies are here). Conversations in the area talk about the new tax and that rite from Braveheart where the king can sleep with any woman on the eve of her wedding. That always annoys people.
  • Journey down the bandit-laiden path. At the end we discover that the bandit lord is simply impoverished and trying to survive, and has actually been passing on profits to the people. (robin hood style) elect to spare his life or not, which could involve more combat if you whack him.
  • Into the caves, which are loaded with zombies the dragon put in your path. Some are of warriors who fell in the process of trying to beat the dragon as the king tossed dozens of people at the problem -- some are commoners the dragon victimized.
  • Player arrives in dragon's lair, and slays dragon. The princess begs not to be taken home, to finalize the whole theme of tyranny; player has option of letting her go and telling the king she was killed, so you can pull a fast one on the king and stand against his power in a smirkingly clever way.

Notice that this is basically the same thing as before... but with some new choices, some new twists tossed in. New opportunities for combat, dialogue, decision making... all emphasizing your story and adding support to it. In the end the players will get to make a decision to stand for or against the issue you're examining. Perhaps they're lawful good paladins who won't stand for this madness, or maybe they're chaotic neutral / lawful evil / etc. and don't really care as long as they get paid -- thus pointing out WHY this system of tyranny stays in power, thanks to apathy of people such as the player. (The princess could even comment on that if you refuse to let her flee.)

Adding Nonlinearity

The previous example was a good A to B to C to D to E quest. A linear journey from east to west or north to south or whatever -- spatially arranged. It'll work... I've done modules like that. They have a place in the world. But if you want to add nonlinearity, if you're worried that your players will feel 'boxed in' by your story, there are ways to add nonlinearity in this phase of design.

Let's not forget the 'you must collect the three foo to proceed' gimmick! It's tried and true, and as long as you have a meaningful story to back it up, it won't feel contrived. There has to be a reason for each of the foo to exist, and a reason why it's THREE foo and not two foo or four foo. Let's say the foo in this situation are two rings and an amulet, since NWN's inventory supports the wearing of two rings and one amulet... and because there's a darker moral behind your story...

  • King assigns quest in throne room. He points out that the only way to kill the dragon is to obtain the two rings of power and the Amulet of the Legendary Dragon Slayer -- you could go to the cave right now but you'd get pounded if you tried!
  • Player goes to get the first ring, which was forged in a demonic abyss. You fight imps and demons who jealously guard the treasure they retrieved from the dead Dragon Slayer they forged it for, figuring hey, he didn't need it anymore and they MADE it for him, it's legally theirs. Maybe you can talk them out of it? Fat chance, but hey. You learn that the one who had the ring created seemed a bit callous about power, striking this infernal deal just to get what he wanted.
  • Player goes to get the second ring, which is buried in a druidic temple, where the wooden ring was originally crafted. Its power has unfortunately caused amazing growth of the natural forces in the area... and made 'em downright hostile towards man. Another example of the LDS being a bit too nonchalant about power.
  • Player goes to get the Amulet of the LDS from the crypt of the LDS. There they learn a surprising secret -- the LDS actually created the dragon! By accident, when he was tinkering with dark magics. He tried to create these three artifacts to undo his mistake, but failed due to his hubris in assuming his new power would beat the old power -- he beseeches you from beyond the grave to finish what he started, so he can find peace.
  • Using the artifacts, and a more purified attitude than the power-mad LDS once had, you slay the dragon. You have the option of keeping the powerful artifacts (good for evil folk), proving that mistakes of the past from those who sought the easy way to strength will perpetuate -- or you can destroy them and break the cycle.

The beauty of this is that the player can do these steps in nearly any order! Go get the first ring, the second ring, and the amulet... or maybe they'll want to tackle the first ring and then the amulet and then the second, etc... it's a way to give the player some choice while still controlling the flow of the plot. Certainly if they grabbed the amulet first, the meaning behind the rings would be clear to them. Less surprising, but still with good depth. And if you're a sadistic bastard you can let them go challenge ye dragon without all three foo and get their ass whomped!

A truly long and winding story will likely combine both techniques -- you linearly progress from town to town, but in Town A you have to do a collect quest, then some linear, then a situation where you have to interrogate witnesses in any order to solve a crime, then onward, etc... and there are various quest archetypes beyond Travel and Collecting that offer degrees of linearity. Mix and match and as long as you can justify the in-story existence of each step, you'll have a lengthy, meaty story for folks to sink their teeth into.


One of the most traditional ways to add nonlinearity (or at least the appearance thereof) is to add subquests. These are quests that can be done alongside the main quest, sometimes in the same areas, sometimes in new areas that are unlocked to explore by undertaking the subquest, etc, etc... and this is the time to add them in, while you have your design document open.

NPCs are a good starting point. Often they have interests other than helping you out in your quest -- maybe they won't help you until you help them. (Of course, to make it an optional subquest, you'd have to be able to say "Forget it, I don't need your help THAT bad.") Go fetch me foo, exterminate the yadda, go talk to Bob and tell him he's a jerk, whatever the NPC may wish for you to do that he can't / won't do himself. All good for subquests.

Maybe you'll just stumble into a subquest -- you find an ancient temple on the way to your destination that offers curious folk a bit of action, mayhem, and reward. You step near it, a trigger fires, your journal updates and tells you "Hmm, this looks interesting... if you're interested, that is." Bingo! Subquest.

But again, remember the design philosophy: How it happens is less important than WHY it happens. If you just toss in a goblin stomp alongside your quest for no reason whatsoever, it's going to feel like a bolted-on contrived subquest. Even if your reward is a helpful item, it'll be basically a story speed bump and nothing more. Give subquests a purpose. Using the 'tyranny of kings and dragons' example, maybe an NPC in a village is a revolutionary hoping to overthrow the king. Do you help his cause by sneaking into the guard tower that ensures civil obedience and assassinating the captain of the guard? Do you turn the poor guy in to the authorities in exchange for a monetary reward? The subquest itself can emphasize your story without being mandatory to complete.

Or maybe it examines an alternative side of the issue: an NPC comments that yeah, the king's an oppressive thug, but there's a good side to that since he's been able to keep the kingdom safe where civilian governments failed in the past. Maybe he wants you to fetch a history book from the library so he can prove it to his young, rebellious son. Is that all? That should be enough -- or you could add another twist, where you find out that the history book he's referring to is a fraud perpetuated by the king to cover up the truth that past governments were quite effective.

Examples, examples, examples. The point above all? If you choose to add subquests, try to give them some purpose. A reason to exist beyond the practical.

Notes on Campaign Design (Optional)

This is great and all, but what if you're not doing ONE module? What if it's a series of modules, which are meant to be played like chapters of a story?

That release strategy offers you a lot of advantages. You don't have to hammer out months of work on a huge story all at once. Your players-to-be don't have to sit around waiting for you to finish, possibly losing interest. You can get a new idea based on player input regarding early modules and take the story in a new direction in later modules. Flexibility is the key here, and rapid development.

But there are caveats. Your modules can have little to no carryover between them -- there's no going "Oh, wait, I wanted to go back to Ye Olde Village in Module #1" when you're on Module #3. Your story will have to be designed like a series of one way doors... once you close one behind yourself, it's on to the next room and that's final. Remember the linearity discussion, this can be handled without losing nonlinearity -- the linear portion of your story is the grand arc of plot across all modules, while you can have pockets of nonlinearity inside each individual chapter.

Also, remember that you can't bring plot variables with you across modules easily. Did you kill the bandit leader instead of letting him go free? Is that going to be a critical to know fact two modules later? The only way you'll be able to tell is if you create a 'plot object' in their inventory. Let's say the leader gives you a hand-carved statue he made in thanks for letting him go -- you can check if the party has that statue, then have your later module react accordingly. But what if the player DROPS the statue somewhere and loses it? Suddenly he's a cold blooded killer who slaughtered the bandit, and the game's too stupid to know otherwise.

However, if you design your campaign around these limitations -- or simply accept the possible breakdown points and order your players NOT to do something dumb like sell plot objects -- you can still get the job done. But THIS is the point in development where you make critical decisions of that nature... if you don't plan your method of campaign tracking and three mods down the line you find you really needed something extra done in mod #1, you are screwed. Your players have long since beaten mod #1 and are not going to restart the campaign because of your lack of foresight.

Tread carefully... but don't be afraid to tread. Just be very, very careful.

Making it Happen

Alright, take off your Great Meaningful Author cap. It's finally time to put on your Toolset Engineer cap.

Fire up the Aurora toolset. We're going to get down to da bidness.

Create As You Go?

You have a fully crafted design document now. You know what's gonna happen, front to back, beginning to end. Technically speaking, you are DONE your game. The rest is just implementation of that fully documented vision.

For that reason, I won't go into detail on what order or what methods you use to implement things. You can really take any approach you want -- do the areas first, nice and empty, then populate them. Design the NPCs and monsters first in the creature editor, then areas, then merge them. Any approach you take is valid, and go with the one you're most comfortable with.

But, for a concrete example... I tend to create as I go. I build areas and populate and polish them as the player would reach them; I'd do the king's throne room first, then the village, then the road, etc. If there's a nonlinear segment I do all the related segments one by one until that 'clump' is done. This makes it easy to playtest, since I can play the whole game 'up to a point', or 'up to this point but without Foo #3 and Foo #4 of the collection quest finished yet'. You can set an area transition in your Prelude/Intro area which jumps you RIGHT to the point you want to test, setting any appropriate and requested plot variables in the process. It's easy to debug, and gives you a real feeling of making forward progress, since you can draw a line and say "This much is complete."

How you approach it is, as stated, up to you. The hard work has been done already in the design document.

Area Design

I won't leave you totally up a creek with no paddle, though. There are better, more in-depth style guides for designing your actual areas, but I'll impart some tips.

Avoid 32x32 areas. These bog down most computers, and frankly, you don't need them. If you have a 32x32 area filled with empty space, or god forbid endless waves of enemies, then you're letting travel time / brawling time make up the majority of your adventure. For story-based modules, this is bad. You want the length of play to be a factor of how detailed and extensive your story is, not based on how many goblin skulls you have to crush along the way. Combat is needed, combat is good, but striking a balance between combat and story elements is critical. (It is possible to make story based combat elements, but that's a pretty advanced topic and I'm not gonna cover it in this essay. Be creative and never say "I can't do that" if it would be SOOO COOL if you could do it. There'll be a way if you look for one.)

Don't be afraid to demand people use the radial-menu Examine command on signs. You can convey a lot of story through signs -- why limit yourself to a tiny blurb the sign "speaks out loud"? Examine is there for a reason -- use it to your advantage. That said, simple markers that say "Throne Room" or "Here Be Dragons" and need no further description are also useful tools. I prefer to make the name of the object appear in quotes if it's one of those tiny-blurb markers, or have a descriptive name of Battered Old Wooden Sign if it's something they're going to need to examine in detail.

Your areas should be populated by objects that make sense in terms of the story, and enhance it. Build that evil temple! Add altars and benches and candles, don't rely on the default territory the toolkit drops down. And while you're at it, why would evil cultists make unorganized room after room of emptiness? Make one room a sacrifice preparation chamber, one a storage room, this one a hallway that links chambers for acolytes, etc. Areas should have a functional purpose that's tied into your story -- they should be more than Boxes Of Monsters. Mind you, Boxes Of Monsters have their place too, but again it's key to strike a balance between that sort of area layout and a more sensible area layout.

For one of the best examples of horrible area layout, I highly recommend the Resident Evil games. Okay, picture this -- you live in a large gothic mansion. You want to go from your bedroom to the kitchen for a midnight snack. That means you need to carry with you a series of key cards, wooden crests with animal shapes, and know what trick brick to push on to get the statue to rotate so it opens a secret door. Huh? Nobody could possibly LIVE in a place like that! It'd take fifteen minutes to get your cheese and crackers! A few locked doors make sense when there's something important to secure, but overkill results in laughably unrealistic layouts.

Creating Appropriate Atmosphere

The toolkit offers you some default setups for sound and lighting. In most cases, they work. In others they do not and you should be a stickler for those sorts of details, especially if they mess with your story.

Caves, for instance, default to a light cyan -- the 'Interior Cold' look. What if you want it to be a rainbow array of colors, representing a screwed up magical lair? Customize those colors and pick some wild ones. Then, after setting it, go in and individually muck about with the color settings on various tiles... pick any terrain tool, right click, and adjust the properties. Go nuts with that colored lighting! Change the colors of torches from default yellow flames to blue and purpose ones -- or make them black, to kill the default light sources. The goal is to achieve a lighting arrangement that makes sense for what you want to build.

Maybe you want to control time, too. Your events unfold over the course of a single day, perhaps... so don't let it get dark outside! You can pick 'Always Bright' or 'Always Dark', so even when 'night' rolls around your sun will shine.

The same goes for sound. Don't accept the basic music it gives you -- listen to all the songs in the toolkit if you have time, take notes on what emotions they evoke. (Forest Night is a very peaceful and natural song -- suitable for elven enclaves, homes belonging to your old grandmother, etc.) Combat music likewise will need tuning, especially for boss fights, which should be much harder and vibrant than the basic combat songs. Heck, you might even want to drop music altogether for an area, to create tension. "It's quiet... too quiet." For a terrific example of using this to your advantage, check out the first Mission Impossible movie, where a silent raid on a computer room ratcheted up the tension better than ANY song could have.

Ambient sound is just as important. Outdoors Plains isn't suitable for every rural scene. Got corpses? Insects are good. Stormy day outside? Set it to stormy sounds. (Remember, you can set the 'chance of rain' to 100, meaning it'll rain ALL THE TIME. Good if you want to set the mood to a dark and stormy night, period, with no chance of changing.)

Placeable sound objects are likewise your friend -- but trickier to work with. I've found that the radius of sound usually needs changing, or the players won't hear it unless they're right on top of the center point. Put waterfall sounds on your waterfalls. Put twigs snapping in your forest. Animal calls. Spooky laughs in your crypts. Things like that. Don't rely on the 'Ambient Noise' for sound -- spot-sounds are also good, or randomized area-wide sounds to boost the default ambient with story specific noises like wails of anguish or monster grunts. If you wanna freak the hell out of your player, use some of the default 'action sounds' like doors opening and closing and randomly play them. They'll think a monster somewhere in the level is actively wandering around... eeek, they can't do that, CAN they? The laws of the monster AI get tossed and suspension of disbelief ensues!

Above all, remember, you want to establish an atmosphere that supports your story. The more you immerse the senses, the stronger the attachment to your story becomes.

Ridiculously Common and Simple Scripts

This is not a scripting tutorial. There are some great ones out there... but here are three little scripts that will help you tremendously in your work.

Checks and Sets for Plot Variables

Yes, the toolkit has wizards for setting variables... but they're not going to help you. Why? Because they check and set variables ON THE PLAYER. In a multiplayer scenario this means critical plot variables which affect module-wide events aren't going to work for the other members of your party.

Call scripts like these from conversations for Ultimate Convo Control Power. Let's say NPC Joe wants to tell Player Bob about the secret password to the thieve's guild... put this script on Joe's convo tree as the Action Taken.


Done. Make sure you WRITE DOWN what every variable you're going to use does! Otherwise you may forget yourself exactly what password Joe was talking about. It's also good to pick a naming methodology for these scripts... I prefer 'setvariablename' and 'checkvariablename, so in this case it'd be 'setjoetoldpassword' and 'checkjoetoldpassword' or as much as will fit in the script name. It's not complex, it doesn't involve underscores or intercapping or other fancy programmer notations, but it gets the job done...

So the player goes to the thieve's guild. The doorman asks, "What's the password?" then the player has two convo nodes, one on top of the other.

Node #1: "The password is swordfish."

Appears When:

if (GetLocalInt(GetModule(),"joetoldpassword") == 1) { return TRUE; };

return FALSE;

Node #2: "Uh... I dunno."

Appears When: (none)

If you never talked to Joe and got that variable set, you don't know the password and Node #1 doesn't appear.

If you've got a complex plot, dinky doodle variable check/set scripts like this will comprise 50% of your scripts total or more. It means a lot of typing of the same thing over and over again, so you could keep it in a text file and just copy and paste, changing the variable name when appropriate.

Triggered Visual Effects

Another common script is the whiz-bang special effect. These are easier to do than you'd suspect. You can fire them from a conversation, or in this case, from a trigger the player walks over.

Example: We want an implosion visual effect at a waypoint we've put on the map. Let's break it down:

void main() {
  if (GetIsPC(GetEnteringObject()) {
     // Let's not have pets or NPCs triggering this thing...
     // This is a 'fire and forget' animation, so instant duration...
     // we want the IMPLOSION visual effect...
     // ...and it'll fire at the waypoint tagged implosionhere.
     // This destroys the trigger the player stepped on, so it won't fire TWICE.

...the best way to browse the special effects library is via the 'Constants' box on the right side of the script editor. Type 'vfx' in the search box to see all the lovely choices. Anything marked VFX_FNF is a fire and forget, which can be done as above. Others are IMP, impact animations, which are instant. Some are VFX_DUR, which work like this example which sprouts tentacles from the ground for ten seconds...

void main() {
  if (GetIsPC(GetEnteringObject()) {
     // Let's not have pets or NPCs triggering this thing...
     // we want the tentacles to be around temporarily...
     // we want the TENTACLE visual effect...
     // and it'll fire at the waypoint tagged tentacleshere...
     // ...for ten seconds.
     // This destroys the trigger the player stepped on, so it won't fire TWICE.
}; get the idea. You can apply visual effects to objects, to players, targeted at waypoints, etc. Look at the in-game docs for the ApplyEffect commands for more.

Learning vs. Scrounging

These three scripts are handy, but... there is no substitute for LEARNING to script. Yes, you can scrounge around online and find scripts to do things you like, but what if they don't do EXACTLY what you like? You'll have to modify them, and in order to do that, you have to learn to script.

This is not as hard as it sounds. If you learn where the parenthesis go and where the semicolons go, how to do an IF statement and other basics you're 75% of the way there. The rest is just learning some common NWN functions, and the in-game docs or the NWN Lexicon cover that gap.

You're going to find yourself limited in terms of what you can accomplish if you don't learn some basic scripting. You'll be able to set plot variables and make snazzy effects fly, but once you find yourself wanting a boss to activate an encounter of helpers after an infernal gate rises from the ground and poisons the player etc. etc... well... that's when knowing scripting would be pretty durn handy, yes?

Simple Custom Content

Do you know what a 'hakpak' is? Hopefully you do. It's a way of adding some new content to the game, be it portraits, sounds, objects, or whatnot that didn't ship with the game itself. The in-game editors do a great job, but what if you just can't find a portrait that looks like your carefully crafted NPC? What if you can't get the right musical mood going? This is where custom content comes in handy.

The era where people were afraid to download hakpaks is coming to a close. As long as you're practical in your use of them (no 80 megabyte snowy tilesets when you don't ABSOLUTELY NEED THEM) you'll find people willing to download an extra megabyte or three in order to play your game. You can include the hakpak in the same ZIP archive as your module -- no need for extra downloading. And building some basic custom content features is simpler than you may think.

NPC Portraits

Assuming you have some art talent, or a Photoshopped photo, or a picture someone else did... why not add it as an NPC portrait?

You'll need a series of TGA files, so hopefully you know how to make them... let's say we're making a portrait for Johnny B. Badd, amazing adventurer extrodinare...

po_johnnym.tga, which is 64x128 in size (but only uses the top 100 pixels in-game, the bottom 28 are ignored)

po_johnnys.tga, which is 32x64 in size and likewise ignores the bottom portion. You can just resize the M pic.

po_johnnyt.tga, which is 16x32 in size, etc.

(Henchmen portraits will need po_johnnyl.tga, which is 128x256 in size, but all other NPCs only need the M, S and T variants.)

Now copy portraits.2da out of your Neverwinter Nights override directory. Put it into your game's project directory (or wherever). Open it up in Notepad.

Bioware has reserved 28 slots for your portraits. Isn't that nice of them? Replace the line starting with 572, and make it become:

572 johnny 0 6 **** 0 **** (adding spaces to line things up nicely with other lines)

Use the NWHAK utility in your Neverwinter Nights UTIL directory to make a hakpak. Add all the TGA files, and add your new Portraits.2da.

Now, when you go into the toolset and edit Johnny, you can select his portrait by picking Race: Human, and Any Gender. He'll show up there. Hooray! You can add more portraits to lines 573 onward.

Music (Including How You Can Make Some Easily)

Custom music is FUN. Really fun! And if you know a little about sound editing, it's simpler than you think...

If you have some MP3s already that you'd like to use -- ASSUMING YOU LEGALLY ARE ALLOWED TO, thank you very much, Hillary Rosen -- you're halfway there. Although asking folks to download a 5 megabyte music file for your 500k module is a bit much. You may want to recompress that thing down to a better bit-rate... my personal preference is a 48kpbs stereo constant bit rate MP3 file. It makes for 500k a minute of audio, with a loss in quality but an acceptable one. 64kpbs might be more your speed, otherwise.

Convert your MP3 to a BMU file. There's a MP3toBMU utility on NWVault that'll do this for ya.

Copy ambientmusic.3da from the Override directory, and edit it. Add a new line to the bottom, line 57, as such:

57 **** nameofyourbmu **** **** **** ****

Copy the BMU file into the music directory, put the ambientmusic.2da file into your hakpak, and you are done. Make sure you instruct players to copy files into the right directories when they go to install your game -- modules into 'Modules', hakpak into 'Hak', and BMUs into 'Music'. Some people will be confused by this, or will totally ignore your documentation and mail you all puzzled-like. Laugh at them. They'll learn eventually; it's gonna be a survival skill for mods to come...

Now, as for MAKING THE MUSIC... that's also simpler than you'd think. If you're serious about this, and have a thimbleful of musical talent and a thick wallet, you can get something halfway decent going. There are two good methods I know of, both using 'loop based' music that can be rapidly developed by non-musicians...

Sonic Foundry carries a great program called Acid Music which, when combined with the loop libraries available for sale from their site, makes some damn good music. ALL of the music for Penultima and Elegia Eternum come from these libraries. I recommend Pandora's Toolbox for weeeeird ambient noises, and the various orchestral discs (Cinematic, Classical) for some more traditional NWN musical roots. Compose a 1-2 minute ditty and save it to 48kbps MP3 straight from Acid Music and you're ready to go!

Alternatively, for Playstation 2 owners, there's MTV Music Generator 2.0, and the upcoming simply-named Music 3.0. These programs do the same thing Acid Music does, letting you build songs from basic building blocks. They don't have many classical music leanings but the ramp-up time is faster than working with Acid. You'll need to buy an audio cable to connect the sound output from your Playstation to your computer (RCA jack -> stereo headphone jack), then record the music over the stereo line-in. You'll get some with background noise which you'll want to clean up with your sound editor's noise reduction feature, so record a few seconds of 'silence' before starting the music playback to use as a noise reduction profile. Doing music this way is a tradeoff, but it's a lot cheaper to buy a 50 dollar PS2 game than a copy of Acid plus a bunch of loop libraries!

Making music is a fun hobby jaunt. Your work won't exactly be amazing compositions of grandeur, since it's like playing with LEGO bricks of preconstructed musical loops, but it'll be enough for a computer game and add a NICE touch of personalization to your work.

Voice Acting & Speech

It's easier than it sounds! If you don't mind the file size hit (a bunch of 48kpbs mono MP3s, one for every line of dialogue in your game) this is an amazing bonus you can add to your game.

For every NPC conversation node, under 'other', set the Play Sound box to a unique value. For Elegia Eternum, I liked to use the syntax of 'eeCHAxxx'. Elegia Eternum, CHA = Character Name condensed to three characters, and xxx was the number of the line from 000 to 999. I wrote the script down in Notepad, complete with these designations.

Take this script and pass it off to people to record lines for you. Ask them to return either clean, noise-free 48kpbs MP3 files, or if they're not hot at recording, a 128kbps MP3 file that you'll have to trim and clean up using a sound editing program later. I recommend CoolEdit by Syntrillium Software -- the shareware version lets you pick any two major features each time it starts, and you can play with the thing for 30 days before buying. It's worth the fee to buy it if you plan to do major sound work.

Of course, doing this means you need actors... and I have a resource for you there, too. FLAVA is a community of aspiring voice actors who typically do fan-project dubs for animes, cartoons, games, etc. Study the casting call board, construct a casting call of your own (giving them sample lines to e-mail to you) and see if you get some bites. If you're polite, fair, and responsive you'd be surprised how many people will be willing to work with you on your project!

Once you have all your clean, compressed MP3 files (remember, 48kpbs mono is a good guideline to keep file sizes down), run ALL of them through MP3toBMU, rename all the BMUs to WAVs (don't ask me why, NWN just prefers that) and dump them into a hakpak. DONE! And if you wanna be flexible, make this huge hakpak an optional download with an empty dummy hak in place for the "silent movie" version. If the game can't find the Play Sound indicated file, it'll just ignore it quietly.


Okay, so you've implemented your vision, done some initial testing to make sure it's playable back to front and none of the subquests bomb. It's time to unleash the beast on the world. But you can't just upload a .MOD file to NWVault and take a vacation to Tahiti...

Writing Documentation

You need docs. YOU NEED DOCS. I don't care how simple your mod's premise is, you need docs to go with it. A Notepad .TXT file if you gotta, an HTML file if you can swing it so it's friendlier to the eyes. (But not if you have to convert a MS-Word document to HTML. Don't do that. Ever. The conversion routine in Word generates a hideous mess of overly complex, Microsoft-centric, non-standard code that nobody outside of the Win/IE world will ever be able to read properly.)

Things to include:

  • Mod title (duh).
  • Author credit. This means you and anyone whose publically available code / custom content you nicked. Give credit where credit is due.
  • Installation instructions, if you're using custom content. Tell them to copy the HAK and BMU into the right directories. Eventually people will learn to do this without being prompted, but custom content in mods is a fairly new thing... and be ready for the people who e-mail you asking "Where's the hakpak?" since they didn't bother to read your documentation.
  • Suggested level ranges, and if needed, suggested classes. Yes, NWVault lets you specify this, but don't assume people read the NWVault page. You'd be surprised where your mod can turn up.
  • A version number. If you're starting out with a public beta test (see below sections) use a number under 1. Version numbers traditionally work like this: MAJOR DOT MINOR. The major for a beta is 0, the major for a final release is 1 (or 2 if there's been a massive, massive overhaul to the game). The minor starts at 0 and counts up, but I like to make betas start at 9 and count up... 0.90, 0.91, 0.92, etc. until I release at 1.0, patch it to 1.1, 1.2, etc. ...confusing? Well, go with whatever you like, but remember that version numbers are important.
  • A short thank-you to the person for playing your game. Be polite and they'll appreciate your gratitude. Which hopefully is genuine.

If your mod features any sort of puzzles or other non-combat problem solving, it may also be a good idea to write up an extensive 'walkthrough' for your game. You can include it in a separate file, or at the bottom of your documentation with a big SPOILERS SPOILERS SPOILERS SPOILERS warning line.

Glossy Packaging

That's the bare bones of documentation... but why stop there?

If you ever go to one of the movie-studio oriented theme parks of Orlando, Florida, you'll notice that while they do have various yay fun rides, they also try to immerse you in an EXPERIENCE while you're waiting to ride the ride. It's never just "a line to get onto the back to the future ride," it's actually "a line through Doc Brown's time travel institute complete with video documentaries and displays of time travel related items." The end result is that the rider is entertained through the entire process and immersed in the whole concept of the ride's story.

The same thing can be done for modules. Include some artwork! Maybe a 'book cover' for your documentation, like those cool fake book covers on 3e manuals. How about a web page with character art or maps, if you don't want to include things in the zipfile itself? Or hey, remember the old Infocom games, how they'd come with little extras like cardboard sunglasses and a microscopic space fleet? Those certainly went a long way to enhancing the story, giving you some seemingly unrelated extras that carried over ideas and concepts from the game. ...obviously you can't give someone cardboard objects online, but the principle is the same.

Think about ways you can make your module less of a stand-alone 'game' and more of an EXPERIENCE. It sounds silly, but it does give you an edge over thousands of other modules... and anything that helps you stand out is a good thing.

Beta Testing

You can't toss your mod out there untested and claim it's final. That way lies madness and many weeks of fixing bugs you overlooked. No, the ideal thing to do is get some testing done -- and what better testing force than the masses of NWN players out there?

Put the version number in your mod's title or description on its NWVault entry -- point out that it's a beta version and you welcome bug reports and play balance suggestions. Flog it on the Bioware boards and politely ask for help testing your module. Get some friends to download and give it a go. When you collect a batch of bugs, make a nice checklist to yourself (since odds are people will hit a smattering of new bugs and bugs you already know about), run through and fix each item checking it off as you go, and upload the next version (0.90 begat 0.91, which begat 0.92, etc.).

Try to have an in-game indicator of the version number -- and DEFINITELY indicate version number in your documentation. The docs should list any known issues that you're waiting on to fix so people don't keep submitting them in bug reports, as well as any bugs fixed from the previous version so folks see the forward progress you're making.

Once you feel confident enough in the quality of the game, you can take the latest beta and declare it to be v1.0. Check that 'Final Version' box on NWVault, and you're done! Now you'll only have to release a new version if someone encounters a large-scale bug in the future.

Promoting Your Mod

Okay, here's where I have to make some educated guesses. I got very, very lucky with my mods -- they were one of the first waves out the door in NWN's early days, so they easily got noticed and once people started singing praises in public, it became a snowball effect. Odds are you are not going to have the same thing happen to you, but the hype principles are the same.

Don't be afraid of the word 'hype'. If you don't take an active interest in promoting your mod, who will? Be loud about it. As long as you're not loud AND obnoxious people won't mind, and many who are looking for good mods to try but don't know which ones to pick will be swayed by a vocal pitch. Post announcements of releases on the Bioboards, including what makes your particular module special and unique compared to the hordes of others out there. Spread the word as if you were promoting a movie, making sure to give people a tease of what's in store for them, but not everything about your story.

But there are some DO NOTS here... above all, DO NOT spam. Be loud, but don't be obnoxious. Don't blast your message on every board over and over, and don't drop it on comment threads for OTHER modules! If you're going to post comments first and foremost about someone else's module THEN throw in a plug, it's less of a no-no, however -- and possibly a good in-road towards self promotion, since the reviewee may be grateful and return the favor.

In the end, you may have to accept that you will not make the heralded Top Ten List or the Hall of Fame. Not every module is destined to be a blockbuster success, and that's not because your mod sucks, it's just because there's too much content out there and not all of it can be at the top. But if you have a solid design through and through you should enjoy a modest amount of success -- people will download, people will play, people will enjoy. And if people enjoy, then you did your job well and you should be proud. Good work!

Migrate Wizard: 
First Release: 
  • up
  • down