Jump to content

The Black Scourge of Candle Cove -- Tchos' development diary


Tchos

Recommended Posts

Bizarre trouble time. I did some more work on the docks, and went to test it out, only to find that several placeables and creatures were missing.

 

My first thought was insufficient memory, so I rebooted and tried again. No change.

 

My second thought was that I had hit some kind of object limit for a single area. I researched this possibility, but couldn't find any reference to such a thing.

 

Another thing in the back of my mind was that it had something to do with the fact that I had duplicated the whole module and campaign structure to make a non-module-specific basis for starting new mods, and I had reassigned the new module to use the new campaign. But I continued looking at other possibilities.

 

So to test whether I had hit too many objects, I restored the last two versions of the area, which had worked at last test. The objects and creatures were still missing.

 

I tried reduplicating the hak with its 2DAs. Still nothing.

 

I came to notice that the missing items were campaign-specific placeables and creatures that I had removed from the duplicated campaign folder.

 

I recopied the contents of the original campaign folder into the duplicated one, and tried again. Everything was back.

 

I double-checked in the campaign editor plugin, and the module still seemed to be set to use the correct folder. I reassociated the module with the correct campaign, restored the latest version of the area, and tried again with the duplicated folder removed. All fine.

 

Good. I didn't lose any work, aside from a few hours of troubleshooting.

 

So, back to the work I did. I needed to add a trigger to fire a conversation between NPCs again. It had been a while since I had done such a thing, and I wrote a custom script for it rather than using the generic one I made before, because it would make it easier to edit that way (the generic one would require opening the troublesome area to adjust local variables).

 

In testing, it didn't fire, and I thought it might be because of the length of the name of the dialogue file. I shortened it, and also saw that I had forgotten to set the NPCs to be able to speak to non-player-owned characters, despite having written myself a note to remember to do so in the script comments.

 

It still didn't fire the conversation. I added debugging lines to tell me before and after it issued the conversation command, and both of those showed up, but they didn't start talking! I've done this before, so I don't see why it's not working. I checked their On Conversation scripts and heartbeat scripts, and it all seems fine. So I guess I'll have to do it all through scripting SpeakStrings and no conversation file.

 

I did some more scripting, including adding a check to the generic trigger script to allow you to choose to destroy the trigger after it has done its job, to ease the load off of the computer in checking to see if an entering object is a PC or not, with all the foot traffic around there.

 

In the docks, I replaced about a dozen static doors with unusable non-static placeable doors with my script on them, so that in a future campaign patch after release I can activate them and link them to new interiors in a new campaign module.

Link to comment
Share on other sites

  • Replies 254
  • Created
  • Last Reply

Top Posters In This Topic

I wrote a few more ga_ wrapper scripts to test out the new doors. Certain placeable attributes didn't already have wrappers for changing them, such as "usable" and "name". Obviously, when I make the doors usable and link them to new locations, I want to rename them so that they'll display the name of the new interior, like "Entrance to Shady Den". SetDescription() already had a wrapper, so I didn't need to write one for that. I can use that for signs, which I'm preparing in the same way as the doors.

 

I tested the new doors in-game using these scripts through the console, and made the doors active, changed their display names, and linked them to interiors in the current module. I haven't tried making any transitions across modules yet, but if there's anything unusual about the process, I believe I should be able to handle it by editing the transition script attached to the doors.

 

Wrote a couple more scripts, and got the triggered scripted docks conversation going, with gestures and walking away. Still need to give them some animation once they get to their final locations, and it could probably use a few more lines before they walk away.

 

I investigated one of the other ways of tracking quest progress, from the OC. Personally, I still like doing it by checking and setting stages in the journal as much as possible, since that's what it's for, but I can see some reasons for doing it how the OC did it (at least in some cases), with global variables and a condition checker and action taker for each questgiver or quest. Still, using the journal seems less prone to error. And as I understand it, the journal is essentially just a set of specially-named local variables saved on the player object.

Link to comment
Share on other sites

This isn't strictly related to this module, since I don't have any plans to use this system just yet, but today I was compelled to investigate something that I had found interesting earlier, which was the ability to use input that a player types into the chat window to make things happen in the game. This "listening" system wasn't clearly documented in any way I could see in the scripts and functions available in the toolset, and I couldn't find any explanations or documentation in a web search either. But I picked apart the Dungeon Master creature, which is where I had seen it in use, and read through its scripts, testing a few things through trial and error until I figured out what it was doing and how I could use it.

 

Something like this may be in use in some module somewhere, but I wouldn't know where to look to find it. The purpose I have in mind is to have a hidden thing remain hidden, with no trace, until the player is near it, and says a magic word.

 

So, for instance, there's a wall. The player finds out in the course of the game that there's a hidden passage there, but it is warded against detection. But the player can learn that the words "open sesame" will open the secret passage. The player approaches the wall, types "open sesame" into the chat window, and the wall opens.

 

Or, the player finds a strange model town on a table in an attic. Having heard of what could be done in such a situation, the player approaches the model town and speaks the words "Betelgeuse, Betelgeuse, Betelgeuse", and a strange undead NPC is summoned.

 

It seems to require some spawn in conditions, and since Ipoints don't have spawn scripts, I had to use a creature. I'm not even sure if it's possible for a placeable to "listen". So I dropped in an immortal, unresponsive creature with the "Invisible Man" appearance, and put it somewhere out of the way, and set up its necessary scripts.

 

I also involved a trigger, and a placeable for this setup. I called them the Trigger, the Listener, and the Responder. The only purpose of the trigger is to tell the Listener to start listening.

 

I could probably do without the trigger if I set up the Listener's perception script instead. For that matter, I don't strictly need the Responder, if I build its functions into the Listener, which I assume should be possible, but this is how I have it functioning now.

 

For this demo, I selected a stuffed head as the Responder, and painted the trigger around it. There is no indication of anything out of the ordinary in the game when you approach it, but if you type any of the words/phrases I put into the script while you're close enough to the head (inside the trigger), it'll respond. If you're outside of the trigger and speak the words, nothing happens.

 

In most cases, you probably wouldn't want it to actually speak responses like I'm having it do here just to demonstrate different things happening with different words. I imagine you'd want to cause things to happen silently, or with some floating flavour text or something. Here, as an action for when you speak the proper magic words, I just threw on a special effect, but of course you can make anything you want happen.

 

Link to comment
Share on other sites

  • 2 weeks later...

In these past days, I've worked on many small things that need to be done, crossing things off of my "to do" list.

On the recruitable companions, there is one thing that I couldn't find info on. In the NPC creation descriptions I've found, no one seems to mention the process of setting the NPC's deity, and the fact that the field in the NPC's properties is a type-in field rather than a list box of some kind gave me pause. But I went ahead and typed a god's name in there, and I saw on the in-game character sheet the appropriate god's icon appeared next to the name, so I guess that's how you're supposed to do it. This was important for the divine spellcasters that you can recruit.

I hooked up an important quest conversation and transition to the overland map -- that being the part where you can board the pirate ship. Then I turned to the ship battle itself.

I tried using my newer understanding of walkmeshes and the helpers to improve the shipboard battle scene, but I rediscovered a problem that had caused me to do it a particular way before -- that the walkable SoZ ship seems to have a wall around the entire thing that can't be breached by walkmesh helpers or placeable ramps, even where it looks like it should be down. That makes it unboardable without setting the whole thing to environmental and creating a new walkmesh. The ship's slightly tilted main deck, as well as the three levels with stairs on either side makes this difficult. I ended up switching it with Heed's walkable version of the Grey Ghost, which is a very similar ship in design, but with a slightly different colouration. It was still tricky to get it to work, but unlike with the other ship, it was not impossible. Thanks be to Heed for these invaluable resources!

I also experimented with Casadechrisso's Skins for All Races, which I should have tried much earlier.

Of course I also wrote several more scripts, and expanded existing ones. One is a replacement for the standard speak trigger script, set to trigger only at certain journal stages, and will not stop the party's actions on entering it unless the quest is at the appropriate stage where a dialogue actually needs to be initiated.

Another was an expansion of my idle animation heartbeat script that allows any number of animations to be specified, and randomly chosen between.

I fixed up the day/night cycle of the ship battle, and added appropriate visual and audio effects, and music.

Also, doors. I remember feeling very disappointed at one point when playing the OC, when I got the City Watch quest to investigate the Luskans on the Grey Ghost, and found that I could not actually go on the ship. Instead, all of the interactions took place on the docks near the ship. Having played Oblivion, which had quests that took place inside ships, and Thief 3, which had a very notable mission inside a ship, I was expecting something along those lines. I would think that Obsidian had originally intended us to be able to go inside, but had to scrap it for lack of time or resources -- much like the quest in Highcliff which was written as if it were taking place inside a tavern, but took place outside, suggesting Obsidian didn't have time to make the tavern interior.

So, I thought it would be best in that light not to scrap my ship interiors as the OC had done before me. I already had the ship interior tileset installed because of the captain's cabin area I had designed before, so I went ahead and made one.

Link to comment
Share on other sites

No one did, but I came across it myself a few months ago. I'm using several placeables from that pack -- the pipes, especially, and also the safe and cobwebs.

 

The trap door is a placeable, but the attached script animates your character kneeling down to open it, and it pops open like the standard doors, before you click on it again to be transitioned to the new area. I replaced the script with my own in one place, where I wanted it to act like the rest of my custom doors, which don't require you to click twice to go through them, but I left it as it was for another location, because it's a boss fight, and I thought the extra delay it took to open the door was good for encouraging the players to stay and fight.

Link to comment
Share on other sites

Makes sense. =)

 

Also, a note about Casa's pack: I've had the pleasure of roleplaying and speaking with him--he is a perfectionist and does top quality work. However, the files in that pack are massive. Other than the sheer size, there really is no downside to using them, but at some point you'll need to consider how much you expect your audience to download versus their level patience.

 

 

Another issue with nude skin models--and this is something even Casa points out--is that because skin and flesh bits are mapped into the armor models themselves instead of existing on an "under layer", anytime your players choose one of the races (such as Genasi), they will only see the "nice" mapping (aka Casa's skins) on those particular nude models. There will still be seam lines and color discrepancies anytime the player equips an armor piece with any flesh parts at all, such as warlock armor, "hands", etc.

 

There ARE theoretically ways to correct all of this, but no one to my knowldge has put in the time and effort for it (due to the amount of 3D modeling involved--which is already quite difficult due to the tools required), and because of the daunting size of the file output as a result.

 

Unless you plan on having considerable nudity in the module in some form, it would be my suggestion to go with alternative fixes, such as Viola's Yuan-ti Head reskin.

 

Then some of the space you save can be put toward adding other options, like more hair. (And by gods, is there a lot of hair out there on the vault...) Or heck, even by making what is already available on -some- races available by others:

 

Briescence's Human Hair for Genasi

Grimwolf's Air Genasi Hair for Male Humans

 

 

If it helps, Viola's fix basically just opens the diffuse map that the Yuanti models access, then alters the color on those to mimic that of the usual human heads. It is wise to check the alpha layers on those maps AND the brightness of the tint map channels as well to ensure the most seamlessness with other existing models in the game.

 

For Briescence's and Grimwolf's fixes, they probably just duplicated the models using Runnderduck's MDB Cloner, then renamed the files to fit the naming conventions for Genasi (which is better understood in this tutorial). Easy enough, unless there are clipping issues--which is why Grimwolf did not convert female Genasi hair for Human women. When you run into errors like that, it requires much more tinkering, usually involving Adinos' model manipulating tool, or something as fancy and expensive as 3DS Max.

Edited by Marzipanic
Link to comment
Share on other sites

Or Gmax, which is what I've started using.

 

Not to worry -- I had no plans of including the Skins For All Races textures inside my module. It would be one of the things I'd recommend individual players install if they want to improve things generally, along with Xaltar's facelift pack, but it will not be required for the normal operation of this module. I'd reserve bundling it (and only specifically needed ones) for, as you say, any future module that features much nudity.

Link to comment
Share on other sites

Indeed! GMax is what I've used in the past, though I've noticed problems with the exporter tool when trying to import then export rigged skin meshes. It seems that when I import a NWN2 mesh, it loads in correctly, but with the skeleton weights shifted to the left a good measure, which requires shifting them ALL back manually, and weight painting the entire mesh again...

 

Blah. If it weren't for that, I'd be willing to do more 3D modeling, but because I don't know of a solution to the problem, it makes any kind of editing with that program a huge chore with regards to making character models. Which is a shame...I'd love to see more armor put out there, especially for women. As is, it's mostly lingerie. ;p

 

If you know of a fix, I'd be interested to hear.

Link to comment
Share on other sites

At this point in time, I don't know of a fix. I'm very new to Gmax, and have only used it for creating and retexturing placeables -- no wearables, and nothing involving a skeleton or animation. Any armour or clothing retexturing I've done has been solely in Photoshop with a cloned MDB.

 

I took would like to see more variation in armour, though I think a lot could be done by simply making new shoulder pieces, and retexturing the existing body pieces. Lingerie is easy because it only requires texturing a bodysuit with transparencies.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...