Friday, August 29, 2008

Design: A Halloween community

Many of you might be aware of Bouncyrock's Halloween community project, which is a chance for all modders to create a little house area with a Halloween theme. Working on a contribution to this project has provided me with some entertainment for the last couple of evenings. Given time constraints with my imminent move (which will leave me without a computer for a while), I had to produce something small in a relatively short time frame. What I've created is something that is a little different from the standard sort of adventure, but hopefully will provide some measure of amusement for people. Though you'll have to wait until October to get your hands on it... and I'm not going to spoil the surprise in the meantime! But I hope you enjoy my Amstralloween special.

If you're a modder and have a little time to spare, then I'd encourage you to make a contribution. Even if it's only small, I'm sure it would be appreciated.

Sunday, August 24, 2008

Sneak Peek: Load Screens

Recent times have seen me going back and tweaking some existing content as a result of my previous testing, as well as working on some new creatures, areas, items and visual effects. While a frustrating toolset bug has caused some annoyances, I've been able to work around it with a judicious bit of scripting.

I've also been working on the creation of load screens for various areas, both new and old, just to add an extra touch to the aesthetic appeal while players are waiting during transitions.

I've also been creating a swag of NPCs that will both fight with and against the player, and have taken a few screenshots of the kind of action that may eventuate during 'Fate of a City'. Both the load screens and battle shots (along with numerous other screenshots) can be found in this gallery.

Sunday, August 17, 2008

Design: A Prefab Sidetrack

Today is something a bit different, as I've taken a small amount of time off today and yesterday to produce a small prefab area. I've submitted it to the vault, and it can be downloaded here.

I've got a small gallery here of screenshots of the prefab, which is a 4x4 exterior called "Canyon Grove". I had the idea for it two days ago, and after sketching out a rough pencil drawing of its appearance decided that I would have to take a small break from 'Fate of a City' to produce it. (That said, I've still managed a couple of small encounters in-between small breaks on this prefab.)

I hope you like the look of it, and please, download it and take a look at it in full. I'd love to hear any comments or critique you might have about any aspect. I know that I've picked up quite a few tricks since producing my last prefab area, but I'm always open to suggestions on ways to improve.

Monday, August 11, 2008

Toolset Tidbit: Quality Assurance

I've been taking a little time out recently to do a little bit of QA testing and general tweaking of various issues. When I first started Fate of a City, my development was very much "test-as-you-go", in that I'd make changes, go in game, test them out, and then correct as necessary. Now, I've switched to a fairly solid workflow of writing out a quest or a sequence in its entirety before running a playtest, during which time I review the dialogs and scripts, then playtest numerous times trying different options and following different choices (of action and dialog). While I'm finding the latter more efficient at the current time, the former does have its uses depending on circumstances.

Testing-you-go is useful at a few times. For one, if you're doing a complicated script sequence, then it potentially can be better to break up your testing into parts and test each one individually. This is particularly good for multi-part scripts - as you can divide the script up for testing purposes, test each separate part for any bugs, and then once each component works correctly, combine the scripts together for a final test. Make sure you do that final test, as without that, you've got no guarantee you haven't got some weird dependency that can cause strange script behaviour. If you're a beginner scripter, I strongly recommend trying things repeatedly, as if you try and script everything at once and then go in for a final test, you can end up with some really strange behaviour that can be impossible to debug. I must admit, I was guilty over doing too much without scripting before testing when I first started, as coming from a programming background, I was comfortable with my logic - but that doesn't necessarily translate to the nuances of NWN scripting.

Once you're more comfortable with the toolset and scripting and you've got a comfortable workflow, you'll find that you can create rather complex sequences without getting in there and testing first, which can potentially can save you time. But again, if you're finding that something doesn't work, don't be afraid to break it down into something more simple to debug it - or alternatively ask one of the helpful people on the forums or #nwn2-cr for advice on how to fix the problem!

I will share one useful tidbit I've got into the habit of doing for making sure that conversations work properly. Firstly, in most conversations, make sure you have a specific blue node (ie PC line) with the line [End Dialog] to end conversations. The first benefit to this is that it avoids the "[Continue]" text in dialogs that will actually result in the conversation stopping. Small details like this bug me as a player, and while you might call me pedantic, there is a very good reason as a builder that I like doing this, if you'll bear with me. Most "[End Dialog]" nodes will not contain any scripted actions, and indeed I try and avoid them wherever possible - sticking actions on the previous speaker node if I can. In addition, whenever I have a node that ends the conversation, I try and link to a single "[End Dialog]" node within the conversation. All this applies to NWN1 style conversations - for NWN2 style cutscene dialogs simply have two empty nodes to mark the end of a conversation - one blue and one red. A thought I've just had now is that if you really want, you could put "{End Dialog}" as the text of the red node to indicate to you the purpose without displaying anything to the player.

Now I understand you might be asking "Why?". The answer is simple. When you've finished writing your conversation, widen your dialog window so that the "Text" column of the dialog window ends the screen. Now, if everything isn't already expanded, then hit "Expand all" button. At this point, scroll down through your dialog and look for any node that doesn't have a grey line underneath it. Any such line is a potential problem - as it indicates a conversation end. Virtually every line should have a grey line underneath it, either linking to another conversation node, or the "[End Dialog]" node that you created earlier. Obviously there will be some exceptions, for example, if the player ends the dialog e.g. a blue node labelled "Goodbye.", or perhaps a dialog node that results in some other unusual action occuring - e.g. an area transition, the NPC attacking, some type of scripting sequence, etc, etc.

This technique makes debugging conversations far quicker at a cursory level, and avoids any missing links in complex, branching conversations that can easily get out of hand for builders. While it won't solve all your problems, it's definitely something I've found useful.

That aside, I've been working on quality assurance in the graphical/aesthetic department as well, tweaking lighting, texturing, sounds and general decor just to make sure that the atmosphere and visual appearance is achieving the effects that I was originally trying for i.e. - what I have written down in my design document! To that end, I've created another swag of screenshots for people's perusal just to give a big more of an indication of the minor tweaks that I've been working on.

Some of the differences might be minor, and of course, the sound modifications can't be conveyed via screenshots, but rest assured that the variable rain is accompanied by appropriate sounds. Now, if only there was some way to modify exterior lighting via scripting...

Of course, no testing is without annoyances... One such annoyance is using the MotB rest system - in that I've copied the scripts over from MotB for the major module events, yet when I rest in my module, I still get two messages sent to the player indicating the rest has been started and canceled when the rest window pops up. If anyone has experienced the same behaviour (or even if they haven't!), then I'd love to hear from you. I really would, and doubly so if you have an idea of what's going on! :-)

Monday, August 4, 2008

Sneak Peek: Companion Preview

I know I made a post just yesterday, but I thought I'd make another post to cover one of the companions in 'Fate of a City', as well as to provide some rough information about interacting with the companions. This is because recently, I've been doing a lot of work on the various aspects of dialog for one of the companions, whose name is Kyandra.

Kyandra Daarzir

Kyandra is a brave and fearsome warrior who learned her trade while traveling in merchant wagons around Sembia, Cormyr and beyond. Though circumstances have currently brought her to Darthall, she is not overly fond of the city, and would prefer to not be confined by its walls.

Kyandra has a good heart, and is a stalwart companion to those she trusts, but she is not regarded fondly by many in the town. Kyandra's prowess in battle is great, and when she chooses to wield an axe against a foe they have a right to fear her.


Now, I also said above that I'd cover interacting with companions in 'Fate of a City'. For starters, the companions are very pro-active within the party. They will have something to say in many conversations, whether giving their opinion on the actions the player or others, or to mention something relevant that they know. In addition, at certain times and places, both companions will initiate conversations about various events, locations or people, not to mention that they may be interested in finding out about you.

How you react in these situations will have an effect on the character's opinion of you, and you may well find that they react differently to you depending on how you've treated them or other people in the past. If you keep pushing their patience too far, you might find that their opinion of you drops considerably. That might be something to keep in mind before you choose to repeatedly malign their opinions or ignore their requests. But, you may also find that you can develop a closer relationship with them if you so desire.

Of course, you can also choose to initiate dialog with them to ask them a few different things, and again, they will react different based upon various circumstances, including how much the companion likes the player and also any quests the player might currently have.

And finally, if you decide you don't like the companions, you can always tell them that you don't want their help or company. Though even the most stalwart adventurer may want a friend to help them when danger could be lurking around any corner in the city...

(PS If you read my status update yesterday, it may have changed a little depending on how early you saw it.)

Sunday, August 3, 2008

Status: Fate of a Release Date

The first thing you may notice about this post is the new design of the site. I felt as though some tweaks to the appearance of the blog were long overdue, and while I could quite easily spend a long time tweaking the presentation of the site, I just wanted to make a few small facelifts. I'd love to know whether you like the new look.

In development news, I have been making significant progress on multiple fronts, and I'm now approximately 80% complete in the module. The strands of the plot are starting to tie together for the finale, and it's quite exciting to see the form of the module taking a shape verging on its final form.

However, despite the progress I've been making, my real life commitments are peaking, and my move to the UK is looming ever closer, meaning the amount of free time I have to mod is diminishing. This is in addition to needing to really push through and do some more voice-over recordings for Melirinda's module "A DeathStalker", where I'll be playing the role of Saemon Havarian.

As a result, my desire to release by September will probably go unfulfilled; it must follow the fate of all release dates and suffer a delay. Instead, my loose release date is now "November". While I know this is somewhat vague, it should give some indication of when I think all development and testing will be completed. I'd love to release earlier, but I want to make sure that I release a high quality, bug-free module that will be an intense and fulfilling roleplaying experience. I want to make sure that when you sit down to play 'Fate of a City', you'll get to play a module that you won't forget anytime soon.

So rest assured that I'll post updates when I can, and I'll be working away on adding to the adventure within Darthall whenever I have a spare moment.