Jump to content

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


Tchos

Recommended Posts

I spent some time combing through prefabs today, and I must say I found it to be an educational experience. I really wish the developers had chosen a smaller tile size so that the average "hallway" weren't wide enough, as one reviewer put it, for five burly men to stand shoulder-to-shoulder. But with excellent packs such as Nytir's Building Construction Kit, I should be able to restructure the rooms to take care of some of the larger limitations. Even the simple textured blocks will do much to fix these rooms. The confusing thing is that there are two versions, both by Nytir, and I can't tell if one is supposed to supersede the other or if they're meant to be used alongside each other. BCK II has a more recent update, and says it has over 1000 pieces, while BCK 2.1 appears to have a higher version number, but has a less recent update, and only 218 pieces. The best I can surmise is that the "II" in BCK II is not a version number, and that the original could be written as BCK I 2.1, so BCK II must be the newer version. It's still not clear if there are pieces in BCK I that have no equivalents in BCK II, however.

 

Even without using any BCK pieces, though, I cobbled together a similar kind of stairwell as the kind that I liked from DA:O, for me to use instead of the illogical stairs that come standard in the toolset. BCK has a better-looking stair piece, though, so when I import that, I'll use those, and a handrail, if I can find something that'll work for that. Next to the doorway is an alternate set of stairs that I assembled from shelving. The idea here is not to actually walk on the stairs, but to transition to upstairs by clicking on the doorway. The second pic is what the DA:O stairwells look like, so you can see the kind of thing I was going for. My example isn't as polished, of course.

 

http://4.bp.blogspot.com/-zmn9X7amE8o/T9e2Mu78ZRI/AAAAAAAADRU/UnAzpYl-F2U/s320/stairs.jpg http://3.bp.blogspot.com/-v6daw39xWrs/TvBJBqvKEdI/AAAAAAAACi4/hlbQgKJg8nU/s320/dragon%2Bage%2Borigins%2Bstaircases.jpg

 

Aside from testing things out in the area editor, the only other thing I got done today was going through prefabs and cataloguing the areas I'll be using as bases, or which had elements that I liked for future works, and I also made some placeable prefabs.

Edited by Tchos
Link to comment
Share on other sites

  • Replies 254
  • Created
  • Last Reply

Top Posters In This Topic

It's another glorious day for modding! I started by looking over some more prefabs, and that led me to examine the code for Patcha's sittable chairs. I need to have NPCs sitting in chairs here and there, so I needed to add that at some point anyway. I might as well also enable the player to sit in chairs while I'm at it.

 

Next, I went through my area spawning script and my ambient chatter script, and made both of them generic so that I can use them universally with variables. I don't want to spend too much time making scripts universal, though, since it would probably be faster just to make new scripts for situations as I need them.

 

I also did just that, making a few new versions of my questing scripts to more easily use in conversations, rather than having to manually set variables. Also added some new sound effects and implemented my first shop (a potion shop), using Vordan's Shop Wizard as a base.

 

Next, I converted the finished NPCs to campaign blueprints, and swapped out their placed instances with spawning waypoints.

 

I edited one of the conversations to add skill and stat checks, and created my first quest item, which was a key. I couldn't find any placeable keys to represent it in the game world, though, so it looks like it'll be an item that only exists in the inventory or as a sack on the ground. It's somewhat disappointing that so many common objects don't have placeable versions, but in another way it's rather liberating that you can create any item imaginable, and all you need for it is an icon and a description.

 

One question, though -- what is a tough, but barely doable, DC for a locked door, with an assumed level 10 character with good lockpicking skills? There should also be opportunity to acquire thieves' tools here and there.

 

Another thing I did to speed up my conversation writing is to create a cliptext template for EditPlus, my preferred text editor, so that I can apply all the common text formatting to my text without having to type it (and risk errors in the tags). For instance, for character actions, I'm using text that's both italicised and in light blue. I made a cliptext entry to apply both of those formats to whatever text I have highlighted. While I was at it, I also added those tokens that are in the dialogue editor, just because it's faster to double-click the item from a full-length list than to choose it from a dropdown menu and click a button.

 

I tried out the Legends Spawn plugin again, because I found I couldn't spawn a placeable with the same code I used to spawn NPCs in the On Enter script, and this time the plugin didn't crash. I couldn't find where it was storing its information, but I did find the command I needed, CreateObject. I was searching for "spawn", as the creature equivalent has in its name.

 

I put some barks on the first of the bosses to speak randomly during his fight, but I want him to shout them. I couldn't find any setting to control the line's "volume" in a conversation file, which is where I wanted to pull the lines from, but there is a TALKVOLUME parameter in the SpeakString command, which has constants for "shout" and "whisper", so unless anyone knows of a way to specify those volumes in a conversation, I'll just do it in a script.

 

I started writing the script for the first of the boss fights, converted/imported special sound effects for the purpose using MP3toBMU.

Link to comment
Share on other sites

I started the day's modding with a delicious cup of coffee and plans to tackle the next big tasks.

 

First I added a triggered event that can be avoided with a good stealthy scout. If you succeed, you'll be awarded XP, and you'll get an alternate bit of content. I'm doing what I can to provide multiple approaches to situations, so that it's not all about rushing in guns blazing.

 

Soon I need to import some custom creatures, since so much of this is aquatic-themed. Sahuagin are definitely on the list, and maybe kuo-toa, too, though my understanding is that those don't have combat animation.

 

I made an appropriately-leveled character in Vordan's Hero Creator to test some of the party conversation options, since I had removed all the evil stock characters from my vault a long time ago, and I needed to test a bit that involved an evil check. So far, I'm pleased with how straightforward it is to implement different options for SoZ party characters. After I've created the recruitable companions, I'll see about going through and adding some specific lines for them, though there won't be too many, because I mainly want to cater to playing with a fully player-created party.

 

I had to do some more troubleshooting on the new triggers and spawns, but they were simple mistakes. One was forgetting to actually attach the script I had written, and the other was inconsistent tag naming. I've settled on a naming convention of naming things prefixed with the name of the area in which they'll be used, and also using the area name as the category for the blueprints.

 

Then, when the enemy still didn't spawn, I figured out that I need to create the creature using the resref, not the blueprint tag. And then there was an error due to me renaming a script to match my new standards, and forgetting to update the name on the creature.

 

But, I got the spawning working properly, as well as the sneaky alternative. I'd love to show it here, but it's a bit too spoilery. Videos, I'm afraid, will have to wait until I've got these things added to the actual areas.

 

I also fully implemented my quest indicator system on the two quest lines I've put in so far, and I'm quite happy with the results.

 

It occurs to me now that perhaps bitwise conditions could have simplified the tangled mess of conditions from the difficult conversation of a few days ago. I had never heard of bitwise operations before seeing them discussed on this forum, but it looks like a useful method.

 

As I've been making my first tentative steps in sound set selection for my NPCs, I've installed E.C. Patterson's Sound Set Selection Menu Fix so that I can actually hear them in the toolset.

 

I noticed a problem with the code I used to award XP for picking a lock. It also awards the XP for unlocking it with the key, which I don't want. Perhaps the solution to that would be to have the code conditionally check the PC opening the door to see if she has the key in inventory, and if so, not award the XP. I might have to disable the auto-removal of the key, which I hate to do, but we'll see if it's necessary.

 

I spent a few hours working on the overland map. Still more work to be done on that, but it's coming along nicely.

 

I went back and looked at the lockpicking code again, and took a while to figure out how to check for the key in the inventory. I ended up finding some very useful functions like HasItem() and GetNearestPC() in the include file nw_i0_plot. Much more convenient and easy to understand compared to the built-in functions. So I set the door not to automatically remove the key, checked for the key on the person unlocking the door, and awarding XP only if she didn't have it. It also occurred to me to add a command to destroy the key, so that eliminated my only misgiving.

 

I used GetNearestPC() later when I wanted the boss to say something and do something to the PC when he first perceived him. I guess I'll reveal one little thing here in a screenshot. My enemies are really livening up now! This is fun!

 

http://4.bp.blogspot.com/-vc_5xEBbQ7s/T9ppF3JMrkI/AAAAAAAADRo/RM0VAmoLh4w/s400/boss1.jpg

Link to comment
Share on other sites

Today I started populating one of the taverns. I didn't get much done today, due to company. But I did find out that you actually can copy and paste conditions and actions in conversations. And it's a good thing, too, because this is one of those ambient conversations that uses local variable checking and setting to keep track of which line to speak. Since this is a place the player might return to repeatedly for resting or related functions, I didn't want the ambient conversation to start over from the beginning every time, or it would get very repetitive, and I didn't want to use a random line choice because some of the lines require a sequence.

 

So I set an NPC to use a conversation that included lines and gestures, with a line and a local variable called "line" to handle the sequence. I saw a few examples of this kind of monologue, in both the OC and in modules, that included long, random-looking variable names like NWN2BARK46/gQNuyUUatjeKOhdjExQ==, and I don't see why. I'm guessing it was a legacy from NWN1, and perhaps they were originally using global variables that needed to be very different from each other to prevent conflict.

Edited by Tchos
Link to comment
Share on other sites

Another P&P day, so not much to report on the modding front. I focused my efforts on what seemed doable in the available time, and that was finishing the overland map.

 

My strategy was to modify and expand the overland map from SoZ, with more ocean as needed for my purposes, and with some of the landscape edited to indicate that it's not actually the Sword Coast in this case. I had a little accident, though, in that even after I resaved it as a different module, it was still somehow connected to the official SoZ campaign, even though it didn't show up in that campaign in the Campaign Editor plugin. Nevertheless, the campaign resources were still attached, and I mistakenly deleted them as I was stripping the map down to its essential parts. I probably should have just exported the area first thing, as an ERF, but I wasn't sure if it would export any necessary scripts along with it, or if I had to know what they were and specify them manually. So now I'll have to reinstall SoZ before I can continue playing that campaign, which is the last of the campaigns I haven't yet finished (not counting MoW, which I still need to get).

 

I did export it as an ERF afterward, and found that indeed I do have to manually specify every resource I need. O, for an option to automatically export an area and everything attached to it.

 

However, I don't know why, but several hours of work on the texturing, relandscaping, and placement of new placeables just completely disappeared. Totally reset to the way it was before. I have no explanation for it, but it was extremely off-putting.

 

Edit: Hmm, never mind. My changes somehow came back when I reloaded the map.

Edited by Tchos
Link to comment
Share on other sites

I like what I'm reading Tchos. I particularly like the "you can screw with any NPC" aspect. I really, REALLY wanted to have such an option for Nordock 2, but after lenghty talks with my team and not being able to come up with a system for it, we decided to leave things as they are.

 

Mind you, the reason why we made this choice is because Nordock is a PW. If it was a single player campaign and you, as a player, screwed up a quest by killing a NPC I'd simply add a message stating "You just killed a main character, dumbass! Good luck with that!" But in a multiplayer environment you need to think that one person's choices can ruin the enjoyment of others, so the way you approach the design has to be completely different. Still, I'm glad that you're adding the option and I'm pretty sure I'll try to go on a killing spree once you launch it.

 

 

You probably figured this out already, but the campaign folder is pretty much just a fancy type of Override. In this case it's obviously a must, but I personally reccomend only adding the stuff that you will use through all the modules. This is pretty much a personal choice, but I found a few issues with scripts placed in the campaign folder rather than in the module itself. (The Legends Spawn plugin comes to mind. It wouldn't compile the On_area_enter script correctly if it was on the campaign)

 

And one last thing, remember that I'm currently working on placeables and stuff like that, so if you want something in particular let me know. If it's something I could also use I'll just give it a higher priority for my own project, but I'll gladly send you over the file for your own hak.

Link to comment
Share on other sites

Yes, I agree you probably need to keep neutral NPCs immortal on a PW, unless there's some way of having a separate set of the same NPCs appear (alive or dead) for each player. I'm not going to pop up a message letting people know that they killed someone important, like in Morrowind, which ended the game. They can keep playing, if they want, and I'll just let people exercise their judgement without my commentary. :)

 

Yeah, campaign is like the override, except the override folder takes precedence over certain things, which means I have to put certain files in a hak file (so far, only 2da files). But what you say might explain why I had trouble with the Legends Spawn plugin when I tested it before.

 

So far, the only model that I can think of that I could make good use of for this module would be a more classic-style lighthouse, but I think the towers that are available should suffice. Still, if you're up for it, there is a lighthouse I found as a modders' resource for NWN1 which might be convertible. Could you make just the tower part into a placeable from this? http://nwvault.ign.com/View.php?view=Prefabs.Detail&id=1139 I'm not sure how good the polygon count is, or how the texture is for an up-close building that the players will enter, but if it's a simple texture map, I can replace it with a higher rez one.

Link to comment
Share on other sites

It doesn't look too complicated to adapt. The one thing I wouldn't know how to do are the crystals on the top because I haven't done something like that yet. But hey, I'm all for learning something new, so I'll give it a go.

 

I will try and contact Chaos first, since I don't know if he'd be alright with me butchering his model. But even if he says no, I can always do soemething from scratch. To be honest, I don't like the way towers look, so this is something that I would've start doing eventually anyways.

 

As a last note: Remember that I mentioned before that I draw inspiration from Thief and Planescape, so chances are that my texture will look rather dark and creepy. But since I know you are familiar with retexturing models, it'll probably be a piece of cake for you to adapt the texture to whatever looks right for your own module.

Link to comment
Share on other sites

I hadn't seen that it had crystals at the top. Is it for the lamp? In my case I'd need to replace that with a normal combustion lamp, since the lamp and lamp fuel are part of my module. At any rate, if there's no response for five days, I'd say don't worry about it, due to my schedule. And shortly you can see one that I'm using as a placeholder. But I do want to say that your proposed textures would be quite welcome to this big fan of both the Thief series and Planescape: Torment. :)
Link to comment
Share on other sites

So, it was pretty difficult to get the overland map up and running, with the disappearing water, the grass and placeables that suddenly decided to pop up and levitate high up off the ground, and a walkmesh helper that wouldn't stay at the size I resized it.

 

After getting it all looking fine, I exported it to an ERF and imported it into the campaign, and set about hooking up the scripts and conversations to transition between them, which took some time studying the SoZ overland map code to determine how much I could strip out as unnecessary and still make it work (for instance, I didn't need wandering monsters or hidden goodie caches on this map). I created a harbourmaster NPC to set the player off, and then it was off to the troubleshooting part. I found numerous mistakes, including incorrect script names, but even after that was all sorted, my test PC didn't go to the map.

 

I found that the problem was that the town exterior wasn't in a walkable area. Why? Despite how large the map was (or seemed, since it's at a different scale), only a very small strip of land in the middle was walkable, and the destination waypoint wasn't part of it. So I had to bump up the perimeter by 1 segment (which is actually 4 segments, it seems) to get the walkable area to be a decent size. I filled the extra squares with black. Fortunately, it was just a click to do so, but I had to do it for each individual square because I couldn't find a way to select more than one square.

 

While I was testing this, I noticed that my entertainer NPC needed a longer delay between his lines, so I found a way to set a custom heartbeat for him. I set it to 12 seconds instead of the default 6. Much better pacing now.

 

Next time I tested, the transition to the OM worked. Yay! Very gratifying. I still needed to tweak the height of the walkmesh helper, and while I was there I also did some touchups of the texturing to ease the noticeable pattern on the ocean floor, and adjusted some of the heightmap along the coast.

 

Next task was to add some special music for it! Unfortunately, it wasn't as straightforward as adding custom sound effects. For sound effects, all I had to do was convert them to 96KBps mono mp3s and then convert them to wav-extensioned BMU with MP3toBMU, and they immediately showed up in the toolset when I put them in the campaign folder. No such luck with music! According to my reading, they have to be listed in a 2da. What exactly is the advantage of 2das? I don't understand why the devs used this method. Why can't it just find what we put in the folders, and let us define what the items do within the toolset? My first experiences were with a toolset that worked like that.

 

So, I wasn't sure where I should put my custom tracks in the ambientmusic.2da file. I looked on the wiki for reserved ranges (not sure if that applies for a module like this), but didn't see anything listed there for music. I picked out the SoZ ambientmusic.2da and added a few blank lines to it, and my track at #213. Added the 2da to my hak, and off we go.

 

Well, it showed up, but it didn't play. Maybe it's because of the very high music delay setting. Or maybe the music has to go in the music folder, and putting it in the campaign folder isn't enough. Whichever. I changed both, and the music plays now.

 

The walkmesh helper keeps inexplicably disappearing, besides constantly resetting its size. I can confirm that it's disappearing because when it happens, it no longer appears in the Area Contents palette. Very annoying.

 

I started having some troubles with the baking, as well. It didn't seem to like my overlapping walkmesh cutters, which I applied near a large one rather than repainting the whole thing. I spent several hours trying to fix this, due to frequent toolset crashing on baking.

 

Eventually I concluded that it was a conflict between the walkmesh cutters and the walkmesh helper. It doesn't seem to work the way I expected it to work. I thought that I could lay down a single large walkmesh helper, and then use the cutters to exclude parts of that, but it makes the visible baked mesh go wild. I got it working with a minimalistic mesh, which is not ideal, but will suffice for this purpose. This thing ate up an entire day and a half already, with all the crashing and problems. I had no idea it would take this long! I'm moving on to the next item on the agenda.

 

http://www.youtube.com/watch?v=xDTu_SOXY2A

 

As you can see in the video, for the lighthouse, I'm currently using a tower that came with the game. If all else fails, I could replace it with this stone tower from the RWS Tower Pack. It's somewhat on the squat side to serve as a lighthouse, but I can probably do something about that. The conversation that begins the trip, and the NPC's look, are of course placeholders. The other ship you can see is the pirate ship. All that's missing from the moving ship, in my opinion, are sails.

 

Edit: Replaced video with one with better sound effects.

Edited by Tchos
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...