Files
OpenFUT/docs/track-c-fut-table-test.md
T
funman300 1fb664710a docs: add FLE bridge direction pivot and squad-injection test tooling
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.
2026-06-30 13:19:27 -07:00

3.8 KiB

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.