TUTORIAL: shottype.act & shotconditions.act files

Resources for NBA Live 2005.

TUTORIAL: shottype.act & shotconditions.act files

Postby CarolusXCI on Fri Nov 01, 2024 8:33 am

Shottype.act is a file from /ai/aiact.viv that contains animation sequences for every shot taken with the SHOT button during 5v5 and 1v1 gameplay (e.g. jump shots, hook shots, etc).

Shotconditions.act is another file from /ai/aiact.viv, this one containing contextual criteria for the reproduction of the sequences from shottype.act.

Both files can be exported from the aiact.viv file using EA Graphics Editor or BigGUI, edited using notepad and then imported back using the same tools.

These files are meant to be edited together, therefore this tutorial will comprise both.

Let’s start it off with shottype.act; the default file begins with the following three lines:

Code: Select all
SHOTTYPE
shottype
32


The value “32” represents the number of entries present in this file. Each “entry” corresponds to a sequence of individual animations, which together will comprise a given jump shot. For example, the entry corresponding to the regular jump shot (for guards and forwards) looks like this:

Code: Select all
jumpshot
SHTJERJMPER
SHTJERJMPER
SHTJERJMPERFAKE
SHTJERJMPEREARLY
SHTJERJMPEREARLY2
HIGHARC
SHTJERJMPERREG
SHTJERJMPERREG2
REGULAR
SHTJERJMPERLATE
SHTJERJMPERLATE2
HIGHARC
NONE
-30
-50
DEFAULT
jumpshotfar
x
0
set
1


This and every other entry has a total of 22 lines, each with their own function. It works like this:

Line 1) Entry’s name
It can be anything you want, as long as it is correctly referenced in shotconditions.act; we will get to that later.

2) Gather animation
This line retrieves an animation with the stated name from two files: “anim/body/xanims.viv/xmcpshot.ord” and “anim/body/xanims.viv/xmcpshot.orl”.

If an animation with this name is found, the game reproduces it during gather, and then proceeds to the next line. On the other hand, if the game finds no animation with this name, you get a CTD.

This is the same for pretty much all the following lines, so be aware that the game tolerates no mistakes in these fields.

Just as a small tip: Line 2 almost always will have “SHTJERJMPER” on it. By default I think only the hook shot has a different gather.

3) Jump animation
This corresponds to the second part of the gather, where the player jumps. Here there are several animations possible, which shape out how the jump shot looks like.

For example, “SHTJERJMPER” is a regular jump shot, “SHTKYLLEANER” is a leaner, “SHTSHERFDAWAY” is a fadeaway, etc.

4) Pump fake animation
Play out when you tap the SHOT button. By default, almost always “SHTJERJMPERFAKE”; hook shot has “SHTBIGHOOKFAKE”.

Now, lines 5 to 13 are dedicated to the release, being split in three different parts corresponding to the user timing (early, regular, late). As follows:

5) Release animation – EARLY
6) Follow through animation – EARLY

Animations for the follow through normally have a “2” at the end of their names, meaning that they are specifically designated as a follow through or falling animation after the release.

7) Ball mechanics – EARLY
This dictates the trajectory pattern expected for the ball after the release. On NBA Live 2005 it can assume the following values:

REGULAR – a normal shooting trajectory that you would expect on a jump shot. It may hit the backboard occasionally.
HIGHARC – a shot with a considerably higher arc. May also hit the board occasionally.
BANK – normal trajectory, will always hit the backboard. If you shoot from the baseline, the ball will fly behind the backboard most times.
HIGHARC/BANK – same as before, but with a high arc.

8) Release animation – REGULAR
9) Follow through animation – REGULAR
10) Ball mechanics – REGULAR

11) Release animation – LATE
12) Follow through animation – LATE
13) Ball mechanics – LATE

14) Animation mechanics (player movement)
This dictates how the player’s body will move during the release and follow through portions of the animation sequence. On NBA Live 2005, it can assume the following values:

NONE – Player will jump up and come straight down.
MOVE – Player will move based on left stick input. E.g., if you press SHOT while holding BACK, the player will move backwards; holding RIGHT, he will move to the right, etc.
MOVEBACK – Player will always move backwards, regardless of left stick input.
MOVEMYNET – Player will move towards the opposite baseline, regardless of left stick input. And he will move quite a lot. The movement looks very unnatural, except for one situation: if you shoot behind the basket. Then it looks perfect and works as intended.
FOCUSTURN – This is a little difficult to notice, but if the player is not facing the basket, it will turn around an axis that passes along one of his foot (almost like pivoting), instead of rotating along a center axis (i.e. between both feet). It does not cause the feeling of having a pivot foot on a turnaround, but it is better than nothing I guess. It makes the hook shot look better.

15) Angle relative to the basket during release (in degrees)
Each animation has its own ideal angle. It is good practice to go with the default ones, but you can always play around with it if you want. With this parameter you can for example make players shoot jumpers backwards if you so desire.

16) Angle relative to the basket during follow through (in degrees)
Players can also rotate after the release. You can use this parameter to dictate how much this rotation should be.

17) Hand mechanics
Indicates which hand the player will shoot the ball with. This line can assume the following values:

DEFAULT – Player shoots with either left or right, depending on his handedness.
PIVOT – Player shoots the ball with whatever hand he is holding the ball with. A good in-game example is the hook shot, in which the player can shoot with either hand, depending on which hand is holding or dribbling the ball before the shot.
FLIP – Player shoots with the left hand when on the left side of the court and with the right hand when on the right side.

18) Block animations
This assume values that are declared on the block.act file. If you want to know more about that one, let me know. For now, just use the default options (e.g. “jumpshotfar”, “fadeaway”, “hookshot”, etc).

19) Does the player flail when fouled?
The game has a certain animation that plays out when the player is fouled on a jumpshot, for example. However, in some instances that animation does not look natural (e.g. jumpers falling to the left). So this line dictates whether the fouling animation is permitted or not. It is either yes (“x”) or no (“-“). By default this is enabled for all animations.

20) Shot penalty
It applies a penalty on every shot. I believe the unit is percentage points, but don’t quote me on that. By default, regular jump shots have this field at 0, meaning that there is no penalty being applied on top of other deciding factors, such as player ratings, defense, distance, etc. The hook shot has this line at 30, meaning that it tends to be harder to hit.

Perhaps here would be a good place to let you know that you can also program layups in this file. It works more or less like this: when you press the DUNK button, the game will check every entry on the dunk.act file looking for one that matches the given conditions (e.g., position on the court, defense, dunk packages, distance from the hoop, etc). If it doesn’t find anything there, then it will look for it on the shottype.act/shotconditions.act files.

This is how you end up with that floater animation if you press DUNK beyond the 3-point line. In this case the entry looks like this:

Code: Select all
soutofrangelow
LAYPSH2FBSE1HLOB
LAYPSH2FBSE1HLOB
NOTHING
NOTHING
NOTHING
HIGHARC
NOTHING
NOTHING
HIGHARC
NOTHING
NOTHING
HIGHARC
FOCUSTURN
20
0
DEFAULT
dunks
x
99
layup
1


You can see that it doesn’t need animations for early, regular and late releases, since it is a layup and rightfully so no timing is involved; you press once, and the ball is released. Also, you cannot do pump fakes in this case, since there is not even an animation attributed to it. Ball mechaniocs does make a difference, so changing from HIGHARC to BANK will change the ball trajectory.

But the reason why I brought this up now is the Line 20: “99” is the value there. This means that there is a huge penalty applied on this shot (I assume 99%, if the unit is indeed percentage points). That is why you almost never can score by pressing DUNK behind the line.

21) Shot type
The main difference that this makes is on what Marv Albert will say when you shoot the ball. Can assume these values: “set”, “moving”, “fadeaway”, “hook” and “layup”. If this does also change something else gameplay-wise, I was never able to notice it.

22) Unknown
This is supposedly some sort of scaling factor, but I never noticed any difference when changing it. It is usually 1 by default.

This is it for the shottype.act file. You can add as many entries as will want, as long as you state at the beginning of the file how many entries are present. Otherwise, CTD.

Now that we have all animation sequences for all our shots in place, we need to be able to tell the game how and when they are supposed to be played out. You don’t want a hook shot when fading away at the 3-point line, right?

This is the exact function of shotconditions.act. So let’s dig into it. The file begins in a similar fashion in comparison to the previous one:

Code: Select all
SHOTCONDITION
shotcondition
77


And this represents the same thing as before. “77” is the number of entries in the file. This time, each entry has 13 lines, which look like this:

Code: Select all
fadeawayinterior
0
100
NA
A
NA
-
NA
NA
-
x
N
0


Line 1) Entry’s name
This is exactly where one file (shottype.act) communicates with the other (shotconditions.act). Suppose you have an animation sequence named “dirk_shot” written on shottype.act. In order to be able to tell the game the context for that sequence to be played, you need to add an entry called “dirk_shot” on shotconditions.act as well.

Beware that the same animation sequence on shottype can have multiple contextual entries on shotconditions! This means that you can set your aiact in a way that you have a given shot happening only between 15 and 16 feet from the basket, then the same shot also occurring between 23 and 30 feet. Of course this is just a generic example, it shows that this feature opens up a lot of possibilities.

Also, extremely important: when you press SHOT (or DUNK), the game will look for a contextual match from TOP to BOTTOM of the file. Meaning that it will take the first match and look for the corresponding animation sequence over shottype. This means that if you have overlap contexts for different animations, the one appearing earlier on shotconditions will be the one selected 100% of the time. Therefore, it is also good practice to start the file with the more complex animations requiring very specific context, then leave the more generic animations sequences (e.g. regular jump shot) at the bottom, with as broad of a required context as possible.

2) Minimum distance (feet)
3) Maximum distance (feet)

These lines dictate the range at which the shot occurs.

4) Momentum
Dictates whether you need momentum to execute the shot. Similar to some later lines, it can assume three values:
“X” – Shot requires player to be moving in order to trigger;
“-“ – Shot requires player to be standing still in order to trigger;
“NA“ – Shot can happen in either case.

5) Left stick direction
Dictates the direction you need to move the left stick when pressing the SHOT button to make the animation sequence trigger. This is camera relative, not absolute. Possible values:

“A” – Any direction;
“N” – No direction;
“F” – Forward;
“B” – Back;
“L” – Left;
“R” – Right.

6) Can you use the shot after a dropstep or a prohop?
“X” – Shot only happens immediately after a prohop/dropstep;
“-“ – Shot cannot happen after a prohop/dropstep;
“NA” – Indifferent.

7) Does it use the DUNK button?
“X” – yes, only DUNK;
“-“ – no, only SHOT;
“NA” – Both.

8) Is it a big man shot?
“X” – yes, only bigs can use it;
“-“ – no, no bigs can use it;
“NA” – Any player can use it.

9) Do you need to have your back to the basket? (e.g. hook shot)
10) Do you need to be behind the backboard?
11) Do you need to be right under the hoop?

For all these three:
“X” – yes, always;
“-“ – no, never;
“NA” – either way.

12) Court position
Dictates the side of the court where the shot can happen: “L” is left side, “R” is right side, “N” is everywhere.

13) No use
Originally intended for signature animations, but 5v5 and 1v1 gameplay does not use it.

If you are curious about it, on the roster folder, players.dbf has a field named THREEPTSTY. It dictates the animations used exclusively during the three point contest (Nash has 1, Shaq has 11, almost all bigs have 9, etc). Now, if you access the file “ai3ptact.viv” (same folder as aiact.act), there will be an analogous file named “shotconditions3pt.act”, where you will see the 13th Line populated with different numbers, each corresponding to the THREEPTSTY on players.dbf. Unfortunately, this has no effect on 5v5 gameplay whatsoever.

_____________________________________________________

That is it for this tutorial. You can also use it forNBA Live 2004, pretty much exactly as stated here.
On Live 06, there are some extra fields here and there, but it is also very usable there as well.
This topic was moved from NBA Live 2005 by Andrew on Fri Nov 01, 2024 10:07 am.
User avatar
CarolusXCI
 
Posts: 373
Joined: Sat Nov 19, 2011 11:23 pm
Location: Austria, Brazil

Re: TUTORIAL: shottype.act & shotconditions.act files

Postby Andrew on Fri Nov 01, 2024 10:08 am

Awesome work!
User avatar
Andrew
Retro Basketball Gamer
Administrator
 
Posts: 114924
Joined: Thu Aug 22, 2002 8:51 pm
Location: Australia


Return to NBA Live 2005 Tutorials & FAQs

Who is online

Users browsing this forum: No registered users and 1 guest