FutComp: ein kostenloser Begleiter für EA FC 27 — von den Daten an gebaut
Eine kostenlose Website ohne Konto, die die Fragen beantwortet, die sich FC-27-Ultimate-Team-Spieler bei jedem Blick auf den Transfermarkt oder beim Teambau stellen. Was sie kann, wie sie gebaut ist und welche Teile sich als schwierig herausstellten.
FutComp (futcomp.site) ist eine kostenlose Website für Spielerinnen und Spieler von EA SPORTS FC 27 Ultimate Team. Sie beantwortet die Fragen, die bei jedem Öffnen des Transfermarkts oder beim Zusammenstellen eines Teams aufkommen: Welche dieser zwei Karten ist wirklich besser? Gibt es eine günstigere Karte mit denselben Werten? Welche Formation passt am besten zu den Spielern, die ich schon habe? Wie schliesse ich dieses Galerie-Set am günstigsten ab?
Sie ist kostenlos, braucht kein Konto und funktioniert auf jedem Handy. Dieser Beitrag zeigt, was die Website kann, wie sie gebaut ist, welche Teile schwierig waren und welche Werkzeuge dahinterstecken.
Die Grundsätze
Ein paar Regeln haben jede Entscheidung geprägt:
- Kostenlos und ohne Konto. Gespeicherte Teams, eigene Karten und abgeschlossene Galerie-Sets liegen im eigenen Browser. Keine Registrierung, keine Passwörter.
- Vorschlagen, nie handeln. FutComp sagt, was man kaufen oder welche Karten man einsetzen soll. Es kauft, verkauft, listet oder reicht nie etwas im EA-Konto ein, und die Chrome-Erweiterung liest nur, was die EA-Web-App bereits geladen hat.
- Handy zuerst. Rund zwei Drittel der Besucher sind auf dem Handy, deshalb wird jede Seite zuerst in Handybreite gestaltet und getestet.
- Einfach statt raffiniert. Jedes Werkzeug beginnt mit der Antwort (die beste erreichbare Stufe, die nötigen Karten, die Kosten) und zeigt die Details darunter.
Was sie kann
Jede Karte, durchsuchbar
Die Startseite ist eine Liste aller FC-27-Karten, etwas mehr als 20’000. Jede Zeile zeigt die Hauptwerte, Skill Moves, schwachen Fuss, starken Fuss, AcceleRATE, Grösse und aktuelle Münzpreise für Konsole und PC.
- Jede Spalte lässt sich per Tipp auf die Überschrift sortieren.
- Filter nach Position, Liga, Nation, Verein und Geschlecht.
- Unter Filter lassen sich Mindest- und Höchstwerte für jeden Hauptwert und jeden der 29 Detailwerte setzen. Zum Beispiel: „Stürmer mit 90+ Beweglichkeit unter 20K, sortiert nach Tempo“.
- Bis zu acht Detailwerte lassen sich als zusätzliche Spalten einblenden.
- Jede Suche steckt in der Seitenadresse und lässt sich so speichern oder teilen.
Wer lieber Bilder mag, ist mit einem Tipp in der Kartenansicht, und die Website merkt sich die bevorzugte Ansicht.
Vergleich
Zwei Karten wählen, und FutComp stellt sie nebeneinander auf einem Netzdiagramm dar — mit allen Haupt- und Detailwerten, dem Preisunterschied und einem EVO-Modus, in dem man Werte anpassen kann, um eine Evolution vorab zu sehen. Diese Evo lässt sich speichern und auf der ganzen Website verwenden.
Jeder Vergleich fragt ausserdem „Wen würdest du nehmen?“ Nach der Abstimmung sieht man, wie andere FutComp-Nutzer abgestimmt haben.
Ähnliche finden
Eine Karte wählen, und FutComp findet Karten mit ähnlichen Werten, die günstigste zuerst. Die Regeln bestimmt man selbst: jeder Haupt- oder Detailwert, wie nah er sein muss (innerhalb ±N oder „mindestens so gut“), Bewertungsbereich und Position. Ein typischer Fund ist eine Karte für 650 Münzen mit fast denselben Hauptwerten wie eine für 20K.
Squad-Builder und Chemarize
Der Squad-Builder ist ein Spielfeld zum Bauen:
- Formation wählen und auf eine Position tippen, um einen Spieler einzusetzen.
- Spieler zwischen Positionen ziehen, um sie zu verschieben oder zu tauschen.
- Chemie, Teambewertung und Preis aktualisieren sich laufend.
Jede Position bietet Vorschläge auf drei Arten: Beste Chemie (Spieler, die sich mit dem bestehenden Team verbinden, mit dem Zugewinn für die Teamchemie), Höchste Bewertung und Am günstigsten. Dazu gibt es ein Feld für den Höchstpreis und eine Suche.
Chemarize dreht das Ganze um. Sind 11 Spieler gesetzt, prüft es alle 29 Formationen und jede mögliche Verteilung der Spieler darin und zeigt die Formation mit der meisten Chemie. Es schlägt auch einen Trainer vor, wenn einer die Chemie weiter steigern würde.
Teams lassen sich speichern, als Link teilen oder als fertiges Bild für X, WhatsApp oder Instagram teilen.
Eigene Karten
Evolutionen verändern Bewertung, Werte und Positionen eines Spielers — die alte Karte passt nicht mehr. Der Kartengenerator baut die Karte neu: aus einem Katalog leerer Kartendesigns (Gold, TOTW, Future Stars, Icon und mehr), dem Gesicht des Spielers und den eigenen Angaben zu Bewertung, Positionen, Werten, Skill Moves und schwachem Fuss. Die eigene Karte erscheint dann im Team und im geteilten Bild.
Galerie-Planer
Die Galerie von FC 27 belohnt das Sammeln von Kartensets. Jedes der 128 Sets hat Stufen von D bis S, und jede Stufe hat ein Punkteziel. Spieler stellten immer wieder dieselben Fragen, deshalb beginnt jede Set-Seite mit drei Antworten:
- Die beste erreichbare Stufe und was sie auf Konsole oder PC kostet.
- Genau die nötigen Karten. Fügt man selbst gezogene Karten („First Owner“) hinzu, teilt sich die Liste in Vorhanden und Kaufen.
- Die echten Kosten. Karten bleiben nach dem Verkauf in der Galerie. Wer jede Karte kauft, einsetzt und wieder verkauft, zahlt für eine Stufe ungefähr nur die 5 % Verkaufsgebühr von EA statt des vollen Preises. Die Seite zeigt diesen Betrag und wie viele Münzen man gleichzeitig braucht.
Die Galerie-Startseite ordnet die Sets nach Münzen pro Galerie-Token, bietet eine Suche und lässt abgeschlossene Sets ausblenden.
Ratgeber, Spielerseiten und Community
- Ratgeber: „Beste“-Listen wie schnellste Spieler, beste Abschlussspieler und 5-Sterne-Techniker, täglich aktualisiert.
- Spielerseiten: Jede Karte hat eine — mit allen Werten, ähnlichen Karten und einer Community-Bewertung von 10 mit Tags wie Fühlt sich schnell an oder Die Münzen wert.
Die App und die Chrome-Erweiterung
- Die App: FutComp lässt sich auf dem Handy als App installieren (eine Progressive Web App), ganz ohne App Store.
- Die Chrome-Erweiterung: Sie bringt einen schnellen Vergleich in die Browserleiste und arbeitet mit der Web-App von EA zusammen:
- sie liest das aktuelle Team und „chemarisiert“ es im Pop-up
- sie plant jedes Galerie-Set rund um die Karten im eigenen Verein
- sie liest nur; sie sendet nie etwas an EA
Die Architektur
FutComp ist bewusst schlicht: eine Python-Web-App, eine MySQL-Datenbank, geplante Jobs, die die Daten aktuell halten, und handgeschriebenes JavaScript im Browser, ohne Frontend-Framework.
Die Daten aktuell halten
FutComp baut seine Datenbank aus öffentlich verfügbaren Karten- und Marktdaten zu FC 27. Geplante Jobs halten sie aktuell:
| Wann | Job | Was er tut |
|---|---|---|
| Täglich 18:30 | Spieler-Sync | Neue Karten und aktualisierte Werte |
| Täglich 19:45 | Chemie- und Kartengrafik-Sync | Positionen, Vereine, Ligen, Nationen, Chemie-Flags, Kartengesichter und der Katalog leerer Designs |
| Täglich 20:05 | Galerie-Sync | Jedes Galerie-Set mit Regeln, Stufen und Belohnungen |
| Alle 30 Min. | Preis-Sync | Konsolen- und PC-Preise für jede Karte, plus ein Eintrag in der Preishistorie bei jeder Preisänderung |
| Alle 30 Min. | Galerie-Pläne | Berechnet den günstigsten Weg zu jeder Stufe jedes Sets neu, für beide Plattformen |
| Nachts | Aufräumen | Dünnt alte Preishistorie aus, löscht abgelaufene Daten |
Jeder Job läuft mit einer Sperre, damit ein langsamer Durchlauf nie den nächsten überlappt.
Der Server
- Die App: eine Flask-Anwendung in Python hinter Apache, betrieben mit mod_wsgi in eigenen, langlebigen Prozessen.
- Serverseitig gerenderte Seiten: Die wichtigen Seiten werden mit Jinja-Templates auf dem Server gerendert, damit Suchmaschinen echten Inhalt sehen. Danach übernimmt der Browser das Sortieren, Filtern und Bauen.
- Die Datenbank: MySQL enthält Karten, Werte, Chemiedaten, Preise und Preishistorie, Galerie-Einträge, Kartengrafiken, Community-Stimmen und Kontaktnachrichten.
- Bilder: Kartenbilder und Grafikteile werden einmal geladen, auf der Festplatte zwischengespeichert und von FutComps eigener Domain ausgeliefert.
Caching — wichtiger als gedacht
Die häufig gebrauchten Daten hält die App selbst im Arbeitsspeicher:
- die Werte jeder Karte
- die Chemiedaten für Teamvorschläge
- die Werte, die „Ähnliche finden“ durchsucht
- die vorberechneten Galerie-Pläne
„Ähnliche finden“ packt zum Beispiel die Werte jeder Karte in einen kompakten Byte-Block (rund 1,3 MB für alle Karten), sodass eine eigene Suche über 20’000 Karten nur Millisekunden dauert.
Das Frontend
Reines JavaScript und CSS mit einem gemeinsamen Theme. Netzdiagramm, Spielfeld, Teambild zum Teilen und eigene Karten werden alle auf einem HTML-Canvas gezeichnet. Jedes interaktive Element ist für Touch wie für Maus gebaut und getestet.
Die Chrome-Erweiterung
Die Erweiterung nutzt Manifest V3. Ein Content-Script in der EA-Web-App beobachtet die Antworten, die die Web-App ohnehin erhält (das eigene Team, die Vereinskarten), und behält nur, was FutComp braucht: Karten-IDs, Bewertungen, Positionen und einen Besitzerzähler, um First-Owner-Karten zu erkennen. Transfermarkt und Beobachtungsliste ignoriert sie, weil diese Karten nicht einem selbst gehören. Sie stellt nie eine Anfrage an EA.
Die schwierigen Teile
Chemie ist ein Suchproblem
Die Chemie in FC 27 sieht einfach aus: Verbindungen über Verein, Liga und Nation, plus ein Trainerbonus. Schwierig macht sie, dass ein Spieler nur dann Chemie erhält — und nur dann für die Verbindungen der anderen zählt —, wenn er auf einer seiner eigenen Positionen spielt. Die beste Formation hängt also davon ab, welche Spieler auf Position sind, und das hängt von der Formation ab.
Chemarize löst das pro Formation:
- Es stellt mit Bitmasken dar, welche der 11 Spieler auf Position sind.
- Für jede Gruppe prüft es mit bipartitem Matching, ob die Gruppe tatsächlich verschiedene Positionen besetzen kann, die alle spielen können.
- Es behält nur die Gruppen, in die kein weiterer Spieler passt, und bewertet jede nach den Chemieregeln.
- Über alle 29 Formationen ordnet es die Ergebnisse und bevorzugt Aufstellungen, in denen die Spieler auf ihrer Hauptposition stehen.
All das läuft im Browser in Sekundenbruchteilen. Die Vorschläge im Squad-Builder nutzen dieselbe Engine: Für jeden Kandidaten berechnet sie die Chemie des ganzen Teams mit diesem Spieler auf der Position.
Die Galerie ist ein Optimierungsproblem
Die günstigste Kartenkombination für eine Stufe zu finden, klingt nach „die preiswertesten Karten kaufen“. Die Bonus-Tags machen das zunichte, weil viele erst ab einer bestimmten Kartenzahl greifen:
- „5+ Silberkarten: +15 %“
- „zwei Versionen desselben Spielers: +10 %“
- „First Owner: +150 % ab 5, +300 % ab 10, +500 % ab 20“
Eine günstigere Aufstellung, die einen Tag auslöst, kann eine teurere schlagen, die das nicht tut.
Der Planer arbeitet in Stufen:
- Auswahl nach Münzen pro Punkt: Er startet mit der besten Aufstellung nach Münzen pro Punkt und justiert einen einzigen Abwägungswert, bis das Ziel erreicht ist.
- Abwärts tauschen: Er ersetzt teure Karten durch günstigere, solange das Set die Stufe mit den Tags noch erreicht.
- Hill-Climbing: Wenn nur eine bestimmte Tag-Kombination eine Stufe erreicht, findet eine Suche sie.
- First-Owner-Varianten: Mit First-Owner-Karten probiert er zusätzlich, 5, 10 oder 20 davon fest einzuplanen, und behält den günstigsten Plan.
Ein Zwei-Sekunden-Problem, das eigentlich ein Serverproblem war
Als die Listenansicht startete, dauerten Suchen fast zwei Sekunden, obwohl die Suche selbst nur 25 bis 65 Millisekunden brauchte. Die App lief in jedem einzelnen Worker-Prozess von Apache, jeder mit eigenem, leerem Cache — die meisten Anfragen mussten ihn also neu aufbauen. Der Umzug von FutComp in eine kleine Zahl eigener, langlebiger Prozesse senkte die Antwortzeit auf etwa 70 Millisekunden. „Ähnliche finden“, der Galerie-Planer und die Erweiterung wurden dadurch ebenfalls schneller.
Eigene Karten brauchen die eigene Domain
Ein Canvas kann nur dann ein Bild exportieren, wenn alle darauf gezeichneten Bilder von derselben Domain stammen. Die Grafiken des Kartengenerators (leere Designs, Gesichter, Wappen) laufen deshalb über eine kleine Bildroute von FutComp. Diese akzeptiert nur Kartengrafik-Pfade und speichert jedes Bild auf der Festplatte zwischen. Die Textfarbe wird gewählt, indem gemessen wird, wie hell das Design hinter Name und Werten ist.
Mobil und Suchmaschinen
Die meisten Besucher kommen auf dem Handy, oft über einen Link aus einer Suchmaschine oder der Antwort eines KI-Assistenten. Das bedeutete:
- Kein seitliches Scrollen, ausser bei bewusst breiten Tabellen.
- Handy-Layouts für breite Daten: Tabellen werden auf dem Handy zu Karten, Filter wandern in ein Vollbild-Panel.
- Feste Leisten: Die Vergleichsleiste ist unten am Bildschirm fixiert und erscheint erst, wenn eine Karte gewählt ist.
- Eine Adresse pro Seite, mit Weiterleitungen für die Alternativen, einer sauberen Sitemap mit rund 20’000 Seiten und einer
llms.txtin Klartext, die die Website für KI-Crawler beschreibt. - Das Werkzeug zuerst: Der beschreibende Text, den Suchmaschinen wollen, steht unter jedem Werkzeug — die Seite liest sich als Werkzeug, nicht als Blogbeitrag.
Datenschutz ohne Konten
Es gibt keine Konten, persönliche Daten bleiben also im Browser. Die Community-Abstimmungen brauchen trotzdem Schutz vor Manipulation:
- jeder Browser erhält ein zufälliges, anonymes Cookie, das nur als verschlüsselter Code gespeichert wird
- Stimmen werden nur von der Website selbst angenommen
- es gibt ein stündliches Limit pro Verbindung, gestützt auf einen verschlüsselten Code aus der IP-Adresse, der nach 30 Tagen gelöscht wird
Wie Spieler es nutzen
- „Ist diese Karte es wert?“ Karte in der Liste suchen, bei ihr und bei der Alternative auf + tippen und Werte und Preis nebeneinander vergleichen.
- „Gleiche Werte, weniger Münzen.“ Eine Karte in der Kartenansicht öffnen, Ähnliche finden wählen, die Regeln bei Bedarf lockern und nach Preis sortieren.
- „Beste Formation für mein Team.“ Chemarize öffnen, die 11 Spieler hinzufügen (oder von der Chrome-Erweiterung aus der Web-App laden lassen) und auf Chemarize tippen.
- „Um einen Spieler herum bauen.“ Ihn aufs Spielfeld setzen, dann jede freie Position antippen und aus Beste Chemie wählen.
- „Meine Evo zeigen.“ Die Evo speichern, auf Karte anpassen tippen, ein Design wählen und das Teambild teilen.
- „Welches Galerie-Set als Nächstes?“ Die Galerie öffnen, Bester Wert gerade prüfen, ein Set öffnen und seiner Kartenliste folgen. Danach als erledigt markieren.
Werkzeuge und Stack
- Sprache und Server: Python 3, Flask, Jinja2, Apache 2.4 mit mod_wsgi
- Daten: MySQL,
mysql-connector-python,requestsfür die Sync-Jobs, Pillow zum Vermessen der Kartendesigns - Planung: cron, mit
flock, damit sich Jobs nie überlappen - Frontend: reines JavaScript, CSS Custom Properties für das Theme, die Canvas-API für Diagramme, Spielfelder, Teilen-Bilder und eigene Karten
- App: eine Progressive Web App (Web-Manifest und Service Worker)
- Browser-Erweiterung: Chrome Manifest V3, reine Lese-Content-Scripts
- Tests: Playwright, das echtes Chromium in Handy- und Desktopgrösse steuert, inklusive Touch und Drag-and-drop
- Hosting und Sicherheit: Let’s-Encrypt-Zertifikate, SSH nur mit Schlüssel, eine Firewall und fail2ban
- Analyse: Google Analytics, um zu sehen, welche Funktionen genutzt werden
- Entwicklung: gebaut mit Claude Code als Pair-Programmer
Was als Nächstes kommt
- Trading: FutComp zeichnet seit Mitte Oktober jede Preisänderung auf. Sobald einige Wochen Historie vorhanden sind, werden daraus Preisgrafiken auf jeder Spielerseite und ein Trading-Bereich mit Gewinnern und Verlierern.
- SBC-Lösungen, im selben Geist wie die Galerie: der günstigste Weg zu jeder Squad Building Challenge, mit den eigenen Karten zuerst. Auch hier nur Vorschläge, nie eine Einreichung.
Was das über unsere Arbeitsweise sagt
FutComp sieht aus wie eine Fan-Website und ist in Wahrheit ein Datenprodukt: geplante Pipelines, Caches im Arbeitsspeicher, eine kombinatorische Chemie-Engine, ein Kostenoptimierer und eine Browser-Erweiterung, alles fürs Handy abgestimmt. Mit genau diesem Ansatz arbeiten wir auch für Kundinnen und Kunden — den schwierigen Teil finden, ihn richtig lösen und alles drumherum einfach halten.
Wenn Ihr Projekt einen solchen schwierigen Teil hat, hören wir gern davon.
FutComp ist ein unabhängiges Fanprojekt und steht in keiner Verbindung zu Electronic Arts und wird nicht von Electronic Arts unterstützt. EA SPORTS FC, FC 27 und Ultimate Team sind Marken von Electronic Arts Inc.