erickfm commited on
Commit
a30bee7
·
verified ·
1 Parent(s): a6b0487

Upload MIMIC character checkpoints + model card

Browse files
README.md CHANGED
@@ -1,76 +1,199 @@
1
  ---
2
  license: mit
3
  tags:
4
- - melee
5
- - smash-bros
6
  - imitation-learning
7
- - game-ai
8
- - pytorch
9
- pretty_name: "MIMIC: Melee Imitation Model for Input Cloning"
 
10
  ---
11
 
12
- # MIMIC Checkpoints (No Opponent Inputs)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
- Trained model checkpoints from the [MIMIC](https://github.com/erickfm/MIMIC) project — an imitation-learning bot that predicts human controller inputs from game state in Super Smash Bros. Melee.
15
-
16
- These checkpoints are from the **Phase 4: No Opponent Inputs** sweep, which removes opponent controller inputs (buttons, analog, c-stick) from the model's feature space to eliminate train-test distribution mismatch when playing against CPUs.
17
-
18
- Trained on [erickfm/frame-melee](https://huggingface.co/datasets/erickfm/frame-melee) (~95k tournament replays).
19
-
20
- ## Model Details
 
 
 
 
 
 
 
 
 
21
 
22
- | Setting | Value |
23
- |---------|-------|
24
- | Architecture | Transformer encoder (768d, 4 layers, hybrid16 frame encoder) |
25
- | Parameters | ~32M |
26
- | Positional encoding | Learned |
27
- | Stick loss | MSE |
28
- | Button loss | BCE |
29
- | Feature | `--no-opp-inputs` (opponent controller inputs removed) |
30
 
31
- ## Checkpoints
32
 
33
- Files in `checkpoints/no-opp-inputs/`:
34
 
35
- | File | Context | Steps | Best val/total |
36
- |------|---------|-------|---------------|
37
- | `noi_ctx60_65k_machA.pt` | 60 frames | 65K | ~0.07 |
38
- | `noi_ctx60_80k_machA.pt` | 60 frames | 80K | ~0.07 |
39
- | `noi_ctx60_80k_machB.pt` | 60 frames | 80K | ~0.07 |
40
- | `noi_ctx60_120k_machB.pt` | 60 frames | 120K | ~0.07 |
41
- | `noi_ctx180_65k_machB.pt` | 180 frames | 65K | ~0.05-0.07 |
42
- | `noi_ctx180_65k_machC.pt` | 180 frames | 65K | ~0.05-0.07 |
43
- | `noi_ctx180_80k_machC.pt` | 180 frames | 80K | ~0.08 |
44
- | `noi_ctx180_120k_machC.pt` | 180 frames | 120K | ~0.08 |
45
 
46
- Note: Multiple runs wrote to the same checkpoint directory, so each file is from whichever seed finished last at that step count.
 
 
 
 
 
47
 
48
- ## Loading
49
 
50
- ```python
51
- import torch
52
- from model import FramePredictor, ModelConfig
 
 
 
 
 
 
53
 
54
- ckpt = torch.load("checkpoint.pt", map_location="cpu")
55
- cfg = ModelConfig(**ckpt["config"])
56
- model = FramePredictor(cfg)
57
- model.load_state_dict(ckpt["model_state_dict"])
58
- model.eval()
59
 
60
- # Normalization stats for inference
61
- norm_stats = ckpt["norm_stats"]
 
 
 
 
 
 
62
  ```
63
 
64
- ## Earlier Checkpoints
 
 
65
 
66
- Phase 1-3 checkpoints (with opponent inputs): [erickfm/frame-checkpoints](https://huggingface.co/erickfm/frame-checkpoints)
67
 
68
- ## Related
 
 
 
 
 
 
 
 
 
 
 
69
 
70
- - [MIMIC](https://github.com/erickfm/MIMIC) — Training and inference code
71
- - [erickfm/frame-melee](https://huggingface.co/datasets/erickfm/frame-melee) — Full training dataset (~95k replays, 86 GB)
72
- - [erickfm/frame-melee-subset](https://huggingface.co/datasets/erickfm/frame-melee-subset) 1k replay subset for quick experiments
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
 
74
  ## License
75
 
76
- MIT
 
1
  ---
2
  license: mit
3
  tags:
4
+ - behavior-cloning
 
5
  - imitation-learning
6
+ - super-smash-bros-melee
7
+ - reinforcement-learning
8
+ - gaming
9
+ library_name: pytorch
10
  ---
11
 
12
+ # MIMIC: Melee Imitation Model for Input Cloning
13
+
14
+ Behavior-cloned Super Smash Bros. Melee bots trained on human Slippi replays.
15
+ Four character-specific models (Fox, Falco, Captain Falcon, Luigi), each a
16
+ ~20M-parameter transformer that takes a 256-frame window of game state and
17
+ outputs controller inputs (main stick, c-stick, shoulder, buttons) at 60 Hz.
18
+
19
+ - **Repo**: https://github.com/erickfm/MIMIC
20
+ - **Base architecture**: HAL's GPTv5Controller (Eric Gu,
21
+ https://github.com/ericyuegu/hal) — 6-layer causal transformer,
22
+ 512 d_model, 8 heads, 256-frame context, relative position encoding
23
+ (Shaw et al.)
24
+ - **MIMIC-specific changes**: 7-class button head (distinct TRIG class for
25
+ airdodge/wavedash, which HAL's 5-class head cannot represent); v2 shard
26
+ alignment that fixes a subtle gamestate leak in the training targets
27
+ (see research notes 2026-04-11c); fix for the digital L press bug that
28
+ prevented all 7-class BC bots from wavedashing until 2026-04-13.
29
+ - **Training data**: filtered from
30
+ [erickfm/slippi-public-dataset-v3.7](https://huggingface.co/datasets/erickfm/slippi-public-dataset-v3.7)
31
+ (~95K Slippi replays).
32
+
33
+ ## Per-character checkpoints
34
+
35
+ | Character | Games | Val btn F1 | Val main F1 | Val loss | Step |
36
+ |---|---|---|---|---|---|
37
+ | **Fox** | 17,319 | ~59% | ~15% | 2.27 | 28,165 |
38
+ | **Falco** | 9,110 | 88.2% | 58.5% | 0.68 | 28,122 |
39
+ | **Captain Falcon** | 9,404 | 89.9% | 52.2% | 0.71 | 26,814 |
40
+ | **Luigi** | 1,951 | ~91% | ~60% | ~1.0 | 5,242 |
41
+
42
+ ## Repo layout
43
 
44
+ ```
45
+ MIMIC/
46
+ ├── README.md # this file
47
+ ├── fox/
48
+ │ ├── model.pt # raw PyTorch checkpoint
49
+ │ ├── config.json # ModelConfig (copied from ckpt["config"])
50
+ │ ├── metadata.json # provenance (step, val metrics, notes)
51
+ │ ├── hal_norm.json # normalization stats
52
+ │ ├── controller_combos.json # 7-class button combo spec
53
+ │ ├── cat_maps.json
54
+ │ ├── stick_clusters.json
55
+ │ └── norm_stats.json
56
+ ├── falco/ (same layout)
57
+ ├── cptfalcon/ (same layout)
58
+ └── luigi/ (same layout)
59
+ ```
60
 
61
+ Each character directory is self-contained — the JSONs are the exact
62
+ metadata used during training, copied verbatim from the MIMIC data dir so
63
+ any inference script can load them without touching the MIMIC repo.
 
 
 
 
 
64
 
65
+ ## Usage
66
 
67
+ Clone the MIMIC repo and pull this model:
68
 
69
+ ```bash
70
+ git clone https://github.com/erickfm/MIMIC.git
71
+ cd MIMIC
72
+ bash setup.sh # installs Dolphin, deps, ISO
 
 
 
 
 
 
73
 
74
+ # Download all four characters
75
+ python3 -c "
76
+ from huggingface_hub import snapshot_download
77
+ snapshot_download('erickfm/MIMIC', local_dir='./hf_checkpoints')
78
+ "
79
+ ```
80
 
81
+ Run a character against a level-9 CPU:
82
 
83
+ ```bash
84
+ python3 tools/run_mimic_via_hal_loop.py \
85
+ --checkpoint hf_checkpoints/falco/model.pt \
86
+ --dolphin-path ./emulator/squashfs-root/usr/bin/dolphin-emu \
87
+ --iso-path ./melee.iso \
88
+ --data-dir hf_checkpoints/falco \
89
+ --character FALCO --cpu-character FALCO --cpu-level 9 \
90
+ --stage FINAL_DESTINATION
91
+ ```
92
 
93
+ Or play the bot over Slippi Online Direct Connect:
 
 
 
 
94
 
95
+ ```bash
96
+ python3 tools/play_netplay.py \
97
+ --checkpoint hf_checkpoints/falco/model.pt \
98
+ --dolphin-path ./emulator/squashfs-root/usr/bin/dolphin-emu \
99
+ --iso-path ./melee.iso \
100
+ --data-dir hf_checkpoints/falco \
101
+ --character FALCO \
102
+ --connect-code YOUR#123
103
  ```
104
 
105
+ The MIMIC repo also includes a Discord bot frontend
106
+ (`tools/discord_bot.py`) that queues direct-connect matches per user.
107
+ See [docs/discord-bot-setup.md](https://github.com/erickfm/MIMIC/blob/main/docs/discord-bot-setup.md).
108
 
109
+ ## Architecture
110
 
111
+ ```
112
+ Slippi Frame ──► HALFlatEncoder (Linear 166→512) ──► 512-d per-frame vector
113
+
114
+ 256-frame window ──► + Relative Position Encoding ────────┘
115
+
116
+ 6× Pre-Norm Causal Transformer Blocks (512-d, 8 heads)
117
+
118
+ Autoregressive Output Heads (with detach)
119
+
120
+ ┌──────────┼──────────┬───────────┐
121
+ shoulder(3) c_stick(9) main_stick(37) buttons(7)
122
+ ```
123
 
124
+ ### 7-class button head
125
+
126
+ | Class | Meaning |
127
+ |---|---|
128
+ | 0 | A |
129
+ | 1 | B |
130
+ | 2 | Z |
131
+ | 3 | JUMP (X or Y) |
132
+ | 4 | TRIG (digital L or R) |
133
+ | 5 | A_TRIG (shield grab) |
134
+ | 6 | NONE |
135
+
136
+ HAL's original 5-class head (`A, B, Jump, Z, None`) has no TRIG class and
137
+ structurally cannot execute airdodge, which means HAL-lineage bots cannot
138
+ wavedash. MIMIC's 7-class encoding plus a fix for `decode_and_press`
139
+ (which was silently dropping the digital L press until 2026-04-13) is
140
+ what enables the wavedashing you'll see in the replays.
141
+
142
+ ### Input features
143
+
144
+ 9 numeric features per player (ego + opponent = 18 total):
145
+ `percent, stock, facing, invulnerable, jumps_left, on_ground,
146
+ shield_strength, position_x, position_y`
147
+
148
+ Plus categorical embeddings: stage(4d), 2× character(12d), 2× action(32d).
149
+ Plus controller state from the previous frame as a 56-dim one-hot
150
+ (37 stick + 9 c-stick + 7 button + 3 shoulder).
151
+
152
+ Total input per frame: 166 dimensions → projected to 512.
153
+
154
+ ## Training
155
+
156
+ - Optimizer: AdamW, LR 3e-4, weight decay 0.01, no warmup
157
+ - LR schedule: CosineAnnealingLR, eta_min 1e-6
158
+ - Gradient clip: 1.0
159
+ - Dropout: 0.2
160
+ - Sequence length: 256 frames (~4.3 seconds)
161
+ - Mixed precision: BF16 AMP with FP32 upcast for relpos attention
162
+ (prevents BF16 overflow in the manual Q@K^T + Srel computation)
163
+ - Batch size: 512 (typically single-GPU on an RTX 5090)
164
+ - Steps: ~32K for well-represented characters, early-stopped for Luigi
165
+ - Reaction delay: 0 (v2 shards have target[i] = buttons[i+1], so the
166
+ default rd=0 matches inference — do NOT use `--reaction-delay 1` or
167
+ `--controller-offset` with v2 shards)
168
+
169
+ ## Known limitations
170
+
171
+ 1. **Character-locked**: each model only plays the character it was trained
172
+ on. No matchup generalization. Training a multi-character model with a
173
+ character embedding is a natural next step but not done yet.
174
+ 2. **Fox model is legacy**: the Fox checkpoint is from an earlier run that
175
+ predates the `--self-inputs` fix. Its val metrics are much lower than
176
+ the others and it plays slightly worse.
177
+ 3. **Small-dataset overfitting**: Luigi only has 1951 training games after
178
+ filtering. The `_best.pt` checkpoint is early-stopped at step 5242 to
179
+ avoid the val-loss climb. Plays surprisingly well for the data volume.
180
+ 4. **Edge guarding and recovery weaknesses**: the bot doesn't consistently
181
+ go for off-stage edge guards or execute high-skill recovery mixups.
182
+ 5. **No matchmaking / Ranked**: the Discord bot only joins explicit Direct
183
+ Connect lobbies. Do NOT adapt it for Slippi Online Unranked or Ranked —
184
+ the libmelee README explicitly forbids bots on those ladders, and
185
+ Slippi has not yet opened a "bot account" opt-in system.
186
+
187
+ ## Acknowledgments
188
+
189
+ - **Eric Gu** for HAL, the reference implementation MIMIC is based on.
190
+ HAL's architecture, tokenization, and training pipeline are the
191
+ foundation. https://github.com/ericyuegu/hal
192
+ - **Vlad Firoiu and collaborators** for libmelee, the Python interface
193
+ to Dolphin + Slippi. https://github.com/altf4/libmelee
194
+ - **Project Slippi** for the Slippi Dolphin fork, replay format, and
195
+ Direct Connect rollback netplay. https://slippi.gg
196
 
197
  ## License
198
 
199
+ MIT — see the MIMIC repo's LICENSE file.
cptfalcon/cat_maps.json ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "proj7_owner": {
3
+ "-1": 0,
4
+ "0": 1,
5
+ "1": 2,
6
+ "2": 3,
7
+ "3": 4,
8
+ "4": 5
9
+ },
10
+ "proj7_subtype": {
11
+ "-1": 0,
12
+ "0": 1,
13
+ "1": 2,
14
+ "2": 3,
15
+ "3": 4,
16
+ "4": 5
17
+ },
18
+ "proj6_owner": {
19
+ "-1": 0,
20
+ "0": 1,
21
+ "1": 2,
22
+ "2": 3,
23
+ "3": 4,
24
+ "4": 5
25
+ },
26
+ "proj6_subtype": {
27
+ "-1": 0,
28
+ "0": 1,
29
+ "1": 2,
30
+ "2": 3,
31
+ "3": 4,
32
+ "4": 5,
33
+ "7": 6
34
+ },
35
+ "proj5_owner": {
36
+ "-1": 0,
37
+ "0": 1,
38
+ "1": 2,
39
+ "2": 3,
40
+ "3": 4,
41
+ "4": 5
42
+ },
43
+ "proj5_subtype": {
44
+ "-1": 0,
45
+ "0": 1,
46
+ "1": 2,
47
+ "2": 3,
48
+ "3": 4,
49
+ "4": 5,
50
+ "5": 6,
51
+ "6": 7,
52
+ "7": 8,
53
+ "8": 9
54
+ },
55
+ "proj4_owner": {
56
+ "-1": 0,
57
+ "0": 1,
58
+ "1": 2,
59
+ "2": 3,
60
+ "3": 4,
61
+ "4": 5
62
+ },
63
+ "proj4_subtype": {
64
+ "-1": 0,
65
+ "0": 1,
66
+ "1": 2,
67
+ "2": 3,
68
+ "3": 4,
69
+ "4": 5,
70
+ "5": 6,
71
+ "6": 7,
72
+ "7": 8,
73
+ "8": 9
74
+ },
75
+ "proj3_owner": {
76
+ "-1": 0,
77
+ "0": 1,
78
+ "1": 2,
79
+ "2": 3,
80
+ "3": 4,
81
+ "4": 5
82
+ },
83
+ "proj3_subtype": {
84
+ "-1": 0,
85
+ "0": 1,
86
+ "1": 2,
87
+ "2": 3,
88
+ "3": 4,
89
+ "4": 5,
90
+ "5": 6,
91
+ "6": 7,
92
+ "7": 8,
93
+ "8": 9
94
+ },
95
+ "proj2_owner": {
96
+ "-1": 0,
97
+ "0": 1,
98
+ "1": 2,
99
+ "2": 3,
100
+ "3": 4,
101
+ "4": 5
102
+ },
103
+ "proj2_subtype": {
104
+ "-1": 0,
105
+ "0": 1,
106
+ "1": 2,
107
+ "2": 3,
108
+ "3": 4,
109
+ "4": 5,
110
+ "5": 6,
111
+ "6": 7,
112
+ "7": 8,
113
+ "8": 9
114
+ },
115
+ "proj1_owner": {
116
+ "-1": 0,
117
+ "0": 1,
118
+ "1": 2,
119
+ "2": 3,
120
+ "3": 4,
121
+ "4": 5
122
+ },
123
+ "proj1_subtype": {
124
+ "-1": 0,
125
+ "0": 1,
126
+ "1": 2,
127
+ "2": 3,
128
+ "3": 4,
129
+ "4": 5,
130
+ "5": 6,
131
+ "6": 7,
132
+ "7": 8,
133
+ "8": 9
134
+ },
135
+ "proj0_owner": {
136
+ "-1": 0,
137
+ "0": 1,
138
+ "1": 2,
139
+ "2": 3,
140
+ "3": 4,
141
+ "4": 5
142
+ },
143
+ "proj0_subtype": {
144
+ "-1": 0,
145
+ "0": 1,
146
+ "1": 2,
147
+ "2": 3,
148
+ "3": 4,
149
+ "4": 5,
150
+ "5": 6,
151
+ "6": 7,
152
+ "7": 8,
153
+ "8": 9,
154
+ "11": 10
155
+ },
156
+ "opp_port": {
157
+ "0": 0,
158
+ "1": 1,
159
+ "2": 2,
160
+ "3": 3,
161
+ "4": 4
162
+ },
163
+ "opp_costume": {
164
+ "0": 0,
165
+ "1": 1,
166
+ "2": 2,
167
+ "3": 3,
168
+ "4": 4,
169
+ "5": 5
170
+ },
171
+ "self_port": {
172
+ "0": 0,
173
+ "1": 1,
174
+ "2": 2,
175
+ "3": 3,
176
+ "4": 4
177
+ },
178
+ "self_costume": {
179
+ "0": 0,
180
+ "1": 1,
181
+ "2": 2,
182
+ "3": 3,
183
+ "4": 4,
184
+ "5": 5
185
+ }
186
+ }
cptfalcon/config.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "d_model": 512,
3
+ "nhead": 8,
4
+ "num_layers": 6,
5
+ "dim_feedforward": 2048,
6
+ "dropout": 0.2,
7
+ "encoder_type": "hal_flat",
8
+ "d_intra": 256,
9
+ "encoder_nlayers": 2,
10
+ "k_query": 1,
11
+ "scaled_emb": false,
12
+ "max_seq_len": 256,
13
+ "pos_enc": "relpos",
14
+ "rope_theta": 10000.0,
15
+ "rope_learnable_freqs": false,
16
+ "xpos_scale_base": 0.0,
17
+ "attn_variant": "standard",
18
+ "n_kv_heads": 0,
19
+ "use_rmsnorm": false,
20
+ "use_swiglu": false,
21
+ "stick_loss": "clusters",
22
+ "btn_loss": "focal",
23
+ "no_opp_inputs": true,
24
+ "no_self_inputs": false,
25
+ "head_hidden": 256,
26
+ "n_stick_clusters": 37,
27
+ "n_shoulder_bins": 3,
28
+ "autoregressive_heads": true,
29
+ "hal_mode": true,
30
+ "lean_features": false,
31
+ "hal_minimal_features": true,
32
+ "hal_controller_encoding": true,
33
+ "n_controller_combos": 7,
34
+ "num_stages": 6,
35
+ "num_ports": 4,
36
+ "num_characters": 27,
37
+ "num_actions": 396,
38
+ "num_costumes": 6,
39
+ "num_c_dirs": 9,
40
+ "num_proj_types": 103,
41
+ "num_proj_subtypes": 40,
42
+ "model_preset": "hal",
43
+ "run_name": "cptfalcon-7class-v2"
44
+ }
cptfalcon/controller_combos.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "button_names": ["A", "B", "Z", "JUMP", "TRIG", "A_TRIG", "NONE"],
3
+ "n_combos": 7,
4
+ "class_scheme": "melee_7class"
5
+ }
cptfalcon/hal_norm.json ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "features": {
3
+ "percent": {
4
+ "transform": "normalize",
5
+ "min": 0.0,
6
+ "max": 248.74000549316406,
7
+ "mean": 51.95983317255054,
8
+ "std": 41.968951332585824
9
+ },
10
+ "stock": {
11
+ "transform": "normalize",
12
+ "min": 0.0,
13
+ "max": 4.0,
14
+ "mean": 2.706313936666291,
15
+ "std": 1.0676758056121092
16
+ },
17
+ "facing": {
18
+ "transform": "normalize",
19
+ "min": 0.0,
20
+ "max": 1.0,
21
+ "mean": 0.5,
22
+ "std": 0.5
23
+ },
24
+ "invulnerable": {
25
+ "transform": "normalize",
26
+ "min": 0.0,
27
+ "max": 1.0,
28
+ "mean": 0.5,
29
+ "std": 0.5
30
+ },
31
+ "jumps_left": {
32
+ "transform": "normalize",
33
+ "min": 0.0,
34
+ "max": 6.0,
35
+ "mean": 1.37347476621212,
36
+ "std": 1.0
37
+ },
38
+ "on_ground": {
39
+ "transform": "normalize",
40
+ "min": 0.0,
41
+ "max": 1.0,
42
+ "mean": 0.5,
43
+ "std": 0.5
44
+ },
45
+ "shield_strength": {
46
+ "transform": "invert_normalize",
47
+ "min": 0.0,
48
+ "max": 60.0,
49
+ "mean": 58.83739485300921,
50
+ "std": 3.5948948328876775
51
+ },
52
+ "pos_x": {
53
+ "transform": "standardize",
54
+ "min": -273.2964782714844,
55
+ "max": 272.9228515625,
56
+ "mean": 2.095804605074829,
57
+ "std": 56.876036164389376
58
+ },
59
+ "pos_y": {
60
+ "transform": "standardize",
61
+ "min": -153.08863830566406,
62
+ "max": 312.3891296386719,
63
+ "mean": 11.285403637158234,
64
+ "std": 32.36464426855818
65
+ }
66
+ }
67
+ }
cptfalcon/metadata.json ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "character": "Captain Falcon",
3
+ "melee_enum": "CPTFALCON",
4
+ "run_name": "cptfalcon-7class-v2",
5
+ "global_step": 26814,
6
+ "games_trained": 9404,
7
+ "val_btn_f1": "89.9%",
8
+ "val_main_f1": "52.2%",
9
+ "val_loss": "0.71",
10
+ "n_params": 26276389,
11
+ "n_controller_combos": 7,
12
+ "model_preset": "hal",
13
+ "pos_enc": "relpos",
14
+ "no_self_inputs": false,
15
+ "training_notes": "Trained 2026-04-12, same recipe as Falco but on Captain Falcon replays (10K files \u2192 9404 games). In bot-vs-bot dittos, wavedashes ~16%, actively dashes, grabs, and does aerials."
16
+ }
cptfalcon/model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:24acfb9b8508e6652007a8426add281056681c9638e8ef35cefef44768779d24
3
+ size 265139738
cptfalcon/norm_stats.json ADDED
@@ -0,0 +1,674 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "blastzone_bottom": [
3
+ -117.65425407727993,
4
+ 18.262450305928876
5
+ ],
6
+ "blastzone_left": [
7
+ -221.0636767362987,
8
+ 26.446253126378878
9
+ ],
10
+ "blastzone_right": [
11
+ 220.69921511796144,
12
+ 27.07588367452761
13
+ ],
14
+ "blastzone_top": [
15
+ 197.0612914988483,
16
+ 25.107361977908766
17
+ ],
18
+ "distance": [
19
+ 46.89352840468522,
20
+ 41.6457437018197
21
+ ],
22
+ "frame": [
23
+ 4974.586012834133,
24
+ 3231.6958953148887
25
+ ],
26
+ "left_platform_height": [
27
+ 26.38494154164375,
28
+ 2.3727475770040893
29
+ ],
30
+ "left_platform_left": [
31
+ -58.22050999659657,
32
+ 2.2432174911865275
33
+ ],
34
+ "left_platform_right": [
35
+ -25.508112173086992,
36
+ 4.376336119755992
37
+ ],
38
+ "opp_action_frame": [
39
+ 11.87692085782767,
40
+ 12.836349237420098
41
+ ],
42
+ "opp_ecb_bottom_x": [
43
+ 0.0,
44
+ 1.0
45
+ ],
46
+ "opp_ecb_bottom_y": [
47
+ 0.0,
48
+ 1.0
49
+ ],
50
+ "opp_ecb_left_x": [
51
+ 0.0,
52
+ 1.0
53
+ ],
54
+ "opp_ecb_left_y": [
55
+ 0.0,
56
+ 1.0
57
+ ],
58
+ "opp_ecb_right_x": [
59
+ 0.0,
60
+ 1.0
61
+ ],
62
+ "opp_ecb_right_y": [
63
+ 0.0,
64
+ 1.0
65
+ ],
66
+ "opp_ecb_top_x": [
67
+ 0.0,
68
+ 1.0
69
+ ],
70
+ "opp_ecb_top_y": [
71
+ 0.0,
72
+ 1.0
73
+ ],
74
+ "opp_hitlag_left": [
75
+ 0.011022251381279467,
76
+ 1.0
77
+ ],
78
+ "opp_hitstun_left": [
79
+ 6.207891702008504,
80
+ 21.609078401117316
81
+ ],
82
+ "opp_invuln_left": [
83
+ 0.0,
84
+ 1.0
85
+ ],
86
+ "opp_jumps_left": [
87
+ 1.37347476621212,
88
+ 1.0
89
+ ],
90
+ "opp_l_shldr": [
91
+ 0.16628418862819672,
92
+ 1.0
93
+ ],
94
+ "opp_main_x": [
95
+ 0.18162456154823303,
96
+ 1.0
97
+ ],
98
+ "opp_main_y": [
99
+ 0.18162456154823303,
100
+ 1.0
101
+ ],
102
+ "opp_nana_action_frame": [
103
+ 12.621206460649352,
104
+ 14.60026923736515
105
+ ],
106
+ "opp_nana_ecb_bottom_x": [
107
+ 0.0,
108
+ 1.0
109
+ ],
110
+ "opp_nana_ecb_bottom_y": [
111
+ 0.0,
112
+ 1.0
113
+ ],
114
+ "opp_nana_ecb_left_x": [
115
+ 0.0,
116
+ 1.0
117
+ ],
118
+ "opp_nana_ecb_left_y": [
119
+ 0.0,
120
+ 1.0
121
+ ],
122
+ "opp_nana_ecb_right_x": [
123
+ 0.0,
124
+ 1.0
125
+ ],
126
+ "opp_nana_ecb_right_y": [
127
+ 0.0,
128
+ 1.0
129
+ ],
130
+ "opp_nana_ecb_top_x": [
131
+ 0.0,
132
+ 1.0
133
+ ],
134
+ "opp_nana_ecb_top_y": [
135
+ 0.0,
136
+ 1.0
137
+ ],
138
+ "opp_nana_hitlag_left": [
139
+ 0.0056202595617094175,
140
+ 1.0
141
+ ],
142
+ "opp_nana_hitstun_left": [
143
+ 5.165146239507015,
144
+ 22.602253744569836
145
+ ],
146
+ "opp_nana_invuln_left": [
147
+ 0.0,
148
+ 1.0
149
+ ],
150
+ "opp_nana_jumps_left": [
151
+ 1.4042130889419322,
152
+ 1.0
153
+ ],
154
+ "opp_nana_l_shldr": [
155
+ 0.0,
156
+ 1.0
157
+ ],
158
+ "opp_nana_main_x": [
159
+ 0.5,
160
+ 1.0
161
+ ],
162
+ "opp_nana_main_y": [
163
+ 0.5,
164
+ 1.0
165
+ ],
166
+ "opp_nana_percent": [
167
+ 39.102286283530674,
168
+ 35.88860614948017
169
+ ],
170
+ "opp_nana_pos_x": [
171
+ 1.2068642679018815,
172
+ 49.30211774003539
173
+ ],
174
+ "opp_nana_pos_y": [
175
+ 10.58418713398032,
176
+ 34.35033591865463
177
+ ],
178
+ "opp_nana_r_shldr": [
179
+ 0.0,
180
+ 1.0
181
+ ],
182
+ "opp_nana_shield_strength": [
183
+ 58.85621297161418,
184
+ 3.5665092548631234
185
+ ],
186
+ "opp_nana_speed_air_x_self": [
187
+ 7.449704370577794e-05,
188
+ 1.0
189
+ ],
190
+ "opp_nana_speed_ground_x_self": [
191
+ 0.0004617140358648432,
192
+ 1.0
193
+ ],
194
+ "opp_nana_speed_x_attack": [
195
+ 0.0006254869455141354,
196
+ 1.0
197
+ ],
198
+ "opp_nana_speed_y_attack": [
199
+ 0.01099576749089697,
200
+ 1.0
201
+ ],
202
+ "opp_nana_speed_y_self": [
203
+ -0.01155770004031499,
204
+ 1.0
205
+ ],
206
+ "opp_nana_stock": [
207
+ 2.653193168742282,
208
+ 1.0754299773926206
209
+ ],
210
+ "opp_percent": [
211
+ 51.95983317255058,
212
+ 41.968951332585775
213
+ ],
214
+ "opp_pos_x": [
215
+ 2.095804605074832,
216
+ 56.87603616438966
217
+ ],
218
+ "opp_pos_y": [
219
+ 11.285403637157915,
220
+ 32.36464426855837
221
+ ],
222
+ "opp_r_shldr": [
223
+ 0.16628418862819672,
224
+ 1.0
225
+ ],
226
+ "opp_shield_strength": [
227
+ 58.83739485300921,
228
+ 3.594894832887488
229
+ ],
230
+ "opp_speed_air_x_self": [
231
+ -2.5396470322689237e-05,
232
+ 1.0
233
+ ],
234
+ "opp_speed_ground_x_self": [
235
+ 7.379903611212253e-05,
236
+ 1.0
237
+ ],
238
+ "opp_speed_x_attack": [
239
+ 0.00016006144034171966,
240
+ 1.0
241
+ ],
242
+ "opp_speed_y_attack": [
243
+ 0.016839584911564988,
244
+ 1.0
245
+ ],
246
+ "opp_speed_y_self": [
247
+ -0.02085563252216532,
248
+ 1.0
249
+ ],
250
+ "opp_stock": [
251
+ 2.706313936666291,
252
+ 1.0676758056121092
253
+ ],
254
+ "proj0_frame": [
255
+ 0.0,
256
+ 1.0
257
+ ],
258
+ "proj0_pos_x": [
259
+ 0.0,
260
+ 1.0
261
+ ],
262
+ "proj0_pos_y": [
263
+ 0.0,
264
+ 1.0
265
+ ],
266
+ "proj0_speed_x": [
267
+ 0.0,
268
+ 1.0
269
+ ],
270
+ "proj0_speed_y": [
271
+ 0.0,
272
+ 1.0
273
+ ],
274
+ "proj1_frame": [
275
+ 0.0,
276
+ 1.0
277
+ ],
278
+ "proj1_pos_x": [
279
+ 0.0,
280
+ 1.0
281
+ ],
282
+ "proj1_pos_y": [
283
+ 0.0,
284
+ 1.0
285
+ ],
286
+ "proj1_speed_x": [
287
+ 0.0,
288
+ 1.0
289
+ ],
290
+ "proj1_speed_y": [
291
+ 0.0,
292
+ 1.0
293
+ ],
294
+ "proj2_frame": [
295
+ 0.0,
296
+ 1.0
297
+ ],
298
+ "proj2_pos_x": [
299
+ 0.0,
300
+ 1.0
301
+ ],
302
+ "proj2_pos_y": [
303
+ 0.0,
304
+ 1.0
305
+ ],
306
+ "proj2_speed_x": [
307
+ 0.0,
308
+ 1.0
309
+ ],
310
+ "proj2_speed_y": [
311
+ 0.0,
312
+ 1.0
313
+ ],
314
+ "proj3_frame": [
315
+ 0.0,
316
+ 1.0
317
+ ],
318
+ "proj3_pos_x": [
319
+ 0.0,
320
+ 1.0
321
+ ],
322
+ "proj3_pos_y": [
323
+ 0.0,
324
+ 1.0
325
+ ],
326
+ "proj3_speed_x": [
327
+ 0.0,
328
+ 1.0
329
+ ],
330
+ "proj3_speed_y": [
331
+ 0.0,
332
+ 1.0
333
+ ],
334
+ "proj4_frame": [
335
+ 0.0,
336
+ 1.0
337
+ ],
338
+ "proj4_pos_x": [
339
+ 0.0,
340
+ 1.0
341
+ ],
342
+ "proj4_pos_y": [
343
+ 0.0,
344
+ 1.0
345
+ ],
346
+ "proj4_speed_x": [
347
+ 0.0,
348
+ 1.0
349
+ ],
350
+ "proj4_speed_y": [
351
+ 0.0,
352
+ 1.0
353
+ ],
354
+ "proj5_frame": [
355
+ 0.0,
356
+ 1.0
357
+ ],
358
+ "proj5_pos_x": [
359
+ 0.0,
360
+ 1.0
361
+ ],
362
+ "proj5_pos_y": [
363
+ 0.0,
364
+ 1.0
365
+ ],
366
+ "proj5_speed_x": [
367
+ 0.0,
368
+ 1.0
369
+ ],
370
+ "proj5_speed_y": [
371
+ 0.0,
372
+ 1.0
373
+ ],
374
+ "proj6_frame": [
375
+ 0.0,
376
+ 1.0
377
+ ],
378
+ "proj6_pos_x": [
379
+ 0.0,
380
+ 1.0
381
+ ],
382
+ "proj6_pos_y": [
383
+ 0.0,
384
+ 1.0
385
+ ],
386
+ "proj6_speed_x": [
387
+ 0.0,
388
+ 1.0
389
+ ],
390
+ "proj6_speed_y": [
391
+ 0.0,
392
+ 1.0
393
+ ],
394
+ "proj7_frame": [
395
+ 0.0,
396
+ 1.0
397
+ ],
398
+ "proj7_pos_x": [
399
+ 0.0,
400
+ 1.0
401
+ ],
402
+ "proj7_pos_y": [
403
+ 0.0,
404
+ 1.0
405
+ ],
406
+ "proj7_speed_x": [
407
+ 0.0,
408
+ 1.0
409
+ ],
410
+ "proj7_speed_y": [
411
+ 0.0,
412
+ 1.0
413
+ ],
414
+ "randall_height": [
415
+ -23.612431513793055,
416
+ 9.495261087482037
417
+ ],
418
+ "randall_left": [
419
+ -4.50880393479985,
420
+ 60.44143162238004
421
+ ],
422
+ "randall_right": [
423
+ 7.391196065174139,
424
+ 60.441431622283126
425
+ ],
426
+ "right_platform_height": [
427
+ 26.405558774032343,
428
+ 2.4055154064281274
429
+ ],
430
+ "right_platform_left": [
431
+ 25.503635359959812,
432
+ 4.369980335853813
433
+ ],
434
+ "right_platform_right": [
435
+ 58.56582543252829,
436
+ 2.7720777242750203
437
+ ],
438
+ "self_action_frame": [
439
+ 11.87692085782767,
440
+ 12.836349237420098
441
+ ],
442
+ "self_ecb_bottom_x": [
443
+ 0.0,
444
+ 1.0
445
+ ],
446
+ "self_ecb_bottom_y": [
447
+ 0.0,
448
+ 1.0
449
+ ],
450
+ "self_ecb_left_x": [
451
+ 0.0,
452
+ 1.0
453
+ ],
454
+ "self_ecb_left_y": [
455
+ 0.0,
456
+ 1.0
457
+ ],
458
+ "self_ecb_right_x": [
459
+ 0.0,
460
+ 1.0
461
+ ],
462
+ "self_ecb_right_y": [
463
+ 0.0,
464
+ 1.0
465
+ ],
466
+ "self_ecb_top_x": [
467
+ 0.0,
468
+ 1.0
469
+ ],
470
+ "self_ecb_top_y": [
471
+ 0.0,
472
+ 1.0
473
+ ],
474
+ "self_hitlag_left": [
475
+ 0.011022251381279467,
476
+ 1.0
477
+ ],
478
+ "self_hitstun_left": [
479
+ 6.207891702008504,
480
+ 21.609078401117316
481
+ ],
482
+ "self_invuln_left": [
483
+ 0.0,
484
+ 1.0
485
+ ],
486
+ "self_jumps_left": [
487
+ 1.37347476621212,
488
+ 1.0
489
+ ],
490
+ "self_l_shldr": [
491
+ 0.16628387570381165,
492
+ 1.0
493
+ ],
494
+ "self_main_x": [
495
+ 0.18162456154823303,
496
+ 1.0
497
+ ],
498
+ "self_main_y": [
499
+ 0.18162456154823303,
500
+ 1.0
501
+ ],
502
+ "self_nana_action_frame": [
503
+ 12.621206460649352,
504
+ 14.60026923736515
505
+ ],
506
+ "self_nana_ecb_bottom_x": [
507
+ 0.0,
508
+ 1.0
509
+ ],
510
+ "self_nana_ecb_bottom_y": [
511
+ 0.0,
512
+ 1.0
513
+ ],
514
+ "self_nana_ecb_left_x": [
515
+ 0.0,
516
+ 1.0
517
+ ],
518
+ "self_nana_ecb_left_y": [
519
+ 0.0,
520
+ 1.0
521
+ ],
522
+ "self_nana_ecb_right_x": [
523
+ 0.0,
524
+ 1.0
525
+ ],
526
+ "self_nana_ecb_right_y": [
527
+ 0.0,
528
+ 1.0
529
+ ],
530
+ "self_nana_ecb_top_x": [
531
+ 0.0,
532
+ 1.0
533
+ ],
534
+ "self_nana_ecb_top_y": [
535
+ 0.0,
536
+ 1.0
537
+ ],
538
+ "self_nana_hitlag_left": [
539
+ 0.0056202595617094175,
540
+ 1.0
541
+ ],
542
+ "self_nana_hitstun_left": [
543
+ 5.165146239507015,
544
+ 22.602253744569836
545
+ ],
546
+ "self_nana_invuln_left": [
547
+ 0.0,
548
+ 1.0
549
+ ],
550
+ "self_nana_jumps_left": [
551
+ 1.4042130889419322,
552
+ 1.0
553
+ ],
554
+ "self_nana_l_shldr": [
555
+ 0.0,
556
+ 1.0
557
+ ],
558
+ "self_nana_main_x": [
559
+ 0.5,
560
+ 1.0
561
+ ],
562
+ "self_nana_main_y": [
563
+ 0.5,
564
+ 1.0
565
+ ],
566
+ "self_nana_percent": [
567
+ 39.102286283530674,
568
+ 35.88860614948017
569
+ ],
570
+ "self_nana_pos_x": [
571
+ 1.2068642679018815,
572
+ 49.30211774003539
573
+ ],
574
+ "self_nana_pos_y": [
575
+ 10.58418713398032,
576
+ 34.35033591865463
577
+ ],
578
+ "self_nana_r_shldr": [
579
+ 0.0,
580
+ 1.0
581
+ ],
582
+ "self_nana_shield_strength": [
583
+ 58.85621297161418,
584
+ 3.5665092548631234
585
+ ],
586
+ "self_nana_speed_air_x_self": [
587
+ 7.449704370577794e-05,
588
+ 1.0
589
+ ],
590
+ "self_nana_speed_ground_x_self": [
591
+ 0.0004617140358648432,
592
+ 1.0
593
+ ],
594
+ "self_nana_speed_x_attack": [
595
+ 0.0006254869455141354,
596
+ 1.0
597
+ ],
598
+ "self_nana_speed_y_attack": [
599
+ 0.01099576749089697,
600
+ 1.0
601
+ ],
602
+ "self_nana_speed_y_self": [
603
+ -0.01155770004031499,
604
+ 1.0
605
+ ],
606
+ "self_nana_stock": [
607
+ 2.653193168742282,
608
+ 1.0754299773926206
609
+ ],
610
+ "self_percent": [
611
+ 51.95983317255054,
612
+ 41.968951332585824
613
+ ],
614
+ "self_pos_x": [
615
+ 2.095804605074829,
616
+ 56.876036164389376
617
+ ],
618
+ "self_pos_y": [
619
+ 11.285403637158234,
620
+ 32.36464426855818
621
+ ],
622
+ "self_r_shldr": [
623
+ 0.16628387570381165,
624
+ 1.0
625
+ ],
626
+ "self_shield_strength": [
627
+ 58.83739485300921,
628
+ 3.5948948328876775
629
+ ],
630
+ "self_speed_air_x_self": [
631
+ -2.5396470322689227e-05,
632
+ 1.0
633
+ ],
634
+ "self_speed_ground_x_self": [
635
+ 7.379903611212253e-05,
636
+ 1.0
637
+ ],
638
+ "self_speed_x_attack": [
639
+ 0.00016006144034171966,
640
+ 1.0
641
+ ],
642
+ "self_speed_y_attack": [
643
+ 0.016839584911564988,
644
+ 1.0
645
+ ],
646
+ "self_speed_y_self": [
647
+ -0.02085563252216532,
648
+ 1.0
649
+ ],
650
+ "self_stock": [
651
+ 2.706313936666291,
652
+ 1.0676758056121092
653
+ ],
654
+ "stage_edge_left": [
655
+ -75.58011646892624,
656
+ 11.397204097224181
657
+ ],
658
+ "stage_edge_right": [
659
+ 75.58011646892624,
660
+ 11.397204097224181
661
+ ],
662
+ "top_platform_height": [
663
+ 48.35880538463942,
664
+ 5.535745808270807
665
+ ],
666
+ "top_platform_left": [
667
+ -17.193803214501965,
668
+ 1.9480815914430683
669
+ ],
670
+ "top_platform_right": [
671
+ 17.19358611770908,
672
+ 1.947878301464183
673
+ ]
674
+ }
cptfalcon/stick_clusters.json ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "stick_centers": [
3
+ [
4
+ 0.5,
5
+ 0.5
6
+ ],
7
+ [
8
+ 0.675,
9
+ 0.5
10
+ ],
11
+ [
12
+ 0.325,
13
+ 0.5
14
+ ],
15
+ [
16
+ 0.5,
17
+ 0.675
18
+ ],
19
+ [
20
+ 0.5,
21
+ 0.325
22
+ ],
23
+ [
24
+ 0.8375,
25
+ 0.5
26
+ ],
27
+ [
28
+ 0.1625,
29
+ 0.5
30
+ ],
31
+ [
32
+ 0.5,
33
+ 0.8375
34
+ ],
35
+ [
36
+ 0.5,
37
+ 0.1625
38
+ ],
39
+ [
40
+ 1.0,
41
+ 0.5
42
+ ],
43
+ [
44
+ 0.5,
45
+ 1.0
46
+ ],
47
+ [
48
+ 0.0,
49
+ 0.5
50
+ ],
51
+ [
52
+ 0.5,
53
+ 0.0
54
+ ],
55
+ [
56
+ 0.975,
57
+ 0.35
58
+ ],
59
+ [
60
+ 0.025,
61
+ 0.35
62
+ ],
63
+ [
64
+ 0.975,
65
+ 0.65
66
+ ],
67
+ [
68
+ 0.025,
69
+ 0.65
70
+ ],
71
+ [
72
+ 0.925,
73
+ 0.25
74
+ ],
75
+ [
76
+ 0.925,
77
+ 0.75
78
+ ],
79
+ [
80
+ 0.075,
81
+ 0.25
82
+ ],
83
+ [
84
+ 0.075,
85
+ 0.75
86
+ ],
87
+ [
88
+ 0.85,
89
+ 0.15
90
+ ],
91
+ [
92
+ 0.15,
93
+ 0.15
94
+ ],
95
+ [
96
+ 0.85,
97
+ 0.85
98
+ ],
99
+ [
100
+ 0.15,
101
+ 0.85
102
+ ],
103
+ [
104
+ 0.75,
105
+ 0.75
106
+ ],
107
+ [
108
+ 0.25,
109
+ 0.75
110
+ ],
111
+ [
112
+ 0.75,
113
+ 0.25
114
+ ],
115
+ [
116
+ 0.25,
117
+ 0.25
118
+ ],
119
+ [
120
+ 0.75,
121
+ 0.925
122
+ ],
123
+ [
124
+ 0.25,
125
+ 0.925
126
+ ],
127
+ [
128
+ 0.75,
129
+ 0.075
130
+ ],
131
+ [
132
+ 0.25,
133
+ 0.075
134
+ ],
135
+ [
136
+ 0.65,
137
+ 0.025
138
+ ],
139
+ [
140
+ 0.65,
141
+ 0.975
142
+ ],
143
+ [
144
+ 0.35,
145
+ 0.025
146
+ ],
147
+ [
148
+ 0.35,
149
+ 0.975
150
+ ]
151
+ ],
152
+ "shoulder_centers": [
153
+ 0.0,
154
+ 0.4,
155
+ 1.0
156
+ ]
157
+ }
falco/cat_maps.json ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "proj7_owner": {
3
+ "-1": 0,
4
+ "0": 1,
5
+ "1": 2,
6
+ "2": 3,
7
+ "3": 4,
8
+ "4": 5
9
+ },
10
+ "proj7_subtype": {
11
+ "-1": 0,
12
+ "0": 1,
13
+ "1": 2,
14
+ "2": 3,
15
+ "3": 4,
16
+ "4": 5
17
+ },
18
+ "proj6_owner": {
19
+ "-1": 0,
20
+ "0": 1,
21
+ "1": 2,
22
+ "2": 3,
23
+ "3": 4,
24
+ "4": 5
25
+ },
26
+ "proj6_subtype": {
27
+ "-1": 0,
28
+ "0": 1,
29
+ "1": 2,
30
+ "2": 3,
31
+ "3": 4,
32
+ "4": 5,
33
+ "7": 6
34
+ },
35
+ "proj5_owner": {
36
+ "-1": 0,
37
+ "0": 1,
38
+ "1": 2,
39
+ "2": 3,
40
+ "3": 4,
41
+ "4": 5
42
+ },
43
+ "proj5_subtype": {
44
+ "-1": 0,
45
+ "0": 1,
46
+ "1": 2,
47
+ "2": 3,
48
+ "3": 4,
49
+ "4": 5,
50
+ "5": 6,
51
+ "6": 7,
52
+ "7": 8,
53
+ "8": 9
54
+ },
55
+ "proj4_owner": {
56
+ "-1": 0,
57
+ "0": 1,
58
+ "1": 2,
59
+ "2": 3,
60
+ "3": 4,
61
+ "4": 5
62
+ },
63
+ "proj4_subtype": {
64
+ "-1": 0,
65
+ "0": 1,
66
+ "1": 2,
67
+ "2": 3,
68
+ "3": 4,
69
+ "4": 5,
70
+ "5": 6,
71
+ "6": 7,
72
+ "7": 8,
73
+ "8": 9
74
+ },
75
+ "proj3_owner": {
76
+ "-1": 0,
77
+ "0": 1,
78
+ "1": 2,
79
+ "2": 3,
80
+ "3": 4,
81
+ "4": 5
82
+ },
83
+ "proj3_subtype": {
84
+ "-1": 0,
85
+ "0": 1,
86
+ "1": 2,
87
+ "2": 3,
88
+ "3": 4,
89
+ "4": 5,
90
+ "5": 6,
91
+ "6": 7,
92
+ "7": 8,
93
+ "8": 9
94
+ },
95
+ "proj2_owner": {
96
+ "-1": 0,
97
+ "0": 1,
98
+ "1": 2,
99
+ "2": 3,
100
+ "3": 4,
101
+ "4": 5
102
+ },
103
+ "proj2_subtype": {
104
+ "-1": 0,
105
+ "0": 1,
106
+ "1": 2,
107
+ "2": 3,
108
+ "3": 4,
109
+ "4": 5,
110
+ "5": 6,
111
+ "6": 7,
112
+ "7": 8,
113
+ "8": 9
114
+ },
115
+ "proj1_owner": {
116
+ "-1": 0,
117
+ "0": 1,
118
+ "1": 2,
119
+ "2": 3,
120
+ "3": 4,
121
+ "4": 5
122
+ },
123
+ "proj1_subtype": {
124
+ "-1": 0,
125
+ "0": 1,
126
+ "1": 2,
127
+ "2": 3,
128
+ "3": 4,
129
+ "4": 5,
130
+ "5": 6,
131
+ "6": 7,
132
+ "7": 8,
133
+ "8": 9
134
+ },
135
+ "proj0_owner": {
136
+ "-1": 0,
137
+ "0": 1,
138
+ "1": 2,
139
+ "2": 3,
140
+ "3": 4,
141
+ "4": 5
142
+ },
143
+ "proj0_subtype": {
144
+ "-1": 0,
145
+ "0": 1,
146
+ "1": 2,
147
+ "2": 3,
148
+ "3": 4,
149
+ "4": 5,
150
+ "5": 6,
151
+ "6": 7,
152
+ "7": 8,
153
+ "8": 9,
154
+ "11": 10
155
+ },
156
+ "opp_port": {
157
+ "0": 0,
158
+ "1": 1,
159
+ "2": 2,
160
+ "3": 3,
161
+ "4": 4
162
+ },
163
+ "opp_costume": {
164
+ "0": 0,
165
+ "1": 1,
166
+ "2": 2,
167
+ "3": 3,
168
+ "4": 4,
169
+ "5": 5
170
+ },
171
+ "self_port": {
172
+ "0": 0,
173
+ "1": 1,
174
+ "2": 2,
175
+ "3": 3,
176
+ "4": 4
177
+ },
178
+ "self_costume": {
179
+ "0": 0,
180
+ "1": 1,
181
+ "2": 2,
182
+ "3": 3,
183
+ "4": 4,
184
+ "5": 5
185
+ }
186
+ }
falco/config.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "d_model": 512,
3
+ "nhead": 8,
4
+ "num_layers": 6,
5
+ "dim_feedforward": 2048,
6
+ "dropout": 0.2,
7
+ "encoder_type": "hal_flat",
8
+ "d_intra": 256,
9
+ "encoder_nlayers": 2,
10
+ "k_query": 1,
11
+ "scaled_emb": false,
12
+ "max_seq_len": 256,
13
+ "pos_enc": "relpos",
14
+ "rope_theta": 10000.0,
15
+ "rope_learnable_freqs": false,
16
+ "xpos_scale_base": 0.0,
17
+ "attn_variant": "standard",
18
+ "n_kv_heads": 0,
19
+ "use_rmsnorm": false,
20
+ "use_swiglu": false,
21
+ "stick_loss": "clusters",
22
+ "btn_loss": "focal",
23
+ "no_opp_inputs": true,
24
+ "no_self_inputs": false,
25
+ "head_hidden": 256,
26
+ "n_stick_clusters": 37,
27
+ "n_shoulder_bins": 3,
28
+ "autoregressive_heads": true,
29
+ "hal_mode": true,
30
+ "lean_features": false,
31
+ "hal_minimal_features": true,
32
+ "hal_controller_encoding": true,
33
+ "n_controller_combos": 7,
34
+ "num_stages": 6,
35
+ "num_ports": 4,
36
+ "num_characters": 27,
37
+ "num_actions": 396,
38
+ "num_costumes": 6,
39
+ "num_c_dirs": 9,
40
+ "num_proj_types": 103,
41
+ "num_proj_subtypes": 40,
42
+ "model_preset": "hal",
43
+ "run_name": "falco-7class-v2-full"
44
+ }
falco/controller_combos.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "button_names": ["A", "B", "Z", "JUMP", "TRIG", "A_TRIG", "NONE"],
3
+ "n_combos": 7,
4
+ "class_scheme": "melee_7class"
5
+ }
falco/hal_norm.json ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "features": {
3
+ "percent": {
4
+ "transform": "normalize",
5
+ "min": 0.0,
6
+ "max": 248.74000549316406,
7
+ "mean": 51.95983317255054,
8
+ "std": 41.968951332585824
9
+ },
10
+ "stock": {
11
+ "transform": "normalize",
12
+ "min": 0.0,
13
+ "max": 4.0,
14
+ "mean": 2.706313936666291,
15
+ "std": 1.0676758056121092
16
+ },
17
+ "facing": {
18
+ "transform": "normalize",
19
+ "min": 0.0,
20
+ "max": 1.0,
21
+ "mean": 0.5,
22
+ "std": 0.5
23
+ },
24
+ "invulnerable": {
25
+ "transform": "normalize",
26
+ "min": 0.0,
27
+ "max": 1.0,
28
+ "mean": 0.5,
29
+ "std": 0.5
30
+ },
31
+ "jumps_left": {
32
+ "transform": "normalize",
33
+ "min": 0.0,
34
+ "max": 6.0,
35
+ "mean": 1.37347476621212,
36
+ "std": 1.0
37
+ },
38
+ "on_ground": {
39
+ "transform": "normalize",
40
+ "min": 0.0,
41
+ "max": 1.0,
42
+ "mean": 0.5,
43
+ "std": 0.5
44
+ },
45
+ "shield_strength": {
46
+ "transform": "invert_normalize",
47
+ "min": 0.0,
48
+ "max": 60.0,
49
+ "mean": 58.83739485300921,
50
+ "std": 3.5948948328876775
51
+ },
52
+ "pos_x": {
53
+ "transform": "standardize",
54
+ "min": -273.2964782714844,
55
+ "max": 272.9228515625,
56
+ "mean": 2.095804605074829,
57
+ "std": 56.876036164389376
58
+ },
59
+ "pos_y": {
60
+ "transform": "standardize",
61
+ "min": -153.08863830566406,
62
+ "max": 312.3891296386719,
63
+ "mean": 11.285403637158234,
64
+ "std": 32.36464426855818
65
+ }
66
+ }
67
+ }
falco/metadata.json ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "character": "Falco",
3
+ "melee_enum": "FALCO",
4
+ "run_name": "falco-7class-v2-full",
5
+ "global_step": 28122,
6
+ "games_trained": 9110,
7
+ "val_btn_f1": "88.2%",
8
+ "val_main_f1": "58.5%",
9
+ "val_loss": "0.68",
10
+ "n_params": 26276389,
11
+ "n_controller_combos": 7,
12
+ "model_preset": "hal",
13
+ "pos_enc": "relpos",
14
+ "no_self_inputs": false,
15
+ "training_notes": "Trained 2026-04-12 on the full Falco HuggingFace set (10K files \u2192 9110 games after quality filters). v2 shards, relpos, --self-inputs, 32K steps at batch 512. In bot-vs-bot dittos, wavedashes on ~25-50% of jumps, rapid-jabs, dash-dances, and forward-aerials actively."
16
+ }
falco/model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f48ba76b0bbdc2604d582777affa19ea20924d6d39da1ccccd5c2a3011a70db6
3
+ size 265140187
falco/norm_stats.json ADDED
@@ -0,0 +1,674 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "blastzone_bottom": [
3
+ -117.65425407727993,
4
+ 18.262450305928876
5
+ ],
6
+ "blastzone_left": [
7
+ -221.0636767362987,
8
+ 26.446253126378878
9
+ ],
10
+ "blastzone_right": [
11
+ 220.69921511796144,
12
+ 27.07588367452761
13
+ ],
14
+ "blastzone_top": [
15
+ 197.0612914988483,
16
+ 25.107361977908766
17
+ ],
18
+ "distance": [
19
+ 46.89352840468522,
20
+ 41.6457437018197
21
+ ],
22
+ "frame": [
23
+ 4974.586012834133,
24
+ 3231.6958953148887
25
+ ],
26
+ "left_platform_height": [
27
+ 26.38494154164375,
28
+ 2.3727475770040893
29
+ ],
30
+ "left_platform_left": [
31
+ -58.22050999659657,
32
+ 2.2432174911865275
33
+ ],
34
+ "left_platform_right": [
35
+ -25.508112173086992,
36
+ 4.376336119755992
37
+ ],
38
+ "opp_action_frame": [
39
+ 11.87692085782767,
40
+ 12.836349237420098
41
+ ],
42
+ "opp_ecb_bottom_x": [
43
+ 0.0,
44
+ 1.0
45
+ ],
46
+ "opp_ecb_bottom_y": [
47
+ 0.0,
48
+ 1.0
49
+ ],
50
+ "opp_ecb_left_x": [
51
+ 0.0,
52
+ 1.0
53
+ ],
54
+ "opp_ecb_left_y": [
55
+ 0.0,
56
+ 1.0
57
+ ],
58
+ "opp_ecb_right_x": [
59
+ 0.0,
60
+ 1.0
61
+ ],
62
+ "opp_ecb_right_y": [
63
+ 0.0,
64
+ 1.0
65
+ ],
66
+ "opp_ecb_top_x": [
67
+ 0.0,
68
+ 1.0
69
+ ],
70
+ "opp_ecb_top_y": [
71
+ 0.0,
72
+ 1.0
73
+ ],
74
+ "opp_hitlag_left": [
75
+ 0.011022251381279467,
76
+ 1.0
77
+ ],
78
+ "opp_hitstun_left": [
79
+ 6.207891702008504,
80
+ 21.609078401117316
81
+ ],
82
+ "opp_invuln_left": [
83
+ 0.0,
84
+ 1.0
85
+ ],
86
+ "opp_jumps_left": [
87
+ 1.37347476621212,
88
+ 1.0
89
+ ],
90
+ "opp_l_shldr": [
91
+ 0.16628418862819672,
92
+ 1.0
93
+ ],
94
+ "opp_main_x": [
95
+ 0.18162456154823303,
96
+ 1.0
97
+ ],
98
+ "opp_main_y": [
99
+ 0.18162456154823303,
100
+ 1.0
101
+ ],
102
+ "opp_nana_action_frame": [
103
+ 12.621206460649352,
104
+ 14.60026923736515
105
+ ],
106
+ "opp_nana_ecb_bottom_x": [
107
+ 0.0,
108
+ 1.0
109
+ ],
110
+ "opp_nana_ecb_bottom_y": [
111
+ 0.0,
112
+ 1.0
113
+ ],
114
+ "opp_nana_ecb_left_x": [
115
+ 0.0,
116
+ 1.0
117
+ ],
118
+ "opp_nana_ecb_left_y": [
119
+ 0.0,
120
+ 1.0
121
+ ],
122
+ "opp_nana_ecb_right_x": [
123
+ 0.0,
124
+ 1.0
125
+ ],
126
+ "opp_nana_ecb_right_y": [
127
+ 0.0,
128
+ 1.0
129
+ ],
130
+ "opp_nana_ecb_top_x": [
131
+ 0.0,
132
+ 1.0
133
+ ],
134
+ "opp_nana_ecb_top_y": [
135
+ 0.0,
136
+ 1.0
137
+ ],
138
+ "opp_nana_hitlag_left": [
139
+ 0.0056202595617094175,
140
+ 1.0
141
+ ],
142
+ "opp_nana_hitstun_left": [
143
+ 5.165146239507015,
144
+ 22.602253744569836
145
+ ],
146
+ "opp_nana_invuln_left": [
147
+ 0.0,
148
+ 1.0
149
+ ],
150
+ "opp_nana_jumps_left": [
151
+ 1.4042130889419322,
152
+ 1.0
153
+ ],
154
+ "opp_nana_l_shldr": [
155
+ 0.0,
156
+ 1.0
157
+ ],
158
+ "opp_nana_main_x": [
159
+ 0.5,
160
+ 1.0
161
+ ],
162
+ "opp_nana_main_y": [
163
+ 0.5,
164
+ 1.0
165
+ ],
166
+ "opp_nana_percent": [
167
+ 39.102286283530674,
168
+ 35.88860614948017
169
+ ],
170
+ "opp_nana_pos_x": [
171
+ 1.2068642679018815,
172
+ 49.30211774003539
173
+ ],
174
+ "opp_nana_pos_y": [
175
+ 10.58418713398032,
176
+ 34.35033591865463
177
+ ],
178
+ "opp_nana_r_shldr": [
179
+ 0.0,
180
+ 1.0
181
+ ],
182
+ "opp_nana_shield_strength": [
183
+ 58.85621297161418,
184
+ 3.5665092548631234
185
+ ],
186
+ "opp_nana_speed_air_x_self": [
187
+ 7.449704370577794e-05,
188
+ 1.0
189
+ ],
190
+ "opp_nana_speed_ground_x_self": [
191
+ 0.0004617140358648432,
192
+ 1.0
193
+ ],
194
+ "opp_nana_speed_x_attack": [
195
+ 0.0006254869455141354,
196
+ 1.0
197
+ ],
198
+ "opp_nana_speed_y_attack": [
199
+ 0.01099576749089697,
200
+ 1.0
201
+ ],
202
+ "opp_nana_speed_y_self": [
203
+ -0.01155770004031499,
204
+ 1.0
205
+ ],
206
+ "opp_nana_stock": [
207
+ 2.653193168742282,
208
+ 1.0754299773926206
209
+ ],
210
+ "opp_percent": [
211
+ 51.95983317255058,
212
+ 41.968951332585775
213
+ ],
214
+ "opp_pos_x": [
215
+ 2.095804605074832,
216
+ 56.87603616438966
217
+ ],
218
+ "opp_pos_y": [
219
+ 11.285403637157915,
220
+ 32.36464426855837
221
+ ],
222
+ "opp_r_shldr": [
223
+ 0.16628418862819672,
224
+ 1.0
225
+ ],
226
+ "opp_shield_strength": [
227
+ 58.83739485300921,
228
+ 3.594894832887488
229
+ ],
230
+ "opp_speed_air_x_self": [
231
+ -2.5396470322689237e-05,
232
+ 1.0
233
+ ],
234
+ "opp_speed_ground_x_self": [
235
+ 7.379903611212253e-05,
236
+ 1.0
237
+ ],
238
+ "opp_speed_x_attack": [
239
+ 0.00016006144034171966,
240
+ 1.0
241
+ ],
242
+ "opp_speed_y_attack": [
243
+ 0.016839584911564988,
244
+ 1.0
245
+ ],
246
+ "opp_speed_y_self": [
247
+ -0.02085563252216532,
248
+ 1.0
249
+ ],
250
+ "opp_stock": [
251
+ 2.706313936666291,
252
+ 1.0676758056121092
253
+ ],
254
+ "proj0_frame": [
255
+ 0.0,
256
+ 1.0
257
+ ],
258
+ "proj0_pos_x": [
259
+ 0.0,
260
+ 1.0
261
+ ],
262
+ "proj0_pos_y": [
263
+ 0.0,
264
+ 1.0
265
+ ],
266
+ "proj0_speed_x": [
267
+ 0.0,
268
+ 1.0
269
+ ],
270
+ "proj0_speed_y": [
271
+ 0.0,
272
+ 1.0
273
+ ],
274
+ "proj1_frame": [
275
+ 0.0,
276
+ 1.0
277
+ ],
278
+ "proj1_pos_x": [
279
+ 0.0,
280
+ 1.0
281
+ ],
282
+ "proj1_pos_y": [
283
+ 0.0,
284
+ 1.0
285
+ ],
286
+ "proj1_speed_x": [
287
+ 0.0,
288
+ 1.0
289
+ ],
290
+ "proj1_speed_y": [
291
+ 0.0,
292
+ 1.0
293
+ ],
294
+ "proj2_frame": [
295
+ 0.0,
296
+ 1.0
297
+ ],
298
+ "proj2_pos_x": [
299
+ 0.0,
300
+ 1.0
301
+ ],
302
+ "proj2_pos_y": [
303
+ 0.0,
304
+ 1.0
305
+ ],
306
+ "proj2_speed_x": [
307
+ 0.0,
308
+ 1.0
309
+ ],
310
+ "proj2_speed_y": [
311
+ 0.0,
312
+ 1.0
313
+ ],
314
+ "proj3_frame": [
315
+ 0.0,
316
+ 1.0
317
+ ],
318
+ "proj3_pos_x": [
319
+ 0.0,
320
+ 1.0
321
+ ],
322
+ "proj3_pos_y": [
323
+ 0.0,
324
+ 1.0
325
+ ],
326
+ "proj3_speed_x": [
327
+ 0.0,
328
+ 1.0
329
+ ],
330
+ "proj3_speed_y": [
331
+ 0.0,
332
+ 1.0
333
+ ],
334
+ "proj4_frame": [
335
+ 0.0,
336
+ 1.0
337
+ ],
338
+ "proj4_pos_x": [
339
+ 0.0,
340
+ 1.0
341
+ ],
342
+ "proj4_pos_y": [
343
+ 0.0,
344
+ 1.0
345
+ ],
346
+ "proj4_speed_x": [
347
+ 0.0,
348
+ 1.0
349
+ ],
350
+ "proj4_speed_y": [
351
+ 0.0,
352
+ 1.0
353
+ ],
354
+ "proj5_frame": [
355
+ 0.0,
356
+ 1.0
357
+ ],
358
+ "proj5_pos_x": [
359
+ 0.0,
360
+ 1.0
361
+ ],
362
+ "proj5_pos_y": [
363
+ 0.0,
364
+ 1.0
365
+ ],
366
+ "proj5_speed_x": [
367
+ 0.0,
368
+ 1.0
369
+ ],
370
+ "proj5_speed_y": [
371
+ 0.0,
372
+ 1.0
373
+ ],
374
+ "proj6_frame": [
375
+ 0.0,
376
+ 1.0
377
+ ],
378
+ "proj6_pos_x": [
379
+ 0.0,
380
+ 1.0
381
+ ],
382
+ "proj6_pos_y": [
383
+ 0.0,
384
+ 1.0
385
+ ],
386
+ "proj6_speed_x": [
387
+ 0.0,
388
+ 1.0
389
+ ],
390
+ "proj6_speed_y": [
391
+ 0.0,
392
+ 1.0
393
+ ],
394
+ "proj7_frame": [
395
+ 0.0,
396
+ 1.0
397
+ ],
398
+ "proj7_pos_x": [
399
+ 0.0,
400
+ 1.0
401
+ ],
402
+ "proj7_pos_y": [
403
+ 0.0,
404
+ 1.0
405
+ ],
406
+ "proj7_speed_x": [
407
+ 0.0,
408
+ 1.0
409
+ ],
410
+ "proj7_speed_y": [
411
+ 0.0,
412
+ 1.0
413
+ ],
414
+ "randall_height": [
415
+ -23.612431513793055,
416
+ 9.495261087482037
417
+ ],
418
+ "randall_left": [
419
+ -4.50880393479985,
420
+ 60.44143162238004
421
+ ],
422
+ "randall_right": [
423
+ 7.391196065174139,
424
+ 60.441431622283126
425
+ ],
426
+ "right_platform_height": [
427
+ 26.405558774032343,
428
+ 2.4055154064281274
429
+ ],
430
+ "right_platform_left": [
431
+ 25.503635359959812,
432
+ 4.369980335853813
433
+ ],
434
+ "right_platform_right": [
435
+ 58.56582543252829,
436
+ 2.7720777242750203
437
+ ],
438
+ "self_action_frame": [
439
+ 11.87692085782767,
440
+ 12.836349237420098
441
+ ],
442
+ "self_ecb_bottom_x": [
443
+ 0.0,
444
+ 1.0
445
+ ],
446
+ "self_ecb_bottom_y": [
447
+ 0.0,
448
+ 1.0
449
+ ],
450
+ "self_ecb_left_x": [
451
+ 0.0,
452
+ 1.0
453
+ ],
454
+ "self_ecb_left_y": [
455
+ 0.0,
456
+ 1.0
457
+ ],
458
+ "self_ecb_right_x": [
459
+ 0.0,
460
+ 1.0
461
+ ],
462
+ "self_ecb_right_y": [
463
+ 0.0,
464
+ 1.0
465
+ ],
466
+ "self_ecb_top_x": [
467
+ 0.0,
468
+ 1.0
469
+ ],
470
+ "self_ecb_top_y": [
471
+ 0.0,
472
+ 1.0
473
+ ],
474
+ "self_hitlag_left": [
475
+ 0.011022251381279467,
476
+ 1.0
477
+ ],
478
+ "self_hitstun_left": [
479
+ 6.207891702008504,
480
+ 21.609078401117316
481
+ ],
482
+ "self_invuln_left": [
483
+ 0.0,
484
+ 1.0
485
+ ],
486
+ "self_jumps_left": [
487
+ 1.37347476621212,
488
+ 1.0
489
+ ],
490
+ "self_l_shldr": [
491
+ 0.16628387570381165,
492
+ 1.0
493
+ ],
494
+ "self_main_x": [
495
+ 0.18162456154823303,
496
+ 1.0
497
+ ],
498
+ "self_main_y": [
499
+ 0.18162456154823303,
500
+ 1.0
501
+ ],
502
+ "self_nana_action_frame": [
503
+ 12.621206460649352,
504
+ 14.60026923736515
505
+ ],
506
+ "self_nana_ecb_bottom_x": [
507
+ 0.0,
508
+ 1.0
509
+ ],
510
+ "self_nana_ecb_bottom_y": [
511
+ 0.0,
512
+ 1.0
513
+ ],
514
+ "self_nana_ecb_left_x": [
515
+ 0.0,
516
+ 1.0
517
+ ],
518
+ "self_nana_ecb_left_y": [
519
+ 0.0,
520
+ 1.0
521
+ ],
522
+ "self_nana_ecb_right_x": [
523
+ 0.0,
524
+ 1.0
525
+ ],
526
+ "self_nana_ecb_right_y": [
527
+ 0.0,
528
+ 1.0
529
+ ],
530
+ "self_nana_ecb_top_x": [
531
+ 0.0,
532
+ 1.0
533
+ ],
534
+ "self_nana_ecb_top_y": [
535
+ 0.0,
536
+ 1.0
537
+ ],
538
+ "self_nana_hitlag_left": [
539
+ 0.0056202595617094175,
540
+ 1.0
541
+ ],
542
+ "self_nana_hitstun_left": [
543
+ 5.165146239507015,
544
+ 22.602253744569836
545
+ ],
546
+ "self_nana_invuln_left": [
547
+ 0.0,
548
+ 1.0
549
+ ],
550
+ "self_nana_jumps_left": [
551
+ 1.4042130889419322,
552
+ 1.0
553
+ ],
554
+ "self_nana_l_shldr": [
555
+ 0.0,
556
+ 1.0
557
+ ],
558
+ "self_nana_main_x": [
559
+ 0.5,
560
+ 1.0
561
+ ],
562
+ "self_nana_main_y": [
563
+ 0.5,
564
+ 1.0
565
+ ],
566
+ "self_nana_percent": [
567
+ 39.102286283530674,
568
+ 35.88860614948017
569
+ ],
570
+ "self_nana_pos_x": [
571
+ 1.2068642679018815,
572
+ 49.30211774003539
573
+ ],
574
+ "self_nana_pos_y": [
575
+ 10.58418713398032,
576
+ 34.35033591865463
577
+ ],
578
+ "self_nana_r_shldr": [
579
+ 0.0,
580
+ 1.0
581
+ ],
582
+ "self_nana_shield_strength": [
583
+ 58.85621297161418,
584
+ 3.5665092548631234
585
+ ],
586
+ "self_nana_speed_air_x_self": [
587
+ 7.449704370577794e-05,
588
+ 1.0
589
+ ],
590
+ "self_nana_speed_ground_x_self": [
591
+ 0.0004617140358648432,
592
+ 1.0
593
+ ],
594
+ "self_nana_speed_x_attack": [
595
+ 0.0006254869455141354,
596
+ 1.0
597
+ ],
598
+ "self_nana_speed_y_attack": [
599
+ 0.01099576749089697,
600
+ 1.0
601
+ ],
602
+ "self_nana_speed_y_self": [
603
+ -0.01155770004031499,
604
+ 1.0
605
+ ],
606
+ "self_nana_stock": [
607
+ 2.653193168742282,
608
+ 1.0754299773926206
609
+ ],
610
+ "self_percent": [
611
+ 51.95983317255054,
612
+ 41.968951332585824
613
+ ],
614
+ "self_pos_x": [
615
+ 2.095804605074829,
616
+ 56.876036164389376
617
+ ],
618
+ "self_pos_y": [
619
+ 11.285403637158234,
620
+ 32.36464426855818
621
+ ],
622
+ "self_r_shldr": [
623
+ 0.16628387570381165,
624
+ 1.0
625
+ ],
626
+ "self_shield_strength": [
627
+ 58.83739485300921,
628
+ 3.5948948328876775
629
+ ],
630
+ "self_speed_air_x_self": [
631
+ -2.5396470322689227e-05,
632
+ 1.0
633
+ ],
634
+ "self_speed_ground_x_self": [
635
+ 7.379903611212253e-05,
636
+ 1.0
637
+ ],
638
+ "self_speed_x_attack": [
639
+ 0.00016006144034171966,
640
+ 1.0
641
+ ],
642
+ "self_speed_y_attack": [
643
+ 0.016839584911564988,
644
+ 1.0
645
+ ],
646
+ "self_speed_y_self": [
647
+ -0.02085563252216532,
648
+ 1.0
649
+ ],
650
+ "self_stock": [
651
+ 2.706313936666291,
652
+ 1.0676758056121092
653
+ ],
654
+ "stage_edge_left": [
655
+ -75.58011646892624,
656
+ 11.397204097224181
657
+ ],
658
+ "stage_edge_right": [
659
+ 75.58011646892624,
660
+ 11.397204097224181
661
+ ],
662
+ "top_platform_height": [
663
+ 48.35880538463942,
664
+ 5.535745808270807
665
+ ],
666
+ "top_platform_left": [
667
+ -17.193803214501965,
668
+ 1.9480815914430683
669
+ ],
670
+ "top_platform_right": [
671
+ 17.19358611770908,
672
+ 1.947878301464183
673
+ ]
674
+ }
falco/stick_clusters.json ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "stick_centers": [
3
+ [
4
+ 0.5,
5
+ 0.5
6
+ ],
7
+ [
8
+ 0.675,
9
+ 0.5
10
+ ],
11
+ [
12
+ 0.325,
13
+ 0.5
14
+ ],
15
+ [
16
+ 0.5,
17
+ 0.675
18
+ ],
19
+ [
20
+ 0.5,
21
+ 0.325
22
+ ],
23
+ [
24
+ 0.8375,
25
+ 0.5
26
+ ],
27
+ [
28
+ 0.1625,
29
+ 0.5
30
+ ],
31
+ [
32
+ 0.5,
33
+ 0.8375
34
+ ],
35
+ [
36
+ 0.5,
37
+ 0.1625
38
+ ],
39
+ [
40
+ 1.0,
41
+ 0.5
42
+ ],
43
+ [
44
+ 0.5,
45
+ 1.0
46
+ ],
47
+ [
48
+ 0.0,
49
+ 0.5
50
+ ],
51
+ [
52
+ 0.5,
53
+ 0.0
54
+ ],
55
+ [
56
+ 0.975,
57
+ 0.35
58
+ ],
59
+ [
60
+ 0.025,
61
+ 0.35
62
+ ],
63
+ [
64
+ 0.975,
65
+ 0.65
66
+ ],
67
+ [
68
+ 0.025,
69
+ 0.65
70
+ ],
71
+ [
72
+ 0.925,
73
+ 0.25
74
+ ],
75
+ [
76
+ 0.925,
77
+ 0.75
78
+ ],
79
+ [
80
+ 0.075,
81
+ 0.25
82
+ ],
83
+ [
84
+ 0.075,
85
+ 0.75
86
+ ],
87
+ [
88
+ 0.85,
89
+ 0.15
90
+ ],
91
+ [
92
+ 0.15,
93
+ 0.15
94
+ ],
95
+ [
96
+ 0.85,
97
+ 0.85
98
+ ],
99
+ [
100
+ 0.15,
101
+ 0.85
102
+ ],
103
+ [
104
+ 0.75,
105
+ 0.75
106
+ ],
107
+ [
108
+ 0.25,
109
+ 0.75
110
+ ],
111
+ [
112
+ 0.75,
113
+ 0.25
114
+ ],
115
+ [
116
+ 0.25,
117
+ 0.25
118
+ ],
119
+ [
120
+ 0.75,
121
+ 0.925
122
+ ],
123
+ [
124
+ 0.25,
125
+ 0.925
126
+ ],
127
+ [
128
+ 0.75,
129
+ 0.075
130
+ ],
131
+ [
132
+ 0.25,
133
+ 0.075
134
+ ],
135
+ [
136
+ 0.65,
137
+ 0.025
138
+ ],
139
+ [
140
+ 0.65,
141
+ 0.975
142
+ ],
143
+ [
144
+ 0.35,
145
+ 0.025
146
+ ],
147
+ [
148
+ 0.35,
149
+ 0.975
150
+ ]
151
+ ],
152
+ "shoulder_centers": [
153
+ 0.0,
154
+ 0.4,
155
+ 1.0
156
+ ]
157
+ }
fox/cat_maps.json ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "proj7_owner": {
3
+ "-1": 0,
4
+ "0": 1,
5
+ "1": 2,
6
+ "2": 3,
7
+ "3": 4,
8
+ "4": 5
9
+ },
10
+ "proj7_subtype": {
11
+ "-1": 0,
12
+ "0": 1,
13
+ "1": 2,
14
+ "2": 3,
15
+ "3": 4,
16
+ "4": 5
17
+ },
18
+ "proj6_owner": {
19
+ "-1": 0,
20
+ "0": 1,
21
+ "1": 2,
22
+ "2": 3,
23
+ "3": 4,
24
+ "4": 5
25
+ },
26
+ "proj6_subtype": {
27
+ "-1": 0,
28
+ "0": 1,
29
+ "1": 2,
30
+ "2": 3,
31
+ "3": 4,
32
+ "4": 5,
33
+ "7": 6
34
+ },
35
+ "proj5_owner": {
36
+ "-1": 0,
37
+ "0": 1,
38
+ "1": 2,
39
+ "2": 3,
40
+ "3": 4,
41
+ "4": 5
42
+ },
43
+ "proj5_subtype": {
44
+ "-1": 0,
45
+ "0": 1,
46
+ "1": 2,
47
+ "2": 3,
48
+ "3": 4,
49
+ "4": 5,
50
+ "5": 6,
51
+ "6": 7,
52
+ "7": 8,
53
+ "8": 9
54
+ },
55
+ "proj4_owner": {
56
+ "-1": 0,
57
+ "0": 1,
58
+ "1": 2,
59
+ "2": 3,
60
+ "3": 4,
61
+ "4": 5
62
+ },
63
+ "proj4_subtype": {
64
+ "-1": 0,
65
+ "0": 1,
66
+ "1": 2,
67
+ "2": 3,
68
+ "3": 4,
69
+ "4": 5,
70
+ "5": 6,
71
+ "6": 7,
72
+ "7": 8,
73
+ "8": 9
74
+ },
75
+ "proj3_owner": {
76
+ "-1": 0,
77
+ "0": 1,
78
+ "1": 2,
79
+ "2": 3,
80
+ "3": 4,
81
+ "4": 5
82
+ },
83
+ "proj3_subtype": {
84
+ "-1": 0,
85
+ "0": 1,
86
+ "1": 2,
87
+ "2": 3,
88
+ "3": 4,
89
+ "4": 5,
90
+ "5": 6,
91
+ "6": 7,
92
+ "7": 8,
93
+ "8": 9
94
+ },
95
+ "proj2_owner": {
96
+ "-1": 0,
97
+ "0": 1,
98
+ "1": 2,
99
+ "2": 3,
100
+ "3": 4,
101
+ "4": 5
102
+ },
103
+ "proj2_subtype": {
104
+ "-1": 0,
105
+ "0": 1,
106
+ "1": 2,
107
+ "2": 3,
108
+ "3": 4,
109
+ "4": 5,
110
+ "5": 6,
111
+ "6": 7,
112
+ "7": 8,
113
+ "8": 9
114
+ },
115
+ "proj1_owner": {
116
+ "-1": 0,
117
+ "0": 1,
118
+ "1": 2,
119
+ "2": 3,
120
+ "3": 4,
121
+ "4": 5
122
+ },
123
+ "proj1_subtype": {
124
+ "-1": 0,
125
+ "0": 1,
126
+ "1": 2,
127
+ "2": 3,
128
+ "3": 4,
129
+ "4": 5,
130
+ "5": 6,
131
+ "6": 7,
132
+ "7": 8,
133
+ "8": 9
134
+ },
135
+ "proj0_owner": {
136
+ "-1": 0,
137
+ "0": 1,
138
+ "1": 2,
139
+ "2": 3,
140
+ "3": 4,
141
+ "4": 5
142
+ },
143
+ "proj0_subtype": {
144
+ "-1": 0,
145
+ "0": 1,
146
+ "1": 2,
147
+ "2": 3,
148
+ "3": 4,
149
+ "4": 5,
150
+ "5": 6,
151
+ "6": 7,
152
+ "7": 8,
153
+ "8": 9,
154
+ "11": 10
155
+ },
156
+ "opp_port": {
157
+ "0": 0,
158
+ "1": 1,
159
+ "2": 2,
160
+ "3": 3,
161
+ "4": 4
162
+ },
163
+ "opp_costume": {
164
+ "0": 0,
165
+ "1": 1,
166
+ "2": 2,
167
+ "3": 3,
168
+ "4": 4,
169
+ "5": 5
170
+ },
171
+ "self_port": {
172
+ "0": 0,
173
+ "1": 1,
174
+ "2": 2,
175
+ "3": 3,
176
+ "4": 4
177
+ },
178
+ "self_costume": {
179
+ "0": 0,
180
+ "1": 1,
181
+ "2": 2,
182
+ "3": 3,
183
+ "4": 4,
184
+ "5": 5
185
+ }
186
+ }
fox/config.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "d_model": 512,
3
+ "nhead": 8,
4
+ "num_layers": 6,
5
+ "dim_feedforward": 2048,
6
+ "dropout": 0.2,
7
+ "encoder_type": "hal_flat",
8
+ "d_intra": 256,
9
+ "encoder_nlayers": 2,
10
+ "k_query": 1,
11
+ "scaled_emb": false,
12
+ "max_seq_len": 256,
13
+ "pos_enc": "relpos",
14
+ "rope_theta": 10000.0,
15
+ "rope_learnable_freqs": false,
16
+ "xpos_scale_base": 0.0,
17
+ "attn_variant": "standard",
18
+ "n_kv_heads": 0,
19
+ "use_rmsnorm": false,
20
+ "use_swiglu": false,
21
+ "stick_loss": "clusters",
22
+ "btn_loss": "focal",
23
+ "no_opp_inputs": true,
24
+ "no_self_inputs": true,
25
+ "head_hidden": 256,
26
+ "n_stick_clusters": 37,
27
+ "n_shoulder_bins": 3,
28
+ "autoregressive_heads": true,
29
+ "hal_mode": true,
30
+ "lean_features": false,
31
+ "hal_minimal_features": true,
32
+ "hal_controller_encoding": true,
33
+ "n_controller_combos": 7,
34
+ "num_stages": 6,
35
+ "num_ports": 4,
36
+ "num_characters": 27,
37
+ "num_actions": 396,
38
+ "num_costumes": 6,
39
+ "num_c_dirs": 9,
40
+ "num_proj_types": 103,
41
+ "num_proj_subtypes": 40,
42
+ "model_preset": "hal",
43
+ "run_name": "hal-7class-v2-long"
44
+ }
fox/controller_combos.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "button_names": ["A", "B", "Z", "JUMP", "TRIG", "A_TRIG", "NONE"],
3
+ "n_combos": 7,
4
+ "class_scheme": "melee_7class"
5
+ }
fox/hal_norm.json ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "features": {
3
+ "percent": {
4
+ "transform": "normalize",
5
+ "min": 0.0,
6
+ "max": 248.74000549316406,
7
+ "mean": 51.95983317255054,
8
+ "std": 41.968951332585824
9
+ },
10
+ "stock": {
11
+ "transform": "normalize",
12
+ "min": 0.0,
13
+ "max": 4.0,
14
+ "mean": 2.706313936666291,
15
+ "std": 1.0676758056121092
16
+ },
17
+ "facing": {
18
+ "transform": "normalize",
19
+ "min": 0.0,
20
+ "max": 1.0,
21
+ "mean": 0.5,
22
+ "std": 0.5
23
+ },
24
+ "invulnerable": {
25
+ "transform": "normalize",
26
+ "min": 0.0,
27
+ "max": 1.0,
28
+ "mean": 0.5,
29
+ "std": 0.5
30
+ },
31
+ "jumps_left": {
32
+ "transform": "normalize",
33
+ "min": 0.0,
34
+ "max": 6.0,
35
+ "mean": 1.37347476621212,
36
+ "std": 1.0
37
+ },
38
+ "on_ground": {
39
+ "transform": "normalize",
40
+ "min": 0.0,
41
+ "max": 1.0,
42
+ "mean": 0.5,
43
+ "std": 0.5
44
+ },
45
+ "shield_strength": {
46
+ "transform": "invert_normalize",
47
+ "min": 0.0,
48
+ "max": 60.0,
49
+ "mean": 58.83739485300921,
50
+ "std": 3.5948948328876775
51
+ },
52
+ "pos_x": {
53
+ "transform": "standardize",
54
+ "min": -273.2964782714844,
55
+ "max": 272.9228515625,
56
+ "mean": 2.095804605074829,
57
+ "std": 56.876036164389376
58
+ },
59
+ "pos_y": {
60
+ "transform": "standardize",
61
+ "min": -153.08863830566406,
62
+ "max": 312.3891296386719,
63
+ "mean": 11.285403637158234,
64
+ "std": 32.36464426855818
65
+ }
66
+ }
67
+ }
fox/metadata.json ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "character": "Fox",
3
+ "melee_enum": "FOX",
4
+ "run_name": "hal-7class-v2-long",
5
+ "global_step": 28165,
6
+ "games_trained": 17319,
7
+ "val_btn_f1": "~59%",
8
+ "val_main_f1": "~15%",
9
+ "val_loss": "2.27",
10
+ "n_params": 26247717,
11
+ "n_controller_combos": 7,
12
+ "model_preset": "hal",
13
+ "pos_enc": "relpos",
14
+ "no_self_inputs": true,
15
+ "training_notes": "Legacy checkpoint from the 2026-04-11 hal-7class-v2-long run. Trained WITHOUT --self-inputs, which is why the val metrics look much lower than the other characters. Still plays actively in Dolphin but performance is below the Falco/CptFalcon/Luigi models. A new Fox run with --self-inputs is a todo."
16
+ }
fox/model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b7bcb0d0b3d4a0cddcf18887cc9deee36a2910cafa5fca4b0a360cae68f04c20
3
+ size 264795225
fox/norm_stats.json ADDED
@@ -0,0 +1,674 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "blastzone_bottom": [
3
+ -117.65425407727993,
4
+ 18.262450305928876
5
+ ],
6
+ "blastzone_left": [
7
+ -221.0636767362987,
8
+ 26.446253126378878
9
+ ],
10
+ "blastzone_right": [
11
+ 220.69921511796144,
12
+ 27.07588367452761
13
+ ],
14
+ "blastzone_top": [
15
+ 197.0612914988483,
16
+ 25.107361977908766
17
+ ],
18
+ "distance": [
19
+ 46.89352840468522,
20
+ 41.6457437018197
21
+ ],
22
+ "frame": [
23
+ 4974.586012834133,
24
+ 3231.6958953148887
25
+ ],
26
+ "left_platform_height": [
27
+ 26.38494154164375,
28
+ 2.3727475770040893
29
+ ],
30
+ "left_platform_left": [
31
+ -58.22050999659657,
32
+ 2.2432174911865275
33
+ ],
34
+ "left_platform_right": [
35
+ -25.508112173086992,
36
+ 4.376336119755992
37
+ ],
38
+ "opp_action_frame": [
39
+ 11.87692085782767,
40
+ 12.836349237420098
41
+ ],
42
+ "opp_ecb_bottom_x": [
43
+ 0.0,
44
+ 1.0
45
+ ],
46
+ "opp_ecb_bottom_y": [
47
+ 0.0,
48
+ 1.0
49
+ ],
50
+ "opp_ecb_left_x": [
51
+ 0.0,
52
+ 1.0
53
+ ],
54
+ "opp_ecb_left_y": [
55
+ 0.0,
56
+ 1.0
57
+ ],
58
+ "opp_ecb_right_x": [
59
+ 0.0,
60
+ 1.0
61
+ ],
62
+ "opp_ecb_right_y": [
63
+ 0.0,
64
+ 1.0
65
+ ],
66
+ "opp_ecb_top_x": [
67
+ 0.0,
68
+ 1.0
69
+ ],
70
+ "opp_ecb_top_y": [
71
+ 0.0,
72
+ 1.0
73
+ ],
74
+ "opp_hitlag_left": [
75
+ 0.011022251381279467,
76
+ 1.0
77
+ ],
78
+ "opp_hitstun_left": [
79
+ 6.207891702008504,
80
+ 21.609078401117316
81
+ ],
82
+ "opp_invuln_left": [
83
+ 0.0,
84
+ 1.0
85
+ ],
86
+ "opp_jumps_left": [
87
+ 1.37347476621212,
88
+ 1.0
89
+ ],
90
+ "opp_l_shldr": [
91
+ 0.16628418862819672,
92
+ 1.0
93
+ ],
94
+ "opp_main_x": [
95
+ 0.18162456154823303,
96
+ 1.0
97
+ ],
98
+ "opp_main_y": [
99
+ 0.18162456154823303,
100
+ 1.0
101
+ ],
102
+ "opp_nana_action_frame": [
103
+ 12.621206460649352,
104
+ 14.60026923736515
105
+ ],
106
+ "opp_nana_ecb_bottom_x": [
107
+ 0.0,
108
+ 1.0
109
+ ],
110
+ "opp_nana_ecb_bottom_y": [
111
+ 0.0,
112
+ 1.0
113
+ ],
114
+ "opp_nana_ecb_left_x": [
115
+ 0.0,
116
+ 1.0
117
+ ],
118
+ "opp_nana_ecb_left_y": [
119
+ 0.0,
120
+ 1.0
121
+ ],
122
+ "opp_nana_ecb_right_x": [
123
+ 0.0,
124
+ 1.0
125
+ ],
126
+ "opp_nana_ecb_right_y": [
127
+ 0.0,
128
+ 1.0
129
+ ],
130
+ "opp_nana_ecb_top_x": [
131
+ 0.0,
132
+ 1.0
133
+ ],
134
+ "opp_nana_ecb_top_y": [
135
+ 0.0,
136
+ 1.0
137
+ ],
138
+ "opp_nana_hitlag_left": [
139
+ 0.0056202595617094175,
140
+ 1.0
141
+ ],
142
+ "opp_nana_hitstun_left": [
143
+ 5.165146239507015,
144
+ 22.602253744569836
145
+ ],
146
+ "opp_nana_invuln_left": [
147
+ 0.0,
148
+ 1.0
149
+ ],
150
+ "opp_nana_jumps_left": [
151
+ 1.4042130889419322,
152
+ 1.0
153
+ ],
154
+ "opp_nana_l_shldr": [
155
+ 0.0,
156
+ 1.0
157
+ ],
158
+ "opp_nana_main_x": [
159
+ 0.5,
160
+ 1.0
161
+ ],
162
+ "opp_nana_main_y": [
163
+ 0.5,
164
+ 1.0
165
+ ],
166
+ "opp_nana_percent": [
167
+ 39.102286283530674,
168
+ 35.88860614948017
169
+ ],
170
+ "opp_nana_pos_x": [
171
+ 1.2068642679018815,
172
+ 49.30211774003539
173
+ ],
174
+ "opp_nana_pos_y": [
175
+ 10.58418713398032,
176
+ 34.35033591865463
177
+ ],
178
+ "opp_nana_r_shldr": [
179
+ 0.0,
180
+ 1.0
181
+ ],
182
+ "opp_nana_shield_strength": [
183
+ 58.85621297161418,
184
+ 3.5665092548631234
185
+ ],
186
+ "opp_nana_speed_air_x_self": [
187
+ 7.449704370577794e-05,
188
+ 1.0
189
+ ],
190
+ "opp_nana_speed_ground_x_self": [
191
+ 0.0004617140358648432,
192
+ 1.0
193
+ ],
194
+ "opp_nana_speed_x_attack": [
195
+ 0.0006254869455141354,
196
+ 1.0
197
+ ],
198
+ "opp_nana_speed_y_attack": [
199
+ 0.01099576749089697,
200
+ 1.0
201
+ ],
202
+ "opp_nana_speed_y_self": [
203
+ -0.01155770004031499,
204
+ 1.0
205
+ ],
206
+ "opp_nana_stock": [
207
+ 2.653193168742282,
208
+ 1.0754299773926206
209
+ ],
210
+ "opp_percent": [
211
+ 51.95983317255058,
212
+ 41.968951332585775
213
+ ],
214
+ "opp_pos_x": [
215
+ 2.095804605074832,
216
+ 56.87603616438966
217
+ ],
218
+ "opp_pos_y": [
219
+ 11.285403637157915,
220
+ 32.36464426855837
221
+ ],
222
+ "opp_r_shldr": [
223
+ 0.16628418862819672,
224
+ 1.0
225
+ ],
226
+ "opp_shield_strength": [
227
+ 58.83739485300921,
228
+ 3.594894832887488
229
+ ],
230
+ "opp_speed_air_x_self": [
231
+ -2.5396470322689237e-05,
232
+ 1.0
233
+ ],
234
+ "opp_speed_ground_x_self": [
235
+ 7.379903611212253e-05,
236
+ 1.0
237
+ ],
238
+ "opp_speed_x_attack": [
239
+ 0.00016006144034171966,
240
+ 1.0
241
+ ],
242
+ "opp_speed_y_attack": [
243
+ 0.016839584911564988,
244
+ 1.0
245
+ ],
246
+ "opp_speed_y_self": [
247
+ -0.02085563252216532,
248
+ 1.0
249
+ ],
250
+ "opp_stock": [
251
+ 2.706313936666291,
252
+ 1.0676758056121092
253
+ ],
254
+ "proj0_frame": [
255
+ 0.0,
256
+ 1.0
257
+ ],
258
+ "proj0_pos_x": [
259
+ 0.0,
260
+ 1.0
261
+ ],
262
+ "proj0_pos_y": [
263
+ 0.0,
264
+ 1.0
265
+ ],
266
+ "proj0_speed_x": [
267
+ 0.0,
268
+ 1.0
269
+ ],
270
+ "proj0_speed_y": [
271
+ 0.0,
272
+ 1.0
273
+ ],
274
+ "proj1_frame": [
275
+ 0.0,
276
+ 1.0
277
+ ],
278
+ "proj1_pos_x": [
279
+ 0.0,
280
+ 1.0
281
+ ],
282
+ "proj1_pos_y": [
283
+ 0.0,
284
+ 1.0
285
+ ],
286
+ "proj1_speed_x": [
287
+ 0.0,
288
+ 1.0
289
+ ],
290
+ "proj1_speed_y": [
291
+ 0.0,
292
+ 1.0
293
+ ],
294
+ "proj2_frame": [
295
+ 0.0,
296
+ 1.0
297
+ ],
298
+ "proj2_pos_x": [
299
+ 0.0,
300
+ 1.0
301
+ ],
302
+ "proj2_pos_y": [
303
+ 0.0,
304
+ 1.0
305
+ ],
306
+ "proj2_speed_x": [
307
+ 0.0,
308
+ 1.0
309
+ ],
310
+ "proj2_speed_y": [
311
+ 0.0,
312
+ 1.0
313
+ ],
314
+ "proj3_frame": [
315
+ 0.0,
316
+ 1.0
317
+ ],
318
+ "proj3_pos_x": [
319
+ 0.0,
320
+ 1.0
321
+ ],
322
+ "proj3_pos_y": [
323
+ 0.0,
324
+ 1.0
325
+ ],
326
+ "proj3_speed_x": [
327
+ 0.0,
328
+ 1.0
329
+ ],
330
+ "proj3_speed_y": [
331
+ 0.0,
332
+ 1.0
333
+ ],
334
+ "proj4_frame": [
335
+ 0.0,
336
+ 1.0
337
+ ],
338
+ "proj4_pos_x": [
339
+ 0.0,
340
+ 1.0
341
+ ],
342
+ "proj4_pos_y": [
343
+ 0.0,
344
+ 1.0
345
+ ],
346
+ "proj4_speed_x": [
347
+ 0.0,
348
+ 1.0
349
+ ],
350
+ "proj4_speed_y": [
351
+ 0.0,
352
+ 1.0
353
+ ],
354
+ "proj5_frame": [
355
+ 0.0,
356
+ 1.0
357
+ ],
358
+ "proj5_pos_x": [
359
+ 0.0,
360
+ 1.0
361
+ ],
362
+ "proj5_pos_y": [
363
+ 0.0,
364
+ 1.0
365
+ ],
366
+ "proj5_speed_x": [
367
+ 0.0,
368
+ 1.0
369
+ ],
370
+ "proj5_speed_y": [
371
+ 0.0,
372
+ 1.0
373
+ ],
374
+ "proj6_frame": [
375
+ 0.0,
376
+ 1.0
377
+ ],
378
+ "proj6_pos_x": [
379
+ 0.0,
380
+ 1.0
381
+ ],
382
+ "proj6_pos_y": [
383
+ 0.0,
384
+ 1.0
385
+ ],
386
+ "proj6_speed_x": [
387
+ 0.0,
388
+ 1.0
389
+ ],
390
+ "proj6_speed_y": [
391
+ 0.0,
392
+ 1.0
393
+ ],
394
+ "proj7_frame": [
395
+ 0.0,
396
+ 1.0
397
+ ],
398
+ "proj7_pos_x": [
399
+ 0.0,
400
+ 1.0
401
+ ],
402
+ "proj7_pos_y": [
403
+ 0.0,
404
+ 1.0
405
+ ],
406
+ "proj7_speed_x": [
407
+ 0.0,
408
+ 1.0
409
+ ],
410
+ "proj7_speed_y": [
411
+ 0.0,
412
+ 1.0
413
+ ],
414
+ "randall_height": [
415
+ -23.612431513793055,
416
+ 9.495261087482037
417
+ ],
418
+ "randall_left": [
419
+ -4.50880393479985,
420
+ 60.44143162238004
421
+ ],
422
+ "randall_right": [
423
+ 7.391196065174139,
424
+ 60.441431622283126
425
+ ],
426
+ "right_platform_height": [
427
+ 26.405558774032343,
428
+ 2.4055154064281274
429
+ ],
430
+ "right_platform_left": [
431
+ 25.503635359959812,
432
+ 4.369980335853813
433
+ ],
434
+ "right_platform_right": [
435
+ 58.56582543252829,
436
+ 2.7720777242750203
437
+ ],
438
+ "self_action_frame": [
439
+ 11.87692085782767,
440
+ 12.836349237420098
441
+ ],
442
+ "self_ecb_bottom_x": [
443
+ 0.0,
444
+ 1.0
445
+ ],
446
+ "self_ecb_bottom_y": [
447
+ 0.0,
448
+ 1.0
449
+ ],
450
+ "self_ecb_left_x": [
451
+ 0.0,
452
+ 1.0
453
+ ],
454
+ "self_ecb_left_y": [
455
+ 0.0,
456
+ 1.0
457
+ ],
458
+ "self_ecb_right_x": [
459
+ 0.0,
460
+ 1.0
461
+ ],
462
+ "self_ecb_right_y": [
463
+ 0.0,
464
+ 1.0
465
+ ],
466
+ "self_ecb_top_x": [
467
+ 0.0,
468
+ 1.0
469
+ ],
470
+ "self_ecb_top_y": [
471
+ 0.0,
472
+ 1.0
473
+ ],
474
+ "self_hitlag_left": [
475
+ 0.011022251381279467,
476
+ 1.0
477
+ ],
478
+ "self_hitstun_left": [
479
+ 6.207891702008504,
480
+ 21.609078401117316
481
+ ],
482
+ "self_invuln_left": [
483
+ 0.0,
484
+ 1.0
485
+ ],
486
+ "self_jumps_left": [
487
+ 1.37347476621212,
488
+ 1.0
489
+ ],
490
+ "self_l_shldr": [
491
+ 0.16628387570381165,
492
+ 1.0
493
+ ],
494
+ "self_main_x": [
495
+ 0.18162456154823303,
496
+ 1.0
497
+ ],
498
+ "self_main_y": [
499
+ 0.18162456154823303,
500
+ 1.0
501
+ ],
502
+ "self_nana_action_frame": [
503
+ 12.621206460649352,
504
+ 14.60026923736515
505
+ ],
506
+ "self_nana_ecb_bottom_x": [
507
+ 0.0,
508
+ 1.0
509
+ ],
510
+ "self_nana_ecb_bottom_y": [
511
+ 0.0,
512
+ 1.0
513
+ ],
514
+ "self_nana_ecb_left_x": [
515
+ 0.0,
516
+ 1.0
517
+ ],
518
+ "self_nana_ecb_left_y": [
519
+ 0.0,
520
+ 1.0
521
+ ],
522
+ "self_nana_ecb_right_x": [
523
+ 0.0,
524
+ 1.0
525
+ ],
526
+ "self_nana_ecb_right_y": [
527
+ 0.0,
528
+ 1.0
529
+ ],
530
+ "self_nana_ecb_top_x": [
531
+ 0.0,
532
+ 1.0
533
+ ],
534
+ "self_nana_ecb_top_y": [
535
+ 0.0,
536
+ 1.0
537
+ ],
538
+ "self_nana_hitlag_left": [
539
+ 0.0056202595617094175,
540
+ 1.0
541
+ ],
542
+ "self_nana_hitstun_left": [
543
+ 5.165146239507015,
544
+ 22.602253744569836
545
+ ],
546
+ "self_nana_invuln_left": [
547
+ 0.0,
548
+ 1.0
549
+ ],
550
+ "self_nana_jumps_left": [
551
+ 1.4042130889419322,
552
+ 1.0
553
+ ],
554
+ "self_nana_l_shldr": [
555
+ 0.0,
556
+ 1.0
557
+ ],
558
+ "self_nana_main_x": [
559
+ 0.5,
560
+ 1.0
561
+ ],
562
+ "self_nana_main_y": [
563
+ 0.5,
564
+ 1.0
565
+ ],
566
+ "self_nana_percent": [
567
+ 39.102286283530674,
568
+ 35.88860614948017
569
+ ],
570
+ "self_nana_pos_x": [
571
+ 1.2068642679018815,
572
+ 49.30211774003539
573
+ ],
574
+ "self_nana_pos_y": [
575
+ 10.58418713398032,
576
+ 34.35033591865463
577
+ ],
578
+ "self_nana_r_shldr": [
579
+ 0.0,
580
+ 1.0
581
+ ],
582
+ "self_nana_shield_strength": [
583
+ 58.85621297161418,
584
+ 3.5665092548631234
585
+ ],
586
+ "self_nana_speed_air_x_self": [
587
+ 7.449704370577794e-05,
588
+ 1.0
589
+ ],
590
+ "self_nana_speed_ground_x_self": [
591
+ 0.0004617140358648432,
592
+ 1.0
593
+ ],
594
+ "self_nana_speed_x_attack": [
595
+ 0.0006254869455141354,
596
+ 1.0
597
+ ],
598
+ "self_nana_speed_y_attack": [
599
+ 0.01099576749089697,
600
+ 1.0
601
+ ],
602
+ "self_nana_speed_y_self": [
603
+ -0.01155770004031499,
604
+ 1.0
605
+ ],
606
+ "self_nana_stock": [
607
+ 2.653193168742282,
608
+ 1.0754299773926206
609
+ ],
610
+ "self_percent": [
611
+ 51.95983317255054,
612
+ 41.968951332585824
613
+ ],
614
+ "self_pos_x": [
615
+ 2.095804605074829,
616
+ 56.876036164389376
617
+ ],
618
+ "self_pos_y": [
619
+ 11.285403637158234,
620
+ 32.36464426855818
621
+ ],
622
+ "self_r_shldr": [
623
+ 0.16628387570381165,
624
+ 1.0
625
+ ],
626
+ "self_shield_strength": [
627
+ 58.83739485300921,
628
+ 3.5948948328876775
629
+ ],
630
+ "self_speed_air_x_self": [
631
+ -2.5396470322689227e-05,
632
+ 1.0
633
+ ],
634
+ "self_speed_ground_x_self": [
635
+ 7.379903611212253e-05,
636
+ 1.0
637
+ ],
638
+ "self_speed_x_attack": [
639
+ 0.00016006144034171966,
640
+ 1.0
641
+ ],
642
+ "self_speed_y_attack": [
643
+ 0.016839584911564988,
644
+ 1.0
645
+ ],
646
+ "self_speed_y_self": [
647
+ -0.02085563252216532,
648
+ 1.0
649
+ ],
650
+ "self_stock": [
651
+ 2.706313936666291,
652
+ 1.0676758056121092
653
+ ],
654
+ "stage_edge_left": [
655
+ -75.58011646892624,
656
+ 11.397204097224181
657
+ ],
658
+ "stage_edge_right": [
659
+ 75.58011646892624,
660
+ 11.397204097224181
661
+ ],
662
+ "top_platform_height": [
663
+ 48.35880538463942,
664
+ 5.535745808270807
665
+ ],
666
+ "top_platform_left": [
667
+ -17.193803214501965,
668
+ 1.9480815914430683
669
+ ],
670
+ "top_platform_right": [
671
+ 17.19358611770908,
672
+ 1.947878301464183
673
+ ]
674
+ }
fox/stick_clusters.json ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "stick_centers": [
3
+ [
4
+ 0.5,
5
+ 0.5
6
+ ],
7
+ [
8
+ 0.675,
9
+ 0.5
10
+ ],
11
+ [
12
+ 0.325,
13
+ 0.5
14
+ ],
15
+ [
16
+ 0.5,
17
+ 0.675
18
+ ],
19
+ [
20
+ 0.5,
21
+ 0.325
22
+ ],
23
+ [
24
+ 0.8375,
25
+ 0.5
26
+ ],
27
+ [
28
+ 0.1625,
29
+ 0.5
30
+ ],
31
+ [
32
+ 0.5,
33
+ 0.8375
34
+ ],
35
+ [
36
+ 0.5,
37
+ 0.1625
38
+ ],
39
+ [
40
+ 1.0,
41
+ 0.5
42
+ ],
43
+ [
44
+ 0.5,
45
+ 1.0
46
+ ],
47
+ [
48
+ 0.0,
49
+ 0.5
50
+ ],
51
+ [
52
+ 0.5,
53
+ 0.0
54
+ ],
55
+ [
56
+ 0.975,
57
+ 0.35
58
+ ],
59
+ [
60
+ 0.025,
61
+ 0.35
62
+ ],
63
+ [
64
+ 0.975,
65
+ 0.65
66
+ ],
67
+ [
68
+ 0.025,
69
+ 0.65
70
+ ],
71
+ [
72
+ 0.925,
73
+ 0.25
74
+ ],
75
+ [
76
+ 0.925,
77
+ 0.75
78
+ ],
79
+ [
80
+ 0.075,
81
+ 0.25
82
+ ],
83
+ [
84
+ 0.075,
85
+ 0.75
86
+ ],
87
+ [
88
+ 0.85,
89
+ 0.15
90
+ ],
91
+ [
92
+ 0.15,
93
+ 0.15
94
+ ],
95
+ [
96
+ 0.85,
97
+ 0.85
98
+ ],
99
+ [
100
+ 0.15,
101
+ 0.85
102
+ ],
103
+ [
104
+ 0.75,
105
+ 0.75
106
+ ],
107
+ [
108
+ 0.25,
109
+ 0.75
110
+ ],
111
+ [
112
+ 0.75,
113
+ 0.25
114
+ ],
115
+ [
116
+ 0.25,
117
+ 0.25
118
+ ],
119
+ [
120
+ 0.75,
121
+ 0.925
122
+ ],
123
+ [
124
+ 0.25,
125
+ 0.925
126
+ ],
127
+ [
128
+ 0.75,
129
+ 0.075
130
+ ],
131
+ [
132
+ 0.25,
133
+ 0.075
134
+ ],
135
+ [
136
+ 0.65,
137
+ 0.025
138
+ ],
139
+ [
140
+ 0.65,
141
+ 0.975
142
+ ],
143
+ [
144
+ 0.35,
145
+ 0.025
146
+ ],
147
+ [
148
+ 0.35,
149
+ 0.975
150
+ ]
151
+ ],
152
+ "shoulder_centers": [
153
+ 0.0,
154
+ 0.4,
155
+ 1.0
156
+ ]
157
+ }
luigi/cat_maps.json ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "proj7_owner": {
3
+ "-1": 0,
4
+ "0": 1,
5
+ "1": 2,
6
+ "2": 3,
7
+ "3": 4,
8
+ "4": 5
9
+ },
10
+ "proj7_subtype": {
11
+ "-1": 0,
12
+ "0": 1,
13
+ "1": 2,
14
+ "2": 3,
15
+ "3": 4,
16
+ "4": 5
17
+ },
18
+ "proj6_owner": {
19
+ "-1": 0,
20
+ "0": 1,
21
+ "1": 2,
22
+ "2": 3,
23
+ "3": 4,
24
+ "4": 5
25
+ },
26
+ "proj6_subtype": {
27
+ "-1": 0,
28
+ "0": 1,
29
+ "1": 2,
30
+ "2": 3,
31
+ "3": 4,
32
+ "4": 5,
33
+ "7": 6
34
+ },
35
+ "proj5_owner": {
36
+ "-1": 0,
37
+ "0": 1,
38
+ "1": 2,
39
+ "2": 3,
40
+ "3": 4,
41
+ "4": 5
42
+ },
43
+ "proj5_subtype": {
44
+ "-1": 0,
45
+ "0": 1,
46
+ "1": 2,
47
+ "2": 3,
48
+ "3": 4,
49
+ "4": 5,
50
+ "5": 6,
51
+ "6": 7,
52
+ "7": 8,
53
+ "8": 9
54
+ },
55
+ "proj4_owner": {
56
+ "-1": 0,
57
+ "0": 1,
58
+ "1": 2,
59
+ "2": 3,
60
+ "3": 4,
61
+ "4": 5
62
+ },
63
+ "proj4_subtype": {
64
+ "-1": 0,
65
+ "0": 1,
66
+ "1": 2,
67
+ "2": 3,
68
+ "3": 4,
69
+ "4": 5,
70
+ "5": 6,
71
+ "6": 7,
72
+ "7": 8,
73
+ "8": 9
74
+ },
75
+ "proj3_owner": {
76
+ "-1": 0,
77
+ "0": 1,
78
+ "1": 2,
79
+ "2": 3,
80
+ "3": 4,
81
+ "4": 5
82
+ },
83
+ "proj3_subtype": {
84
+ "-1": 0,
85
+ "0": 1,
86
+ "1": 2,
87
+ "2": 3,
88
+ "3": 4,
89
+ "4": 5,
90
+ "5": 6,
91
+ "6": 7,
92
+ "7": 8,
93
+ "8": 9
94
+ },
95
+ "proj2_owner": {
96
+ "-1": 0,
97
+ "0": 1,
98
+ "1": 2,
99
+ "2": 3,
100
+ "3": 4,
101
+ "4": 5
102
+ },
103
+ "proj2_subtype": {
104
+ "-1": 0,
105
+ "0": 1,
106
+ "1": 2,
107
+ "2": 3,
108
+ "3": 4,
109
+ "4": 5,
110
+ "5": 6,
111
+ "6": 7,
112
+ "7": 8,
113
+ "8": 9
114
+ },
115
+ "proj1_owner": {
116
+ "-1": 0,
117
+ "0": 1,
118
+ "1": 2,
119
+ "2": 3,
120
+ "3": 4,
121
+ "4": 5
122
+ },
123
+ "proj1_subtype": {
124
+ "-1": 0,
125
+ "0": 1,
126
+ "1": 2,
127
+ "2": 3,
128
+ "3": 4,
129
+ "4": 5,
130
+ "5": 6,
131
+ "6": 7,
132
+ "7": 8,
133
+ "8": 9
134
+ },
135
+ "proj0_owner": {
136
+ "-1": 0,
137
+ "0": 1,
138
+ "1": 2,
139
+ "2": 3,
140
+ "3": 4,
141
+ "4": 5
142
+ },
143
+ "proj0_subtype": {
144
+ "-1": 0,
145
+ "0": 1,
146
+ "1": 2,
147
+ "2": 3,
148
+ "3": 4,
149
+ "4": 5,
150
+ "5": 6,
151
+ "6": 7,
152
+ "7": 8,
153
+ "8": 9,
154
+ "11": 10
155
+ },
156
+ "opp_port": {
157
+ "0": 0,
158
+ "1": 1,
159
+ "2": 2,
160
+ "3": 3,
161
+ "4": 4
162
+ },
163
+ "opp_costume": {
164
+ "0": 0,
165
+ "1": 1,
166
+ "2": 2,
167
+ "3": 3,
168
+ "4": 4,
169
+ "5": 5
170
+ },
171
+ "self_port": {
172
+ "0": 0,
173
+ "1": 1,
174
+ "2": 2,
175
+ "3": 3,
176
+ "4": 4
177
+ },
178
+ "self_costume": {
179
+ "0": 0,
180
+ "1": 1,
181
+ "2": 2,
182
+ "3": 3,
183
+ "4": 4,
184
+ "5": 5
185
+ }
186
+ }
luigi/config.json ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "d_model": 512,
3
+ "nhead": 8,
4
+ "num_layers": 6,
5
+ "dim_feedforward": 2048,
6
+ "dropout": 0.2,
7
+ "encoder_type": "hal_flat",
8
+ "d_intra": 256,
9
+ "encoder_nlayers": 2,
10
+ "k_query": 1,
11
+ "scaled_emb": false,
12
+ "max_seq_len": 256,
13
+ "pos_enc": "relpos",
14
+ "rope_theta": 10000.0,
15
+ "rope_learnable_freqs": false,
16
+ "xpos_scale_base": 0.0,
17
+ "attn_variant": "standard",
18
+ "n_kv_heads": 0,
19
+ "use_rmsnorm": false,
20
+ "use_swiglu": false,
21
+ "stick_loss": "clusters",
22
+ "btn_loss": "focal",
23
+ "no_opp_inputs": true,
24
+ "no_self_inputs": false,
25
+ "head_hidden": 256,
26
+ "n_stick_clusters": 37,
27
+ "n_shoulder_bins": 3,
28
+ "autoregressive_heads": true,
29
+ "hal_mode": true,
30
+ "lean_features": false,
31
+ "hal_minimal_features": true,
32
+ "hal_controller_encoding": true,
33
+ "n_controller_combos": 7,
34
+ "num_stages": 6,
35
+ "num_ports": 4,
36
+ "num_characters": 27,
37
+ "num_actions": 396,
38
+ "num_costumes": 6,
39
+ "num_c_dirs": 9,
40
+ "num_proj_types": 103,
41
+ "num_proj_subtypes": 40,
42
+ "model_preset": "hal",
43
+ "run_name": "luigi-7class-v2-long"
44
+ }
luigi/controller_combos.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "button_names": ["A", "B", "Z", "JUMP", "TRIG", "A_TRIG", "NONE"],
3
+ "n_combos": 7,
4
+ "class_scheme": "melee_7class"
5
+ }
luigi/hal_norm.json ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "features": {
3
+ "percent": {
4
+ "transform": "normalize",
5
+ "min": 0.0,
6
+ "max": 248.74000549316406,
7
+ "mean": 51.95983317255054,
8
+ "std": 41.968951332585824
9
+ },
10
+ "stock": {
11
+ "transform": "normalize",
12
+ "min": 0.0,
13
+ "max": 4.0,
14
+ "mean": 2.706313936666291,
15
+ "std": 1.0676758056121092
16
+ },
17
+ "facing": {
18
+ "transform": "normalize",
19
+ "min": 0.0,
20
+ "max": 1.0,
21
+ "mean": 0.5,
22
+ "std": 0.5
23
+ },
24
+ "invulnerable": {
25
+ "transform": "normalize",
26
+ "min": 0.0,
27
+ "max": 1.0,
28
+ "mean": 0.5,
29
+ "std": 0.5
30
+ },
31
+ "jumps_left": {
32
+ "transform": "normalize",
33
+ "min": 0.0,
34
+ "max": 6.0,
35
+ "mean": 1.37347476621212,
36
+ "std": 1.0
37
+ },
38
+ "on_ground": {
39
+ "transform": "normalize",
40
+ "min": 0.0,
41
+ "max": 1.0,
42
+ "mean": 0.5,
43
+ "std": 0.5
44
+ },
45
+ "shield_strength": {
46
+ "transform": "invert_normalize",
47
+ "min": 0.0,
48
+ "max": 60.0,
49
+ "mean": 58.83739485300921,
50
+ "std": 3.5948948328876775
51
+ },
52
+ "pos_x": {
53
+ "transform": "standardize",
54
+ "min": -273.2964782714844,
55
+ "max": 272.9228515625,
56
+ "mean": 2.095804605074829,
57
+ "std": 56.876036164389376
58
+ },
59
+ "pos_y": {
60
+ "transform": "standardize",
61
+ "min": -153.08863830566406,
62
+ "max": 312.3891296386719,
63
+ "mean": 11.285403637158234,
64
+ "std": 32.36464426855818
65
+ }
66
+ }
67
+ }
luigi/metadata.json ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "character": "Luigi",
3
+ "melee_enum": "LUIGI",
4
+ "run_name": "luigi-7class-v2-long",
5
+ "global_step": 5242,
6
+ "games_trained": 1951,
7
+ "val_btn_f1": "~91%",
8
+ "val_main_f1": "~60%",
9
+ "val_loss": "~1.0",
10
+ "n_params": 26276389,
11
+ "n_controller_combos": 7,
12
+ "model_preset": "hal",
13
+ "pos_enc": "relpos",
14
+ "no_self_inputs": false,
15
+ "training_notes": "Trained 2026-04-12 on only 1951 Luigi games (all that was available on the HuggingFace dataset). The training run was set to 262K steps but val loss started climbing around step 5K due to overfitting on the small dataset \u2014 the auto-saved _best.pt is from step 5242, the early-stop sweet spot. Despite the small dataset, this checkpoint wavedashes at 70-83% conversion rate in bot-vs-bot dittos, matching real high-level Luigi play."
16
+ }
luigi/model.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bb00597a5ec0c270452b1edff9b34399a51c9061e2892c5bd4a50f35e548243e
3
+ size 265140187
luigi/norm_stats.json ADDED
@@ -0,0 +1,674 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "blastzone_bottom": [
3
+ -117.65425407727993,
4
+ 18.262450305928876
5
+ ],
6
+ "blastzone_left": [
7
+ -221.0636767362987,
8
+ 26.446253126378878
9
+ ],
10
+ "blastzone_right": [
11
+ 220.69921511796144,
12
+ 27.07588367452761
13
+ ],
14
+ "blastzone_top": [
15
+ 197.0612914988483,
16
+ 25.107361977908766
17
+ ],
18
+ "distance": [
19
+ 46.89352840468522,
20
+ 41.6457437018197
21
+ ],
22
+ "frame": [
23
+ 4974.586012834133,
24
+ 3231.6958953148887
25
+ ],
26
+ "left_platform_height": [
27
+ 26.38494154164375,
28
+ 2.3727475770040893
29
+ ],
30
+ "left_platform_left": [
31
+ -58.22050999659657,
32
+ 2.2432174911865275
33
+ ],
34
+ "left_platform_right": [
35
+ -25.508112173086992,
36
+ 4.376336119755992
37
+ ],
38
+ "opp_action_frame": [
39
+ 11.87692085782767,
40
+ 12.836349237420098
41
+ ],
42
+ "opp_ecb_bottom_x": [
43
+ 0.0,
44
+ 1.0
45
+ ],
46
+ "opp_ecb_bottom_y": [
47
+ 0.0,
48
+ 1.0
49
+ ],
50
+ "opp_ecb_left_x": [
51
+ 0.0,
52
+ 1.0
53
+ ],
54
+ "opp_ecb_left_y": [
55
+ 0.0,
56
+ 1.0
57
+ ],
58
+ "opp_ecb_right_x": [
59
+ 0.0,
60
+ 1.0
61
+ ],
62
+ "opp_ecb_right_y": [
63
+ 0.0,
64
+ 1.0
65
+ ],
66
+ "opp_ecb_top_x": [
67
+ 0.0,
68
+ 1.0
69
+ ],
70
+ "opp_ecb_top_y": [
71
+ 0.0,
72
+ 1.0
73
+ ],
74
+ "opp_hitlag_left": [
75
+ 0.011022251381279467,
76
+ 1.0
77
+ ],
78
+ "opp_hitstun_left": [
79
+ 6.207891702008504,
80
+ 21.609078401117316
81
+ ],
82
+ "opp_invuln_left": [
83
+ 0.0,
84
+ 1.0
85
+ ],
86
+ "opp_jumps_left": [
87
+ 1.37347476621212,
88
+ 1.0
89
+ ],
90
+ "opp_l_shldr": [
91
+ 0.16628418862819672,
92
+ 1.0
93
+ ],
94
+ "opp_main_x": [
95
+ 0.18162456154823303,
96
+ 1.0
97
+ ],
98
+ "opp_main_y": [
99
+ 0.18162456154823303,
100
+ 1.0
101
+ ],
102
+ "opp_nana_action_frame": [
103
+ 12.621206460649352,
104
+ 14.60026923736515
105
+ ],
106
+ "opp_nana_ecb_bottom_x": [
107
+ 0.0,
108
+ 1.0
109
+ ],
110
+ "opp_nana_ecb_bottom_y": [
111
+ 0.0,
112
+ 1.0
113
+ ],
114
+ "opp_nana_ecb_left_x": [
115
+ 0.0,
116
+ 1.0
117
+ ],
118
+ "opp_nana_ecb_left_y": [
119
+ 0.0,
120
+ 1.0
121
+ ],
122
+ "opp_nana_ecb_right_x": [
123
+ 0.0,
124
+ 1.0
125
+ ],
126
+ "opp_nana_ecb_right_y": [
127
+ 0.0,
128
+ 1.0
129
+ ],
130
+ "opp_nana_ecb_top_x": [
131
+ 0.0,
132
+ 1.0
133
+ ],
134
+ "opp_nana_ecb_top_y": [
135
+ 0.0,
136
+ 1.0
137
+ ],
138
+ "opp_nana_hitlag_left": [
139
+ 0.0056202595617094175,
140
+ 1.0
141
+ ],
142
+ "opp_nana_hitstun_left": [
143
+ 5.165146239507015,
144
+ 22.602253744569836
145
+ ],
146
+ "opp_nana_invuln_left": [
147
+ 0.0,
148
+ 1.0
149
+ ],
150
+ "opp_nana_jumps_left": [
151
+ 1.4042130889419322,
152
+ 1.0
153
+ ],
154
+ "opp_nana_l_shldr": [
155
+ 0.0,
156
+ 1.0
157
+ ],
158
+ "opp_nana_main_x": [
159
+ 0.5,
160
+ 1.0
161
+ ],
162
+ "opp_nana_main_y": [
163
+ 0.5,
164
+ 1.0
165
+ ],
166
+ "opp_nana_percent": [
167
+ 39.102286283530674,
168
+ 35.88860614948017
169
+ ],
170
+ "opp_nana_pos_x": [
171
+ 1.2068642679018815,
172
+ 49.30211774003539
173
+ ],
174
+ "opp_nana_pos_y": [
175
+ 10.58418713398032,
176
+ 34.35033591865463
177
+ ],
178
+ "opp_nana_r_shldr": [
179
+ 0.0,
180
+ 1.0
181
+ ],
182
+ "opp_nana_shield_strength": [
183
+ 58.85621297161418,
184
+ 3.5665092548631234
185
+ ],
186
+ "opp_nana_speed_air_x_self": [
187
+ 7.449704370577794e-05,
188
+ 1.0
189
+ ],
190
+ "opp_nana_speed_ground_x_self": [
191
+ 0.0004617140358648432,
192
+ 1.0
193
+ ],
194
+ "opp_nana_speed_x_attack": [
195
+ 0.0006254869455141354,
196
+ 1.0
197
+ ],
198
+ "opp_nana_speed_y_attack": [
199
+ 0.01099576749089697,
200
+ 1.0
201
+ ],
202
+ "opp_nana_speed_y_self": [
203
+ -0.01155770004031499,
204
+ 1.0
205
+ ],
206
+ "opp_nana_stock": [
207
+ 2.653193168742282,
208
+ 1.0754299773926206
209
+ ],
210
+ "opp_percent": [
211
+ 51.95983317255058,
212
+ 41.968951332585775
213
+ ],
214
+ "opp_pos_x": [
215
+ 2.095804605074832,
216
+ 56.87603616438966
217
+ ],
218
+ "opp_pos_y": [
219
+ 11.285403637157915,
220
+ 32.36464426855837
221
+ ],
222
+ "opp_r_shldr": [
223
+ 0.16628418862819672,
224
+ 1.0
225
+ ],
226
+ "opp_shield_strength": [
227
+ 58.83739485300921,
228
+ 3.594894832887488
229
+ ],
230
+ "opp_speed_air_x_self": [
231
+ -2.5396470322689237e-05,
232
+ 1.0
233
+ ],
234
+ "opp_speed_ground_x_self": [
235
+ 7.379903611212253e-05,
236
+ 1.0
237
+ ],
238
+ "opp_speed_x_attack": [
239
+ 0.00016006144034171966,
240
+ 1.0
241
+ ],
242
+ "opp_speed_y_attack": [
243
+ 0.016839584911564988,
244
+ 1.0
245
+ ],
246
+ "opp_speed_y_self": [
247
+ -0.02085563252216532,
248
+ 1.0
249
+ ],
250
+ "opp_stock": [
251
+ 2.706313936666291,
252
+ 1.0676758056121092
253
+ ],
254
+ "proj0_frame": [
255
+ 0.0,
256
+ 1.0
257
+ ],
258
+ "proj0_pos_x": [
259
+ 0.0,
260
+ 1.0
261
+ ],
262
+ "proj0_pos_y": [
263
+ 0.0,
264
+ 1.0
265
+ ],
266
+ "proj0_speed_x": [
267
+ 0.0,
268
+ 1.0
269
+ ],
270
+ "proj0_speed_y": [
271
+ 0.0,
272
+ 1.0
273
+ ],
274
+ "proj1_frame": [
275
+ 0.0,
276
+ 1.0
277
+ ],
278
+ "proj1_pos_x": [
279
+ 0.0,
280
+ 1.0
281
+ ],
282
+ "proj1_pos_y": [
283
+ 0.0,
284
+ 1.0
285
+ ],
286
+ "proj1_speed_x": [
287
+ 0.0,
288
+ 1.0
289
+ ],
290
+ "proj1_speed_y": [
291
+ 0.0,
292
+ 1.0
293
+ ],
294
+ "proj2_frame": [
295
+ 0.0,
296
+ 1.0
297
+ ],
298
+ "proj2_pos_x": [
299
+ 0.0,
300
+ 1.0
301
+ ],
302
+ "proj2_pos_y": [
303
+ 0.0,
304
+ 1.0
305
+ ],
306
+ "proj2_speed_x": [
307
+ 0.0,
308
+ 1.0
309
+ ],
310
+ "proj2_speed_y": [
311
+ 0.0,
312
+ 1.0
313
+ ],
314
+ "proj3_frame": [
315
+ 0.0,
316
+ 1.0
317
+ ],
318
+ "proj3_pos_x": [
319
+ 0.0,
320
+ 1.0
321
+ ],
322
+ "proj3_pos_y": [
323
+ 0.0,
324
+ 1.0
325
+ ],
326
+ "proj3_speed_x": [
327
+ 0.0,
328
+ 1.0
329
+ ],
330
+ "proj3_speed_y": [
331
+ 0.0,
332
+ 1.0
333
+ ],
334
+ "proj4_frame": [
335
+ 0.0,
336
+ 1.0
337
+ ],
338
+ "proj4_pos_x": [
339
+ 0.0,
340
+ 1.0
341
+ ],
342
+ "proj4_pos_y": [
343
+ 0.0,
344
+ 1.0
345
+ ],
346
+ "proj4_speed_x": [
347
+ 0.0,
348
+ 1.0
349
+ ],
350
+ "proj4_speed_y": [
351
+ 0.0,
352
+ 1.0
353
+ ],
354
+ "proj5_frame": [
355
+ 0.0,
356
+ 1.0
357
+ ],
358
+ "proj5_pos_x": [
359
+ 0.0,
360
+ 1.0
361
+ ],
362
+ "proj5_pos_y": [
363
+ 0.0,
364
+ 1.0
365
+ ],
366
+ "proj5_speed_x": [
367
+ 0.0,
368
+ 1.0
369
+ ],
370
+ "proj5_speed_y": [
371
+ 0.0,
372
+ 1.0
373
+ ],
374
+ "proj6_frame": [
375
+ 0.0,
376
+ 1.0
377
+ ],
378
+ "proj6_pos_x": [
379
+ 0.0,
380
+ 1.0
381
+ ],
382
+ "proj6_pos_y": [
383
+ 0.0,
384
+ 1.0
385
+ ],
386
+ "proj6_speed_x": [
387
+ 0.0,
388
+ 1.0
389
+ ],
390
+ "proj6_speed_y": [
391
+ 0.0,
392
+ 1.0
393
+ ],
394
+ "proj7_frame": [
395
+ 0.0,
396
+ 1.0
397
+ ],
398
+ "proj7_pos_x": [
399
+ 0.0,
400
+ 1.0
401
+ ],
402
+ "proj7_pos_y": [
403
+ 0.0,
404
+ 1.0
405
+ ],
406
+ "proj7_speed_x": [
407
+ 0.0,
408
+ 1.0
409
+ ],
410
+ "proj7_speed_y": [
411
+ 0.0,
412
+ 1.0
413
+ ],
414
+ "randall_height": [
415
+ -23.612431513793055,
416
+ 9.495261087482037
417
+ ],
418
+ "randall_left": [
419
+ -4.50880393479985,
420
+ 60.44143162238004
421
+ ],
422
+ "randall_right": [
423
+ 7.391196065174139,
424
+ 60.441431622283126
425
+ ],
426
+ "right_platform_height": [
427
+ 26.405558774032343,
428
+ 2.4055154064281274
429
+ ],
430
+ "right_platform_left": [
431
+ 25.503635359959812,
432
+ 4.369980335853813
433
+ ],
434
+ "right_platform_right": [
435
+ 58.56582543252829,
436
+ 2.7720777242750203
437
+ ],
438
+ "self_action_frame": [
439
+ 11.87692085782767,
440
+ 12.836349237420098
441
+ ],
442
+ "self_ecb_bottom_x": [
443
+ 0.0,
444
+ 1.0
445
+ ],
446
+ "self_ecb_bottom_y": [
447
+ 0.0,
448
+ 1.0
449
+ ],
450
+ "self_ecb_left_x": [
451
+ 0.0,
452
+ 1.0
453
+ ],
454
+ "self_ecb_left_y": [
455
+ 0.0,
456
+ 1.0
457
+ ],
458
+ "self_ecb_right_x": [
459
+ 0.0,
460
+ 1.0
461
+ ],
462
+ "self_ecb_right_y": [
463
+ 0.0,
464
+ 1.0
465
+ ],
466
+ "self_ecb_top_x": [
467
+ 0.0,
468
+ 1.0
469
+ ],
470
+ "self_ecb_top_y": [
471
+ 0.0,
472
+ 1.0
473
+ ],
474
+ "self_hitlag_left": [
475
+ 0.011022251381279467,
476
+ 1.0
477
+ ],
478
+ "self_hitstun_left": [
479
+ 6.207891702008504,
480
+ 21.609078401117316
481
+ ],
482
+ "self_invuln_left": [
483
+ 0.0,
484
+ 1.0
485
+ ],
486
+ "self_jumps_left": [
487
+ 1.37347476621212,
488
+ 1.0
489
+ ],
490
+ "self_l_shldr": [
491
+ 0.16628387570381165,
492
+ 1.0
493
+ ],
494
+ "self_main_x": [
495
+ 0.18162456154823303,
496
+ 1.0
497
+ ],
498
+ "self_main_y": [
499
+ 0.18162456154823303,
500
+ 1.0
501
+ ],
502
+ "self_nana_action_frame": [
503
+ 12.621206460649352,
504
+ 14.60026923736515
505
+ ],
506
+ "self_nana_ecb_bottom_x": [
507
+ 0.0,
508
+ 1.0
509
+ ],
510
+ "self_nana_ecb_bottom_y": [
511
+ 0.0,
512
+ 1.0
513
+ ],
514
+ "self_nana_ecb_left_x": [
515
+ 0.0,
516
+ 1.0
517
+ ],
518
+ "self_nana_ecb_left_y": [
519
+ 0.0,
520
+ 1.0
521
+ ],
522
+ "self_nana_ecb_right_x": [
523
+ 0.0,
524
+ 1.0
525
+ ],
526
+ "self_nana_ecb_right_y": [
527
+ 0.0,
528
+ 1.0
529
+ ],
530
+ "self_nana_ecb_top_x": [
531
+ 0.0,
532
+ 1.0
533
+ ],
534
+ "self_nana_ecb_top_y": [
535
+ 0.0,
536
+ 1.0
537
+ ],
538
+ "self_nana_hitlag_left": [
539
+ 0.0056202595617094175,
540
+ 1.0
541
+ ],
542
+ "self_nana_hitstun_left": [
543
+ 5.165146239507015,
544
+ 22.602253744569836
545
+ ],
546
+ "self_nana_invuln_left": [
547
+ 0.0,
548
+ 1.0
549
+ ],
550
+ "self_nana_jumps_left": [
551
+ 1.4042130889419322,
552
+ 1.0
553
+ ],
554
+ "self_nana_l_shldr": [
555
+ 0.0,
556
+ 1.0
557
+ ],
558
+ "self_nana_main_x": [
559
+ 0.5,
560
+ 1.0
561
+ ],
562
+ "self_nana_main_y": [
563
+ 0.5,
564
+ 1.0
565
+ ],
566
+ "self_nana_percent": [
567
+ 39.102286283530674,
568
+ 35.88860614948017
569
+ ],
570
+ "self_nana_pos_x": [
571
+ 1.2068642679018815,
572
+ 49.30211774003539
573
+ ],
574
+ "self_nana_pos_y": [
575
+ 10.58418713398032,
576
+ 34.35033591865463
577
+ ],
578
+ "self_nana_r_shldr": [
579
+ 0.0,
580
+ 1.0
581
+ ],
582
+ "self_nana_shield_strength": [
583
+ 58.85621297161418,
584
+ 3.5665092548631234
585
+ ],
586
+ "self_nana_speed_air_x_self": [
587
+ 7.449704370577794e-05,
588
+ 1.0
589
+ ],
590
+ "self_nana_speed_ground_x_self": [
591
+ 0.0004617140358648432,
592
+ 1.0
593
+ ],
594
+ "self_nana_speed_x_attack": [
595
+ 0.0006254869455141354,
596
+ 1.0
597
+ ],
598
+ "self_nana_speed_y_attack": [
599
+ 0.01099576749089697,
600
+ 1.0
601
+ ],
602
+ "self_nana_speed_y_self": [
603
+ -0.01155770004031499,
604
+ 1.0
605
+ ],
606
+ "self_nana_stock": [
607
+ 2.653193168742282,
608
+ 1.0754299773926206
609
+ ],
610
+ "self_percent": [
611
+ 51.95983317255054,
612
+ 41.968951332585824
613
+ ],
614
+ "self_pos_x": [
615
+ 2.095804605074829,
616
+ 56.876036164389376
617
+ ],
618
+ "self_pos_y": [
619
+ 11.285403637158234,
620
+ 32.36464426855818
621
+ ],
622
+ "self_r_shldr": [
623
+ 0.16628387570381165,
624
+ 1.0
625
+ ],
626
+ "self_shield_strength": [
627
+ 58.83739485300921,
628
+ 3.5948948328876775
629
+ ],
630
+ "self_speed_air_x_self": [
631
+ -2.5396470322689227e-05,
632
+ 1.0
633
+ ],
634
+ "self_speed_ground_x_self": [
635
+ 7.379903611212253e-05,
636
+ 1.0
637
+ ],
638
+ "self_speed_x_attack": [
639
+ 0.00016006144034171966,
640
+ 1.0
641
+ ],
642
+ "self_speed_y_attack": [
643
+ 0.016839584911564988,
644
+ 1.0
645
+ ],
646
+ "self_speed_y_self": [
647
+ -0.02085563252216532,
648
+ 1.0
649
+ ],
650
+ "self_stock": [
651
+ 2.706313936666291,
652
+ 1.0676758056121092
653
+ ],
654
+ "stage_edge_left": [
655
+ -75.58011646892624,
656
+ 11.397204097224181
657
+ ],
658
+ "stage_edge_right": [
659
+ 75.58011646892624,
660
+ 11.397204097224181
661
+ ],
662
+ "top_platform_height": [
663
+ 48.35880538463942,
664
+ 5.535745808270807
665
+ ],
666
+ "top_platform_left": [
667
+ -17.193803214501965,
668
+ 1.9480815914430683
669
+ ],
670
+ "top_platform_right": [
671
+ 17.19358611770908,
672
+ 1.947878301464183
673
+ ]
674
+ }
luigi/stick_clusters.json ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "stick_centers": [
3
+ [
4
+ 0.5,
5
+ 0.5
6
+ ],
7
+ [
8
+ 0.675,
9
+ 0.5
10
+ ],
11
+ [
12
+ 0.325,
13
+ 0.5
14
+ ],
15
+ [
16
+ 0.5,
17
+ 0.675
18
+ ],
19
+ [
20
+ 0.5,
21
+ 0.325
22
+ ],
23
+ [
24
+ 0.8375,
25
+ 0.5
26
+ ],
27
+ [
28
+ 0.1625,
29
+ 0.5
30
+ ],
31
+ [
32
+ 0.5,
33
+ 0.8375
34
+ ],
35
+ [
36
+ 0.5,
37
+ 0.1625
38
+ ],
39
+ [
40
+ 1.0,
41
+ 0.5
42
+ ],
43
+ [
44
+ 0.5,
45
+ 1.0
46
+ ],
47
+ [
48
+ 0.0,
49
+ 0.5
50
+ ],
51
+ [
52
+ 0.5,
53
+ 0.0
54
+ ],
55
+ [
56
+ 0.975,
57
+ 0.35
58
+ ],
59
+ [
60
+ 0.025,
61
+ 0.35
62
+ ],
63
+ [
64
+ 0.975,
65
+ 0.65
66
+ ],
67
+ [
68
+ 0.025,
69
+ 0.65
70
+ ],
71
+ [
72
+ 0.925,
73
+ 0.25
74
+ ],
75
+ [
76
+ 0.925,
77
+ 0.75
78
+ ],
79
+ [
80
+ 0.075,
81
+ 0.25
82
+ ],
83
+ [
84
+ 0.075,
85
+ 0.75
86
+ ],
87
+ [
88
+ 0.85,
89
+ 0.15
90
+ ],
91
+ [
92
+ 0.15,
93
+ 0.15
94
+ ],
95
+ [
96
+ 0.85,
97
+ 0.85
98
+ ],
99
+ [
100
+ 0.15,
101
+ 0.85
102
+ ],
103
+ [
104
+ 0.75,
105
+ 0.75
106
+ ],
107
+ [
108
+ 0.25,
109
+ 0.75
110
+ ],
111
+ [
112
+ 0.75,
113
+ 0.25
114
+ ],
115
+ [
116
+ 0.25,
117
+ 0.25
118
+ ],
119
+ [
120
+ 0.75,
121
+ 0.925
122
+ ],
123
+ [
124
+ 0.25,
125
+ 0.925
126
+ ],
127
+ [
128
+ 0.75,
129
+ 0.075
130
+ ],
131
+ [
132
+ 0.25,
133
+ 0.075
134
+ ],
135
+ [
136
+ 0.65,
137
+ 0.025
138
+ ],
139
+ [
140
+ 0.65,
141
+ 0.975
142
+ ],
143
+ [
144
+ 0.35,
145
+ 0.025
146
+ ],
147
+ [
148
+ 0.35,
149
+ 0.975
150
+ ]
151
+ ],
152
+ "shoulder_centers": [
153
+ 0.0,
154
+ 0.4,
155
+ 1.0
156
+ ]
157
+ }