Type 0 - Bmp-Part
This is the beginning of every dat.-file with just one exception - stage.dat. Here the pictures are noted. Additional some basic stuff is fixed, but this is different between the different types of dat.-files.
<bmp_begin> | Beginn of the Bitmap_Part. |
name: ... | Here you set the name of the character. If there's a space in the name you have to use "_". |
head: ... | Here the picture for the character selection menu is noted - normally it should have the size 120 x 120 pixel. |
small: ... | That's the picture next to the status-bar; Format: 40 x 45 pixel. |
file(#-#): | Only "file" is important to note a picture - the numbers coming after it are just so that you have a better orientation, but they can also be deleted. The computer gets the number of pictures out of the product from "row" and "col", then he numberate them row by row from the left to the right site - starting at zero. The knowledge about the irrelevanz of the "file"-numbers is important if you use state: 8000 - there you eventually have to waste some numbers to make the transforming work. |
sprite\... | This is where the place of the pictures - starting at the folder with the LF2.EXE-file - and the name is saved. Make sure it's the right format - it have to be Bitmap! |
w: ... h: ... |
Every images have several pictures in - so you also have to set the width and the height of them. Normally, it's a square, all sites are 79 pixels long (at characters). The 80th point is empty, so you get a grid between the single pictures. You can see this at template. Microsoft Paint start at (0/0) with the coordinates, that's the reason why the fist grip point is at (79/79). It's easier if you use the selection-tool and mark the area of the single picture - as long as you don't let loose the mouse you can see the width and the height of the selected area in a small window ate the right lower rim of the program. |
row: ... col: ... |
Now the computer have to numberate the pictures. In "row" it's noted how many pictures are in one row, in "col" how many pictures are in one column. |
walking_frame_rate ... | Here it's saved how long one picture is shown while walking - independent from "wait:" in the "walking_frames". Normally, "wait" and "walking_frame_rate" should be the same to avoid graphic-errors in time-retarder mode. |
walking_speed ... walking_speedz ... |
In "walking"-Frames 5 and following, state: 1 activate the pixel-speed per TU noted here. The zeros are irrelevant and can be deleted. |
running_frame_rate ... running_speed ... running_speedz ... |
Almost the same as above, just with state: 2 and for Frame 9 and following. |
heavy_walking_speed ... heavy_walking_speedz ... heavy_running_speed ... heavy_running_speedz ... |
Here the pixel-speed for "walking" in Frame 12 and following with state: 1 and the speed for "running" in Frame 16 and following with state: 2 is noted. |
jump_height ... |
Here a negative Jump-Height is noted, but sure the gravity make bring the character back to earth. To the right site you see some values and the height in pixels. It's used in Frames 210 and following. Jump-Value and Height -1 = -1 | -17 = -93
-2 = -2 | -18 = -104 -3 = -4 | -19 = -115 -4 = -6 | -20 = -127 -5 = -9 | -21 = -140 -6 = -13 | -22 = -153 -7 = -18 | -23 = -167 -8 = -22 | -24 = -181 -9 = -28 | -25 = -196 -10 = -34 | -26 = -212 -11 = -41 | -27 = -228 -12 = -48 | -28 = -244 -13 = -56 | -29 = -261 -14 = -64 | -30 = -279 -15 = -73 | ..... -16 = -83 | -35 = -378 |
jump_distance ... |
In case the character jumps during walking he moves forward with this speed in every TU. |
jump_distancez ... | Here you can note the speed on Z-Axis. |
dash_height ... dash_distance ... dash_distancez ... |
This is in case you jump during running, the rest is like "Jump". It's used in Frames 213 and following. |
rowing_height ... rowing_distance ... |
If you fall to ground you can also Jump so you don't hit the ground. Here the speed for this jump is noted, the corresponding Frames are 100 and following. |
<bmp_part> | End of Bitmap-Part. |
Type 0 - Frame Header
<frame> | Beginning of a frame, followed by the frame number (0-399!!) and a name, but the name is just to help you remember what the frame is for. If you use frame numbers over 399 the computer will ignore them and problems may occur! Also, if the frame name is too long, LF2 will crash when the character goes to that frame! | ||
pic: ... | Here you set the number of the single picture. They're enumerated row by row from the left upper corner starting at zero. | ||
state: ... | There are like 50 different "states." Every state has different qualities and you can create different effects with them. You can find a complete list of all states here! | ||
wait: ... | Here you set how long the frame is played - "one wait" is the same as 1/30 Second - this length is called Time Unit - short: TU, but be careful: "wait: 1" is actually 2/30 of a second because wait is always counted in (wait: # + 1) (so wait: 29) is 30/30, makes one frame is played during one second. Advanced knowledge: assume you have a sequence where all frames (numbered from 1 onwards) have "wait: 0". Upon executing the game will run through the sequence in the following pattern: [TU# - frame] 1 - 2 2 - 3 3 - 4 ... The first frame is not shown and neither will addditional properties (such as itr) apply. Therefore, only a wait > 0 for the first frame makes sense (it will be displayed in the second TU then). |
||
next: ... | If "wait" is down next is activated - here you note the next frame which should be shown. If you want Frame 0 to be the next frame you shouldn't write "next: 0" (that's only used for special frames, like "picked_caught"), you have to write "next: 999". "next: 1000" is for deleting an object from the game. Negative values cause a change of direction. If you deal with characters next 1100-1299 have a special meaning, too - the figure is hidden for 0-199 TU's. After this duration you can see him again (Rudolf: Hide). |
||
dvx: ... dvy: ... dvz: ... |
Here, you can define the velocity a character should get in x- and y-direction. After a few TUs, the character will have accelerated to the defined speed in pixels per TU. If the character does not lift off the ground, he will encounter ground-friction which has a power of 1 pixel per TU. For example, this means that a character that moves with a speed of 5 will stop after 5 frames.
dvz is constant as long as the corresponding key ("Up"- or "Down"-Button) is pressed. If you want to stop all movements in a certain direction you have to set the value 550 there. |
||
centerx: ... centery: ... |
Here you note where the sprite, itr, bdy etc. should appear relative to the shadow(actual position of object). | ||
hit_a: ... hitd: ... hit_j: ... |
Here you set to which frame the character should go if he press "Attack", "Defend" or "Jump"-Button. But it some cases it's not necessary for example in the standing frames you don't need a "hit_a: 60" (punch) - state: 0 already makes this. So that's the reason why these tags are not used often. | ||
hit_Fa: ... hit_Fj: ... hit_Ua: ... hit_Uj: ... hit_Da: ... hit_Dj: ... hit_ja: ... |
These tags are used for special attacks and they're optional. The move always starts with the "Defend"-Key, next you set the direction (F = Forward, U = Up, D = Down) and another key (a = Attack, j = Jump). So the tag "hit_Fa:" would be D + > + A. An exception is the last combination: "hit_ja:" = D + J + A. |
||
mp: ... | This tag is optional, too and regulate the energy cost. It's mostly used in the first frame of a move. This rule from Zizibluga explain the basic function:
You can only use 10 HP as minimum, it's not possible to take 1 to 9 points. The last three numbers are for the energy cost, the first two for live points. Here's an example: "mp: 4300" costs 40 live points and 300 energy points. If you want more information you can look into this advanced tutorial: MP-Usage |
||
sound: ... | If you want to play a sound with the Frame you can use this tag with the place and the name of the format of the sound (need to be .wav!!). Here you can find a list of all sounds which are used in LF2v1.9. | ||
[...] |
Here you can insert Frame Elements. | ||
<frame_end> | End of the frame. |
General Frameset for Characters
The following is a list of frames appearing in characters. Some have hardcoded dependencies; for example, pressing attack while being in the running-frames directly leads you to frame 85 (run attack). Unless you know what you are doing, you should stick to this structure.
000 - 003: standing
005 - 008: walking
009 - 011: running
012 - 015: heavy_obj_walk
016 - 018: heavy_obj_run
019 : heavy_stop_run
020 - 028: normal_weapon_atck
030 - 033: jump_weapon_atck
035 - 037: run_weapon_atck
040 - 043: dash_weapon_atck
045 - 047: light_weapon_thw
050 - 051: heavy_weapon_thw
052 - 054: sky_lgt_wp_thw
055 - 058: weapon_drink
060 - 068: punch
070 - 073: super_punch
080 - 081: jump_attack
085 - 087: run_attack
090 - 091: dash_attack
095 : dash_defend
100 - 101: rowing/flipping (from forward falling-frames)
102 - 107: rowing (rolling)
108 - 109: rowing/flipping (from backward falling-frames)
110 - 111: defend (111, if char is being hit)
112 - 114: broken_defend
115 : picking_light
116 - 117: picking_heavy
120 - 123: catching
130 - 144: picked_caught
180 - 191: falling (180-185 foward, 186-191 backward)
200 - 202: ice
203 - 206: fire (203/4 & 205/6)
207 : tired (no purpose)
210 - 212: jump
213 - 214: dash
215 : crouch
216 - 217: dash
218 : stop_running
219 : crouch2 (out of lying)
220 - 229: injured
230 - 231: lying (0=stomach 1=back)
232 - 234: throw_lying_man