ColorsFade's Development Journal
#101
Posté 07 avril 2013 - 07:45
That encounter argument is a good one, btw.
#102
Posté 07 avril 2013 - 09:03
koundog1 wrote...
Is that picture supposed to be you "beating back the bugs", so to speak?"
That encounter argument is a good one, btw.
LOL, no, but that's a funny thought.
No, that's just an encounter from one of the *completed* areas now. It's a small, final boss queen spider in a basement. You're level 1 or 2 at that point. It's a fun little side-quest early in the game.
I thought the screenie was cool, so I posted
#103
Posté 10 avril 2013 - 08:08
I've spent the past two days just marveling at the awesomeness of Tchos' cave. I'm seriously excited about the possibilities for my own campaign.
I desperately needed caves. I didn't know you could do this (use an external area with a cave roof), so I was just planning on using the stock stuff indoor tiles, some RWS deep caverns tiles, and making do with what I had. Then I saw that cave and my imagination absolutely lit up.
That's precisely what I needed.
I downloaded and played Skyrim late last year (2012) and I loved some of the cave/dungeon designs. I was so wishing I could do that with NWN2... And now I can. I'm jacked. So many of the things I really wanted to do with this module are now possible...
But I made a promose to myself that I wouldn't start working on any other modules for this campaign until the first module is done. So...
What I've been doing lately is testing conversation trees. One NPC in particular, who happens to be the first NPC you can interact with who can create "artifacts", has required a lot of testing. In addition to being an artificer, he's also a blacksmith, a quest-giver, and a shopkeeper. There were a lot of conversation options available based on not just journal entries, but local variables on the PC and possible items in the PC's inventory.
Testing all the options in the tree was getting to be painful, so I wrote a testing script just for this character (which I plan to copy and change for additional complex dialogs). The testing script sets or clears Journal entries and local variables, as well as clears the PC's inventory and adds any items necessary for certain conversation branches. All I have to do is run the script and pass an integer corresponding to a switch statement I want to run. The script sets everything up and I can start the converation at the appointed place in the tree, to check flow.
Testing this way has revealed something interesting to me...
What I learned is that using OncePerModule for conversation nodes, while a nice idea, is impractical for testing purposes. For instance, if you want to have an initial greeting type of node, and you set it to once per module so that it never fires again, when you are testing you have to sit through that conversation every time (because each time you load up the module to test, it's the 'first time'). That really slows down testing.
So, What I've done is stopped using that flag, and instead use Journal entry checks to determine whether to show a dialog choice. This makes testing way faster. I can now run through my script, running each of the switch statements in one testing run, and it is really handy for finding converation errors.
The other thing I ran into was I learned that checking inventory of the PC can only be done on the PC's node, because the NWN scripts use GetPCSpeaker(), which is kinda not what you want. It means you can't check the PC"s inventory on an NPC's line of dialog.
This is bad because crafty players can cheat the artifact system (or they could have - I already fixed it with a custom script).
Here's how things worked:
The artifact system, as I've said before, is a bit like Cromwel from BG2. If you have the right items in your inventory, the NPC will make a special artifact for you.
But the problem is, between the check in the dialog line for the PC and the line where the NPC actually gives you the item, there's an opportunity for the PC to swap the components to another companion in the party... thus keeping the components and still getting the artifact. Now, maybe not everyone would catch on to that cheat, but I didn't want it to happen at all, so I had to fix it.
The solution is to check the PC's inventory on the NPC's last conversation node where they go to "craft" the item for the PC (I fade to black here for a few seconds to simulate time passing), and if the items aren't there, the NPC goes to a second line a dialog that says, "It looks like you're missing the components, come back later, etc, etc." But, since the inventory checks only work on PC nodes due to GetFirstSpeaker(), that doesn't work on an NPC node...
So, I had to write a custom script to fix it; it uses GetFirstPC(), so we can always check the PC's inventory in any dialog node. And hence that cheat is now kaput.
The nice thing was, once it was all done and tested, it worked. You need to fetch some components (and I plan on making use of a lot of different mundane items for this). The reward is kind of nice for level 2-3 and somewhat unique. I really plan on making as many unique items as possible.
And the other thing is, I give you some choices when it comes to the reward. In this case, the reward is that the blacksmith will craft you an artifact weapon - so you get to choose between a blade, axe, blunt or peircing item. But I don't allow every option; the sub-items you can select are limited in this case(Short Sword, BattleAxe, etc).
I didn't want *every* option available because that's a LOT of dialog lines to write and even more blueprints to copy and make. So there is some limitation with this first artifact you can get. However, I do plan to even things out of the course of the campaign. Some NPC's will specialize in martial weapons, or armor, or only a specific type of armor, or only amulets, or only rings, or only robes, etc., etc. So there should be lots of opportunity to interact with different artificers and get neat lootz. Thus, not every item will be totaly customizable to your PC character. Which is okay - your companions need stuff too, and if you want, you can sell the artifact and use the coin at vendors. The vendors aren't generally going to have as good of items as the artifacts, but they will have some decent gear.
Putting this together was kind of fun. I'm excited to completely this first module so I can play all the way through it and see how the rewards and loot balance things.
#104
Posté 10 avril 2013 - 10:27
You use GetPCSPEAKEr for checking the player.
and OBJECT_SELF for checking the NPC in conversation with the player.
NWN2 scripting is really powerfull, there aren't many thing that you can't script.
Also if you are unhappy on how some scripts handle things, you can writte your own. It's difficult to be true to what you want to do without making custom scripting.
So far the things i wanted to do with NWN2 scripting and couldn't can be counted on the fingers of one hand.
Modifié par Shallina, 10 avril 2013 - 10:29 .
#105
Posté 14 avril 2013 - 05:28
This week was mostly about conversation testing. I've learned that this is the single biggest time-sink for me - writing and testing conversations, quest updates, xp rewards, item rewards, node conditions, etc.. I am not sure if it's because of the way I do conversations or what, but this takes quite a bit of my development effort compared to other tasks.
One reason I know this is taking me longer is because I prefer to test my conversations fully and quickly. I come from an "Agile Software" background, and so I am accustomed to writing a lot of automated unit tests. I don't have that option here, so everything has to be tested by hand; by actually running the game and clicking on NPC's. That can be time consuming, so I've worked up a strategy to make it faster and simpler.
What I've come up with the next best thing to an automated unit test, which is test scripts for each NPC conversation. Each script does some basic work up front: clearing inventory on the PC, clearing all related local variables, clearing all related quests from the Journal via a call to RemoveJournalQuestEntry(), and then in the switch statement, setting the appropriate Journal entries for the node I want to test.
This gives me a script with n number of case statements inside a switch. All I have to do is open the debugger and type the script, passing an integer for the switch statement. The script does it's thing and then warps me to the NPC for testing (this way I don't have to constantly change my start location, I can run these scripts anytime, anywhere).
But in order for this to work effectively, I have to *not* do certain things. One thing I cannot do is use the OncePerModule feature of a conversation node, otherwise it buggers testing (I have to exit and restart the module to test a node again - not good when what I really want to do is just run the test script for every case statement in one sitting).
But that is remedied by using an local variable. Every NPC sets a local variable on the PC when they meet, called "MET_SOANDSO". And I just use that flag in the "greeting" conversation node to know to only fire it one time. Once the PC has 'met' someone, the greeting node never fires again.
The other thing that complicates issues a bit is that I have figured out I have two types of quests: main quests and side quests (duh, really, but they are handled in conversation differently, and that wasn't apparent to me early on in my development).
The main quests - for simplicity of testing and because you cannot advance the story without them - I have decided there is no option for the PC to "decline" the quest. This makes testing easier and creates fewer dialog nodes.
But side quests are different. I want the PC to have the opportunity to decline all side-quests (you shouldn't, and there are going to be nice items when you follow them, but I like giving people options when it comes to quests). The player can get the quest later, at any time, if they want. But I don't want it to be 'required', and hence the dialog nodes have to be handled differently.
For one thing, side-quests have to provide the PC with an option to decline it. That means another node. They also have to provide the PC with the option to receive the quest later, irrespective of any other main quests the NPC might hand out, which means choosing conditionals wisely.
The impact here is that this makes for more test scenarios in the switch statement of the test script. I have to test that the PC can pick up the side-quest before or after a main quest that the NPC might also hand out. I have to make sure things get ordered correctly so that the side-quest doesn't interfere with anything else the NPC might do in conversation. I'm getting the hang of this, and thankfully it's getting easier due to test scripts, but a first it was kind of a nightmare. Especially with no easy way to test...
The other thing I did, which I thought was kind of cool, was when you first load up the game you are right outside the gate of the first town, and as you walk toward the gate the gate guard hails you and begins a conversation. In that conversation he'll tell you about the main interest points in town,etc..
Well, today, I altered that conversation a bit. I switched it to a NWN2 style conversation and I placed static cameras around town outside each of the main buildings that the NPC is describing. So as he hits his dialog node saying, "the blacksmith is over there on the south hill, blah blah blah", the screen is showing you the exterior of the building. It makes for a nice little intro to the town and when I watched it back I was really tickled. It's a small touch, but it was cool. I dig stuff like that.
Finally, this week was about converting encounters to spawns. I'm spawning almost everything now (only one encounter left to do) and it's so much nicer working with blueprints. I like the fact that I can change a blueprint and it can affect every instance as opposed to me having to touch every placed creature....
Also, another place where this is really useful is item blueprints. As I said before, I've created this "artifact" system for really unique items, and the components are placed in containers as special loot (or on certain creatures). Well, what I've done now, instead of placing the item, is add a script to the container or creature so that OnOpen or OnDeath, the 'artifact' or unique item is spawned at that point. What this allows me to do is, if I change my mind about something on the item, be it name, description, stats, I can change the blueprint and I don't have to open the area and go back and edit an inventory and re-place the item. That is huge to me... Very flexible.
Well, back to work. There's SLS2 lights to work on next...
#106
Posté 28 avril 2013 - 10:07
I've always been fascinated by stories from Hollywood of directors who start filming without a finished script, and yet were still able to finish while making a movie. The bits just fall out of people's brains as the train moves along... I feel a bit like that right now.
When I started this campaign I had a big idea. I knew where I wanted to start, where I wanted to finish, and I knew about one point in between. But I knew I needed about dozen more points in the middle to really fill it out. Yet, I trusted that the rest would "sort itself out" as I went along.
Today, that happened.
I've been really struggling with certain parts of building this campaign; particularly when it came to creating blueprints for notes, journals, or quest conversations; anything that really pushed the story arc along (conversations being the worst; writing dialog without a clear picture is tough). I needed specifics to make much more headway, but I didn't have enough story developed. So the specifics have been difficult to generate. I have room in this story for a lot of points between A and Z...
Part of the issue was the World Map. I couldn't edit it because the screen was black. But the resurrection of a recent thread gave me a solution. After trying out some fixes, I had a working World Map.
The next problem kept me occupied for two days. I simply had a crappy World Map. For one thing, it was very heavily labeled. And that was a problem, because a lot of the interesting areas on the map had nothing to do with my story. Even worse - there were some areas on the map that were really small, and I needed to be able to cluster several map point icons in those spots (kind of like how the city of Neverwinter has three World Map points). So, I was short on map real estate I needed, and I had excess map real estate for areas I wasn't going to use. I had to figure out how to fix that...
What I really needed to do was tweak the map proportions. I needed a few forests to actually be larger than they were (because a lot happens in these forests, and I needed more room for map points) and I needed some others areas to shrink because they were consuming valuable map real estate.
My first solution was to build an external area where I could skew the proportions, decorate it with roads, rivers and trees, place a camera up high and point it isometric-like, and take a picture and then use that. But that ended up being very time consuming and it simply didn't look good in the early stages. The exterior areas just don't look good from a distance, so I cut my losses and moved on.
That was when I decided to fire up Photoshop and edit the original map JPG. Oh... thank you clone tool.
The clone tool is a minor miracle. In minutes, I was able to expand forests, slightly re-route rivers, clear areas for multiple city map points (a city is a dot on the JPG, but for the in-game map you need several 32x32 squares) and remove all the text. I had a working map after an hour and I'm still tweaking, but it's mostly done now.
Having a working map changed everything. I was able to start entering all the map points and setting the icons for all the known locations I wanted to use. But there was still a lot of stuff I didn't know yet... so my brain started working on the story. I knew I needed to fill in some gaps.
The biggest thing was that I knew what my main story arc was going to be, but it's a story arc that doesn't reveal itself for a while. It's a high-level adventure at its core, and I was starting my campaign at level 1. The initial areas and quests all tie into it, of course, and it all makes sense in the end; everything that happens in those first two or three levels actually ties into the main story arc, so the player doesn't have to feel fooled or feel like the events are irrelevant, because they aren't. But, there's a lot of middle ground that needed to be thought out and developed to get from point A to point Z.
Working on the map was a catalyst. A really good one. Seeing locations on the map - all that space available for map points - made me start doing more research and asking the question, "Well, how can I use that location in this story?"
Faerun is an awesome world with so much lore and history. I started thinking... How could I use this location or these creatures? Part of figuring that out was also looking at the toolset and seeing what kind of baddies are available and then researching them to figure out how their motivations might fit into the story. And from there things developed.
Today I was able to finally plot it all out. All the acts. I realized that what I've been working on, this first module, is just the prologue. Acts I, II and III came along after I was able to do all the research and answer my own questions. And I really, really like where this is going now.
I mean, I liked my initial story quite a bit; and there's a reason why it's the *main* story arc. But now it has meat to it. Now there's a clear path... And there's a truckload of content between point A and point Z. This is big. Just what I wanted. It's epic really. I'm going to wet my pants playing through the 3rd act. The encounters are going to be so much fun to script...
But that just means more work. I was really hoping to finish the prologue by the end of April, but it's not gonna happen. Maybe May. We'll see. This project is huge. I wish I had an interior decorator, LOL...
#107
Posté 28 avril 2013 - 11:37
Which April were you thinking of?
PJ
#108
Guest_Iveforgotmypassword_*
Posté 29 avril 2013 - 07:30
Guest_Iveforgotmypassword_*
#109
Posté 29 avril 2013 - 01:56
PJ156 wrote...
Heh ... I see passion and scope creep coming in equalt measures
Which April were you thinking of?
PJ
I wanted this April (two days from now) to be the end of the prologue (I was thinking it was "Act 1" at the time, but it's clear to me now, with the story being fleshed out, that this is the prologue). It looks more like the end of May now for this prologue to finish. I think another solid month of work will finish off the prologue.
I've done a LOT of work. And most importantly, these first couple of months have been about learning the toolset and learning to work with it and be productive. I feel like I have a really good grasp on it now. In the beginning I would spend 80% of my time learning how to do something and 20% of my time building content. That feels reversed now, which is good. I open up the toolset and open up my excel spreadsheet to see my task list, and I just started working. Very little time is now spent trying to figure out how to do something new.
As for scope creep.. I knew this would be huge. I'd say my scope is still matching my intended size.
I intended for it to be huge. When I started looking for player-made campaigns that were level 1-20 I didn't find any. Obviously there's a reason for that - generating that much content is a lot of work. But that's what I wanted to do. I wanted to create a giant campaign to play, both for myself, and for others who really like playing huge campaigns.
There's a lot of great modules created by the community, but the best ones seem to be very narrowly focused; often they are designed for a specific class and for a select few levels (ex: Maimed God Saga, the Wizard's Apprentice, and the recently released Crimmor). They are vignettes. Great ones, to be sure, but focused.
I wanted to create a module that was akin to the OC or the Baldur's Gate series: you can play any race/class combo you want. You're going to get to travel through at least 20 levels of content. You're going to have a chance to really explore a character you want to build and have fun with it.
I figured 18 months for development before I even started. Right now, that still feels about right. Maybe it creeps to two years; okay. I can live with that. I'm committed to doing this right and giving the player an awesome experience.
#110
Guest_Iveforgotmypassword_*
Posté 29 avril 2013 - 03:48
Guest_Iveforgotmypassword_*
In the mod I'm building my party are currently at level 17 and since about 14 it's been main quest all the way. I've stuck them in a very nasty place that can account for anything I want to throw at them and made things that are done on the way force the PC into action because of the nature of the crimes being commited and walking away is not an option. Although they still have a job to do it's also not that urgent as they have the element of surprise so they have time to spare for good deeds.
I'm not trying to put you off but I've made one module with levels from 4-18 and another from 1-14 and it's hard not to run out of steam, momentum and to maintain interest with the story.
Good luck though and it certainly sounds like you know what you're doing and are enjoying yourself.
#111
Posté 29 avril 2013 - 05:02
Iveforgotmypassword wrote...
To go into higher levels you're going to need a good reason for high level encounters and pretty mega side quests to stop them feeling like xp giving fillers. .
Oh... there's a good reason for the high level encounters. A very good reason :-) I love high level encounters, and I wanted more of them in the OC. That's a huge motivation for this campaign.
The high level stuff is what I can't wait to get to. I've been thinking about this campaign for a long time. Act 3 was the easiest act to outline. And it got easier after I bought a specific book and found a specific place on a map that tied directly into what I wanted to do. I bought a specific AD&D manual a while back just for this, and was treated to exactly what I was hoping to find. It's been fun to figure out how to incorporate the lore and enemies into this campaign.
It was the stuff in between the Prologue and Act 3 that I didn't have many ideas for. Fortunately. Faerun is rich in detail, lore, and enemies, and various landscapes and regions are diverse enough to provide fodder that makes sense.
I'm big on stuff making sense. I don't like feeling fooled, for one thing. I've written about this before in this journal, but I'll say it again: I hated the whole "trial" bit in the OC. I worked my ass off to develop personal relationships with all my companions so I could win in court, and for what? So Lorne could choose trial by combat? Ugh... That ticked me off. Next time I played through I skipped 30 minutes of pointless dialog and chose the combat myself.
I intend for everything to make logical sense and for the player to never feel like they just wasted a bunch of hours of playtime. I don't want to be aggrevated myself.
I was pleasantly surprised to find a very appropriate adversary for the first Act when I was doing research. Not only do they fit level-wise, but also geographically and motivationally. I couldn't have lucked into anything better. They tie into the story nicely. There are some decent espionage/intrigue elements in that first Act. Normally I don't care much for that sort of thing, but here is makes sense. I think a key part of it being cool will be the encounters.
Act 2 is takes on a different tone and motivation, albiet all the while tied to the main arc.Act 2 tells one companion's story in a way that I find very interesting. Her story is tied directly to the main arc, and so it all works together to progress the story. This is probably the most interesting character in the campaign to me. Her role is very big and integral.
As for side stuff, there's going to be a lot of opportunity for side quests, and the companions, as you suggest, are going to be a part of that. Already in the prologue you meet several different potential companions, and their quests are part of your adventure in a logical, meaningful way. Later on, some companions you are introduced to have side-quests separate from the main arc. You're free to take these companions along and to their quests, or ignore them. However, you might want to take them or trade someone out of your group due to their skill sets.
The big side-quest stuff is going to be the artifact quests and a few things that are related to the locale. For instance, in Baldur's Gate 2, I really loved the Kangaxx quest and the Beholder Cult quests. They're completely unrelated to the main story, but they're fun encounters on the side (and net some decent loot). I want to have a couple of those in there. The city I'm centering this on has the perfect side-quest location just for that... Should be fun.
But the artifacts are what get me jazzed. The best weapons/armor/items in the campaign are going to come from these quests. Some of the elements for these artifacts you'll find along the main quest route, but sometimes you'll have to go off the main story arc to finish an artifact quest. You're going to want to do that... because these things are going to be helpful. There's no crafting in this campaign, so if you want the good stuff, you're going to have to work for it a bit.
Iveforgotmypassword wrote...
I'm not trying to put you off but I've made one module with levels from 4-18 and another from 1-14 and it's hard not to run out of steam, momentum and to maintain interest with the story.
Good luck though and it certainly sounds like you know what you're doing and are enjoying yourself.
Don't sweat it.
My motivation ebbs and flows and that's natural and expected. But the key is consistency. I just try and do a little bit every day. Some tasks on my list are clearly more involved that others. Some are just mundane and boring (interior decoration - I loath the most). I work on what I feel like and keep pressing things forward. Consistency is the key.
And I am enjoying this. It's fun to see things come together. It's fun to fire up the module and walk around; to test encounters, to see quests get updated, to watch XP handed out, to see loot appear, to read through conversations...
I find conversations to be a lot of work, and also very rewarded when I feel like I finally get one "right".
#112
Posté 12 mai 2013 - 05:21
I'm not sure there is anything more motivational than being able to be productive with this toolset. It's so nice to be able to spend a only few moments in the toolset and get something accomplished. That ease of use gets me motivated to launch it every day and do something, even if it seems small at the time.
Lately I've been refining my conversation/quest/journal test scripting technique. I have my script design down to a fine science. As such, some time has been spent going back into the older test scripts and refactoring them to match this more efficient method of coding. The payoff is nice - it's easy to test the conversations, various node options, and see the results. Each test case prints a debug to the chat window to tell me what to expect: what sort of option should be available, if a quest is going to be given or updated or finished, what rewards I should expect to receive, etc. The debug printout is key because I find that if I leave something alone for a few days and come back to it, I forget exactly what all the conversation choices do, or are supposed to do, etc. It's nice to be able to just type a test script and variable into the debugger and have it print back to me what I should be testing and what to expect to see as a result.
I'd say the past two weeks have consisted mostly of dialog creation and testing. I really want to be able to play through the prologue by the end of the month, even if all the indoor areas aren't completely decorated.
The other day I decided to fire up the module and see how far I could get before I came across something broken. And in the process of doing that I just had fun. It's a fun world to play in. It's pretty to look at and I just enjoy running around in it.
It wasn't long until I ran into a conversation that didn't function correctly and I had to stop playing, but that only motivated me more to refine my testing process.
The other thing that's come out of this is I've refined the way I write conversations. There are a myriad of different ways you can do it. I've settled on a system I think works good for my module and my testing. One thing I've been wanting to do is just come up with a consistent and simple format for building conversations. I finally have that in place and it's making it faster and easier to start cranking things out.
Having the World Map Editor working has also been really nice. I've finally been able to code and test all the map updates that happen at various conversation nodes. That part has been missing and it's been driving me nuts. My little Excel spreadsheet has had several conversations sitting at 95% done because that last 5% was doing a World Map update and testing that it reveals the icon correctly. Seeing 100% done on things gives me a warm fuzzy.
I almost did a video of the intro. Maybe next time. In the meantime, this journal entry signoff is an image from an area I just did. The encounters aren't all done in it yet, but the first encounter is. I grew up in Idaho and there's a lot of neat high mountain lakes. This was inspired by a lake I've been to a few times.
#113
Posté 12 mai 2013 - 06:43
PJ
#114
Posté 12 mai 2013 - 11:55
PJ156 wrote...
I too have a standard for for conversations and will be working one up for my next project also. How have you formatted yours?
PJ
Because I like to test mine with a script, and to try and do it in one session/pass (meaning run the game and not have to exit and re-run), one of my very strict edicts is that I do not use the "Once Per Module" flag on any of my conversations, even though many nodes require that. So to achieve that feat, I use local variables. This allows me to stand at the NPC and type in the debug window, pass a new integer value to the script, and test the entire conversation in one session.
Let me explain from the beginning (apologies for my writing today; it's mother's day, and my wife and I have "tied one on" so to speak; I'm not entirely sober).
One of my first rules is: each Conversation has only two nodes: a) A "Greeting" node (when the NPC doesn't know the PC) and a "Non-Greeting" node (they know the PC by name). This helps make thing simpler (as opposed to many nodes that may be strictly quest related, such as "So, what happened at the crypt?"). This might seem trivial to experienced modders, but this was not evident to m at first. I would have nodes in the module where the NPC would immediately start a conversation with something like, "So what happened at the crypt?" based on a journal entry. This is fine, but is slightly more complicated (to me) to deal with. So, hence the two starting nodes mandate.
Underneath the non-greeting node is where all the conversation nodes take place in original form. If they need to exist as options in the greeting node, they are linked there as well.
The greeting node has a conditional on it that is checked. It is always called "MET_TAGOFNPC". Once the PC initiates that node, the flag is set to true, because now the PC has met the NPC, and that node is no longer necessary. You can achieve this same thing with the "Once Per Module" flag, but that prevents you from testing that node in one session/pass with a script. This variable allows the node to only fires once, but is easily re-set with the ClearAllVariables method called at the top of the script (described next).
I want to make sure I can test all the sub-nodes in that greeting. So instead of using "Once Per Module" or "Once Per COnversation", I use a flag. I hope that makes sense.
Thus, in my test script. when it fires, the first thing the test script does is call a local method call "ClearAllVariables()", and this method clears/removes all the Journal entries and local variables related to this NPC's conversation and quests.
Then, I have a case statement in the testing script. It accepts an integer, and that integer is a constant enumeration, like SOANDSO_GREET, SOANDSO_GIVES_QUEST_A, etc.
The rest of is is conversation entries and I try very hard to make sure I can loop back to the beginning. Most of my NPC's have a line near the end of a node like, "Is there anything else I can do for you?". The PC then is presented with the orignial list of options to choose from, and they can go down another node if they like.
The exception to this is "rumors", which I always put a "once per conversation" limit on. Rumors often have conditionals on them based on journal entries (the NPC gives out rumors that are relevant to where you are in the plot progression). This makes it so that it's still testable in one session (because each test resets the conversation), but someone limited for the player, so they can't elicit all rumors in one sitting (you have to re-engage the NPC if you want a different rumor - if there's one available). It works out well in practice when playing, so I'm going with this.
I hope all of that makes sense. It might seem trivial, but it's actually made my life quite a bit easier to have these rules in place. While it's neat to have an NPC start a conversation with a line like, "Have you taken care of those rats yet?", I find it's easier for me to test and understand if the NPC first offers a line like, "Hi Aaron, how may I help you?" And then the PC has all the speech options available to them and can choose an option like, "I took care of those rats for you." It's a small distinction, but it works for me.
Hope that isn't too jumbled.
-CF
#115
Posté 12 mai 2013 - 11:56
#116
Posté 13 mai 2013 - 12:32
#117
Posté 13 mai 2013 - 01:24
Modifié par DannJ, 13 mai 2013 - 01:25 .
#118
Posté 13 mai 2013 - 02:19
{C > 10}You won!
{C == 10}You're almost done!
{C > 1}You forgot something?
{C =+ 1}Please, go kill that monster for me!
{B > 5}I heard you did something important.
{A > 2}Hey, you're that guy my cousin was talking about.
{}Who the heck are you?
The way it works in development, as you build the module from the beginning to the end, the most recent stuff you're working on is always at the top, so you don't get lost navigating through conditional trees. And it's easy to insert nodes just to give players a hint mid-quest. It's also easy enough to link down to a lower node, to repeat a set of questions, for example.
The main benefit, though, is that everything works off of the journal. If something gets messed up, you can just fix it mid-game with ga_journal. A once-per-game conditional can't be fixed.
A fun way to mix up the convos is to use custom tokens. A custom token script, unique to each character, could pick out a greeting at random (or based on quest-state), so that the player gets a varied response, even though it's the same node that's getting used. Custom tokens might work well for your rumours, too, you could just set up some variables to keep track of what rumours have been heard. Check out the amb_chat scripts in The Danaan Unvanquished for a working script.
#119
Posté 13 mai 2013 - 03:47
A fun way to mix up the convos is to use custom tokens. A custom token script, unique to each character, could pick out a greeting at random (or based on quest-state), so that the player gets a varied response, even though it's the same node that's getting used. Custom tokens might work well for your rumours, too, you could just set up some variables to keep track of what rumours have been heard. Check out the amb_chat scripts in The Danaan Unvanquished for a working script.
There are lots of great things you can do with custom tokens. I have a cloud giant in an upcoming module who greets you in Jotun ("Helsingen <customtoken>"). He uses a script that assigns the nearest Jotun word for your class to a custom token, via a 'switch/case' function. 'Krigga' for fighters or paladins, 'skald' for bards, 'tuv' for rogues, etc.
Not that any player is going to notice it, unless they happen to be fluent in Jotun (or possibly Norwegian).
#120
Posté 13 mai 2013 - 12:07
DannJ wrote...
If you do use a "once per game" conversation node, and it leads to something important to the plot (setting a variable, writing to the journal, etc), then make damn sure you make that conversation "multi-player cutscene". Otherwise players can hit the escape key after triggering the "once per game" node, but potentially before the plot-critical node is reached, meaning they can never reinitiate that conversation node again. That's a potential game breaker.
I was wondering how to facilitate that. Good advice. Thanks DannJ.
#121
Posté 13 mai 2013 - 02:00
Lugaid of the Red Stripes wrote...
The way I usually set up my conversations, I basically work backward from the end to the beginning. The first nodes you see in the editor are always from the end of the module, each with the gc_journal conditional set. With the latter quest lines on top, it's easy for them to fall through. The last node has a more generic greeting. Say I have three quests in my module: A, B, and C. A convo might look like this:
{C > 10}You won!
{C == 10}You're almost done!
{C > 1}You forgot something?
{C =+ 1}Please, go kill that monster for me!
{B > 5}I heard you did something important.
{A > 2}Hey, you're that guy my cousin was talking about.
{}Who the heck are you?
The way it works in development, as you build the module from the beginning to the end, the most recent stuff you're working on is always at the top, so you don't get lost navigating through conditional trees. And it's easy to insert nodes just to give players a hint mid-quest. It's also easy enough to link down to a lower node, to repeat a set of questions, for example.
The main benefit, though, is that everything works off of the journal. If something gets messed up, you can just fix it mid-game with ga_journal. A once-per-game conditional can't be fixed.
This is pretty much the way some of my conversations were working. And I may revisit this concept again in a particular place or two.
One of the issues I was having is that not everything in my conversations is triggered off the journal. And that is because I wanted "side-quests" to be "optional" to the player. So you can actually "decline" a side quest. If you go back and visit the NPC again you can decide to take the quest at a later point, or continue declining if you ask about it again.
But in order to do that, I had to use variables, because as a slightly OCD person, I didn't want loose journal entries for the player. If you decline a quest, I don't think the journal should have an entry for it. Not until you accept it.
I may need to revisit that structure though. I know I had some conversations doing that (that linear ordering).
#122
Posté 14 mai 2013 - 06:34
If you are a developer like I am, you will know the importance of organizing and planning, and the resultant decrease in overall project time. Do not let anyone tell you otherwise. Metrics are also a valuable indicator of progress... a clear trip-ometer. I would add one more sheet to your excels, listing all the loot in the game. This helps point out imbalances, such as the consistent lack of helmets, or excessive long swords.
Your everquest and BG2 reference is much like my own, now old, released work. I have 2 mandatory companions, with 3 other party slots available with 5 or 6 possible companions to fill them. I did achieve an epic final battle in my Islander campaign, that even if you do everything right, takes at least seven minutes straight of fighting, healing, and possible rebuffing. If you wish to see it, you may download the Islander Campaign and contact me for a way to quickly open the final battle, and create a quick party with my debug kit and test it out.
The long and the short of it is this: the battle requires you to use your defensive damage absorbing spells and use the right damage type to harm the final boss. He does area of effect damage but not at a rate so violent you can't react, thus giving the intended marathon fight, ala a raid boss in eq.
I like the idea you mentioned of possible limiting certain companions to certain armor types. A warrior who only uses banded armor for example, would bring much value to an otherwise useless armor.
The only other unsolicited advice I have is to use as much custom content as you can when it comes to terrain and placeables. A new UI window/interface as well. There should be some already available. The game is old.... really old. It takes a major facelift to freshen things up enough to really grip the nwn2 veteran module player.
Carry on.
Modifié par Eguintir Eligard, 14 mai 2013 - 06:38 .
#123
Posté 14 mai 2013 - 07:06
As a player, I'd advise (or ask, if you prefer) against that, unless it's somehow compatible with other mods, or optional. Some people, myself included, use custom UIs and shouldn't need to change their preferred configuration in order to play a module. I didn't use those mods when I played Islander, so I don't know if it was an issue there.Eguintir Eligard wrote...
A new UI window/interface as well.
#124
Posté 15 mai 2013 - 01:59
Eguintir Eligard wrote...
My only advice is that even if you don't make the different chapters released one at a time, do complete them in full before moving on.
Oh, no question. That was already a set-in-stone edict for myself.
Eguintir Eligard wrote...
]If you are a developer like I am,
And I am
Eguintir Eligard wrote...you will know the importance of organizing and planning, and the resultant decrease in overall project time. Do not let anyone tell you otherwise. Metrics are also a valuable indicator of progress... a clear trip-ometer. I would add one more sheet to your excels, listing all the loot in the game. This helps point out imbalances, such as the consistent lack of helmets, or excessive long swords.
The loot sheet is a good suggestion. I already have a sheet for the artifacts (which are the uber-loot of the campaign), but tracking the hand-crafted loot as well is a good plan. I definitely want to watch out for imbalanace.
Since the campaign is designed so you can play any race/class, I definitely do not want to short-change anyone in the loot department.
Eguintir Eligard wrote...
I did achieve an epic final battle in my Islander campaign, that even if you do everything right, takes at least seven minutes straight of fighting, healing, and possible rebuffing. If you wish to see it, you may download the Islander Campaign and contact me for a way to quickly open the final battle, and create a quick party with my debug kit and test it out.
Excellent! I will do that. I love seeing how other developers put together epic battles.
Eguintir Eligard wrote...
The long and the short of it is this: the battle requires you to use your defensive damage absorbing spells and use the right damage type to harm the final boss. He does area of effect damage but not at a rate so violent you can't react, thus giving the intended marathon fight, ala a raid boss in eq.
Very cool. That's my intent with a lot of stuff in this campaign.
Eguintir Eligard wrote...
The only other unsolicited advice I have is to use as much custom content as you can when it comes to terrain and placeables.
As was mentioned by someone else, I won't be messing with the UI for reasons stated.
However, I am using as many placeable HAK/MODs as I can get my hands on. There's a lot of good user created content and I will be making use of it.
#125
Posté 16 mai 2013 - 12:25
Eguintir Eligard wrote...
If you are a developer like I am, you will know the importance of organizing and planning, and the resultant decrease in overall project time. Do not let anyone tell you otherwise..
One thing I really appreciate is that as I learn the toolset and how to move efficiently with it, development time decreases (as it should when one becomes familiar with any tech stack).
I did a few things today that only took minutes, that I know would have taken me hours in the beginning.
One funny thing from today: I have a guard barracks where some of the plot conversations take place. As I was walking around the room I noticed that the two places where I had chandeliers hanging I could not walk. That's the kind of bug that would have killed *hours* for me earlier. But here I figured it out in two passes. The chandeliers have to be set to "walkable" and then you have to re-bake the area. Problem solved.
I don't know why chandeliers act that way, but I don't care. Problem solved!





Retour en haut





