Saturday, May 02, 2009

A Deadly Bug

Some time ago... possibly last year, I explained the death system I wanted in chapter 1 to Lance Botelle, and he was kind enough to supply me with some scripts that would hopefully have it working. Technically, he did have it working, but... allow me to explain...

What this first module required was as follows:

  1. Up to a certain point (visiting a lighthouse), death would mean game over, with no respawn option. I felt that I could tie in some of the developing story into the respawn system to help make the story more immersive and death feel more real early on in the game.

  2. Once the lighthouse is reached, it becomes apparent that it's possible to return from death there for a limited amount of time owing to the lighthouse co-existing in Limbo (the plane that the dead travel upon - see accompanying pic). It does mean however that the player has to retrace his steps to where he died, but at least it's less frustrating than not being able to come back at all. So, after the lighthouse has been discovered, death should result in the player teleporting to Limbo, but able to return to the land of the living via the lighthouse.

  3. Later in the module, it becomes apparent that the lighthouse method can no longer be used because of how the story has developed, but another method becomes available in the form of soul crystals. As long as a player has some, he should be able to respawn on the spot.
Early testing of the system Lance had scripted for me looked positive. In case 1, the GUI panel appeared with no respawn option - great! In case 2, the player went to Limbo - woohoo!

Unfortunately I hadn't got around to testing case 3 until a couple of nights ago. While technically it did what I had asked for, respawned the player and removed a soul crystal, it did it in the same manner as case 2, in that no GUI panel came up. It just happened automatically. Now in case 2 I liked the fact that it did it like that. The first thing a player experiences when venturing to Limbo is disorientation. He asks where he is and has to be told he is dead. The fact that no GUI panel appears with the respawn option helps add to the feeling of "what just happened" when arriving in Limbo - perfect.

In contrast, case 3 didn't feel right at all. I wanted to have the GUI panel appear to give a sense of having died as opposed to looking like you'd just got up again after falling over, so I did a terrible thing... I got brave and started to tinker with it myself.

I discovered that the routine Lance had made rested exclusively within the "ondeath" script, so logically concluded I needed to transfer case 3 to the "onrespawn" script. That's when it all started to go horribly wrong. At first it wouldn't work at all, so I started tampering with it some more, and along the way all the logic got screwed up. Eventually I figured out that because I'd changed the script where the routine rested, my variable names were doomed from the start. Calling a target referred to as "odead" in a respawn script should have gave the game away early on really - doh!


So, I'd wasted a whole night screwing it all up, but the good news is that I managed to fix it after a couple of laborious hours tonight consulting the Lexicon. I'm glad I did though, because I discovered how to place text in the GUI panel (This is the article that helped me.). This has meant I've been able to improve on the immersion even more by using text relevant to the story instead of the standard random game hints that can appear. What this means is that by further editing of the "ondeath" script I now have messages appear in the GUI panel such as "You are currently unable to return to the land of the living." for case 1, and for case 3, either a message explaining that a Soul Crystal will be used for respawning, or that the player has no soul crystals remaining (with the respawn button vacant).

Please excuse me while I let out a small scream of elation ;)

WOOHOOO!


It's always great if you can solve something yourself :)

Tuesday, April 28, 2009

Re-visiting Old Conversations

First off, I owe a big "Thankyou" to Jfoxtail, respected member of the Neverwinter community who agreed to playtest the first module. I'm pleased to say he gave some very positive feedback, to the point that he actually sounded excited at the prospect of playing it once complete. He went so far as to take some screencaps of his progress, so expect to see some here soon. A few minor bugs were also encountered, but they didn't spoil his enjoyment, and are things that I believe I've already rectified thanks to his comments inspiring me to get cracking with fixing them.

Progress has been so good that I've actually started working on the henchman implementation (another "first" for me). The henchman doesn't become available until the town of Oasis is reached, whereupon he must be taken for the story to progress. Because of this, I wanted to ensure he feels like a personality in his own right, so am introducing a variable that keeps track of his reputation with the player. The reputation can be affected by various player choices within the game, which, if it becomes negative, can make it difficult for the player to make requests from the henchman.

Another aspect of having the henchman present is that he can intervene with conversations the player has with other NPCs, so I've now been re-visiting old conversation files to see if such interventions are required. Such extra nodes are easy to implement, as I can place henchman lines above an NPC line, that way, if the henchman is not present, the NPC line will automatically fire instead. It's been fun implementing such lines, as I feel it increases immersion into the game and improves on the overall story.

Oasis itself still requires some work, but I might take a rest from it and transfer my efforts to the final journey and quest of the module.

That's all the news for now. Expect some screencaps soon. :)

Monday, April 13, 2009

Convo Complications

Well. I'm pleased to say I returned to a conversation file I was dreading, and progress was good. It's quite possibly the largest conversation in the game, currently standing at over 4200 words (I don't know if that includes links. Anyone know?) and still counting. Why is this particular conversation such a nightmare? Well, it takes place at the conclusion of the first major mission and has to account for so much. The design of the game means there are a multiple of considerations to take into account, many of which might not even be witnessed by the player, but why go to such trouble? The answer is that I don't want my players to feel cheated. Some quests only present themselves under certain conditions, and this has been deliberate so that a player can feel they have unearthed something others may have missed. There is nothing I'd like more than for a player to say "Hey, great game, and I loved that suit of Mouys Mail I picked up." followed by another player saying "Where did you get that?!" To some extent I'd like to think that such results might tempt people to play the game again. Some of my quests have multiple completion nodes that depend on circumstance, and in some cases these lead to different possible conversation options, so there is a lot to cover. On the downside, it does require a lot of work and will require multiple tests, so again, if anyone out there is interested in helping, drop me a line. You might be pleasantly surprised at what you see ;)

Thursday, April 09, 2009

Playtesting and Spell Hooking

First off, many thanks to Lance Botelle and his wife Jen. I've just returned from a pleasant evening in their company, where Lance tested my module while Jen kept us dosed with tea and biscuits. :)

Having watched over Lances' shoulder, I was pleased with the way the story flowed, while Lance commented on a number of other elements with positive responses.

We did uncover a bug along the way, which while a little discouraging that such problems can still be present despite my own attempts at testing, it's comforting at the same time that I'm able to pick up on it. Playtesting by others is a valuable asset that one should not dismiss, no matter how often they have tested a module themselves, which is why I'm seriously considering releasing an incomplete beta to get some further feedback.

As well as the bug, we (or should I say "Lance") resolved another issue I was having. Having followed a tutorial on the Lexicon to implement spell hooking, I couldn't understand why I couldn't get it to work, which was a pretty major issue considering my mythology plays an important aspect in spell availability. Spell hooking was after all the major draw for me in deciding that making "The Relbonian Chronicles" was possible, so having it not working would prove a major setback. Fortunately Lance spotted the problem quickly. Although I had saved a copy of an altered script in the default module properties, I had forgotten to use it. Selecting the copy made the test work, so that's likely to be the next major project I tackle. Having said that, I still have a couple of spell renames not quite working yet.

I was worried that a lot of typing would be involved with implementing the spell hooking, but having searched the vault I discovered Genisys had done a lot of the typing for me. If spell hooking is something you're considering, I'd recommend popping over to his spells & feats download.

As the setting of the module is unique, I thought it would be nice to experience it in something that felt new. This works to some extent thanks to the spells being re-named to fit in with the mythology, but I felt it deserved more. Having searched the vault again, I discovered some wonderful sets of coloured icons by The Amethyst Dragon. What's especially nice about them is you can drop them in your overide folder so that your icons are colourized for every game you play. I found they make a huge difference to the game, and was particularly impressed that all the spell icons have received the same treatment. I shall most definately recommend their use when I release the module. For those that can't wait that long, you can pick up his spell icons here, and view his other submissions here.

Right, I think I need bed now, and fingers crossed that we start getting some viewers for our home soon, as me and the Mrs are planning to move, which explains my lack of activity of late. Apologies to those of you kind enough to keep tabs here.

Night night and all the best.

Sunday, March 15, 2009

More Hack Work Done

Dealing with the town of Oasis is taking longer than anticipated. This is mainly due to the town being a major stop over in terms of being able to re-equip the player, so not only am I having to place merchants along with their conversations, but I'm also having to create the items to stock them with. The going is good however, despite the other minor setback I've been experiencing. It's been a little painful to type for a while, all thanks to the idiot who reversed his car next to mine while I was unclipping my son from his baby seat. I got crushed between my car and the open door behind me, causing my son to burst into tears as I screamed into his face. Unbelievably, the man that crushed me went to drive away, and I had to chase him through the car park to get him to stop so I could take his details. Even more annoying, he didn't give a dam that I'd been crushed and got quite threatening, claiming I'd damaged his car opening my doors. Just talking about it now really riles me, to the point that I could prattle on for ages about it so I'll try to get back onto the suject of Neverwinter quickly. Suffice to say he is now contesting my claim, so we have a long drawn out process ahead of us with the insurance companies (he bent our door that I got crushed behind), and the police won't take any action because of the lack of witnesses. *Sigh*

Anyways, back on track, I was able to do a little more work on the hack that accompanies the module today, and am pleased to announce that as a result, I can now assign spell like properties to items so that they match their Relbonian spell names instead of the default names. I should also be able to create scrolls in the same manner, which has been bugging me for a long while.

I'm seriously considering some early playtesting before the module is finished so I can check how successful the variable reward system for the first major quest has been implemented. For those interested in possible playtesting, here's what you can expect for volunteering for the task:

A complete game experience up to arrival in the town of Oasis with an estimated play time of between 45 to 120 minutes (This is a very rough guesstimate). Although the hak pack requires further work, this will not effect play experience, as the hak affects mainly classes other than the one you will be expected to play (a fighter). As for what would be expected from you, mainly it would be to play in one of two styles (do everything in your power to please/disappoint the main quest giver), and give an estimation of roleplay/combat balance. Anyone interested should give me a yell.

Right, I'm off to tend to my dinner, happy gaming all :)

Monday, February 23, 2009

It's the little things that count

I've had quite a productive weekend, going in and polishing existing conversations. What's funny though is how much extra work one can make in the process. What was supposed to be a simple quest became much more complicated, with multiple tests slowly uncovering various bugs that required sorting. The good news is that I think I've ironed out all such problems which is always satisfying.

In the process of fine tuning I've enjoyed polishing the existing content with little touches which may well be missed in the finished product, but I believe such touches are worth applying simply because when they're not missed, they do so much more to enhance player immersion within the story.

The quest that I've finished isn't integral to the story, but it does add to the feeling of the town in which it takes place having events of its own, no matter how trivual. In this particular case it simply involves re-uniting a girl with her dolly. As such it has a relatively small xp reward on completion, but what's nice about it is that there are two possible "successful" outcomes, only one of which involves an item being given to the player as a reward. I love creating items, and am a firm believer that everything within the world having a plausible reason for existing, no matter what powers they may bestow upon the user of such items. Fortunately for me the "Relbonian Chronicles" have a rich mythology for me to draw from, but I like to give the same level of detail to all my items, no matter how mundane they appear to be. In the case of the dolly quest, I needed to create the dolly and a reward from the girl. Although I'm not going to reveal here how the reward is required, I will show the item details to give you an idea of the attention I'm giving to the module:

Dolly
A crude dolly made from sewn linen stuffed with sand. Popular among Relbonian girls. This one is oviously much loved, made evident from the sand seeping from the seams.

Bangles
Although nothing more than cheap jewellry for a child, these bangles are far more significant to you, being a gift from the charming girl Milly from the town of Oasis. Simply looking at them fills you with a sense of pride for making the young girl happy, and does wonders for helping your mind stay focused.

They are of great sentimental value and can never be parted with.

Saving Throw Bonus: Mind Affecting +3
Use Limitation: Alignment Group: Good

In the case of the bangles above, I've made them undroppable to tie in with the description. Not only that, but it also prevents the player from selling them which would make them far too valuable for a gift from a girl. I like the fact that the description implies they are non magical, yet also gives a reason for the benefit of wearing them.

As well as paying attention to items, I also like to pay attention to the environment. As an example, there's a tower in Oasis that has two floors. The tileset used has a doorway in the circular room as well as the stairs, so for the upper floor I needed to disguise the door somehow, as there was no reason for it to exist. Thanks to the latest content from the 1.69 update, I used the canvas door which doubles as excellent curtains that can be opened and closed with accompanying sound effects. Just behind them I've placed a large window. While the solution looked nice, I felt it deserved more, so attached a script on their "OnOpen" that has a nearby NPC comment on the excellent view.

That's all the news for now. Happy buiding all! :)

Friday, February 06, 2009

Quillfumbler

First off, as some of you may know, I've been restricted to using my laptop of late, one of the disadvantages of which is that I have to remember to press quite firmly on the "B" key, otherwise the headline of this article would have been "Quillfumler". As a result, I must apologise for any errors in my typing. All the more reason I think I should release a beta for any wannabe spell checkers ;)

There are times where I've regretted choosing the handle "Quillmaster" for precisely the above reason. People have high expectations from a "Quillmaster", and having articles with spelling mistakes doesn't really paint a good picture of what to expect. It's not just spelling mistakes. My earliest module was hardly a masterpiece by any stretch of the imagination.

So why did I choose "Quillmaster"? Simply because I thought it eluded to my "Dungeon Master" background, and of course it was the name of my play by mail game on which "The Relbonian Chronicles" has been based upon.

Even until recently, my early Neverwinter creations have relied heavily on Lilac Souls Script Generator, as I had no scripting knowledge whatsoever. It's been a real blessing to me, as over the years I've began to recognise how parts of the scripts work, to the point where I occasionally got brave and further tinkered with them. With "The Relbonian Chronicles" I've managed to take things a step further still, by taking the time to visit the Lexicon in my quest to achieve something that the script generator can't create. So, if any of you have sampled a past creation of mine, rest assured that (apologies for blowing own trumpet) this one is soooooo much better!

On the subject of scripts, I had a" Eureka" moment earlier (they can be sooooo satisfying - lol). One of my pet hates in a module is... tell you what... I'll quote the line I saw on the very Lexicon page I found my solution:

"A VERY useful function if you want to add some realism to your modules. Personally, I dislike knowing that "oh, so that's where the bad guy is because that's where the map pin is", even if I don't look at the map pin's caption."

The subject is of course "Map Pins". I like a map to denote points of interest to help you find your way around, but I don't like to see things I shouldn't know about. The command "SetMapPinEnabled" is a useful way of preventing such a situation occuring. Simply place your map note waypoint, right click on it, and under the advanced tab un-check the "Map Note Enabled" box. If you test the module you'll notice the map pin doesn't display on the players map. Back in the toolkit, you can place the below script in a conversation node under "actions taken" to enable the map pin.


So how might you use the above code? In the instance listed above it's simply used when an NPC mentions a location and points out where it is. When the player enters the relevant area (it needn't be the same as where the conversation occured), they find that the map pin is now visible. Cool eh?

I'd like to say to any novice scripters out there don't give up. Let each victory no matter how small inspire you to step that little bit further :) Even if you think you can't script, check out the script generator and get into the habit of searching the Lexicon.

Now you'll have to excuse me, I have some map pins to disable ;)

Monday, February 02, 2009

Player Immersion

There's been a thread over at the Bioware forums discussing ways to improve player immersion in Neverwinter Nights. As well as the obvious (the inclusion of cutscenes), it occured to me that I've been implementing an improvement to player immersion without even thinking about it. How? One of the things I wanted to avoid was the inclusion of standard magical items, such as "Longsword +1" or "+1 Ring of Protection". Such obvious references to the game system (ie "+1") yank the player back to reality. I don't mind such bonuses being listed, in fact, I think it essential that the player knows how a magical item will benefit them in game. I'm just opposed to such bonuses eing referenced within the item name.

As the Relbonian Chronicles have a rich mythology to draw from, I can take the opportunity in item descriptions to further immerse the player into the world they are playing within. Here follows just a few examples of how I've revamped items within the game:

Ring of Distortion
(Replacing "Rings of Protection")
This ring and several others of its type were originally crafted to provide protection to the young Druid apprentices known as "Runners" who deliver the Relbonian Chronicles. It was important that such protection be as light as possible so as not to slow the runner down. As to how the ring provides such protection, little is known, although it is rumoured that they are somehow blessed by the God Boreeshna resulting in a distortion of the air surroounding the wearer, thus making them harder to hit.

Mighty Flight
(Replacing "+2 Strongbow")
Mighty Flights are of exceptional crafstmanship, being fashioned by Dwarven smiths who specialise in the Faith of Rathna. As such they can be extremely heavy, and as a result only Warriors can use them.

With the power of Rathna imbued into the weapon, earth like forces put great pressure on any bolt loaded into the firing chamber, adding great strength to the shot when the bolt is released.

Desert Armour
(Alternative +1 Armour)
Favoured by mercenaries who protect travellers and merchants who travel the Kerem Sea, this armour offers comfortable protection in desert terrain, with heavily bleached leather to help reflect sunlight.

That's all the news for now. Npc info will have to wait a little longer while I figure out what happened to my image editing software!

Thursday, January 29, 2009

Overcoming Hurdles

It's been a little hectic this month. We recently attended the funeral of my father-in-law which I'm pleased to say did the man justice. Our 2 year old son also said "Gran'pa" during the service filling us with a sense of pride. It's nice to know he remembers him, and we intend to make sure it stays that way.

I know I promised to make a post about some of the NPCs several posts ago, but er... I'll have to put that on hold for a while. Not because there's been no activity, far from it, it's just that I'd like to do some screen caps to accompany the article, and er... I can't be asked at the moment (lol). The reason I can't be asked however is because I've been too absorbed in making progress, so the good news is that I've overcome two major hurdles that stood in my way. As followers of this blog will know, I've got to the main target area that the PC has been struggling to get to. Although it's not the end of the module, it is pretty major in that several quests can be completed here. As for the two hurdles, the first of which was a cutscene I wanted to include to help complete the atmosphere of having successfully reached this destination. I'm pleased to say that not only is the cutscene complete, but I'm also very close to completing one of the major conversation files to take place at the location.

There's still lots to do, to the point that I often wish I wasn't tackling it alone (anyone out there think they can help?), but I'm real happy with what's been done so far, and that's what pushes me on. I'm considering making what's made so far availale for playtesting so that any bugs can e ironed out as I go. If anyone fancies helping me out in that respect drop me a line.

That's all for now. Hopefully my next post will have some NPC info ;)

Tuesday, January 13, 2009

Dedication

I hereby dedicate this module to my father in law who passed away last week.
I'd also like to thank Gestalt for his cutscene system available at Neverwinter Vault, without which I'd never have been able to include the cutscenes responsible for breathing so much life into the module.