Cutscene: Choreograph a battle
#1
Posté 21 juin 2011 - 04:26
#2
Posté 21 juin 2011 - 04:46
Set up two custom factions that are hostile to each other and neutral to every other faction. Set the plot flag to true on all of these NPCs. This way, they will automatically hack away at each other without you having to script anything and they won't kill each other right away.
If you do want to have some of them die, then keep the plot flag false and just give them alot of HP so it takes longer for them to kill each other.
This will generate a fairly random scene as each NPC's AI will take over just kind of go with it. If you want certain things to happen, you will probably have to dig into scripting.
there is also something on the Vault caleld Nytir's battle system. I haven't used it, but it looks like it may be helpful for you.
May I also recommend that you familiarize yourself with the use of static cameras and use camera angles to give the appearance that there are more combatants than there actually are. This will save some computer processing power.
I don't know if this has actually ever been done before. I'm interested to see how it comes out.
#3
Posté 21 juin 2011 - 04:49
#4
Posté 21 juin 2011 - 04:57
#5
Posté 21 juin 2011 - 05:01
_Knightmare_ wrote...
I have a cut-scene that includes a few different battles in it. Give a bit more info on exactly what you are looking to do and maybe I can offer up some tips. How specific are you looking to be when it comes to the battle playing out?
So my family has this urban legend that we tell, The Curse of the Egg Fairy, which is a monster that creeps around at night, and steals babies. I know, it's kind of a ridiculous story, but I was hoping to make a little movie about it where a group of family members, brave warriors, seek out to find and kill the Egg Fairy. But since it's more for a machinima movie as opposed to a playable mod, I need to have the group of 4 adventurers move across the landscapr, meeting up with various groups of monsters guarding the Egg Fairy. eventually they come upon the Egg Fairy itself, which commences into an epic battle.
#6
Posté 21 juin 2011 - 05:52
IF you don't want to learn scripting, look on the vault for Lilac Soul's scripting tool. This is an application that lets you select events that you want to have happen and then it translates it into NWN2 code that you can paste into scripts. It is very useful.
#7
Posté 21 juin 2011 - 06:03
Nytir's Battle System is good, but only really useful if you are looking to simulate large scale battles. From your description of just a small group of adventurers going about, then it won't be very useful to you. You'd be better off doing smaller individual custom scripts.
For something larger like this, I do a story board first (like they do for real movies) and plan things like the general scene set up, character actions and dialogue, camera angles, etc. The trick when building the scenes is to only build what is viewable from the camera angle and not waste time on the surrounding area.
#8
Posté 21 juin 2011 - 06:16
#9
Posté 22 juin 2011 - 02:04
#10
Posté 22 juin 2011 - 11:21
Modifié par _Knightmare_, 22 juin 2011 - 11:23 .
#11
Posté 22 juin 2011 - 02:40
May I ask, how long has this taken you to put together?
#12
Posté 22 juin 2011 - 05:47
#13
Posté 22 juin 2011 - 06:19
#14
Posté 22 juin 2011 - 11:53
The module itself has been in the works for a loooong time. With my son recently being born it is on the back burner for the moment. That specific cut-scene took me about 20 - 30 hours to get to the point it is at. Lots of scripting going on there to make it all happen. Plus I needed to find a good way to make the camera slide to the side like it does (its actually tracking an invisible NPC). That whole thing is done within a single toolset area, I just keep jumping things around when needed.
@ LotRS - yes and thank you for those areas. I suck at making them myself, 95% of my module is edited prefabs.
#15
Posté 23 juin 2011 - 02:49
#16
Posté 23 juin 2011 - 12:00
Again, I highly suggest doing the "story board" thing before you even open the toolset. It will help a lot when you go to set things up. One trick that I learned when building the areas (providing you have multiple scenes all built within the same toolset area) is to place wall placeables between the different "sound stage" sections. That will prevent NPC1 in scene 1 from running over to attack NPC2 in scene 2 (blocks line of sight).
I'm still learning some things myself, so if you (or anybody else) has some cut-scene tips, I'd love to hear them. If you need any help or scripts that I may be able to provide, just let me know.
#17
Posté 23 juin 2011 - 04:30
#18
Guest_Chaos Wielder_*
Posté 23 juin 2011 - 04:35
Guest_Chaos Wielder_*
#19
Posté 27 juin 2011 - 06:15
However, there doesn;t appear to be basic attack animation available, so staging or choreographing an entire fight sequence doesn;t seem likely. Unless there's something I'm missing (more than possible)
Here are the constants defining the available animations avalable via ga_play_animation
// Looping animation constants.
int ANIMATION_LOOPING_PAUSE = 0;
int ANIMATION_LOOPING_PAUSE2 = 1;
int ANIMATION_LOOPING_LISTEN = 2;
int ANIMATION_LOOPING_MEDITATE = 3;
int ANIMATION_LOOPING_WORSHIP = 4;
int ANIMATION_LOOPING_LOOK_FAR = 5;
int ANIMATION_LOOPING_SIT_CHAIR = 6;
int ANIMATION_LOOPING_SIT_CROSS = 7;
int ANIMATION_LOOPING_TALK_NORMAL = 8;
int ANIMATION_LOOPING_TALK_PLEADING = 9;
int ANIMATION_LOOPING_TALK_FORCEFUL = 10;
int ANIMATION_LOOPING_TALK_LAUGHING = 11;
int ANIMATION_LOOPING_GET_LOW = 12;
int ANIMATION_LOOPING_GET_MID = 13;
int ANIMATION_LOOPING_PAUSE_TIRED = 14;
int ANIMATION_LOOPING_PAUSE_DRUNK = 15;
int ANIMATION_LOOPING_DEAD_FRONT = 16;
int ANIMATION_LOOPING_DEAD_BACK = 17;
int ANIMATION_LOOPING_CONJURE1 = 18;
int ANIMATION_LOOPING_CONJURE2 = 19;
int ANIMATION_LOOPING_SPASM = 20;
int ANIMATION_LOOPING_CUSTOM1 = 21;
int ANIMATION_LOOPING_CUSTOM2 = 22;
int ANIMATION_LOOPING_CAST1 = 23;
// FAK - OEI added for NWN2
int ANIMATION_LOOPING_PRONE = 24;
int ANIMATION_LOOPING_KNEELIDLE = 25;
int ANIMATION_LOOPING_DANCE01 = 26;
int ANIMATION_LOOPING_DANCE02 = 27;
int ANIMATION_LOOPING_DANCE03 = 28;
int ANIMATION_LOOPING_GUITARPLAY = 29;
int ANIMATION_LOOPING_GUITARIDLE = 30;
int ANIMATION_LOOPING_FLUTEPLAY = 31;
int ANIMATION_LOOPING_FLUTEIDLE = 32;
int ANIMATION_LOOPING_DRUMPLAY = 33;
int ANIMATION_LOOPING_DRUMIDLE = 34;
int ANIMATION_LOOPING_COOK01 = 35;
int ANIMATION_LOOPING_COOK02 = 36;
int ANIMATION_LOOPING_CRAFT01 = 37;
int ANIMATION_LOOPING_FORGE01 = 38;
int ANIMATION_LOOPING_BOXCARRY = 39;
int ANIMATION_LOOPING_BOXIDLE = 40;
int ANIMATION_LOOPING_BOXHURRIED = 41;
int ANIMATION_LOOPING_LOOKDOWN = 42;
int ANIMATION_LOOPING_LOOKUP = 43;
int ANIMATION_LOOPING_LOOKLEFT = 44;
int ANIMATION_LOOPING_LOOKRIGHT = 45;
int ANIMATION_LOOPING_SHOVELING = 46;
int ANIMATION_LOOPING_INJURED = 47;
// Fire and forget animation constants.
int ANIMATION_FIREFORGET_HEAD_TURN_LEFT = 100;
int ANIMATION_FIREFORGET_HEAD_TURN_RIGHT = 101;
int ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD = 102;
int ANIMATION_FIREFORGET_PAUSE_BORED = 103;
int ANIMATION_FIREFORGET_SALUTE = 104;
int ANIMATION_FIREFORGET_BOW = 105;
int ANIMATION_FIREFORGET_STEAL = 106;
int ANIMATION_FIREFORGET_GREETING = 107;
int ANIMATION_FIREFORGET_TAUNT = 108;
int ANIMATION_FIREFORGET_VICTORY1 = 109;
int ANIMATION_FIREFORGET_VICTORY2 = 110;
int ANIMATION_FIREFORGET_VICTORY3 = 111;
int ANIMATION_FIREFORGET_READ = 112;
int ANIMATION_FIREFORGET_DRINK = 113;
int ANIMATION_FIREFORGET_DODGE_SIDE = 114;
int ANIMATION_FIREFORGET_DODGE_DUCK = 115;
int ANIMATION_FIREFORGET_SPASM = 116;
// FAK - OEI NWN2 Specific Animations
int ANIMATION_FIREFORGET_COLLAPSE = 117;
int ANIMATION_FIREFORGET_LAYDOWN = 118;
int ANIMATION_FIREFORGET_STANDUP = 119;
int ANIMATION_FIREFORGET_ACTIVATE = 120;
int ANIMATION_FIREFORGET_USEITEM = 121;
int ANIMATION_FIREFORGET_KNEELFIDGET = 122;
int ANIMATION_FIREFORGET_KNEELTALK = 123;
int ANIMATION_FIREFORGET_KNEELDAMAGE = 124;
int ANIMATION_FIREFORGET_KNEELDEATH = 125;
int ANIMATION_FIREFORGET_BARDSONG = 126;
int ANIMATION_FIREFORGET_GUITARIDLEFIDGET = 127;
int ANIMATION_FIREFORGET_FLUTEIDLEFIDGET = 128;
int ANIMATION_FIREFORGET_DRUMIDLEFIDGET = 129;
int ANIMATION_FIREFORGET_WILDSHAPE = 130;
int ANIMATION_FIREFORGET_SEARCH = 131;
int ANIMATION_FIREFORGET_INTIMIDATE = 132;
int ANIMATION_FIREFORGET_CHUCKLE = 133;
#20
Posté 27 juin 2011 - 11:26
I did recently read a possible work-around though. You might be able to make a custom spell in the spells.2da and have it call no script (so it is a "fake" spell). As the Casting animation, you have it use the attack animation. This following link is from the NWN1 forums, but the scripting is so similar that you may be able to get it to work (check the latest few replies mostly): http://social.biowar...30570/1#7738233
Modifié par _Knightmare_, 27 juin 2011 - 11:27 .
#21
Posté 27 juin 2011 - 11:53
#22
Posté 27 juin 2011 - 02:25
_Knightmare_ wrote...
For the most part you can't script things "blow by blow." What you can do of course is have one actually attack the other and have the engine take over from there.
I did recently read a possible work-around though. You might be able to make a custom spell in the spells.2da and have it call no script (so it is a "fake" spell). As the Casting animation, you have it use the attack animation. This following link is from the NWN1 forums, but the scripting is so similar that you may be able to get it to work (check the latest few replies mostly): http://social.biowar...30570/1#7738233
In my tests, I had the speaker attack the listener, but as far as I know, there doesn't seem to be a way to interrupt it to continue with the scripting out of the scene. Dialog will continue, but they're still duking it out. I'll look into this custom spell solution and see what it offers.
Since my group will be trading jibes with the enemy during the course of the battle, I want to maintain as much control over the battle as I can. (Remember, this isn't a playable mod, but a machinima attempt) Also stopping it at variousd points, having the enemy flee with the group chasing, resuming, with the resulting culmination in the battle itself. You know, like a Spider-Man and Doc Ock battle.... LOL
#23
Posté 27 juin 2011 - 02:26
The Fred wrote...
You can also use the SetCombatOverrides() function to do stuff. It's probably easier, though I haven't really used it much myself.
I've never heard of this, but I'll investigate it. Thanx.
#24
Posté 27 juin 2011 - 03:40
#25
Posté 27 juin 2011 - 03:46
The Fred wrote...
You can use it to make people, say, automatically hit or deal a set amount of damage. That way, you can ensure that a given NPC wins a combat or one-hit-kills an enemy, etc.
As far as I can tell, this function was created specifically for cutscenes, but in what I've read, it doesn't really seem it's for use of animations. Here is the link where I looked it up: http://nwn2.wikia.co...CombatOverrides
It seems related more to the damage an attacker gives during a round of combat.





Retour en haut






