funman300 2f8a6512db fifa17-recon: answer the CONSUMABLES panel with consumable counts, not player counts
The tab was empty because we answered the wrong question. The client asks
GET club/stats/consumables 41 times a session; we replied with the PLAYER stat set
(players 205, playersGold 189 ...), which that panel does not read. Confirmed on
screen: seven categories present and selectable, every one reading 0.

Now appends 14 consumables* rows counted from the SHELF. The shelf, not STORE.items():
the consumables we serve are a synthetic overlay never granted into the save, so
counting the store gives fourteen zeros, which on screen is byte-identical to failure
and would have made the experiment unreadable. Counts match the independently derived
expectation exactly: 126 total, 21 healing, 7 player contracts, 21 player training,
3 player fitness, 20 position, 21 GK training, 6 manager contracts, 19 playstyle.

Safe by construction: the vocabulary is an ATOM switch (FUN_18012fd40, 40 arms,
default return 0), so an unrecognised name is inert rather than fatal, and the rows
are APPENDED -- the player, nation and league rows that drive the working screens are
untouched. Zero rows unless FUT_CONSUMABLES is armed.

Default ON because answering the consumables panel with player counts is wrong by
inspection rather than a judgement call. FUT_CONSUM_STATS=0 reverts.

439 + 414 checks green.

The open question this sets up: whether a non-zero count makes the client request an
item list at all. If it does, the log names the route and /consumables/%s is settled
for free. If the numbers move and no request follows, the panel renders from counts
alone and the 126-item shelf was never needed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VUT92pz6RWKih9dSr8ZpxW
2026-08-05 11:19:29 -07:00

OpenFUT

Offline Ultimate Team — like SPT, but for FIFA 23.

OpenFUT replaces EA's retired FUT servers with a fully offline, single-player backend. You own FIFA 23 legitimately. You just want to keep playing after EA shut down the servers.


Repositories

Repo Purpose
openfut-core Game-independent offline FUT backend
openfut-bridge FIFA 23 integration layer + reverse-engineering proxy

Architecture

FIFA 23 client
      │
      ▼
┌─────────────────┐
│  openfut-bridge │  ← intercepts FUT traffic, maps routes, logs unknown
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  openfut-core   │  ← offline FUT backend: profiles, packs, squads, SBCs
└─────────────────┘
         │
         ▼
   SQLite database

Core is game-independent. It speaks a clean REST API and knows nothing about FIFA 23 internals.

Bridge is FIFA-specific. It speaks FIFA 23's wire protocol and translates it into Core API calls. Bridge is where all reverse engineering work happens.


Current Status

Feature Status
Local profiles + clubs Working
Coin system Working
Pack generator Working
Card collection Working
Squad builder Working
Objectives engine Working
SBC engine Working
Match rewards Working
NPC transfer market Working
Statistics Working
FIFA 23 integration 🔴 Reverse engineering in progress
Chemistry calculation 🟡 In progress
Full Draft mode 🟡 In progress
Squad Battles AI generator 🟡 In progress
Objectives claim flow 🟡 In progress

Running

# Start the offline backend
cd openfut-core
cargo run

# Start the proxy (for traffic capture / FIFA integration)
cd openfut-bridge
cargo run

Core listens on http://127.0.0.1:8080 by default. Bridge listens on http://127.0.0.1:8443 by default.


Design Principles

  • Offline-first. No EA account required. No internet connection needed.
  • Single-player only. This is not a multiplayer server emulator.
  • Data-driven. All cards, packs, SBCs, and objectives are JSON files. Everything is moddable.
  • Clean architecture. Core has zero knowledge of FIFA 23. Bridge has zero game logic.
  • No copyrighted assets. No real player images, no EA trademarks in data files.

Disclaimer

This project is not affiliated with EA Sports. You must own FIFA 23 legitimately to use this software. This project does not bypass any ownership verification and is intended only to restore offline playability of a game whose online services have been retired.

S
Description
No description provided
Readme 25 MiB
Languages
Python 54.8%
Rust 41.2%
Shell 3.3%
Lua 0.3%
PowerShell 0.2%
Other 0.1%