Make dashback configurable, fix movement bugs, add double jump forward and back.

This commit is contained in:
2026-09-13 01:00:15 +02:00
parent ad105418be
commit 811578af2f
18 changed files with 774 additions and 154 deletions
+183 -30
View File
@@ -1,37 +1,44 @@
(
id: TestFighter,
model_path: "fighters/test/test-fighter-normal.glb",
model_path: "fighters/test/test-fighter-2.glb",
model_scale: "10.0",
baked_animation_path: "fighters/test/test.fighterbake",
icon: (
path: "fighters/test/icon.png",
),
attributes: (
base_walk_accel: "0.1",
stick_walk_accel: "0.16",
max_walk_vel: "0.7",
ground_friction: "0.09",
max_walk_vel: "1.0",
ground_friction: "0.1",
dash_acceleration_duration: 13,
dash_duration: 24,
base_dash_accel: "0.02",
stick_dash_accel: "0.065",
max_dash_vel: "1.1",
short_hop_vertical_velocity: "1.05",
full_jump_vertical_velocity: "1.6",
base_dash_accel: "0.1",
stick_dash_accel: "0.05",
max_dash_vel: "2.3",
short_hop_vertical_velocity: "1.35",
full_jump_vertical_velocity: "2.1",
jump_horizontal_velocity: "0.7",
air_jump_horizontal_velocity: "0.5",
air_jump_horizontal_velocity: "0.96",
air_jump_multiplier: "1.0",
dash_initial_velocity: "1.4",
terminal_velocity: "1.3",
gravity: "0.064",
terminal_velocity: "1.6",
gravity: "0.084",
weight: "100.0",
jumpsquat_duration: 5,
landing_iasa: 4,
landing_duration: 30,
max_air_horizontal_velocity: "1.35",
air_acceleration_base: "0.19",
air_acceleration_stick: "0.09",
air_friction: "0.05",
max_air_horizontal_velocity: "2.5",
air_drift_max: "1.0",
air_acceleration_base: "0.03",
air_acceleration_stick: "0.01",
air_friction: "0.01",
air_dodge_duration: 49,
air_dodge_velocity: "2.790",
air_dodge_decay: "0.9"
air_dodge_decay: "0.9",
ecb_vertical_midpoint_offset: "0.0"
),
camera: (
vertical_origin_offset: "8.0",
@@ -42,20 +49,166 @@
visibility_radius: "5.0",
),
animations: {
Wait: "PlyPurin5K_Share_ACTION_Wait",
Walk: "PlyPurin5K_Share_ACTION_WalkFast",
Run: "PlyPurin5K_Share_ACTION_Run",
Dash: "PlyPurin5K_Share_ACTION_Dash",
JumpSquat: "PlyPurin5K_Share_ACTION_Landing",
JumpForward: "PlyPurin5K_Share_ACTION_JumpF",
JumpBack: "PlyPurin5K_Share_ACTION_JumpB",
Landing: "PlyPurin5K_Share_ACTION_Landing",
AirDodge: "PlyPurin5K_Share_ACTION_EscapeAir",
DoubleJump: "PlyPurin5K_Share_ACTION_JumpAerialF1",
Fall: "PlyPurin5K_Share_ACTION_Fall",
Turn: "PlyPurin5K_Share_ACTION_Turn",
Wait: "Idle_Loop_Game",
Walk: "Walk_Loop_IK_Game",
Run: "Run_Game",
Dash: "Dash_Game",
JumpSquat: "Jump_Squat_Game",
JumpForward: "Jump_Start_IK_Game",
JumpBack: "JumpB_Game",
LandingSpecial: "SpecialLand_Game",
Landing: "Jump_Land_Game",
AirDodge: "Idle_Loop_Game",
DoubleJumpForward: "Jump_Start_IK_Game",
DoubleJumpBack: "JumpB_Game",
Fall: "Fall_Loop_Game",
Turn: "Turn_Game",
AttackJab1: "Punch_Jab_Game",
AttackUpTilt: "Idle_Loop_Game",
AttackForwardTilt: "Idle_Loop_Game",
AttackDownTilt: "Idle_Loop_Game"
},
attack_scripts: {
NAir: "fighters/test/scripts/fair.attack.rhai"
}
NeutralAir: "fighters/test/scripts/fair.attack.rhai",
Jab: "fighters/test/scripts/fair.attack.rhai",
UpTilt: "fighters/test/scripts/uptilt.attack.rhai",
ForwardTilt: "fighters/test/scripts/uptilt.attack.rhai",
DownTilt: "fighters/test/scripts/uptilt.attack.rhai",
},
hurtboxes: [
// center one
(
bone: "spine_01",
offset: (x: "0.0", y: "0.0", z: "0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "0.0"),
half_length: "0.05",
radius: "0.15"
),
(
bone: "spine_03",
offset: (x: "0.0", y: "0.0", z: "0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "0.0"),
half_length: "0.05",
radius: "0.15"
),
(
bone: "Head",
offset: (x: "0.0", y: "0.125", z: "0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "0.0"),
half_length: "0.05",
radius: "0.1"
),
(
bone: "thigh_r",
offset: (x: "0.0", y: "0.15", z: "-0.01"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "0.0"),
half_length: "0.2",
radius: "0.07"
),
(
bone: "thigh_l",
offset: (x: "0.0", y: "0.15", z: "-0.01"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "0.0"),
half_length: "0.2",
radius: "0.07"
),
(
bone: "calf_l",
offset: (x: "0.0", y: "0.15", z: "-0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "0.0"),
half_length: "0.2",
radius: "0.05"
),
(
bone: "calf_r",
offset: (x: "0.0", y: "0.15", z: "-0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "0.0"),
half_length: "0.2",
radius: "0.05"
),
(
bone: "foot_r",
offset: (x: "0.0", y: "0.1", z: "0.01"),
rotation: FGVec3(x: "-25.0", y: "0.0", z: "0.0"),
half_length: "0.1",
radius: "0.04"
),
(
bone: "foot_l",
offset: (x: "0.0", y: "0.1", z: "0.01"),
rotation: FGVec3(x: "-25.0", y: "0.0", z: "0.0"),
half_length: "0.1",
radius: "0.04"
),
(
bone: "upperarm_l",
offset: (x: "0.0", y: "0.09", z: "-0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "0.0"),
half_length: "0.125",
radius: "0.05"
),
(
bone: "lowerarm_l",
offset: (x: "0.0", y: "0.12", z: "-0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "0.0"),
half_length: "0.115",
radius: "0.04"
),
(
bone: "hand_l",
offset: (x: "0.0", y: "0.05", z: "-0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "0.0"),
half_length: "0.01",
radius: "0.04"
),
(
bone: "upperarm_r",
offset: (x: "0.0", y: "0.09", z: "-0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "0.0"),
half_length: "0.125",
radius: "0.05"
),
(
bone: "lowerarm_r",
offset: (x: "0.0", y: "0.12", z: "-0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "0.0"),
half_length: "0.115",
radius: "0.04"
),
(
bone: "hand_r",
offset: (x: "0.0", y: "0.05", z: "-0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "0.0"),
half_length: "0.01",
radius: "0.04"
),
/*(
bone: "RFootJA",
offset: (x: "0.0", y: "0.5", z: "0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "90.0"),
half_length: "0.5",
radius: "1.0"
),
(
bone: "JOBJ_47",
offset: (x: "0.0", y: "0.0", z: "0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "90.0"),
half_length: "0.5",
radius: "1.0"
),
(
bone: "LFootJA",
offset: (x: "0.0", y: "0.5", z: "0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "90.0"),
half_length: "0.5",
radius: "1.0"
),
(
bone: "JOBJ_41",
offset: (x: "0.0", y: "0.0", z: "0.0"),
rotation: FGVec3(x: "0.0", y: "0.0", z: "90.0"),
half_length: "0.5",
radius: "1.0"
),*/
]
)
+84 -3
View File
@@ -1,4 +1,19 @@
(
cursor: (
path: "ui/textures/cursor.png",
sampling: Nearest
),
css_token: (
path: "ui/textures/fighter_select_token.png",
sampling: Linear
),
player_colors: [
Srgba((red: 0.780, green: 0.420, blue: 0.933, alpha: 1.000)),
Srgba((red: 0.843, green: 0.227, blue: 0.204, alpha: 1.000)),
Srgba((red: 0.333, green: 0.804, blue: 0.078, alpha: 1.000)),
Srgba((red: 0.075, green: 0.376, blue: 0.416, alpha: 1.000)),
Srgba((red: 0.682, green: 0.878, blue: 0.914, alpha: 1.000))
],
button_styles: {
MainMenu: (
focus_outline_width_px: 4,
@@ -24,8 +39,29 @@
)
),
CharacterSelectCharacter: (
focus_outline_width_px: 4,
focus_outline_offset_px: 2,
focus_outline_width_px: 10,
focus_outline_offset_px: 5,
focus_outline_color: Srgba((red: 1.0, green: 1.0, blue: 0.0, alpha: 1.0)),
normal: (
background_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
text_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
box_shadow: (),
border_size: 10,
),
press: (
background_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
text_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
box_shadow: (),
),
hover: (
background_color: Srgba((red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)),
text_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
box_shadow: (),
)
),
CharacterSelectStartBanner: (
focus_outline_width_px: 10,
focus_outline_offset_px: 5,
focus_outline_color: Srgba((red: 1.0, green: 1.0, blue: 0.0, alpha: 1.0)),
normal: (
background_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
@@ -42,6 +78,51 @@
text_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
box_shadow: (),
)
)
),
StageSelectIcon: (
focus_outline_width_px: 4,
focus_outline_offset_px: 2,
focus_outline_color: Srgba((red: 1.0, green: 1.0, blue: 0.0, alpha: 1.0)),
normal: (
border_color: Srgba((red: 1.0, green: 1.0, blue: 0.0, alpha: 1.0)),
background_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 0.0)),
text_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
border_size: 10,
border_radius: 40.0,
box_shadow: (
spread_radius: 5.0,
blur_radius: 5.0,
offset_px_y: 10,
offset_px_x: 10,
color: Srgba((red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0))
),
),
press: (
background_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
border_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
text_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
border_radius: 40.0,
border_size: 10,
box_shadow: (
spread_radius: 5.0,
offset_px_y: 10,
offset_px_x: 10,
color: Srgba((red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0))
),
),
hover: (
background_color: Srgba((red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)),
border_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
border_radius: 40.0,
border_size: 10,
text_color: Srgba((red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)),
box_shadow: (
spread_radius: 5.0,
offset_px_y: 10,
offset_px_x: 10,
color: Srgba((red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0))
),
)
),
}
)
+4 -3
View File
@@ -5,8 +5,9 @@
smash_input_reset_axis_threshold: "0.25",
smash_input_axis_threshold: "0.8",
run_stick_threshold: "0.625",
smash_input_frame_threshold: 2,
input_buffer_size: 5
smash_input_frame_threshold: 3,
input_buffer_size: 3,
turn_into_dashback_window: 2,
),
fighter_common: (
@@ -15,7 +16,7 @@
ground_friction_over_walk_speed_multiplier: "2.0"
),
stage_manifest_paths: [
"stages/test.stage.ron"
"stages/battlefield/test.stage.ron"
],
fighter_manifest_paths: [
"fighters/test/test.fighter.ron"
+139
View File
@@ -0,0 +1,139 @@
(
id: TestStage,
model_path: "stages/battlefield/battlefield.glb#Scene0",
icon: (
path: "stages/battlefield/icon.png"
),
// Battlefield
/*camera: (
left: -200.0,
right: 200.0,
bottom: -59.0,
top: 170.0,
origin: (0.0, 44.0),
vertical_fov_degrees: 30.0,
min_depth: 83.0,
max_depth: 1000.0,
subject_scale: 1.5,
fighter_forward_extent_scale: 1.5,
tracking_smoothness: 1.8,
vertical_pan_degrees: -10.0,
horizontal_pan_degrees_per_unit: 0.1,
vertical_pan_degrees_per_unit: 0.1,
max_horizontal_pan_degrees: 17.5,
max_upward_pan_degrees: 5.0,
max_downward_pan_degrees: 7.0,
),*/
// Yoshi's story
/*camera: (
left: -180.0,
right: 179.0,
bottom: -71.0,
top: 169.0,
origin: (0.0, 44.0),
vertical_fov_degrees: 20.0,
min_depth: 100.0,
max_depth: 1000.0,
subject_scale: 1.0,
fighter_forward_extent_scale: 1.0,
tracking_smoothness: 1.0,
vertical_pan_degrees: -10.0,
horizontal_pan_degrees_per_unit: 0.05,
vertical_pan_degrees_per_unit: 0.15,
max_horizontal_pan_degrees: 17.5,
max_upward_pan_degrees: 5.0,
max_downward_pan_degrees: 7.0,
),*/
camera: (
left: -180.0,
right: 179.0,
bottom: -71.0,
top: 169.0,
origin: (0.0, 44.0),
vertical_fov_degrees: 20.0,
min_depth: 100.0,
max_depth: 1000.0,
subject_scale: 1.5,
fighter_forward_extent_scale: 1.0,
tracking_smoothness: 1.0,
vertical_pan_degrees: -10.0,
horizontal_pan_degrees_per_unit: 0.05,
vertical_pan_degrees_per_unit: 0.15,
max_horizontal_pan_degrees: 17.5,
max_upward_pan_degrees: 5.0,
max_downward_pan_degrees: 7.0,
),
polygons: [
(
poly_type: Platform,
lines: [
(
(x: "-20.0", y: "47.0"),
Floor
),
(
(x: "20.0", y: "47.0"),
Floor
)
]
),
(
poly_type: Platform,
lines: [
(
(x: "-65.0", y: "24.0"),
Floor
),
(
(x: "-25.0", y: "24.0"),
Floor
)
]
),
(
poly_type: Platform,
lines: [
(
(x: "25.0", y: "24.0"),
Floor
),
(
(x: "65.0", y: "24.0"),
Floor
)
]
),
(
poly_type: Closed,
lines: [
(
(x: "-68.0", y: "-3.0"),
Wall
),
(
(x: "-68.0", y: "0.0"),
Floor,
),
(
(x: "0.0", y: "0.0"),
Floor
),
(
(x: "68", y: "0.0"),
Wall
),
(
(x: "68.0", y: "-3.0"),
Ceiling
),
(
(x: "0.0", y: "-15.0"),
Ceiling
),
]
)
]
)