1fb664710a
Adds the app-centric FLE bridge direction (direction.md) replacing the Blaze-backend route as primary plan, plus a corrected foundational test procedure and snapshot/diff/apply tooling for reverse-engineering FLE's Freeze Lineup write mechanism. Also picks up prior untracked research docs (status-review, fut-integration-options, fifa23-startup-flow, track-c) and existing capture/export tooling that hadn't been committed yet.
94 lines
3.8 KiB
Markdown
94 lines
3.8 KiB
Markdown
# Track C — FUT DB table viability test
|
|
|
|
**Status: PENDING — test has not yet been run.**
|
|
|
|
## What this test settles
|
|
|
|
Track C ("FLE Lua bridge") would inject OpenFUT club data directly into FIFA 23's
|
|
in-memory Frostbite DB tables at runtime, bypassing the entire backend/Blaze stack.
|
|
It is only viable for FUT (not just career mode) if FUT-specific tables — card
|
|
inventory, squad composition with FUT fields, coins — are accessible in memory when
|
|
the game is in the FUT area.
|
|
|
|
FUT data in online mode is fetched server-side from `fut.ea.com`. It is not known
|
|
whether FIFA 23 mirrors any of this into the Frostbite in-memory DB that FLE
|
|
can read/write. This test settles that question directly.
|
|
|
|
## Test procedure
|
|
|
|
**Prerequisites:**
|
|
- FIFA 23 launched normally via umu-run/Steam
|
|
- FLE (FIFA Live Editor) injected and active (normal launch path)
|
|
- EAAC in offline/neutralized state
|
|
- Game navigated as deep into FUT as possible (FUT hub if reachable; otherwise the
|
|
furthest FUT screen before the gate blocks it)
|
|
|
|
**Run the exporter:**
|
|
1. In FLE's Lua Engine, open and run `tools/squad-exporter/export_squad.lua`
|
|
(full path on the Windows side: `C:\<game>\openfut_squad_export.json`)
|
|
2. Wait for the MessageBox "Done! N players, M teams." or "ERROR writing..."
|
|
3. Retrieve the output file from the Wine prefix:
|
|
`~/Games/umu/fifa23-tools/drive_c/FIFA 23 Live Editor/openfut_squad_export.json`
|
|
(or wherever `C:\FIFA 23 Live Editor\` maps in the active prefix)
|
|
|
|
**What to inspect in the output:**
|
|
- `all_db_tables` array — the complete list of table names visible to FLE right now
|
|
- `fut_tables` object — any table whose name contains `fut`, `club`, `pack`, `item`, or
|
|
`market` (the script auto-extracts these)
|
|
- `is_career_mode` — confirms whether FUT or career mode was active
|
|
|
|
## Classification criteria
|
|
|
|
### "FUT tables present"
|
|
|
|
`fut_tables` is non-empty AND contains FUT-specific fields beyond base player stats:
|
|
- e.g., `fut_items` with card-type / rating / chemistry fields
|
|
- e.g., a squad table with FUT formation / chemistry / loan-flag fields
|
|
- e.g., a coins or points balance field
|
|
|
|
**Verdict:** Track C is viable for FUT. Fastest path to user-visible results.
|
|
|
|
### "only base player tables"
|
|
|
|
`fut_tables` is empty (no `fut_*` / `club_*` / `item_*` / `market_*` table names found
|
|
in `all_db_tables`), OR those tables exist but contain only base player attributes
|
|
(OVR, potential, position, pace, …) — the same fields visible in career mode.
|
|
|
|
**Verdict:** Track C cannot produce FUT. It could at most provide a custom Kick-Off or
|
|
career-mode match with players sourced from OpenFUT Core. FUT items and coins exist
|
|
only on EA's servers (not in the in-memory DB in offline mode).
|
|
|
|
### "FUT area unreachable to test"
|
|
|
|
The connection gate blocked entering FUT deeply enough for FUT tables to be populated.
|
|
Record which tables were visible and at what screen the test was run.
|
|
|
|
**Verdict:** Retest after M2 is unblocked, OR test with `TLS_ENABLED=false` bridge
|
|
handling the entry check stub.
|
|
|
|
## Results
|
|
|
|
*(To be filled in after the test is run.)*
|
|
|
|
| Field | Value |
|
|
|---|---|
|
|
| Date run | — |
|
|
| FIFA screen at test time | — |
|
|
| `is_career_mode` | — |
|
|
| Total tables in `all_db_tables` | — |
|
|
| FUT-specific table names found | — |
|
|
| Key FUT fields present | — |
|
|
| **Classification** | **PENDING** |
|
|
|
|
## Honest prior
|
|
|
|
`fut-integration-options.md` rates this as the recommended path and lists `fut_clubs`,
|
|
`fut_items`, `fut_squads` as "expected" tables. However those expectations are based on
|
|
analogy with career mode (which does store club/squad in the DB). FUT's data model is
|
|
architecturally different — it is account-bound server-side. The expectation may be
|
|
wrong. This test is the oracle.
|
|
|
|
The `export_squad.lua` script checks `GetDBTablesNames()` exhaustively (not just
|
|
assumed names), so it will surface any FUT tables that actually exist, regardless of
|
|
what name they use.
|