Help with assembling animations [solved :D]

In this forum you will find and post information regarding the modding of Star Wars Battlefront 2. DO NOT POST MOD IDEAS/REQUESTS.

Moderator: Moderators

Post Reply
MileHighGuy
Jedi
Jedi
Posts: 1194
Joined: Fri Dec 19, 2008 7:58 pm

Help with assembling animations [solved :D]

Post by MileHighGuy »

well i made a new character so i thought hey ill make custom animation for him! so i put a bunch of other characters anims together and munged it,and i got the files, no errors,and my map didnt crash. but when i played as my character he had luke's anims the default ones.(i specified the new animations via odf also)

here's a download link to see what i did> no need fixed

im thinking he needs combo files, is that so?
if its true then i have no idea how to make those.

thanks

Edit: tested anims on the royal guard
Last edited by MileHighGuy on Sun Feb 01, 2009 12:44 am, edited 3 times in total.
User avatar
Fiodis
Master of the Force
Master of the Force
Posts: 4145
Joined: Wed Nov 12, 2008 9:27 pm
Projects :: Rannoch + Tientia + Tools Programming

Re: Help with assembling animations

Post by Fiodis »

If he has a saber, he will need a COMBO. Look through them, you might be able to just put bits and pieces together, although I really know nothing about COMBO creation.
MileHighGuy
Jedi
Jedi
Posts: 1194
Joined: Fri Dec 19, 2008 7:58 pm

Re: Help with assembling animations

Post by MileHighGuy »

anbody know where a tutorial on combo creation is? :?
User avatar
Fiodis
Master of the Force
Master of the Force
Posts: 4145
Joined: Wed Nov 12, 2008 9:27 pm
Projects :: Rannoch + Tientia + Tools Programming

Re: Help with assembling animations

Post by Fiodis »

The Jedi Creation doc.
User avatar
Frisbeetarian
Jedi
Jedi
Posts: 1233
Joined: Wed Sep 12, 2007 3:13 pm

Re: Help with assembling animations

Post by Frisbeetarian »

BF2 Jedi Creation.doc
User avatar
Maveritchell
Jedi Admin
Jedi Admin
Posts: 7366
Joined: Mon Aug 21, 2006 11:03 pm

Re: Help with assembling animations

Post by Maveritchell »

You'll find more help and more in-depth information if you look at "combo.txt" in the docs as well. Additionally, I think a tutorial was written up on GT; always be sure to check the "Everything you need" thread before posting a "help" topic.
MileHighGuy
Jedi
Jedi
Posts: 1194
Joined: Fri Dec 19, 2008 7:58 pm

Re: Help with assembling animations

Post by MileHighGuy »

well i read a guide and changed the animations name and combo file but it crashes still and since i have the dvd version and cannot get an error log, so could someone download the source file and see what is wrong? i updated the link in the first post

thanks

ill post my combo file and screenshots if youd like
User avatar
Fiodis
Master of the Force
Master of the Force
Posts: 4145
Joined: Wed Nov 12, 2008 9:27 pm
Projects :: Rannoch + Tientia + Tools Programming

Re: Help with assembling animations

Post by Fiodis »

MileHighGuy
Jedi
Jedi
Posts: 1194
Joined: Fri Dec 19, 2008 7:58 pm

Re: Help with assembling animations

Post by MileHighGuy »

combo
Hidden/Spoiler:
OffhandAnimation("stand_useforce", "FIRE")
{
Loop("FinalFrame");
AimType("Torso");
BlendInTime(0.15);
BlendOutTime(0.15);
}
OffhandAnimation("stand_useforce", "FIRE2");
OffhandAnimation("stand_useforce", "CHARGE");

Animation("stand_attack1a_end");
Animation("stand_attack1b");
Animation("stand_attack1a_upper")
{
AimType("None");
BlendInTime(0.0);
BlendOutTime(0.15);
BlendTimeTo("stand_attack1a_end", 0.0);
BlendTimeTo("stand_attack1b", 0.0);
}
Animation("stand_attack1a_lower")
{
BlendInTime(0.15);
BlendOutTime(0.15);
BlendTimeTo("stand_attack1a_end", 0.0);
BlendTimeTo("stand_attack1b", 0.0);
}
ThrowAnimation("stand_throw");

State("CATCH_SABRE")
{
Posture("Stand");
// Sound("saber_catch");
Animation("stand_catch")
{
AimType("None");
BlendOutTime(0.2);
}

InputLock("All", "!Thrust");
AlignedToThrust();
}

State("IDLE")
{
Duration(0.0); // infinite duration
EnergyRestoreRate(); // (0.0, "FromSoldier")
InputLock(0.15, "Sprint", "Jump", "Crouch");

Transition("DEFLECT")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Posture("Stand", "Crouch");
Energy(">=", 2.5); // at least half a second worth of deflect time
Button("FireSecondary", "Press");
}
}
Transition("BACK_ATTACK")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Posture("Stand", "Crouch");
Button("Fire", "Press");
Thrust(">", 0.25);
ThrustAngle(135, 225);
}
}
Transition("ATTACK1")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Posture("Stand", "Crouch");
Button("Fire", "Press");
}
}
Transition("DASHATTACK")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Posture("Sprint");
Button("Fire", "Press");
}
}
Transition("JUMPATTACK_FALL")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Posture("Jump", "Jet");
//The following should be true during a jetjump, jump, or fall
// unless we're more than 0.35 seconds from the apex
//NOTE: This may not allow luke to jump attack during longer falls
// or falling from a force jump when it could.
//VelocityY(">", -6.3);
Button("Fire", "Press");
}
}
}

State("DEFLECT")
{
Posture("Stand");
Sound("imp_weap_lightsabre_block");
Animation("stand_block_idle")
{
Loop();
AimType("None");
BlendInTime(0.15);
BlendOutTime(0.15);
LowResPose(0, "Frames");
}

Duration(0.0); // infinite duration, looping anim

InputLock(0.0, "All", "!Thrust"); // lock all but move controller for duration of state
EnergyRestoreRate(-10.0); // drain energy while ready to deflect
Deflect()
{
DeflectAngle(-110, 110); // deflect anything from forward arc
EnergyCost(0.0);

DeflectAnimation("stand_block_front1", "Forward")
{
// AimType("Torso");
BlendInTime(0.00);
BlendOutTime(0.05);
LowResPose(5, "Frames");
}
DeflectAnimation("stand_block_front2", "Forward")
{
// AimType("Torso");
BlendInTime(0.00);
BlendOutTime(0.05);
LowResPose(5, "Frames");
}
DeflectAnimation("stand_block_left1", "Left")
{
// AimType("Torso");
BlendInTime(0.00);
BlendOutTime(0.05);
LowResPose(5, "Frames");
}
DeflectAnimation("stand_block_left2", "Left")
{
// AimType("Torso");
BlendInTime(0.00);
BlendOutTime(0.05);
LowResPose(5, "Frames");
}
DeflectAnimation("stand_block_right1", "Right")
{
// AimType("Torso");
BlendInTime(0.00);
BlendOutTime(0.05);
LowResPose(5, "Frames");
}
DeflectAnimation("stand_block_right2", "Right")
{
// AimType("Torso");
BlendInTime(0.00);
BlendOutTime(0.05);
LowResPose(5, "Frames");
}
}

Transition("ATTACK1")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Button("Fire", "Press");
}
}
Transition("DEFLECT_ROLL") // same as the code checking for rolling
{
EnergyCost(25.0);
If()
{
Break(); // all transitions are breaking if Duration is 0
Button("Crouch", "Press");
Thrust(">", 0.9);
ThrustAngle(-120, 120);
}
}
Transition("DEFLECT_CROUCH")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Button("Crouch", "Press");
}
}
Transition("DEFLECT_JUMP")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Button("Jump", "Press");
}
}
Transition("DEFLECT_SPRINT")
{
If()
{
Break(); // all transitions are breaking if Duration is 0
Button("Sprint", "Down");
}
}
Transition("IDLE")
{
If()
{
Break();
Energy("<=", 0.0); // if no energy left
}
Or()
{
Break(); // all transitions are breaking if Duration is 0
Posture("Sprint");
}
Or()
{
Break(20, "Frames"); // all transitions are breaking if Duration is 0
Button("FireSecondary", "Press");
}
Or()
{
Break(); // all transitions are breaking if Duration is 0
Button("Reload", "Press");
}
}
}

State("DEFLECT_JUMP")
{
Posture("Jump");

MustShowOneFrame();

Transition("IDLE")
{
If()
{
Break(1, "Frames");
}
}
}

State("DEFLECT_CROUCH")
{
Posture("Crouch");

MustShowOneFrame();

Transition("IDLE")
{
If()
{
Break(1, "Frames");
}
}
}

State("DEFLECT_ROLL")
{
Posture("Roll");

MustShowOneFrame();

Transition("IDLE")
{
If()
{
Break(1, "Frames");
}
}
}

State("DEFLECT_SPRINT")
{
Posture("Sprint");

MustShowOneFrame();

Transition("IDLE")
{
If()
{
Break(1, "Frames");
}
}
}

State("BACK_ATTACK")
{
Posture("Stand");
Animation("stand_attack_backwards")
{
BlendInTime(0.15);
BlendOutTime(0.3);
}

Sound("saber_swing");

InputLock("All", "!Thrust");
AlignedToThrust();
Attack()
{
DamageTime(4, 9, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(400);
Push(6.0);
}

Attack()
{
DamageTime(13, 20, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(400);
Push(6.0);
}

Transition("IDLE");
}

//Forward declare animations to allow BlendTimeTo references:
Animation("stand_nazattack1b_end");
Animation("stand_nazattack1c");

State("ATTACK1")
{
Posture("Stand");
Animation("stand_nazattack1a");
Sound("saber_swing");

InputLock("All", "!Thrust");
AlignedToThrust();
Attack()
{
DamageTime(2, 8, "Frames");
DamageLength(1.5);
DamageWidth(.75);
Damage(300);
Push(3.0);
}

Transition("ATTACK2")
{
If()
{
Break(10, "Frames");
TimeStart(5, "Frames");
TimeEnd(16, "Frames"); //, "SyncIfOvertime");
Posture("Stand");
Button("Fire", "Press");
}
}
Transition("RECOVER1");
}

State("RECOVER1")
{
Posture("Stand");
Animation("stand_nazattack1a_end")
{
// SyncType("attack1b", "ByTime");
AimType("None");
BlendInTime(0.15);
BlendOutTime(0.15);
}

InputLock("All", "!Thrust");
AlignedToThrust();

Transition("IDLE");
}

State("ATTACK2")
{
Posture("Stand");
Animation("stand_nazattack1b")
{
// SyncType("attack1b", "ByTime");
AimType("None");
BlendInTime(0.06);
BlendOutTime(0.15);
BlendTimeTo("stand_nazattack1b_end", 0.0);
BlendTimeTo("stand_nazattack1c", 0.0);
}
Sound("saber_swing");

InputLock("All", "!Thrust");
AlignedToThrust();
Attack()
{
DamageTime(3, 8, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(300);
Push(3.0);
}

Transition("ATTACK3")
{
If()
{
Break(10, "Frames");
TimeStart(6, "Frames");
TimeEnd(16, "Frames"); //, "SyncIfOvertime");
Posture("Stand");
Button("Fire", "Press");
}
}
Transition("RECOVER2");
}

State("RECOVER2")
{
Posture("Stand");
Animation("stand_nazattack1b_end")
{
// SyncType("attack1c", "ByTime");
AimType("None");
BlendInTime(0.15);
BlendOutTime(0.15);
}

InputLock("All", "!Thrust");
AlignedToThrust();

Transition("IDLE");
}

State("ATTACK3")
{
Posture("Stand");
Animation("stand_nazattack1c")
{
// SyncType("attack1c", "ByTime");
AimType("None");
BlendInTime(0.06);
BlendOutTime(0.15);
}
Sound("saber_attack_three");

//set a duration so we will go to state RECOVER3 before the animation ends
Duration(30, "Frames");
// AnimatedMove() // animation controls velocity for entire state
// {
// VelocityZ(0.0);
// VelocityX(0.0);
// VelocityFromThrust(8.0);
// VelocityFromStrafe(3.0);
// }
AlignedToThrust("Initial");

// StrafeFactor(0.5);
// TurnFactor(0.5);

InputLock("All", "!Thrust"); // lock all controls for duration of state
Attack()
{
DamageTime(6, 23, "Frames");
DamageLength(1.5);
DamageWidth(0.75);
Damage(600);
Push(5.0);
}

Transition("RECOVER3");
}

State("RECOVER3")
{
Posture("Stand");
Animation("stand_nazattack1c");

InputLock("All", "!Thrust");
AlignedToThrust();

Transition("IDLE");
}

State("DASHATTACK")
{
Posture("Stand");
Animation("stand_nazdashattack")
{
AimType("FullBody");
BlendInTime(0.10);
BlendOutTime(0.25);
}
Sound("saber_triple");

Deflect()
{
DeflectAngle(-110, 110); // deflect anything from forward arc
EnergyCost(2.0);
}

Duration(25, "Frames");
AnimatedMove()
{
VelocityZ(16.0);
VelocityX(0.0);
VelocityFromThrust(2.0);
VelocityFromStrafe(5.0);
}
TurnFactor(0.6);

InputLock("All", "!Thrust");
Attack()
{
AttacKID("dashattack");
DamageTime(2, 45, "Frames");
DamageLength(1.5);
DamageWidth(.75);
Damage(500);
Push(5.0);
}

// Transition("DASHATTACK2")
// {
// If()
// {
// TimeStart(0.0);
// TimeEnd(0.05, "FromEnd"); //, "SyncIfOvertime");
// Button("Fire", "Press");
// }
// }
Transition("DASHATTACK2");
}

State("DASHATTACK2")
{
Posture("Stand");
Animation("stand_dashattack")
{
AimType("FullBody");
BlendInTime(0.10);
BlendOutTime(0.25);
}
Sound("saber_double");

AnimatedMove()
{
VelocityZ(0.0);
VelocityX(0.0);
VelocityFromThrust(1.0);
VelocityFromStrafe(2.0);
If()
{
Break(40, "Frames");
}
}
TurnFactor(0.6);

InputLock("All", "!Thrust");
Attack()
{
AttacKID("dashattack");
DamageTime(2, 45, "Frames");
DamageLength(1.5);
DamageWidth(.75);
Damage(500);
Push(5.0);
}

Transition("IDLE");
}

// forward declare jumpattack_land, since jumpattack_fall refers to it:
Animation("jumpattack_land");

State("JUMPATTACK_FALL")
{
Posture("Jump");
Animation("nazjumpattack_fall")
{
Loop("FinalFrame");
AimType("None");
BlendInTime(0.15);
BlendOutTime(0.80);
// BlendTimeTo("nazjumpattack_land", 0.15);
}
Sound("saber_swing", 3, "Frames");

Gravity(2.0);
GravityVelocityTarget(-20.0); // accelerate us to 20m/s down at 2 g's
AnimatedMove();
InputLock("All", "!Thrust"); // lock all buttons for duration of state

Attack()
{
AttackId("JUMPATTACK");
DamageTime(0.33, 1.0, "FromAnim");
DamageLength(1.75);
DamageWidth(1.25);
Damage(800);
Push(4.0);
}

Transition("JUMPATTACK_LAND")
{
If()
{
Break();
Posture("Stand");
}
}
Transition("IDLE")
{
If()
{
Break();
Posture("Any", "!Stand", "!Jump", "!Jet");
}
}
Transition("JUMPATTACK_END")
}

State("JUMPATTACK_END")
{
Posture("Jump");
Animation("jumpattack_end")
{
AimType("None");
SyncType("jumpattack_land", "ByTime");
BlendInTime(0.15);
BlendOutTime(0.80);
// BlendTimeTo("nazjumpattack_land", 0.15);
}

Gravity(2.0);
GravityVelocityTarget(-20.0); // accelerate us to 20m/s down at 2 g's
Duration(15, "Frames");
AnimatedMove();
InputLock("All", "!Thrust"); // lock all buttons for duration of state

Attack()
{
AttackId("JUMPATTACK");
DamageTime(0, 6, "Frames");
DamageLength(1.75);
DamageWidth(1.25);
Damage(800);
Push(4.0);
}

Transition("JUMPATTACK_LAND")
{
If()
{
Break();
Posture("Stand");
}
}
Transition("IDLE")
{
If()
{
Break();
Posture("Any", "!Stand", "!Jump", "!Jet");
}
}
Transition("IDLE");
}

State("JUMPATTACK_LAND")
{
Posture("Stand");

Animation("nazjumpattack_land")
{
AimType("FullBody");
SyncType("nazjumpattack_land", "ByTime");
BlendInTime(0.00);
BlendOutTime(0.20);
}

AnimatedMove();
InputLock("All");

Attack()
{
AttackId("JUMPATTACK");
DamageTime(0, 6, "Frames");
DamageLength(1.75);
DamageWidth(.75);
Damage(800);
Push(4.0);
}

Transition("IDLE")
{
If()
{
Break(0.4);
ButtonsPressed("Any");
}
Or()
{
Break(0.4);
Thrust(">", 0.54);
}
}
}

bf2log
Hidden/Spoiler:
Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation human_sabre_stand_nazattack1b_end(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation human_sabre_stand_nazattack1c(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation human_sabre_stand_nazattack1a(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation human_sabre_stand_nazattack1a_end(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation human_sabre_stand_nazattack1b(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation human_sabre_stand_nazdashattack(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation human_sabre_nazjumpattack_fall(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation human_sabre_nazjumpattack_land(_upper)

Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation nazgul_sabre_stand_nazattack1b_end(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation nazgul_sabre_stand_nazattack1c(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation nazgul_sabre_stand_nazattack1a(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation nazgul_sabre_stand_nazattack1a_end(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation nazgul_sabre_stand_nazattack1b(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation nazgul_sabre_stand_nazdashattack(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation nazgul_sabre_nazjumpattack_fall(_upper)


Message Severity: 3
C:\Battlefront2\main\Battlefront2\Source\SoldierAnimatorClass.cpp(1881)
Can't find soldier animation nazgul_sabre_nazjumpattack_land(_upper)


Message Severity: 3
C:\Battlefront2\main\RedEngineFL\Graphics\PC\Shaders\pcTerrainShader.cpp(180)
pcTerrainShader: detail texture expects L8 format!


Message Severity: 3
C:\Battlefront2\main\RedEngineFL\Graphics\Pc\Shaders\pcTerrainShader2.cpp(293)
TerrainShader_: detail texture expects L8 format!
i thought you got lukes anims if you didnt have the ones the combo calls for

ill post a screenshot of my nazgul anim folder if anybody wants
User avatar
DarthD.U.C.K.
Master of the Force
Master of the Force
Posts: 6027
Joined: Wed Sep 27, 2006 11:05 am
Location: Duckburg, Germany

Re: Help with assembling animations

Post by DarthD.U.C.K. »

and you called your anims exactly like in the combo file?

its better if you just rename the part in front of the anim like naz_stand_dashattack
maybe this causes the crash, battlefront can be very nitpicky with names

and you will have to edit the combo, if you want to use anims fro different guys, mace would make his groundcrack in midair as examnple if you gave him mauls combo..
MileHighGuy
Jedi
Jedi
Posts: 1194
Joined: Fri Dec 19, 2008 7:58 pm

Re: Help with assembling animations

Post by MileHighGuy »

yes i have all the files you see that have naz in them an example of one of the renamed anims would be animations are nazgul_sabre_stand_nazattack1a_end but i dond have any files ending with _over do i have to specify the _full at the end of the name?

and when i didnt edit the main name it stayed with lukes animations (i think)
Last edited by MileHighGuy on Thu Jan 29, 2009 6:55 pm, edited 1 time in total.
User avatar
Fiodis
Master of the Force
Master of the Force
Posts: 4145
Joined: Wed Nov 12, 2008 9:27 pm
Projects :: Rannoch + Tientia + Tools Programming

Re: Help with assembling animations

Post by Fiodis »

animation human_sabre_stand_nazattack1c(_upper) could be a problem if you renamed them all.


EDIT - Oh wait...nvm.
MileHighGuy
Jedi
Jedi
Posts: 1194
Joined: Fri Dec 19, 2008 7:58 pm

Re: Help with assembling animations

Post by MileHighGuy »

i renamed human(or obiwan/vader/dooku) to nazgul in all of m animations as well as putting a naz in front of the attack name.

so.. that wouldnt be a problem?
User avatar
DarthD.U.C.K.
Master of the Force
Master of the Force
Posts: 6027
Joined: Wed Sep 27, 2006 11:05 am
Location: Duckburg, Germany

Re: Help with assembling animations

Post by DarthD.U.C.K. »

remove the naz in fron of the attack
and keep the appropriated endings of the anims
_emote means that the anim only affect the upper body (not 100% shure)
_full means that it affects the full body
User avatar
Fiodis
Master of the Force
Master of the Force
Posts: 4145
Joined: Wed Nov 12, 2008 9:27 pm
Projects :: Rannoch + Tientia + Tools Programming

Re: Help with assembling animations

Post by Fiodis »

Eh, take the ones that the log is complaining about and put them in your animations folder, then munge those anims in with the rest. See what happens.

But do what DarthD.U.C.K. says first.
MileHighGuy
Jedi
Jedi
Posts: 1194
Joined: Fri Dec 19, 2008 7:58 pm

Re: Help with assembling animations

Post by MileHighGuy »

remove the naz in fron of the attack
i did this and it worked!!

thank you!!

:bowdown: :) :D
Post Reply