Difference between revisions of "User talk:ShadowDancer"
imported>ShadowDancer (yup, a late night) |
imported>GhanBuriGhan (Nice tut) |
||
Line 107: | Line 107: | ||
:::[[User:ShadowDancer|ShadowDancer]] 13:41, 28 July 2006 (EDT): I think this is the first time we had this conversation actually. Yeah, I was up really late (especially since I was up about 9 am yesterday) which is why the [[Advanced Quest Tutorial]] got the ''to be continued'' added to it. I was starting to loose track of what I was typing. LOL! I started trying to write a quest earlier this week and kept bumping into things I didn't understand about how the quests worked so I decided this was necessary to flesh out how some things work in the quests and what certain options do because there wasn't a clear example that someone could follow. Some of the pages on the quest functions are less than explicit in what any particular item does or how it works. The pages describe what the checkboxes and things are for, but without an example of how to use them properly, I was playing trial and error. The original quest tutorial skips over a lot of things that can be done when creating a quest so I thought I would start writing something more in depth about creating quests. | :::[[User:ShadowDancer|ShadowDancer]] 13:41, 28 July 2006 (EDT): I think this is the first time we had this conversation actually. Yeah, I was up really late (especially since I was up about 9 am yesterday) which is why the [[Advanced Quest Tutorial]] got the ''to be continued'' added to it. I was starting to loose track of what I was typing. LOL! I started trying to write a quest earlier this week and kept bumping into things I didn't understand about how the quests worked so I decided this was necessary to flesh out how some things work in the quests and what certain options do because there wasn't a clear example that someone could follow. Some of the pages on the quest functions are less than explicit in what any particular item does or how it works. The pages describe what the checkboxes and things are for, but without an example of how to use them properly, I was playing trial and error. The original quest tutorial skips over a lot of things that can be done when creating a quest so I thought I would start writing something more in depth about creating quests. | ||
:::::[[User:GhanBuriGhan|GhanBuriGhan]] The tutorials are great. But as you mention, I think the original pages could use a little more info too. Maybe not examples as in a tutorial, but more explanation would be helpful, I think. |
Revision as of 12:50, 28 July 2006
Dragoon Wraith TALK 11:59, 22 June 2006 (EDT): Regarding update to Effect Shader at 7:40 June 22, 2006, which you marked a minor edit - that is not a minor edit. Please, only mark spelling/grammar fixes and formatting changes as minor. Any time you add or change the information in an article, that is a major change, and should not be marked as minor. Thank you.
- Dragoon Wraith TALK 01:00, 4 July 2006 (EDT): Ah, don't worry about it, just letting you know.
Dragoon Wraith TALK 15:16, 6 July 2006 (EDT): Thanks for looking into CreateFullActorCopy and SetActorFullName. I'm wondering, you mentioned in my talk page that something contradicted what was in the article - which of the articles, and what was contradictory?
- ShadowDancer 19:32, 6 July 2006 (EDT): In the SetActorFullName article it says "Note that while the function is called on a reference, it actually changes the name of the base object, so all instances of that NPC/creature will have a new name." Maybe I am misreading what its saying, but to me it reads as if I were to change the display name on a skeleton to 'George the Skeleton', it changes every instance of the display name on skeletons in the game to display 'George the Skeleton'.
- Out of curiousity....Is this like a spell effect that will effect random characters? Or is it something that will only effect a few specific individuals? Because you could always create a "shadow world" containing a few copies to be brought out on command if that's the case, and then could just shuttle them back into the "shadow world" when done with them for the moment.
- Dragoon Wraith TALK 22:14, 6 July 2006 (EDT): Actually, the idea is that I'll automatically hit every NPC with a scripted spell that will check if they are any one of a list of IDs (namely, the list of every NPC in the game whose name is "Bandit" or "Guard" or whatever), and based on which ID they are, add a scripted ability to them which will randomly choose a name and apply it to them. This would be awesome, if SetActorFullName only affected references, but if it affects objects, I have a problem (namely, every Necromancer in the game will be "Kiriaden the Foul" or something, instead of all of them getting a unique name).
- Your tests show that either CreateFullActorCopy creates a new object or that SetActorFullName in fact only affects each reference (or both, which works just fine for me). Unfortunately for me, I suspect the former is true, which makes the latter less likely. More testing will have to be done. I'll have access to an Oblivion-capable computer soon... I hope.
- ShadowDancer 22:41, 6 July 2006 (EDT): Ah I see what you are saying. I think it will depend on how you hit each NPC. If you can check the xxxRef of the NPC, I think you can do a SetActorFullName without to much trouble (aside from hitting all the correct NPCs). Now that I am thinking about it, I wonder if maybe the name change for all objects is due to trying to do a name change on the base model NPC/creature??? I will have to see about it when I get home tonight and have access to Oblivion.
- ShadowDancer 04:59, 7 July 2006 (EDT): OK, I have checked through the NPCs and most of them are unique with all of the city guards with more than one copy having an editor ID reference (there are only a couple of them however). Most of the NPCs occur only once, with exceptions like the Blackwood Company Guards and some Mythic Dawn Assassins. These do not have any editor ID reference so changing the name on any will indeed change the name on all of them. There are only a few that are done this way in various places. This also won't take into account any created actors off of the base reference model if someone duplicates them someplace in the game. I may also have inadvertantly missed some so you might want to double check and see when you get access to Oblivion.
- Dragoon Wraith TALK 10:03, 7 July 2006 (EDT): Thanks again for your help. Regarding the number of copies of the 'generic' NPCs, most of them are in levelled lists, meaning they spawn all over the place, but you wouldn't get that information from the Use Info page. Use Info will tell you what levelled lists they appear in, and then you'd have to check each list to see how often each is used. Basically, it comes down to a lot of references of the same object (the NPC) over and over again. This is kind of sad (Morrowind had names for just about everyone, only guards didn't get their own names, because they respawned and there were infinite guards). I don't like the generic names.
- It looks like I'll have to CreateFullActorCopy each one, delete the original, and name the copy. The obvious problem with this is that the copy isn't a completely accurate copy, which is a great shame. The good thing is that I'm dealing with a limited number of objects, so it's do-able. It's just going to take a long time to do.
- The other issue is that this could theoretically cause serious lag, since these scripts will have to run on just about everyone in the game. The good thing is that there's a lot of room for optimization, and they only have to run once.
- ShadowDancer 14:57, 7 July 2006 (EDT): OK, now you have me curious about another thing. How are you creating a list of names? I can't find anything about using string values anywhere which is what is necessary for the names. Or were you going to set a random number in a variable and have a large number of if-then statements?
- Dragoon Wraith TALK 21:36, 7 July 2006 (EDT): The latter, hence my worry about performance...
- ShadowDancer 04:52, 8 July 2006 (EDT): Ah, I can see why. Damn, thats going to be a massive script. Well, on the bright side, you could make it only fire when the player comes within some range of an NPC. Its not like you need to do all of the NPCs at once. I suppose it could bog down in some instances like the final Oblivion gate in Bruma perhaps. You would have to test it and see. The trick doing it that way would be to keep track of whether or not someone's name has been changed. Set a flag on the NPC? Possibly add a dummy faction like the NameFaction? It seems like that would probably be the easiest way to track the NPCs. That should actually cut down on the performance issues.
Dragoon Wraith TALK 14:41, 8 July 2006 (EDT): (going back to the left margin) I can already check to make sure that I'm not renaming someone who's already been named. That would mess things up. And I'll only do everyone in a given cell, though in Exteriors that still could be a lot of people. I have several ideas on keeping performance hits to a minimum, I'm not overly worried about it.
Here's a thought:
float random ;between 1-1000 [...] if ( random < 500 ) if ( random < 100 ) if ( random < 50 ) if ( random == 1 ) [...] elseif ( random == 2 ) [...] elseif ( random == 3 ) [...] elseif ( random == 49 ) [...] endif else if ( random == 50 ) [...] elseif ( random == 100 ) [...] endif endif elseif ( random < 200 ) [...] elseif ( random < 300 ) [...] elseif ( random < 400 ) [...] else [...] endif else if ( random < 600 ) if ( random < 550 ) [...] else [...] endif elseif ( random < 700 ) [...] elseif ( random < 800 ) [...] elseif ( random < 900 ) [...] else [...] endif endif
At most, 59 If checks to run. Comparing a number to a variable produces negligible performance hit - I think the computer can handle 59 variable-number comparisons when the player first enters a cell.
- ShadowDancer 05:20, 9 July 2006 (EDT): Looks pretty solid. Sounds like it shouldn't have too much of an impact unless someone is running a very slow machine. Of course, they would get the impact for a lot of things that happen in the game as well and I doubt they would be looking for add-ons at that point. What is the plan for the dialogue and AI? I couldn't figure out a way to add those to a duplicate copy. I also have a question: do you know how the Look function works? I came up with a way to make the player turn but it isn't the best solution because the what I came up with is a bit jumpy.
- Dragoon Wraith TALK 10:46, 9 July 2006 (EDT): I haven't figured out what to do for the dialogue. AI, I'm dealing with a finite number of NPCs - I know what AI packages they're running, so I can move that across to the new one. There's a lot of them, of course, so it'll take ages.
- Maybe I just won't do the guards. I think just about every other 'generic' NPC is immediately hostile and doesn't need dialogue anyway.
- As for Look, it doesn't do what you want it to do. It forces an NPC to look at something - you know, the way NPCs watch things, turning their head to follow it? That's what it's for. The game wasn't designed to allow you to control the player, so I doubt you'll get any smooth ways to do it.
- ShadowDancer 18:38, 9 July 2006 (EDT): Well, leaving the guards out should make things a bit easier. Honestly I don't recall any generic NPCs that weren't hostile outside of a couple guards, so you are probably right on that count. Out of curiosity, have you tried to do a RefreshTopicList on a duplicated NPC or is that something that only works on the Player?
- As for the turning thing, I came up with a new idea for it that works a bit better than my original one. I am now using Rotate on the Player. Unfortunately, even with the Player controls disabled, the player can still turn so that can screw things up, but its better than it was. I decided on a 2 second "turn around" time which is actually fairly smooth considering. Not much worse than normal turning around from what I can tell. I swear I don't notice the jumpiness until I am trying to do something like this and then all of a sudden I notice every little flicker on the screen.
- Dragoon Wraith TALK 14:44, 10 July 2006 (EDT): Actually, I haven't tested anything in terms of Dialogue yet, I just sort of assumed that there would be problems based on the discussion my question generated. Now that I think about it, if Oblivion does dialogue like Morrowind, there's a good chance there won't be a problem, since, at least in Morrowind, dialogue was often filtered by race/gender/class/cell rather than by ID, especially with generic characters (guards). But then, Morrowind had quite a different dialogue system (one many complained about, but I found quite intuitive - I don't quite understand Oblivion's, but I haven't spent much time with it).
- I would recommend using GetHeadingAngle or something to make sure that the player hasn't messed things up by looking around.
- ShadowDancer 21:29, 10 July 2006 (EDT): Great minds think alike. Thats exactly what I used to figure out how far to rotate the character, with a timer counting to ~ 2 seconds passing, and dividing the total angle off by 2. Works pretty well. I did the same thing with the Talking Creatures? script. Its just a pain trying to constantly check the angle so I didn't bother doing that. I figured that eventually the person would wonder why they were moving sideways or backwards and look anyways. Ideally there should be some way to lock the place that the character is looking, but that probably only happens in animations/cut scenes.
Dragoon Wraith TALK 08:54, 28 July 2006 (EDT): Out of curiousity, what timezone are you in?
- ShadowDancer 13:13, 28 July 2006 (EDT): I am in the eastern time zone, up in NY.
- Dragoon Wraith TALK 13:30, 28 July 2006 (EDT): Damn, up late last night, huh? I'm in NYC, actually. (I feel like we've had this conversation before)
- ShadowDancer 13:41, 28 July 2006 (EDT): I think this is the first time we had this conversation actually. Yeah, I was up really late (especially since I was up about 9 am yesterday) which is why the Advanced Quest Tutorial got the to be continued added to it. I was starting to loose track of what I was typing. LOL! I started trying to write a quest earlier this week and kept bumping into things I didn't understand about how the quests worked so I decided this was necessary to flesh out how some things work in the quests and what certain options do because there wasn't a clear example that someone could follow. Some of the pages on the quest functions are less than explicit in what any particular item does or how it works. The pages describe what the checkboxes and things are for, but without an example of how to use them properly, I was playing trial and error. The original quest tutorial skips over a lot of things that can be done when creating a quest so I thought I would start writing something more in depth about creating quests.
- GhanBuriGhan The tutorials are great. But as you mention, I think the original pages could use a little more info too. Maybe not examples as in a tutorial, but more explanation would be helpful, I think.