Der Quellcode befindet sich im Anhang dieses Posts.Edit: Ach ja, das hier unterstützt insgesamt keine Torhüter. Weil… Gründe!
Edit 2: Falls es so was in der Art schon in gut gibt, vergesst das hier einfach. Ich habe überhaupt nichts vorher (oder nachher) recherchiert.

Hi.
Das hier bezieht sich auf den FM2012, passt aber möglicherweise auch auf neuere Versionen oder ist leicht anpassbar, falls sich an den Attributen, Positionen, Rollen und Aufgaben („duty“, weiß nicht, wie es auf Deutsch heißt) für Spieler nichts oder wenig geändert hat.
Ich habe im Laufe der Zeit einige kleine Helferlein programmiert, um mir das Verwalten meiner Teams zu erleichtern oder um zumindest mehr Spaß an der Sache zu haben. Einen Teil davon möchte ich hier für jeden frei nutzbar (
WTFPL) zur Verfügung stellen. Es handelt sich um ein PHP-Tool mit dem einfallsreichen Namen fmteamtool, das eine Datei mit Spielerdaten und eine Datei mit einer taktische Aufstellung als Eingaben annimmt und daraus ein HTML-Dokument mit Analysen dazu generiert.
Ich mache mal ein Beispiel.
Das hier ist das aktuelle Team von Nîmes Olympique aus meinem letzten Spielstand im vom Tool erwarteten Format:
format = en
Luis Díaz (DL, ML)
13 16 12 6 16 15 7 9 15 17 16 14 17 16
5 16 7 15 17 15 15 20 6 17 16 16 16 16
16 13 13 3 15 17 15 14
Ralph Thompson (DL)
6 11 10 4 16 3 12 7 17 14 15 10 18 11
15 17 16 14 15 13 18 15 7 7 10 17 13 17
15 17 14 16 10 16 15 16
Robert Poole (DC)
7 5 5 5 11 3 18 4 6 19 7 7 17 7
12 16 15 15 15 8 17 17 4 16 14 19 12 15
16 18 17 13 16 20 15 16
Denis Bocchini (DC)
10 7 4 3 10 8 18 6 4 13 9 9 18 9
14 12 17 9 12 11 14 14 6 12 7 13 12 15
17 17 17 12 14 17 13 13
Simon Bentley (DC)
5 8 7 2 10 6 18 4 6 18 13 13 16 9
15 19 12 16 18 10 18 15 6 19 12 19 16 20
18 18 16 15 16 17 14 16
Pedro José (DR, DC)
10 8 6 2 15 8 15 2 4 18 14 10 17 14
14 17 11 18 14 7 17 16 6 6 10 18 16 13
14 16 16 16 15 14 12 13
Martin Jindrich (DL, DR)
7 7 7 5 15 5 9 6 7 16 11 10 18 15
12 15 14 10 14 15 15 16 5 8 8 16 12 15
14 16 15 5 14 18 12 12
Lassina Ouattara (DC, DM, MC)
11 10 12 9 17 15 14 13 10 13 18 10 18 17
8 17 18 16 14 15 14 15 9 11 11 14 12 17
17 15 13 5 15 16 12 14
Steve Bristow (MC)
5 9 9 8 17 6 7 10 3 14 16 15 15 15
16 13 11 13 13 15 10 17 10 8 9 10 12 15
19 13 13 12 5 16 12 14
Marco Rudolph (DM, MC)
11 10 9 8 17 8 6 11 2 12 18 5 14 19
11 13 13 15 13 18 14 16 7 17 17 18 14 15
15 19 16 13 16 15 13 14
Jean Guerin (MC)
8 12 13 13 16 7 18 14 9 14 19 16 13 19
7 11 8 15 12 19 11 19 11 8 13 13 12 16
19 18 18 8 11 18 14 12
Andy Saunders (MC)
6 5 12 8 14 3 8 11 2 8 15 5 12 12
9 11 8 9 12 15 8 12 14 4 9 5 17 17
15 13 10 10 13 16 13 6
Werner Gärtner (AML, AMC, ML)
13 16 16 11 17 9 12 12 11 6 16 13 5 16
10 18 12 12 15 19 16 17 17 17 18 8 12 14
16 17 15 9 13 18 12 13
Baptiste Palcani (AML, AMR)
5 19 14 12 17 7 5 10 4 5 17 10 2 15
8 16 9 17 14 17 16 14 16 13 17 8 11 13
12 15 18 6 17 13 12 12
Andrew Proudlock (AML, AMR, ST)
14 14 14 14 15 9 12 11 3 4 16 15 7 14
7 14 7 16 12 12 17 16 10 12 16 7 12 14
15 15 8 12 9 16 11 13
Ángel Luis (AMC, MC)
13 7 14 12 17 14 10 13 9 6 19 2 8 18
7 15 6 14 10 17 17 19 13 14 16 11 11 14
19 19 17 3 20 19 13 15
Patxi Alkorta (AMC, MC)
8 11 16 13 17 7 10 14 5 7 18 18 6 18
9 12 5 10 12 19 14 20 15 6 17 10 16 16
17 16 12 4 12 20 15 14
Damien Myers (AMR, MR)
13 19 16 13 18 12 9 10 5 6 16 15 4 18
7 19 9 17 18 20 14 18 19 11 19 7 13 18
15 18 18 5 15 17 14 11
Alan Harvey (ST, AMR, AML)
8 17 17 13 16 9 14 9 2 3 11 9 2 19
14 16 8 17 13 19 15 16 17 14 17 6 16 15
19 19 17 11 15 17 13 16
Jesús Espinosa (AMC, ST)
16 16 16 19 18 17 16 13 7 7 18 15 4 18
8 19 11 18 15 17 18 14 15 14 18 11 12 16
14 16 19 6 13 14 14 12
Gabriel Ramage (ST)
11 13 16 16 18 12 14 10 9 6 18 8 6 15
12 14 13 14 13 15 11 14 18 13 17 9 11 10
17 16 14 14 14 17 13 18
Ross Gilchrist (ST)
13 11 17 15 14 13 12 11 4 8 12 7 8 15
5 8 5 16 10 15 13 17 13 11 17 7 11 13
18 16 12 8 10 16 12 8
Das hier ist eine Taktikdatei:
# Duvels' reincarnation v2.2
# http://www.thedugout.net/community/showthread.php?t=81755
DL-FB-auto
DC-CD-D
DC-CD-D
DR-FB-auto
MC-BWM-D
MC-DLP-S
AML-AP-A
AMC-AM-A
AMR-W-A
ST-P-A
Sagen wir mal, dass die Dateien als nimes.txt beziehungsweise duvel.txt vorliegen. Dann sieht der Aufruf des Tools in etwa so aus:
$ ./fmteamtool nimes.txt duvel.txt > out.html
Das ist für eine Linux-Konsole. Das Tool sollte grundsätzlich auch unter anderen Betriebssystemen laufen, aber konkrete Anleitungen dazu kann ich nicht liefern, weil ich nur sehr umständlich Zugriff auf andere Systeme haben.
Hier ein Screenshot der generierten HTML-Ausgabe:
-
http://www.ld-host.de/uploads/images/d3950d8a6dce5070a4f81a5b49d800ec.jpg (Mirror:
http://i.imgur.com/2Ym8ruO.jpg)
Der meines Erachtens wesentliche Teil der Ausgabe ist die Tabelle ganz oben. Der Rest ist eine Auflistung der einzelnen Spieler und ihrer Stärken auf den von ihnen spielbaren Positionen (ungeachtet der Taktik) sowie eine allgemeine Liste der relevanten Attribute für jede im Spiel mögliche Kombination aus Position, Rolle und Aufgabe.
Die Tabelle ist grundsätzlich so zu verstehen wie diese Tabellen auf etwa transfermarkt.de, in denen ein Kader nach Positionen dargestellt ist:
-
http://www.transfermarkt.de/fc-barcelona/kadernachposition/verein/131Ich halte das für eine sehr vorteilhafte Darstellung, um einen informativen Überblick über einen Kader zu erhalten.
Das Tool listet dabei jedoch nicht alle möglichen Positionen auf, sondern nur diejenigen Positionen, die in der übergebenen Taktik existieren.
Dafür errechnet das Tool anhand der Attribute eines Spielers eine „Spielstärke“ für jeden Spieler für jede in der Taktik enthaltene Kombination aus Position/Rolle/Aufgabe. Der Algorithmus dafür ist unspektakulär: „Bilde den Mittelwert aller Attribute, die das Spiel für diese Position/Rolle/Aufgabe als wichtig markiert.“ Die Stärken für Positionen, die ein Spieler beherrscht, sind in der Darstellung fett markiert. Die übrigen Werte errechne ich mehr spaßeshalber und um vielleicht eine Idee zu bekommen, ob man einen Spieler umschulen könnte.
Die vier Spalten tec, men, phy und sum stellen die Summe aller technischen, mentalen und physischen sowie insgesamt aller Attribute dar. (Auf den höchsten Gesamtwert, der mir bislang untergekommen ist, kommt ein MC/AMC mit 547 Punkten. Das ist ein Schnitt von 15.2 pro Attribut.)
Zur Sinnhaftigkeit solcher Zahlen möchte ich an dieser Stelle nur sagen, dass einerseits natürlich Aussagekraft verloren geht, wenn alle Attribute gleich stark gewichtet oder einfach addiert werden, dass das letztlich aber dennoch nicht unproduktiv ist, weil Position/Rolle/Aufgabe die wichtigen Attribute recht genau eingrenzen und weil es wirklich nicht so ist, dass Spieler große Schwankungen in der Höhe der relevanten Attribute aufweisen. Anders gesagt: Es ist davon auszugehen, dass ein ST-P-A (Striker, Poacher, Attack) mit einem Schnitt von 16.5 nahezu immer der bessere Spieler ist als ein ST-P-A mit einem Schnitt von 16.0. Das gilt übrigens tendenziell durchaus auch für die Sterne-Wertungen.
Zum Aufbau der Spieler-Dateien:
Sie können mit einer "format"-Zeile beginnen:
format = de
oder
format = en
Whitespace sollte keine Rolle spielen. Beim Fehlen wird "en" angenommen.
Das Format bezieht sich auf die Reihenfolge der Attributwerte. Ein Eintrag wie
Yoan Clerc (MC, AMC)
15 15 17 13 18 19 12 16 5 13 18 14 16 18
13 17 9 16 12 20 17 12 16 16 17 15 16 17
17 11 10 18 14 18 17 20
ist so gedacht, dass die Werte aus den drei Spalten (technical, mental, physical) von oben nach unten in jeweils eine Zeile getippt werden. Da die Reihenfolge der Attribute pro Spalte im Spiel aber alphabetisch ist und damit sprachabhängig, unterscheidet sie sich zwischen den verschiedenen Sprachversionen. Dafür existiert die format-Zeile. Wird die passende Sprache gesetzt (derzeit nur "de" und "en"), können die Werte immer bequem der Reihe nach abgetippt werden. Die Anwendung sortiert dann passend um.
Ansonsten müssen bei den einzelnen Spielereinträgen zwischen Vor- und Nachname zwei Leerzeichen stehen, und Vor- und Nachname müssen immer gesetzt sein. (Sorry, ist faul programmiert.) Bei Künstlernamen also den Künstlernamen zweimal schreiben oder so.
Auf den Namen folgen in Klammern die Positionen, die der Spieler spielen kann oder soll. Die Auswahl bleibt dem Nutzer überlassen.
Das ist eigentlich schon alles. Das Format ist einigermaßen verzeihend, was Whitespace und dergleichen angeht, aber für ordnungsgemäße Funktion wäre es schon ganz gut, sich an die Vorgaben (siehe etwa Beispieldatei oben) zu halten.
Zeilen, die mit einem "#"-Symbol beginnen, zählen als Kommentar und werden nicht berücksichtigt. Gleiches gilt für Leerzeilen.
Zum Aufbau der Taktik-Dateien:
Eine Taktikdatei besteht aus einer oder mehreren Zeilen nach dem Schema:
Position-Rolle-Aufgabe
Beispielsweise:
ST-P-A
Die Bezeichnungen werden nur auf Englisch akzeptiert. (Wiederum: Sorry, es ist faul programmiert.) Eine Liste der gültigen Bezeichnungen ist der beigefügten README-Datei zu entnehmen.
Kommentare mit "#"-Symbol sind auch in diesen Dateien möglich. Leerzeilen werden ignoriert. Siehe wiederum die oben vorgestellte Demo-Datei.
Feedback und dergleichen gerne. Und vorsichtshalber gesagt, obwohl das Tool eigentlich nichts löscht oder so: Benutzung ist bei so was natürlich immer auf eigene Gefahr!
Ich gebe auch gern technischen Support. Wenn es jemand weiterentwickeln möchte oder als Webservice hosten, würde ich das sehr begrüßen und wohl auch mitwirken. Ich möchte nur nicht administrativ involviert sein, und ich möchte es deshalb auch nicht wirklich auf etwa mein GitHub packen.
Viele Grüße
narwal
[gelöscht durch Administrator]