Choose Your Language

Tuesday, 26 January 2021

Episode 40: The Big Picture!

I know it's a cliché of a title, but as we have reached Episode 40, I think it's also appropriate for a round up of the campaign so far. Another cliché they often say is that "life begins at forty". Believe it or not, I was around that age when I started building with NWN2, which came out in 2006. Since that time, I have released The Scroll: The First Day (module 1) in 2016, and am still currently writing the follow up module. The question is, if it took me ten years to write the first module, how long will it take for me to finish the second one? And isn't there supposed to be a third module? Read on for more info on the bigger picture ...

Getting To Know you

The D&D game is nearly as old as I am, and if you include wargaming as a general pastime, the hobby is far older than me. However, when I was first introduced to the "game" in 1981, little did I know back then that it would play a big role in my life. For those interested, I wrote three articles about the changing face of D&D and my personal experiences with the game in the early pen and paper years: Part 1, Part 2, and Part 3. The bottom line, The World of Althéa campaign is my second campaign from my days of pen and paper gaming, and it was born of a growing understanding of gaming rules, imagination, and the love of telling a story. But, and here is a key point, that story has grown with me as I have grown. It's as if the story has revealed itself more and more to me as time has gone by. Don't misunderstand me: the core elements to the plot were in place (mostly), but the details were always vague to me until I put pen to paper ... or more lately, fingers to keyboard. So, it occurred to me, this story actually feels like it carries a correlation to my own life, and much about its telling carries aspects of my own past, as the story to come will be of my future. There is a humbling realisation that once the story has been finally completed (God willing), then the story ... and that large part of my life ... will be over, and both the end of the story and the fuller part of knowledge of myself will be known.

Isn't It Just A Story?

I suppose it is just a story - after all, it's reckoned we all have a story inside of us, waiting to be told. Although, it begs the question, why do we tell stories? Why does the bard pick up a pen and write a play to be acted by performers to entertain others? I want to emphasise that I am strongly distinguishing a story from a historical article here, or from any factual account for that matter. However, stories are still written and published, but from where does their source come? What is our imagination truly? I have my own beliefs about such, but I ask you to ponder over these matters yourself, and recognise that we all, for some reason, have desires to "hear" or "play" a story, even from a young age. Why is it that we like to escape to another place in our imaginations? That escapism is very much a real aspect of life, even if the story itself is just a result of the imagination ... whatever that may actually be?

Back To Althéa

Enough philosophising ... Latest news: I have been making progress with Predestinated Days, the second module in the series. And in case readers may be concerned that these modules stop at a cliff-hanger point (as part of a series), rest assured that I have designed them in such a way that I hope a player can play them individually to a satisfied end point in the story line with each module. So, if you want to make a start, then you can play module one to a satisfying "end", and keep your saved game, or any exported PCs to be able to either carry on playing with module two, or import and do the same. There will also be the option to simply start playing from each module's beginning regardless.

At the moment, I am in the process of sorting no less than four quests. I am taking time to write surrounding conversations in such a way that logical flow works no matter which way the player picks up the quest. All four quests are to do with the section towards the end of module two, and are some of the hardest ones to prepare to work well. Part of the issue with these quests, however, is that there are a number of new items and placeables that need work around their application too. i.e. I need to build new items, which need to be added via a 2da, which in turn are acquired via specific placeables, which are then referred to in conversations and the quests.

I still have a major section to finish that I have already started, which the players encounter earlier on in the module. There are at least three areas that I have not yet even started to work on from a perspective of player interaction - although the areas themselves have been finished. All in all, however, I am hoping the process will go more smoothly than the first module, simply because core functions are already in place. Although, the latest module also has much new content, including monster AI surrounding vampires and werewolves, as well as a unique gaming system to do with a campaign story line. It all adds up to some interesting gameplay ahead ... I hope!

How Long?

Trust me when I say that if I could have released this second module now, I would. My wife, who catches glimpses or hears sounds of me testing it, has often asked me the same question, eager to play the second part. She has even made a list of some crafting items that she would like to see that would help her with some higher level crafting when the time comes. (You would have to see the appropriate craft books to see what I mean.)

I can only answer in this manner: The first module took me ten years to build, but was done with less knowledge than I have today. Furthermore, much of the core code for module two is already in place, which means I am simply adding content. On the flip side, my concentration has become worse with each passing year, definitely slowing progress. This module also has more areas than the first one, and as I do not like giving players areas without something significant about them, I need to allow the area to "mature" and develop with each aspect I am currently working on, which also adds time.

The official SP release date for The Scroll: The First Day, was 04 May 2016. (This is ten years after I first started working in it in 2006.) From that time, I continued to work on patching and updating this first module as I also laid some ground work for module two. However, I did not start MP testing for the first module until 17 November 2018, which came to an end after 31 episodes on 02 March 2019. These current episodes that you are reading, detailing the building of the second module, Predestinated Days, then began on 03 May 2019.

We also need to consider that much of the area design of the second module (much like the third module) has already had major work done. (Although I have found myself needing to add new areas for the second module, which I hope is now finished.) Therefore, although difficult to pin down an exact date of when I started to focus on building module 2, taking all things into account, I believe we can fairly say that I can use a start date of around January 2018. Strictly speaking, work started a long time before this date, but allowing for all those varying factors above, if I had been starting this module afresh, I believe it would have taken around three years to reach my current point, at my current speed and knowledge.

I am not sure how much that helps us though? Simply because it is hard for me to know how I am going to fare from day to day. It is so frustrating having to pace myself due to my condition, but if I do not do so, then I would suffer. Also, there remains one or two areas that I have not currently focussed on at all, which means they are an unknown entity when it comes to time involved.

Speaking optimistically (and recognising potential health impacts), I would like to say this module will take me five years from start to finish, which would mean a target end date of January 2023. That is, I believe I am probably just over the half way point. But, like always, only time will tell. For instance, it may be that things fall into place much quicker and I could be finished by the end of this year! But, life events are unpredictable, and we must bear these in mind too. As for the third module, and to use another famous saying, "it will be done when it is done!" (And maybe I can report on that after this one!)

The Scroll: The First Day

Regarding module one, version 1.36E was recently released after my wife finished playing it yet again! She genuinely likes it! I encourage her to play some of the classic RPGs, which she does, but nevertheless comes away saying she wants to play my own module again to see if she can improve on her earlier accomplishments - she is into the new crafting system a lot! While v1.36E is the current release, I do have another version in the pipeline, which fixes stacked wand (and other item) usage. However, as this is a minor issue, I will wait for a while longer to see if anything else should reveal itself from any other reports.

This report also marks another aspect of module two: It has reached its 100th backup! To mark this, I will post some bonus screen shots ...

An Ancient History!

Viewing Ahead With Darkvision!

Cornered By Zombies!

Waterways!

Monday, 11 January 2021

Episode 39: The Path Opens Before You!

It's a good feeling when plans start to come together, and the results of the last few days have helped a great deal with that feeling for me. At last, I am starting to move towards conversations that open more paths for the player to follow, which in turn, allow me to start to write more conversations and update journal entries. Read on ...

Opening Up The Pathways

My favourite kind of RPG is one where I can easily switch between the various tasks a module may offer and pursue them in various ways. i.e. I am not forced along a specific linear pathway because that is the way the story goes. Don't get me wrong, I am all up for a very strong and engaging story in an RPG, but how that story develops or unfolds, I like very much to be in the hands of the player. Achieving this, however, is not as straightforward as one may think

The key is to minimise choke points, which are basically those events that do force the player to have to pass a certain point in the game, and which the module designer uses to ensure the player's party is at a certain stage in the overall game. As an example, requiring a key could be designed as a choke point. If not handled well, however, a player with a rogue who can pick locks, or a wizard that can cast Knock, or even a fighter that can normally bash through walls will not be pleased about such from the perspective of player agency. Such points have to be carefully considered, and implemented in such a way that do not spoil the experience, and the builder must do as much as they can to have such choke points appear most logical under the circumstances.

A linear game basically consists of choke points at every stage of the game, and leaves little in the way of choice of direction for the player. Conversely, if used sparingly, such choke points will be conveniently "disguised" among the many other options the player is considering. The downside to designing such a game is that it requires a lot more time to make work, as followers of my bog will have already witnessed. As an example, I have a trigger that a player could activate in one of four states, subject to the path they have taken, with each response varying according to the party makeup. And this is just a small notification trigger that can either update a journal note or a journal quest stage.

The latest news, however, is that I have just passed through another such design aspect and am now able to progress with the main quest and various sub-tasks available beyond this latest choke point. From a design perspective, it allows the builder a little more breathing space to be more creative again. The only problem to remember with such, however, is that all these new paths need to be brought back together before the next choke point! This is less of an issue for side-tasks, but certainly important for the main quest.

The pathways now open again for me, I have already started work on two new quests and a continuation of a third. This involves a few more conversations and new area events, which should all be most fun for me to prepare and interesting to the player too!

Improved Code

Again, thanks to the latest feedback from my wife (who is playing yet another play-through of module one), I have been able to focus on those areas of coding that can go under the radar unless certain playing criteria are met. For example, the efficiency of "loops" in certain areas of code is one huge aspect I have concentrated on since she has been playing with a party size of 10- to 12 members. Other areas include the code around hard-core death, as she in playing another run through that way. Also what happens to certain NPCs who have a neutral faction and have been subject to monster attacks at inadvertent times. All such pointers from such play testing have now been addressed, and serve to make for much more efficient coding, and make the experience more enjoyable.

Most of all, however, being able to apply all the benefits of my knowledge of building module one to module two have been of great benefit. And having a huge library of module one functions to draw upon has made the whole process so much easier ... and fun! There is a definite shift in time spent debugging compared to time spent creating.

As a side note, I intend to release module one v1.36E after my wife has finished pay testing this time around, as there are a number of very useful fixes. 

Finally, here is an screenshot from a stage after moving on from the last choke point!

Never Ignore A Gut Feeling!


Saturday, 26 December 2020

Episode 38: Coding Monsters!

Let me say straight from the start that this post is not about actually scripting monster AI, or even a tutorial about how to design a monster in a toolset. In this case, I am simply referring to those technical "monsters" builders face when trying to produce their modules. From applying animations to writing scripts, they all seem to come at various levels of difficulty, just like those "real" monsters we face in the game itself. So while some such encounters may occasionally appear as "simple" as a goblin to beat, others feel like dragons! Even builders skills can be thought of as in classes and levels themselves, so what may appear simple to one builder becomes a real challenge to another ... and haunt them for years! Read on for my latest XP gains in building ... 

The Patrolling Guard

A couple of posts back, I described how I had been wrestling with some animations and how they may or may not work within conversations. Recently, however, the issue with animations has extended into the area of walk paths for me. In the past, the official WalkWayPoints function (and accompanying scripts) had always been a bit hit and miss for me, and so a few years back I decided to write my own version of them so that I could have more understanding and control with what was going on, especially when considering scripted waypoints: those that allow additional animations for a "walking" creature. This venture was a reasonable success, as it did allow me to ensure the creatures I setup worked as expected ... but only "most of the time".

I still continued to encounter issues where walkers would sometimes become stuck in the environment; a problem exacerbated if a PC blocked a walkers path in a limited space. Previously, I had tried to alleviate the issue by forcing the creature to try to move somewhere else before continuing their walk path. The problem with this, however, was it could cause the creature to constantly reposition themselves if the path was blocked by a PC. It looked like they had the jitters! Thankfully, in the end, I figured a way to smash that long standing monster, by using a ClearAllActions that now simply pauses the walker in their walk until the path is clear again. It was a relatively simple fix to a long time issue I had been struggling with. The only caveat I learned at this time was also to ensure any WPs laid down MUST be done in such a way as to clearly be guided around any placeables. For if a WP guide line even slightly clipped a placeable, the engine did not appear clever enough to always be able to walk around the placeable object.

XP GAINED: 100

The Random Monster

Once again, I am not talking about a random wandering monster, but the monster of trying to work with random probabilities in the game ... or with any probabilities for that matter. Twice over the last few months, I have had to face some maths to do with probabilities. As many will likely know, trying to deal with any kind of randomness on a computer is difficult. (Do some background research if need be.) My first issue was trying to determine the probability of a drop to ensure I was giving the player the right odds at acquiring certain items and the second encounter was trying to ensure treasure drops randomized their location fairly. For the latter, I learned a bit about the dangers of naivete.

XP GAINED: 100

The Persistent Monster

I have certainly had my share of these critters! Those who have been following my campaign build of the last few years will have seen some of the types I mean. I can even include The Patrolling Guard issue as one of these types of issues, but as I have already covered that above, I will give an example of a couple of others I have had to deal with recently.

An example of the kind of thing I mean is the usage of a variable string instead of a variable name. So rather than GetLocalString(OBJECT_SELF, sVariable), I will have done something like GetLocalString(OBJECT_SELF, "sVariable"). The issue with this kind of problem is that both lines of code will happily compile as neither is a compiler error. The error is purely one of my own making using "sVariable" instead of simply sVariable. The last one I had one of these, I was stuck for quite some time trying to locate why my script was not working.

Another example of an issue I can encounter of my own making, is if I should happen to change a ResRef of an item, which I have previously added to a store with its old ResRef. This again has caused me all sorts of issues when I am trying to reproduce an item from the original store bought ResRef, which fails to do anything because all that I have there now is the newer reference. Thankfully, now I have been stricter in my approach, I believe I must be near the end of any such issues moving forward.

XP GAINED: 100

The Deep Rooters

When I hit one of these issues, I can usually write off an entire session trying to get to the bottom of it - sometimes even multiple sessions. These type of issues tend to rear their ugly heads somewhat further down the coding path, and often even after a module release. The reason being, these type of coding monsters often only show themselves under unusual (or rare) situations.

For someone who has coded their module in the way I have, this means I am more likely (I believe) to hit these types of issues more than most, simply because I have a number of deeply integrated systems that allow multiple paths and diversity for the player. As an example, even the way "Death" is handled in my campaign has multiple paths. I can thank my wife who has been able to test the module a number of different ways and offer feedback in some areas of the code, which even I have not been able to fully test due to time limitations. I hasten to add this is why feedback from players is invaluable to builders, as we simply do not have enough time to do everything.

As an example of one of these deep rooted monsters, in her latest testing, my wife discovered that if she had abandoned a dead PC in the Sanctuary (while playing hard-core death mode, being abandoned meant the PC could no longer be raised from the dead), if she now brought another dead PC to the same area, the code had not yet been considering such a situation where a player (like she had done), now tried to raise another PC that was still able to be raised within the same area. I had to trawl through multiple death scripts to finally locate the one which needed a simple variable check added to fix it. A simple fix in itself, but one that required a lot of code searching.

As a final example of a recent deep rooter, my wife discovered a situation where she could return to an area and the NPCs would not be there. She quickly discovered she could work around the issue by reloading, but it was still obviously an issue for me to have to resolve. Once again, the problem was hidden among a number of functions relating to the whereabouts of creatures subject to the time of day, and if they changed locations depending upon night and day habits. Now most people probably do not even worry about this area of module coding, but for me, who wanted to design a "realistic" environment where time mattered, I had to track down why certain NPCs had refused to jump to their relevant locations upon her arrival. This monster turned out to be quite an "end of level baddy" type, even requiring me to rename some functions to help avoid misuse due to their naming. Along the way, I was able to improve the scripts (as they go back quite some years), and finally add the relevant function call to the right script to ensure these lost NPCs would now return at the appropriate time.

I hasten to add that even when trying to improve some of these scripts, simply adding a GetIsDead check for some reason would crash the toolset! Again, it was only a minor condition I considered adding to help "improve" efficiency, but the toolset was not having it. The additional problem was, having added it during the process of the overall fix, trying to locate that it was the cause when the final test crashed, added more time to resolving the initial issue.

XP GAINED: 200

Gaining A Level

Anyway, after all this monster slaying, I can safely say that I have probably gained enough experience to go up a level now ... well, at least in some way. I am still not much better in area designs and such like, but maybe I have gained a point or two in conversations and some scripting. ;) And all this is being added up to hopefully bring to you module two one day ... speaking of which, here is a screenshot.

Let's Sit Down For A Talk


Tuesday, 8 December 2020

Episode 37: The Dungeon Environment!

As we all should know by now, dungeons come in many shapes and forms, fascinating us and piquing our curiosity, while at the same time, all too ready to do us harm! For those of us who enjoy both science fiction and fantasy, we are familiar with the many different environments of alien or bizarre objects we can expect to find, as well as the many denizens we are likely to encounter. This week, I have been trying to focus on some of those aspects, which I have found interesting to deal with in my own past gaming experiences ... and which I intend to include in my next module. Read on for all the latest updates ...

The Alarm System

Of all the games I have had the privilege to play, one of my favourites (as many of my regular readers will know) is System Shock 2. For me, it was the first time I experienced timed alarm systems, which could catch out the unwary player and send a horde of creatures their way if not handled correctly. I developed a system akin to this in my NWN1 module, Soul Shaker, where I employed "Watchers" to do something similar. In my next contribution with The Scroll: Predestinated Days, I hope to add another variation to a dungeon that players will need to negotiate.

Without going into too much detail that may spoil the experience, all I will say is that the alarm system I have devised has managed to capture all those elements I was after, including the ability for the player to be able to manipulate the system and gain an advantage if they play clever. If not, then there will be consequences ... The choice of play, however, will be left to the player.

Complementing Systems

Part of the joy of building a new module is being able to put together new ideas and systems that all work together to give the player a whole new gaming experience. For myself, it is not just about putting together a new story within the same fantasy world ... it is also about adding a new dimension to the game play itself. Please note that The Scroll series of modules are not as extreme in their design as my NWN1 Soul Shaker module is (as those who have played my modules will be able to confirm), but I hope those same players will also be able to attest to the many other new systems and options I have built within The Scroll to make it the unique playing experience I believe it is.

To this end, The Scroll: Predestinated Days will continue with some of those systems I have already developed in module one, but will also have a few new systems added to complement them. Hopefully, I have been able to incorporate them well enough to be reasonably intuitive to use, and most of all, a fun addition. New GUIs have been designed and included to make their inclusion easy to work with. At the moment, I have held back from showing screenshots that include them, but maybe in the future (and possibly nearer completion), I may be able to give one or two screenshots that I hope will tease the player with what to expect.

Conversations Overhaul

Some dungeons offer the opportunity to converse with its denizens, and so a good conversation goes a long way. Recently, I learned more about how animations work in conversations, and so ended up "fixing" (by removing broken animations) and "improving" (by adding some I knew that worked), not only for the second module, but also retrospectively for some of the conversations in the first module. Now, the NPCs respond more animated than before, benefiting both modules. NB: The first module will have access to these upon the next release (or update).

Code Improvements

Working on the second module, which shares the same core code as module one, allows me to continue to test and monitor the overall game play for the whole campaign of modules. As a consequence, I have had the opportunity to improve the code around journal updates, fix a minor auto-pause issue and improve overall efficiency.

These are all relatively small fixes to the code, and so I am holding back on any further module one release for now, and to also allow my wife to test these alterations before going public with it. It may even be that unless a critical problem is found that demands immediate attention, that the next release will not become available until the full release of module two anyway ... or perhaps when I am confidant that the changes are safe to release at any rate.

Chipping Away

I managed to finish another side quest, which ended up requiring more conversation nodes than I first realised would be needed. However, it was during this additional time that I learned about the conversation animations in more detail, and so it was time well spent.

I also managed to move the main quest further forward, reaching a new stage from where I can work from. This led me to working on an area where the next stage is to take place, and start to work on new conversations. The screenshot this week, however, is from a conversation I wrote last summer. Although, it does show a little bit about the "dungeon" environment ... in more ways than one.

A Dangerous Dungeon Environment?

Thursday, 26 November 2020

Episode 36: Camera Now Goes To 11!

The last few weeks since my last post have been relatively productive for me, and since that time we have also had the news that Arem (from the NWN2 Forums) has successfully managed to locate the hexadecimal locations of the nwn2main.exe to allow us to increase the zoom potential of the camera for the game. Technically, it goes much further than 11, but I hope my Spinal Tap reference has not gone unnoticed. (I have a clip to the hilarious link in my post below.) Read on for further information.

Overcoming A Hurdle

I am pleased to say that I managed to finish a difficult set of conversations that formed an important section of the main plot for moving the player forward in the game. The conversations included where the player learns of a situation, seeks what must be done and then decides what to do about it. The point is, however, this series of conversations was already being dictated by how the player had previously explored the area and what they already knew. Therefore, it involved quite a bit of logic flow checking, and even ended up needing a final potential event added to the area that had a small chance of requirement if the player had done something completely off the wall. For those interested, I even had to brush off my skills of calculating probabilities of a certain event occurring, to help ascertain requirements. My thanks goes out to Thierry (a.k.a. 4760), who re-educated me in this.

Leaving The Options In

With respect to what I say above, I know there is an argument that, as a builder, I can make the options simpler for myself with what I allow the player to do. However, as a DM from days of pen and paper (PnP), I like to place myself in the position of the player and try to accommodate as much flexibility and out of the box thinking by the player as possible. There are of course still limits compared to PnP, but if I can minimise these, I will. This last section of conversation writing was one such situation, and now that it is finished, it offers around four possible paths just for this one area of the game. Then the fun for me is watching (or hearing) how a player managed it in their game. Thankfully, I have a small group of players who I will see at first hand what they will do; and my wife, I am fairly sure, will try a number of them through various plays.

Conversation Animations

During the time of writing conversations, I also discovered some animations that failed to work reliably. After some testing, I eventually managed to narrow down those that (for me at least) appeared to work as described. However, again, having had info back from Thierry, my results differed from some of his own experiences, although he concurred there were some that gave him problems too. One that stood out to me, which I had liked to use, was the Scratch Head animation: sometimes it worked, other times it did not. The main point to note, however, is that NOT all animations work. I post my results at the very bottom of this post for information.

Overcoming A Bug!

I give as a warning to others who may do something similar ...  

If you have scripted your code to recognise a certain TAG reference, do NOT forget it! 

We all know about being careful with UNIQUE tags, but there may be others like me who may also use a common aspect of a tag to help distinguish between similar tags when applying a common aspect of code. The problem is, if you forget you have done this, it can come back and haunt you as a bug!

After my hiatus, I returned to continue building an area and added a number of "guards" that were required to fill it. At the time, I was using a standard "alb_npc_xxx" to help distinguish the various guard types. However, I had forgotten that I use the "alb_npc_" section of a tag to distinguish between specific and unique proper NPCs. So, when my code spotted one of these generic "guards" with the prefix, I ended up with some very strange results that were tricky to track down. E.g. One guard of a group of sleeping guards refused to sleep. (Insomnia I guess. 😏) Tracing the fault back, I discovered the guard had lost the variable that told it to sleep due to its tag making it have other code fire beforehand. What made this more difficult to track was that after this particular piece of code fired and prevented the guard from sleeping, it no longer fired for any other guard. i.e. The problem appeared specific to the particular guard, but turned out to affect any and all guards that had the wrong tag, but only the first ever one the code found.

The end result: I had to go over a number of areas re-tagging the erroneous guards and then also correcting all way points, triggers, conversations and scripts that referenced these tags. The good news is, while a pain (because each change also forced me to have to restart the toolset because it does not like such in area changes), I have now fixed that and can continue. And so finally ...

A Camera That Goes To 11 (At Last)

OK, for those that don't know the Spinal Tap clip, here it is ... Where have you been?

The real news, however, is that we can now go just that little bit further out with our camera zoom angles within NWN2. It has been a long time coming, but thanks to Arem (of the NWN2 forums), we have been blessed with the hexadecimal information we needed to apply this hak to the nwn2main.exe file.

For those that would like to do the same, here is a brief tutorial.

The Hex Editor I used was: HxD Downloaded From Here.

INSTRUCTIONS

Preparation:

  1. Always check any downloads for viruses before usage.
  2. Understand where you install a utility and access files. Install the HxD if you do not have it.
  3. Always backup any files you are working with. In this case nwn2main.exe.

Working with a copy of nwn2main.exe using HxD:

  1. Copy nwn2main.exe to your desktop to work with.
  2. Open HxD and open the nwn2main.exe copy on your desktop
  3. You will be presented with a lot of numbers and data in a window.

The hardest part when working with a editor is finding the part among the data you need to edit. The two sections we need to edit have been presented to us by @Arem as hexadecimal numbers:

  • For the height of the STRATEGY (default 25) the area to edit is located at: 572818
  • For the height of the EXPLORATION (default 22) the area to edit is located at: 580D64

I have personally set mine to both 35 as a test for the time being.

The simplest way to find it is as KevL points out (if you use HxD) as we both appear to do.

Long Explanation: The column presented on the left of the editor only shows you where different sections of these blocks of data begin. If it was in decimal, it is akin to showing 10’s, as in 10, 20, 30, 40, etc. Therefore, to continue the example and to look for say, 45, we would need to look for the 40 in the first column and then move along the row five places to reach the 45 position. In this case, however, the numbers are made slightly more difficult to read intuitively because we are using hexadecimal rather than decimal.

The easiest number to find is the 572818, because we can look for the column 572810 and then along until we reach the ninth location (including the zero offset), the one we want. (Note: These are called “offsets” and begin at “0”) NB: HxD shows the actual point you are at in the bottom left hand corner, so you know when you are the exact spot you need to be.

Here is the screenshot of where you should be for each place. Note the values on the right hand side of the images. These are the ones you need to edit to the value you want.

  

Once you have changed them, save the file and use the modified nwn2main.exe instead of the original.

KEEP THE ORIGINAL IN A SAFE PLACE!

And Finally!

Finally, and for an added bonus this week, I have three screenshots to leave with you, although all of the same image. The shots are from a new area I have started to work on. It is not "new" as in an additional one, but "new", as in I have finally reached the stage to work with it properly.

The three images, however, have been taken using the new camera angle settings I have with my game now ... one from each of the camera angles, with all now set at 35.

The differences to the normal setting may not be obvious or hard to tell from these shots, but I hope the view they give helps you to see how flexible the depth is even at the level of 35 in each case.

Camera: Character Mode

Camera: Exploration Mode (35)

Camera: Strategy Mode (35)

BODY ANIMATIONS TESTED ON MALE ELF:

NB: By “WORKS”, I mean it provided an animation of some sort, but may not be of much use. Some marked “FAILED” occasionally worked, but maybe only once and then not again. Most did nothing at all, BUT may work with other creature models.

ACTIVATE - FAILED
ANNOYED - FAILED
ATTENTION - Appeared to keep raising shoulders. (WORKS)
BARDSONG - FAILED
BORED - FAILED
BOW - WORKS
CHUCKLE - WORKS
CLAPPING - WORKS
CONVERSATION_ANIMTYPE_TALK_FORCE03 - WORKS
COOK01 - WORKS
COOK02 - WORKS
CRAFT01 - WORKS
CURTSEY - FAILED (May work on a female NPC.)
DANCE01 - WORKS
DANCE02 - WORKS
DANCE03 - WORKS
DEJECTED - WORKS
DRINK - WORKS
DRUNK - WORKS
EQUIP_WEAPON01 - WORKS
FLIRT - WORKS
FORGE01 - WORKS
IDLE_MELEE - FAILED
IDLE_MELEE_RAGE - FAILED
IDLECOWER - WORKS
IDLEFIDGETDRUM - WORKS
IDLEFIDGETFLUTE - WORKS
IDLEFIDGETGUITAR - WORKS
IDLEFLUTE - WORKS
IDLEGUITAR - WORKS
IDLEINJURED - FAILED
INTIMIDATE - Appeared to put back shoulders. (WORKS)
KNEELDAMAGE - FAILED
KNEELDEATH - FAILED
KNEELDOWN - FAILED
KNEELFIDGET - FAILED
KNEELIDLE - FAILED
KNEELTALK - FAILED
KNEELUP - FAILED
LISTEN - WORKS
LISTEN_INJURED - WORKS
MEDITATE - WORKS
NOD_NO - WORKS
NOD_YES - WORKS
PLAYDRUM - WORKS
PLAYFLUTE - WORKS
PLAYGUITAR - WORKS
POINT - WORKS
READ - WORKS
SALUTE - WORKS
SCRATCH_HEAD - FAILED (INITIAL SOMETIMES)
SEARCH - FAILED
SHRUG - WORKS
SIGH - FAILED
SIT_DOWN - FAILED (SOMETIMES WORKED)
SIT_DRINK - WORKS
SIT_EAT - WORKS
SIT_FIDGET - FAILED
SIT_IDLE - FAILED
SIT_READ - WORKS
SIT_TALK - WORKS (Looks good for seated talkers.)
SLEIGHT - WORKS
STEALTH_IDLE - FAILED
TALK_CHEER - WORKS
TALK_FORCE - WORKS
TALK_FORCE02 - WORKS
TALK_INJURED - WORKS
TALK_LAUGH - WORKS
TALK_NERVOUS - FAILED
TALK_NORMAL - FAILED (Nothing to show anyway?)
TALK_PLEAD - WORKS
TALK_SAD - WORKS
TALK_SHOUT - WORKS
TAUNT - WORKS
TIRED - WORKS
TOUCH_HEART - WORKS
UNEQUIP_WEAPON01 - WORKS
USEITEM - FAILED
VICTORY - WORKS
WAVE - WORKS
WAVE_SHORT - WORKS
WILDSHAPE - WORKS
WORSHIP - WORKS
YAWN - WORKS

Monday, 9 November 2020

Episode 35: Back To Althéa! (Predestinated Days)

After my few months hiatus to allow me the time to deal with moving home and settling in, I can now report that I have now managed to pick up the NWN2 toolset for the first time in months to allow me to return to building module two of the Althéa Campaign! I must confess that finding my feet again was difficult - not so much on how to work with the toolset, but how to get back into the story. Read on to hear of my return to the build ... 

Where To Begin?

The hardest part for me to do, after simply loading the campaign, was to remind myself exactly where I could jump back in. As I have stated in the past, returning to a build after leaving it for some time is difficult, and after a life-changing event like I experienced, this has been even more difficult. So, without a doubt, this first session back has been slow and involved more to do with reminding myself of the various plot lines as much as anything else.

However, here are some tips I can offer other builders that may be helpful, as they helped me: If you have kept track of plot lines via the journal, then open that and start to read over those quests and plot lines that will help to give the overall feel for the various plots and design. Secondly, hopefully you will have some paper notes to refer to as well (like I have) and browsing over those at the same time will start to help refamiliarise you with the module again.

A final tip that I found very useful is to load up one of the latest test saves and jump straight into simply playing the game from where you were last working. After a few conversations or running around the latest area, you start to notice aspects of the game that need some work, and before you know it, you are tinkering with the first minor aspects of the module, which gradually unravel and lead you into the code and conversations that need addressing.

What Did I End Up Working On?

Let me confess that upon initial return I did not follow my own tips above and thought that just jumping into a smaller area to start again would suffice. Simply put, this did not work! I found myself at a loose end not knowing at what stage the player was supposed to be, and how the area fitted into the overall story arc. However, after I applied those steps above, I found myself wandering back to an area of the mega-dungeon I had started work on a few months back.

Yet, I did not jump into area design (as I first thought I would do), but went to finish off a script I traced I had been working on, and to fixing other sections of code that I discovered had some conflicting tokens. By the time I started addressing this area of the module, I began to find my pace again, and although still stilted initially, it became easier as I slowly started to become familiar with the various aspects of the system I had designed for the mega-dungeon.

Small Steps

It's the first small steps I have taken in a while, but I hope as the days go on, and my wife and I become more settled in our new home, that I may be able to achieve a better pace, where I can start to finish off various areas and move ever closer to making the second module release a possibility. Even in the small sections I did manage, I was reminded how much I am looking forward to this module's release. I hope it will be better than my first, simply because my skills are better than when I first started. Furthermore, I am excited about some of the new mechanics I have set out for it.

Anyway, the toolset has now been re-opened ... I have started to find my way around the module again ... and I hope that all being well, more progress will now begin to take place. And for those that like a screenshot, here is one from the area and an object I was working on today ...

A Strange Rotating Black Crystal!

Tuesday, 14 July 2020

Episode 34: Overcoming Building Delays

UPDATE: I am having to take a hiatus for a few months due to real life issues. Hopefully, I will be able to update again around November time.

Things have been a little slower on the module building for me of late, simply because of real life demands. I have still been making gradual progress, but nowhere near as much as I would have liked. The brevity of this report will reflect this ...

Juggling The Story

One of the most frustrating time dumps (for me at least), is when I have had to take a break from module designing and then come back to it, only to have to go over my notes and code to catch up with where I last left it. It takes me time to work out what stage I had written some of the conversations with respect to the overall plot.

This happened on my return to the module this time around and I had to refamiliarise myself with the systems I was working on and how they interacted with the story. In module two, the player is going to be introduced to some new mechanics that tie heavily into the gameplay. Therefore, to make it work well, the systems and conversations all have to work together to make one practical whole. Thankfully, I have finished these main mechanics, and now it is the case of integrating them into the areas in which they are involved and finish some conversations that help to inform the player through NPC interaction. Believe me when I say, this sounds much easier than it is to implement, simply due to trying to accommodate potential player actions and choices.

One Area At A Time

To help me overcome the issues I am facing above, I decided to approach my building style a bit differently than previous, in the hope that it will help me when returning to building after any future small breaks. To this end, I decided that I am going to try to focus on one area at a time. That may be how people do things already, but for me it is a change, because previously, I used to follow the main plot through various areas until completed, and then finish off accompanying side quests that had come out of the main quest. The problem this time around is that the side quests are much more involved and integrated, and so, at the moment, I find myself following about three paths. It is quite fun to build this way, as it offers diversity for me. However, switching between them is when I have to add extra time to recall what stage I was at for that story line.

How dealing with one area at a time is going to work out (or not) is still open to question. After all, plot stages being addressed in one area are subject to plot stages set in other areas. I intend to add placeholders for these journal entries now, instead of working my design with them as I go, so it will be interesting to see if this works out. The advantage of working an area at a time (especially when it comes to a tighter story line), is that I can focus on all the details for each area as I work with it, as opposed to come back to half finished areas and try to consider elements for it that complement its design so far. Basically, the style and flow of module two requires me to have to reconsider how I can approach its design to make it easier on myself, and avoid wasting time going over my own notes.

Other News

Soul Shaker is undergoing one final play through by a couple of testers. Once one of them has completed their run, and if there are no further issues, I will upload the revamped Soul Shaker v2.00. I have not yet had to make any more fixes for it in its latest testing, and so I think it is probably stable now, but I will wait until the final play. This is why I am back to working on module two of The Scroll - where I did happen to notice a couple of minor issues as I worked on it. These issues were so minor, however, that the latest release (v1.35) was considered an optional update. It addressed lighting for some conversations, player name feedback and some chat text. All very minor fixes, but hopefully the last before I upload for module two. Time will tell.

The screenshot this week, is just another shot for the latest written NPC conversation, which again demonstrates the new PC background options that are available in some conversations ...


The Heroes Enter A Room Uninvited!

Saturday, 27 June 2020

Episode 33: A Confession and A Promotion!

Confession: I have not done any update on The Scroll (module 2) for two weeks now. I gave my wife time to finish play-testing the latest version (v1.33E) of module one (which uses the same core code as module two), so that I know I am in a stable position to continue moving forward. She has now finished playing the module for a tenth time with yet another mixture of PC types, and finally I can say, the first module is released as fully tested and complete. Ten times! you may exclaim, but I hope that also helps demonstrate some of the flexibility the module has as she still had one or two differences from her previous times playing. So, maybe it's time for a new group of adventurers to consider stepping in to help save the village of New Edgeton from their plight ... Is it you? If so, download The Scroll (module 1) now, safe in the knowledge that this version should be the final. In the meanwhile, what have I been doing instead .... ?

Promoting: The NWN Scripting Tutorial

I decided to spend some time trying to put together a basic NWN scripting tutorial for beginners. A number of people visit the forums asking for help with scripting (as to be expected), and I often hear the same questions asked. When I think back to when I first started writing scripts, I can empathise with those that ask the same questions as I did back then. So, with that in mind, I decided to put together a PDF that I hope helps explain some of the more basic steps required when it comes to writing scripts in NWN2 (helpful for NWN1 too).

This tutorial is now finished (at least for the time being), and is now available for download. I tried to keep it in a similar style as I did my XML tutorial, hopefully with what people may consider a more exciting layout than simple text, helping to highlight certain aspects when needed and make it easier to read. As I say in the manual, if it helps someone to achieve a result, then it has done its job.

Soul Shaker Revamp

I have also been SP play testing my newly revamped NWN1 Soul Shaker module, (with my wife doing the same now she has finished The Scroll). This has been progressing fine with me needing only to fix one or two points that got "disturbed" in the code changes. So far I have managed to complete around 75% of the module, and hope to finish it next week, with my wife finishing her play through shortly after. After this, I hope to send the files to a beta-tester, but am not expecting any further issues from their testing. Once they have completed, I will then upload Soul Shaker v2.00 for general release. At this time, SP will have been fully tested, but MP testing will come a bit later when I have the time and opportunity to play it that way later. However, I am not expecting any issues there either. Lastly, although I have managed to fix one or two points of code where a DM support can be used, this will probably have to remain untested, as (a) I will not be in a position to be able to test it with enough players and (b) I don't think there is much call for it nowadays. However, if the module is picked up by a group of players who do want to use it with a DM, then I will give as much support as they need and prioritise help for them.

The Scroll Module Two

Now that the first module of The Scroll is finalised, and once Soul Shaker v2.00 is released, I hope to return to module two of The Scroll. I am hoping the change of topic for the last few weeks and "fresh" start upon my return will help give me a push to move forward in some of the areas that had been holding me back. In particular, I have one or two areas that I need to finish furnishing, and some important conversations to write. In total, there are about four to five plot paths that need bringing together, and I want to be able to give it the attention it needs to do correctly. My concentration suffers at the best of times, and so I need to give it my fullest attention, which I hope to be able to do so knowing everything else is working as it should be. That's the plan anyway.

Can You help The Village of New Edgeton?







Friday, 5 June 2020

Episode 32: Shaken To The Core Files!

Today's blog is a bit different this week, as my attention has been taken by a revamp project regarding my NWN module, Soul Shaker. This came about for two reasons: 1) A player showed some interest in the Soul Shaker module and 2) I wanted to give the code in The Scroll a break from any changes I am making as I write module two. However, all this still helps towards the second module for The Scroll, as I hope to explain ...

Soul Shaker Revamped

Anyone familiar with my projects will know that I have also released a NWN module called Soul Shaker, which received some acclaim back in its day for its innovative ideas. (Podcast.) However, I have now come to believe that there were some coding differences I implemented at the time, which hampered its accessibility and ease of play for players. The current revamp addresses these issues. The gameplay itself, which could raise another argument about its accessibility, is not being changed. The gameplay differences are deliberate plot and mechanic ideas that were implemented to reflect a gaming style similar to System Shock 2 (to which the module pays homage), but within a D&D mythos.

Hak Patch v Databases

Way back when I first started to write Soul Shaker, there was no reliable system in place to patch a custom module so that a player who had already started the module could fix their game if a problem occurred without having to restart the module. Sometimes one could make use of the override folder, but this could become awkward and could not be relied upon. So, at the time, as not having to force my players to start again was a priority for me (as my own group of players would not welcome such), I ended up using databases to track data, which could then be used to replace data and return a player back to the correct point in the game should the module ever need to be updated and replaced. Indeed, the system worked well, and is the only means I know of to date, which would still (to this day), allow a builder to release a module where a player could replace an entire module (not just scripts) and not have to restart their game.

When I first wrote, my coding skills were not as good as they are today, and there were one or two cumbersome operations required of a player to ensure the game updated correctly. At the time, they seemed fine to me, but latest experiences with player feedback have shown me that what may appear straightforward to one person may not be for the next. Therefore, recognising these issues from the past, I decided to look at making the whole process more streamlined for the player by revamping the module and making the whole process more straightforward and intuitive.

As I started this latest revamp, however, it occurred to me that the module components (area designs and objects within them) were now pretty much as stable as they could ever be. Therefore, module updates were not really an issue any more, and that the only real points that needed consideration were potential buggy scripts or dialogues. For these types of issues, I could address them using my own devised "Hak Patch" system, which I had figured out how to implement towards the end of writing Soul Shaker, around early 2007. Indeed, if I had discovered this idea earlier, then I may never have relied so heavily on databases, or even used them at all. However, by the time I discovered the idea, the core database files were integral to the module design and not so easily removed. Rather than do this, I released it and the rest is history, as they say.

Fast forward to today, and after a new interest from players, and my own improved knowledge of scripting, I cannot bring myself to leave the module in its current state. Yes, it works, but the code is still weighed down with inefficient scripting and (now) pointless reliance on databases that require extra unwarranted attention of the player. Therefore, with renewed skills, I decided to remove all the database storage code (that relied upon extra implementation of the player) and, instead, rely solely on the "Hak Patch" system for any future updates that may be required for this re-release of the classic.

Soul Shaker (v2.00)

So what do these changes do for the player? Basically, the revamped version of Soul Shaker will now load and save like any other NWN module. Should the module require any patching (due to a bug), it will be handled by a one hak file download, which replaces the current one being used. The player would then simply reload their current game and continue to play from where they left off with any previous problems resolved. i.e. The Hak Patch system works in a similar fashion as changing the entire campaign folder in The Scroll. (That is how The Scroll is patched.)

The new version will no longer have any "unintuitive" reloading for players, and there will no longer be any databases to deal with at all. Not one! Furthermore, I have now amalgamated all supporting third party haks (of which there were about 13) into one larger hak, making it easier to install in the first place.

All these changes also mean I have to rewrite the Soul Shaker gaming manual that explains how to install or save games as these no longer apply. As an aside, this has been complicated by the fact that I cannot find the original source file for the manual, and so am having to make changes using what I can salvage from the release manual. It is coming along slowly though.

As I have made gradual progress, I have also discovered remnants of older code from a previous system I was using with my own group of players that is simply not used, and requires removing. There is also poor usage of some official functions and a lack of custom functions, which I am now addressing as part of the revamp. I am also trying to add comments to every file that I find to help with any future patching or queries. Currently, as I look at one script, I find it points towards a dozen others, each in turn requiring attention to check the code. I often find inexperienced coding, which requires a rewrite, which in turn requires testing of its own. All this means that it is taking me some time, but I do aim to release it as soon as possible, in the hope that the revamp may encourage new players who may be looking for something a bit different.

The Scroll

Meanwhile, this means I have been able to leave The Scroll alone as play testers test some final changes to its core files that needed to be updated after discovering one or two rare issues to do with Animal Companions, stackable items, auto-storage containers and gold. Note, some of these latest issues have come about after feedback from players who may try to use "console" commands (or "cheats") to aid in their gameplay. I discovered using such can break some aspects of play. Unfortunately, adding code to help circumvent these issues in the event of players who use them without recognising the dangers added one or two teething problems in the new code. These have been the reason for the latest flurry of updates. These and also the discovery that local objects cannot always be relied upon when stored on other objects, especially when recalled at a later time. Such stored objects can become "invalid" due to the way they are tracked by the engine, and so code reliant upon such can break if the objects are no longer valid.

Yet all this is beneficial and to the improvement of the second module of The Scroll. i.e. Problems discovered now will not be present in module two. And as I have currently stopped adding new material for module two (as I revamp Soul shaker), the latest problems I am fixing with The Scroll will now be the final updates required. The v1.32E should be the last version I need to fix anything with for module one.

Soul Shaker: How It All Began!






Saturday, 16 May 2020

Episode 31: The Plot Thickens!

I continue to write more material for module two as time and health permits, and am still applying the odd small fix to module one as I receive feedback from a couple of players currently playing it. For the record, I have just uploaded v1.27E (2nd Edition), which updates my new Animal Companion system to ensure the Animal Companions of companions are also handled by the new system as well as any belonging to a Main PC. I have also made a couple of minor GUI changes. Read on ...

Companions' Animal Companions

This was a quick update to the campaign to take into account a couple of things: (1) If the player had companions that had Animal Companions and (2) If the player had the behaviour setup to allow their companions to summon them automatically. It's a minor change, as previously, the default code was used for when companions did this (automatically), which meant nothing had altered. However, as a player may have more than one PC that could have animal companions, this update now makes sure each named Animal Companion is recorded with its associated master rather than just assume the player only changed the names of their own animal companions. It's an important update for those that have more than one PC that can summon Animal Companions, and like to rename them all for all.

Campaign GUI Updates

After some player feedback, I also updated two GUIs:

LOOT CONTAINER GUI: Previously, left clicking on an item within a loot pile (other than gold) would bring up the current PCs inventory and display the clicked item's examined information in the inventory GUI for the player to read about. However, this could become annoying if the player was trying to pick up individual items from a loot pile, which would force open the inventory even if they had no intention of reading the examine info for the item. So now, the inventory only opens and gives an items examine information if the player right-clicks on the loot item text within the container. If the player decided to right-click on the loot item image icon instead, they will now get both the inventory description and a second GUI offering to transfer the selected loot item to a different PC. This allows immediate distribution to another PC without having to go via the PC doing the looting.

SPELL SCROLL INFO GUI: Previously, subject to one of its two settings in the Althéa Main menu, this small scroll would pop-up with spell duration remaining information for the PC that had spells remaining of them, either (1) If the player possessed the PC on whom the duration spell was cast, or (2) If automatic pop-up was selected for the PC, then whenever the player possessed this PC, it would automatically pop-up if they had any durations spells information remaining on them. By request, I have now added a third state toggle that completely disables any scroll GUI, even if a duration spell is cast upon the PC being possessed. So now, the new "NEVER SHOW" toggle state will prevent any information popping up at any time.

Module Two: More Plot!

As far as module two is concerned, I have simply been writing more conversations. In particular at the moment, companion responses at certain trigger points. These are more involved than they might first sound, as I use my own system to do a number of checks before they start with respect to (a) if there is a specific PC in the party, or (b) if there is a particular PC type in the party, or (c) if we are simply using a default comment or (d) sometimes even if the PC is alone. The system ensures it gives the most intelligent response a party companion can give subject to who is in the party, whether the player has had companions join them from the module, or if they created their own party! i.e. It is particularly flexible and "intelligent" enough to cater for almost any party combination, but, as a consequence, does require more preparation in the conversation responses available.

I am also still in the section that requires me to have to comment or prepare feedback for both conversation and quest stages according to whether the player has selected background one or two at the start of the campaign. Hopefully, it won't be much longer before I can put this difference aside, as the two background choices eventually come together.

Module Two: More Books & Scrolls!

Alongside the conversations, I have been putting together more readable scrolls and books; the types where clicking on a placeable book or scroll (or sometimes activating a book or scroll item) will provide the player with an actual full view of the styled text inside a scroll or book GUI rather than the basic examine text. Without doubt, this offers some great immersion, and is something I hope to fully utilize in module two and moving forward.

Module two is where players who don't know about the main story will learn much about the background of the main plot, which my PnP (D&D pen and paper) players already know. Of course, all players will be able to view these texts, the new player for the first time, and my PnP players in a new light - and in game rather than as a hand-out as in times past.

The Heroes Locate An Important Library!

Tuesday, 5 May 2020

Episode 30: Animal Companions & Module Integrity!

I am still making gradual progress with module two, although some of the latest scripting affected module one (again) due to some of the coding I was working spilling over into general mechanics of the game as a whole. This was especially the case when my wife (who is playing module one for a ninth time and planning a tenth with other characters) noticed that the "Dinosaur Companion" feat she took for her druid/fighter failed to give her the update after levelling. Read more ...

ANIMAL COMPANION UPGRADE

Basically, my wife discovered a bug in the NWN2 game that did not allow her to use animal companion upgrade feat because she had taken it at the time she had levelled as a fighter. She had just become a 5th level druid and first level fighter, and the feat was legitimately taken. However, upon summoning her animal companion, she was attended by her normal companion and not a dinosaur as expected.

While working on the fix (to allow my wife her new dinosaur companion), she also asked if I could add an option to rename the companion. Furthermore, as I investigated the issue some more, I thought it would be a good time to also adapt the code to allow such characters who can summon animals to be able to choose the type summoned from each calling. It seemed a shame to restrict the PC to one animal type that was determined at the time of PC creation. Therefore, I added another button (alongside the new Change Name button I added) called Change Type, which allows the PC to switch their companion as long as they have the feat, it is on full hit points and they are not in combat.

New Animal Companion GUIs
MODULE INTEGRITY

I have also been privileged to have some feedback from another player. During the feedback, it came to light that the player had enabled some "cheats", which appeared to have had an adverse effect on the module. It came to light that some of these cheats had actually worked against the player due to the way my module works. Suffice to say, I recommended removing said cheats, but sadly, the damage had been done to the module and the player had to start again.

I have now added a warning to the download site, to help warn players of the dangers of applying cheats with my module. Furthermore, I have tried to help circumvent these potential pitfalls for future players in the code. Hopefully, the warning will be enough, and the integrity code will never be relied upon. However, it is now there as a potential safeguard against the player breaking their game inadvertently.

OTHER NEWS

I also recently updated module one to v1.25E after a logical flow bug was discovered in the sewer quest if a player did not speak with Grist again after finding/acquiring the sewer book. If the "expected" path had been followed, then this bug would never manifest. However, if a player should deviate by going down the sewers before speaking to Grist about the book, then it would mean the player would never receive the Sewer Access key from Jed. This has now been fixed in v1.25E. The workaround for earlier versions is just to make sure you speak with Grist after acquiring the book.

Module two is still progressing as well. I did further work on background conversation options, and continued to improve the overall efficiency of the code. I now have a number of quests in the module started, and hope to add more in the following  weeks. Here is a screenshot from one I have been working on ...

A Strange Device!

Friday, 17 April 2020

Episode 29: Blood Sucking Creatures Of The Night!

A couple of weeks back I introduced the fact that I am aiming to include vampires in module two of The Scroll ... and this is an update on that course of action. Unfortunately, I did not do as much as I hoped, due to some Windows 10 issues, but thankfully, I did manage some progression. I also managed to do some reworking of the creature drop scripts and HP Bars. To have an idea of what the player can expect, read on ...

VAMPIRE COFFINS

As most hardened adventurers will know, vampires are not easily "destroyed" ... for good. They even stand out from their undead counterparts due to their supernatural ability to avoid such final destruction. And what is the main focus of this ability to avoid such an untimely "death"? ... The vampire's coffin!

The coffin normally represents the final resting place of every mortal soul. However, in D&D, we can never take such assumptions for granted, especially when we think vampires may be around. For vampires, this normally straightforward casket is a place of sanctuary and resurrection. If an encounter with some vampire hunters goes badly for them, they can instantly turn into a gaseous form to avoid further combat and escape to their coffin. Once there, and after an hour's resting, they can quickly regenerate from their wounds and be ready to fight again!

THE ADVENTURER'S ADVANTAGE

However, like all things in D&D, what may be of benefit in one instance, may turn out to be a pitfall if an adversary (like the adventurer) knows how to use it to their advantage. For if a vampire's coffin should be destroyed before the vampire has time to flee to it, then the vampire becomes vulnerable to normal destruction, now unable to flee to its sanctuary. Furthermore, if an adventurer is able to discover a vampire's coffin with the vampire still inside, and they carry a humble wooden stake, then they can also destroy the vampire by plunging said stake into the vampire's heart even before it has time to react. Here is an in-game descriptive text for a coffin ...

In-Game Coffin Description

VAMPIRES & THEIR SPAWN

Thanks to KevL's Creature Visualizer tool, I was able to produce something other than the stock vampire model we have in the toolset. Thankfully, vampires tend to be humanoid in nature, and so I simply crated some new "vampires" from the humanoid models. At first I was concerned about not having the correct teeth for them, but then I noticed that the official vampire lord does not show their teeth either, so decided it was not a major concern. I think the player will be able to see these for who/what they are. The bottom line, I was able to make the vampires look different, be they spawn types (lesser, but still very formidable) or the full blown vampire.

The story behind the vampire connection is still in development, but I do have a major premise to work from now. I also want to update the areas lighting and sounds, which were absent from the area I have, which was kindly put together for me by Eguintir, many years ago now!

OTHER UPDATES

While working with vampires and associated code, I noticed I had currently not allowed some creatures to drop items that may be useful in crafting. This mostly affected either constructs or outsiders. Thankfully, these drops are not critical, apart from they may be useful in crafting certain items with the appropriate skills ... and my guess is these parts are more likely for higher level crafted items. Therefore, any drops, apart from any monetary value, may well have been not usable until module two anyway. That said, if I release another version of module one, then these drops will become available again, but only if the module is started afresh.

In further code updates, I changed the HP Bars for party members to green and also enabled the bar to show above the Main PC as well now. Again, it is a minor alteration, and simply a cosmetic difference that I hope will be appreciated in the next release.

Lastly, I spent some time going over some functions (especially to do with host functions) to ensure the game is ready for additional modules. This is an ongoing point, but will become less of an issue as module two grows nearer completion.

And for those who like a picture, here is a themed one for this week...

The Heroes Discover A Dark & Ominous Place

Friday, 3 April 2020

Episode 28: You Can Count On Vampires!

What a bit of a selection of things to tell you about in this blog! My efforts (for what they are) have been tested in a number of directions, as health permitted during this difficult time. There may be another word with "V" in it that we are all talking about of late, but for this blog, I am going to restrict its application for the monster, the vampire! (The other word was "Covid", but that's the first and last time I will mention it.) So, what's been happening ... read on ...

CLASSIC MONSTERS!

You may recall from a few months back that I managed to put together some scripts that will manage lycanthropy in my next module. Now, in a similar vein, I am trying to rework another horror classic: the vampire! However, none of my vampires will be "Count" like characters ... or at least, they will definitely not be like the caricatured beaten to death more times than even the hardiest of undead characters, "Dracula" if I can help it. I aim to have them simply be the monster that D&D has made them and try to escape the stereo-type portrayal if possible. But who am I kidding! I reckon the "Dracula" character is so embedded in our psyche that it will be impossible to escape some mental images of that persona.

New Visual Effects

So what's new? Well, I discovered that NWN2 did not support the gaseous form that we are familiar with when a vampire wants to avoid an untimely end. Therefore, I had to script a version of that. (See video link below for a demo.) On top of that, I was not happy with the way the vampire model relied on a spell to try to dominate its victim rather than use a gaze attack, so I updated that too.

I also applied some of my previously developed "undead" scripts to ensure level drains work alongside any Life Essences a PC may be carrying. In my modules, Life Essences can act as a barrier towards level draining, in that some undead will drain these from PCs before actual levels.

Other than that, most (if not all) other vampire aspects are covered, from needing magik weapons to hit, fast healing, blood (constitution) draining, damage and other resistances. They are quite a formidable foe, but one that can be overcome if the party of heroes go well prepared; normally with a cleric and accompanying spells.

In Development

I still have some scripting to do with respect to their coffins and stakes, but that is all going to tie in with other plot related stuff and so it will come together in time. And you can thank my wife for their inclusion, as she wanted me to write a story based upon the return of one of her favourite characters from The Scroll (module 1), and this is where it led to. I won't say who that character was, but some of you who have played module 1 already may well be able to guess. :)

GAME OPTIONS!

As most players will know, vampires have the power to dominate their victims. This led me to looking at the various effects that I would need to have the vampire employ, which in turn led to the game option function, GetScaledEffect. This function is basically called when some effects are used on a player to alter the overall effect according to the Game Difficulty settings. Unfortunately, this section of the NWN2 game appears a little buggy, and so I determined to look a little closer at this too, especially as vampires use the dominate effect.

I discovered a number of small issues, but enough differences to what I expected to make me decide it needed "fixing". It's still currently a work in progress, but I do now have a greater understanding of the various effects involved and hope to have an update to this section of the game not before too long. I may even consider releasing another update for module 1, subject to any requests for it or not. If no-one asks for it, then I may just leave it as an update if and when module 2 is released.

The Vampire Combat Video demonstrating new effects ....