v0.22.0Beta
12. Mai 2026

Online-Multiplayer Alpha

Spieler-Statistiken Online + DFB-Pokal-Karten/Verletzungen + Stabilität

0.22.0 macht den Statistik-Bildschirm im Online-Multiplayer scharf und bügelt zwei akute Backend-Bugs (502 und Timeout beim Verein-Auswählen) glatt. Pro Spieler werden jetzt Einsätze, Liga- und Pokal-Tore über die Saison persistiert; Torschützenliste, Sünderliste und Mannschaft des Jahres ziehen über die komplette Liga (alle 18 Vereine), nicht mehr nur den eigenen Verein. Im DFB-Pokal werden Karten gezählt, Sperren ausgelöst, Verletzungen persistiert und Energie/Form/Skill-Drift laufen wie im Liga-Match — vorher waren Pokal-Tage „Gratis-Spiele" ohne Konsequenzen für die Spieler.

  • Statistik-Menüpunkt zeigt jetzt echte Daten: Einsätze, Liga-Tore, Pokal-Tore, gelbe/rote Karten und Status (krank/verletzt/gesperrt) werden nach jedem Spieltag in der DB hochgesetzt. Die Solo-Views (`PlayerDetailView`, `SquadView`) zeigen damit auch im Online-Modus reale Werte.
  • Torschützenliste, Sünderliste und Mannschaft des Jahres über die ganze Liga: bisher hatte der Online-Client nur die eigenen 15 Spieler im Game-State, sodass die ligaweiten Rankings effektiv leer waren. Neuer Endpoint `GET /api/leagues/:id/players/all` liefert alle Spieler aller Vereine; iOS füllt damit `game.players` komplett.
  • DFB-Pokal-Karten zählen mit: gelbe und rote Karten aus Pokalspielen werden in die Saison-Counter geschrieben, die Sperren-Schwellen 4/7/10/13/16/19/22/25 greifen auch nach Pokal-Tagen (1:1 KICKER.BAS:4210). Rote Karte heim → 2-4 Spieltage Sperre, Auswärts → 3-5 Spieltage.
  • Verletzungen aus Pokal-Spielen werden persistiert: Spieler fallen die volle Anzahl Wochen aus (BAS-Random(3)+2-Pattern), Status wird auf „verletzt" gesetzt, der Countdown läuft im selben Pipeline-Schritt wie nach Liga-Spielen.
  • Energie/Form/Skill-Drift im Pokal: Performance-Tick (BAS:4151-4194, B=Σ_5 Random(2) Sliding-Window-Counter), Energie-Drain für On-Field-Spieler nach Taktik-Last und Krankheits-Trigger bei `energy < 1` laufen jetzt auch über Pokalspiele. Vorher blieben Pokal-Tage komplett ohne Spieler-Mutation.
  • Stabilität: Verein-Auswählen läuft in einer einzigen DB-Transaktion. Wenn die Spieler-Hydration (15 Inserts) mitten drin unterbrochen wird, rollt Postgres alles zurück — kein verwaister `SeasonClub` mehr, kein „Verein bereits vergeben"-409 beim Retry. Selbst-Wahl desselben Vereins ist jetzt idempotent.
  • Latenter Crash beim Verein-Auswählen behoben: `SeasonClub.init` setzt jetzt `dfbStatusCurrent/Best` + `uefaStatusCurrent/Best` explizit. Postgres-Default rettete den DB-State, aber Fluents in-memory-Model crashte beim direkten Serialisieren mit „Cannot access field before it is initialized". Genau das war der ursprüngliche 502.
  • Performance: Spieler-Hydration als Batch-Insert (`[Player].create(on: db)`) — eine Postgres-Roundtrip statt 15 sequentielle. Schnellere Vereinswahl auf langsamer NAS-Anbindung, kein „The request timed out" mehr beim Erst-Setup.
  • iOS-URLSession-Timeout 30s → 60s als Sicherheitsmarge für langsame Backend-Anfragen.
Technische Details
  • Backend: neue Player-Spalten `appearances`, `goals_league`, `goals_cup`, `goals_uefa` via Migration `AddStatsCountersToPlayer` (alle NOT NULL DEFAULT 0). `MatchdayRunner.playSingleMatch` inkrementiert nach `processMatchUpdates`: alle Lineup-Spieler beider Vereine bekommen `appearances += 1`, jeder Torschütze (`result.goalScorers.scorerID`) bekommt `goalsLeague += 1` — 1:1-Port aus Solo `SeasonEngine.swift:727-732 + :956-962`. Forfeit-Pfad bleibt unverändert (Verein nicht angetreten → keine Stats).
  • Cup-Pipeline: `CupEngine.playSingleCupMatch` ruft jetzt `MatchEngine.processMatchUpdates` auf (vorher fehlend) und persistiert die Engine-Mutationen per `player.apply(engine) + save()`. Direkt davor: `appearances += 1` für Lineup-Spieler, `goalsCup += 1` für Schützen. Karten-Schwellen, Verletzung, Suspension-Countdown, Performance-Tick, Energie-Drain laufen identisch zum Liga-Pfad.
  • Neuer Endpoint `GET /api/leagues/:id/players/all` in `LeagueController` — alle Spieler aller Season-Clubs ausser Free-Agent-Pool als `[MarketPlayerDTO]`. Bei 18 Vereinen × 15 Spielern ~700 KB Payload, einmalig beim League-Load. `SeasonTransition` setzt die 4 Stats-Felder auf 0 (Solo-Pendant `SeasonEngine.swift:1119-1125`).
  • `SeasonClub.init` initialisiert jetzt `dfbStatusCurrent = 1`, `dfbStatusBest = 1`, `uefaStatusCurrent = 1`, `uefaStatusBest = 1` (Code 1 = „keine Teilnahme", BAS:10983). `chooseTeam` Controller in `req.db.transaction { db in … }` gewrappt + Idempotenz-Check: Same-Manager-Same-Verein → 200 mit existierendem Club statt 409. Spieler-Hydration via `[Player].create(on: db)` Batch-Insert in `SeasonInitializer.hydratePlayers` + `generateFallbackSquad`.
  • iOS Build 501: `CloudBackend.PlayerInfo` + `PlayerDTO` decoden die 4 neuen Stats-Felder (optional, ältere Server liefern sie nicht). `OnlineGameRepository.applyOwnPlayers` schreibt sie in `game.players[idx]` und summiert `goals = goalsLeague + goalsCup + goalsUEFA`. Neue `applyAllLeaguePlayers` mappt fremde Vereine ohne den eigenen zu überschreiben. `loadAll` zieht den All-Players-Endpoint parallel; bei alten Servern (404) silent fallback. URLSession-`timeoutInterval` 60s.

Wo wir stehen

Mit Version 0.9 endete die freie Spielwiese — KICKER war erstmals von vorne bis hinten durchspielbar. Seither geht es darum, jedes einzelne System originalgetreu nach Dirk Weigands BASIC-Quellcode nachzuziehen.

Inzwischen sind wir bei Version 0.22.0. Finanzen, Pokal-Flow, Karten-Handling, Verletzungen, Spielerentwicklung, Team-Moral — alles läuft jetzt nach denselben Formeln wie im Atari-ST-Original von 1991. Dazu Hot-Seat-Multiplayer, Spielszenarien und dutzende Detail-Fixes.

Was jetzt folgt, sind weiterer Feinschliff, Bugfixes und — ganz entscheidend — dein Feedback.

Bisherige Versionen

v0.21.0Beta
10. Mai 2026

DFB-Pokal Online: Ankündigung, Animation, Elfmeterschiessen, Outcome-Screen

0.21.0 macht den DFB-Pokal im Online-Multiplayer 1:1 zum Solo-Erlebnis. Eine Woche vor jeder Pokalrunde erscheint die „In einer Woche im DFB-Pokal …"-Vorausmeldung mit dem bisher größten Vereinserfolg. Im Pokalspiel kann man wie im Solo per Knopfdruck die animierten Höhepunkte verfolgen — inklusive Tor-Minuten, gelben/roten Karten, Verlängerung und Elfmeterschiessen mit struktureller Schuss-Sequenz. Nach dem eigenen Match meldet ein Outcome-Screen klar: „Du ziehst weiter", „Es kommt zum Rückspiel" oder „Du bist ausgeschieden".

  • Pokal-Vorausmeldung in der richtigen Reihenfolge: am Liga-Tag VOR der Pokalrunde, analog Solo (`Game.isDFBPokalDrawAnnouncement`). Direkt nach dem Spieltag-Opener kommt der Vollbild-Hinweis „In einer Woche wird Dein Spiel auswärts beim Verein X (Bundesliga) sein." — anschliessend Events, Finanzen, Hauptmenü, regulärer Liga-Spieltag, dann eine Woche später das Pokalspiel.
  • Bisher größter Pokal-Erfolg in der Vorausmeldung: pro Verein wird der höchste Pokal-Status über alle Saisons der Liga persistiert. „Bisheriger größter Erfolg: Achtelfinale (Saison 3)." wird unter der Vorausmeldung in gelb angehängt. Status 1=keine Teilnahme bis 8=Pokalsieger.
  • Pre-Match-Screen mit Animations-Toggle vorm eigenen Pokalspiel: Trikots beider Teams + zwei Buttons („Höhepunkte ansehen" / „Direkt zum Ergebnis") — wie im Liga-Pre-Match. Wer „Höhepunkte" wählt, sieht 1. Halbzeit (SpriteKit), Halbzeit-Tafel, 2. Halbzeit, Schluss-Pfiff.
  • Animierte Cup-Match-Sim mit Tor-Minuten und Karten: Backend persistiert pro Pokalpaarung die volle Match-Engine-Event-Liste (Tor-Schützen, gelbe/rote Karten, Verletzung) als 9 JSON-Spalten am `cup_fixture` — getrennt für Hin- und Rückspiel. iOS rendert das in `MatchSceneView` exakt wie ein Liga-Match.
  • Elfmeterschiessen mit struktureller Schuss-Sequenz: Backend simuliert die Elfmeter 1:1 wie Solo (75% Trefferchance, 5+5 mit Early-Decide bei mathematisch entschiedenem Stand, Sudden Death pair-by-pair) und persistiert die chronologische Schuss-Reihenfolge. iOS rendert sie mit Solo's `PenaltyShootoutView` — der User sieht jeden Schuss live im Tor.
  • Cup-Outcome-Screen nach dem eigenen Match — 1:1 zu Solo (`MatchDayView.computeCupOutcome`): „Du ziehst in das Achtelfinale des DFB-Pokals ein." (grün), „Es kommt zum Rückspiel gegen FC Bayern." (gelb), oder „Du bist im DFB-Pokal im Elfmeterschiessen ausgeschieden." / „… nach Verlängerung ausgeschieden." (rot).
  • Pate bekommt Push beim Beitritt eines neuen Mitspielers — auch in der Anmeldephase. Sobald jemand den Invite-Token einlöst, kommt auf dem Pate-Gerät: „Neuer Mitspieler in <Liga> — <Name> ist beigetreten — N Manager an Bord." Idempotenter Re-Join feuert keine doppelte Push.
  • Aufstellungs-Bestätigung wird nach Spieltag-Wechsel zurückgesetzt: vorher klebte die alte „Aufstellung für Spieltag 7 gesendet"-Zeile sticky unter dem Hub, auch wenn schon „Spieltag 8 spielen" als Knopf darüber stand. Jetzt löscht der `currentMatchday`-onChange-Listener die Status-Zeile sauber.
Technische Details
  • Backend b55: neue Migration `AddMatchEventsJsonToCupFixture` (9 String-Spalten: goal_scorers_json, yellow_cards_json, red_cards_json, injury_json, penalty_shots_json, plus first_leg_*-Varianten). `CupEngine.playSingleCupMatch` JSON-codiert die `MatchEngine.simulate`-Events; bei Two-Leg-Rückspiel werden `isHome`-Flags auf Fixture-Sicht gespiegelt. `simulatePenalties` als Solo-1:1-Port mit `CupPenaltyShot { isHome, scored }`-Sequenz. `SeasonClubDTO` exposed `dfbStatusBest` + `dfbStatusBestYear`. `PushService.notifyCommissionerNewMember` + Trigger im `LeagueController.join`.
  • iOS Build 496: neue `OnlineCupMatchFlowView` mit Phasen `preMatch → firstHalf → halftime → secondHalf → penaltyShootout → finalResult → cupOutcome`. `OnlineGameRepository.applySeason` decodet die JSON-Felder in Solo-`MatchResult`-Events; `dfbStatusBest/Year` werden auf `team.dfbCupBestStatus/Year` gespiegelt. DFB-Vorausmeldung im PreMatch-Flow getriggert (`pendingDFBAnnouncementRound` checkt `ablauf[scheduleIndex+1]==.league && ablauf[scheduleIndex+2]==.dfbHome`). `OnlineDFBAnnouncementView.bestStreakLine` rendert Vereinsbestleistung. Status-Reset im `currentMatchday`-onChange.
  • Kompatibilität: alte Saves ohne `dfbStatusBest` laufen weiter, da das Feld optional dekodiert wird. Vorhandene Pokal-Fixtures ohne Match-Events fallen sauber auf einen leeren `MatchResult` zurück (kein Crash, keine Animation).
v0.20.1Beta
9. Mai 2026

Online-Stabilisierung: Lineup-Warnungen, Forfeit, VL-KI-Squads, Tor-Animation

0.20.1 stabilisiert den in 0.20.0 freigeschalteten Online-Modus auf Solo-Niveau. Die Match-Engine läuft mit echten Verbandsligisten statt leeren Geistermannschaften, Aufstellungs-Warnungen und 0:4-Wertung bei Nichtantritt funktionieren wie im Original, Sponsoren bleiben über mehrere Spieltage erhalten, und Tor-Animationen landen sauber zwischen den Pfosten.

  • Aufstellungs-Warnungen 1:1 zum Original (KICKER.BAS:1811-1832): bei <11 Spielern (mit Torwart und ≥7 Feldspielern) gelber Hinweis „Du hast keine vollständige Mannschaft aufgestellt"; ohne Torwart oder mit weniger als 7 Spielern roter Forfeit-Screen mit 0:4-Wertung und Geldstrafe (250.000 DM × (5 − Liga-Index)). „Weiter" reicht eine Forfeit-Aufstellung ans Backend ein, MatchdayRunner schreibt das Spiel auf 0:4 für den Gegner und zieht die Strafe vom Vereinskapital ab.
  • Verbandsliga-KI-Vereine bekommen ihre Spieler: SPIELER.KDT enthält für die meisten VL-Vereine keine Spieler-Templates, wodurch im Online vorher leere Mannschaften gegen den Manager antraten. Backend nutzt jetzt 1:1 Solo's Random-Squad-Fallback und generiert 15 Random-Spieler pro VL-Verein.
  • Match-Engine fair nach Re-Hydration: wenn KI-Squads während laufender Saison nach-hydratisiert werden, bekommen die frischen Spieler Energy/Form mit Mid-Saison-Drift (8-15 / 7-15 statt 12-20 / 10-20) — sonst verliert der Manager mit ausgelaugtem Squad plötzlich alle Spiele.
  • Trikot-Sponsoren bis 120 Spiele Laufzeit: Solo würfelt Verträge bis 120 Spiele (KICKER.BAS:583-587). Backend hatte vorher hartes Cap=100 — jeder ≥100-Spiele-Vertrag wurde silent abgelehnt und verschwand am nächsten Spieltag. Cap auf 200 erhöht.
  • Werbe-Anzeige konsistent zwischen Pre-Match-Screen und Finanzen-Menü: Solo's `pendingSponsorIncome` akkumulierte sich bei jedem Sign-Versuch und blähte die Werbung-Spalte auf. `OnlineSponsorView` nullt den Buffer jetzt nach erfolgreichem Backend-Sync.
  • Wunderheiler & Co. tauchen in der Finanz-Übersicht auf: Random-Events mit Geld-Effekt werden jetzt korrekt im Wochenreport unter „Sonstiges" verbucht — vorher wurde nur das Capital reduziert ohne Spur in der Bilanz.
  • Spieler bleiben sichtbar nach Spieltag-Anschubsen: `applySeason` lief alle 2 Sekunden im Polling und ersetzte `game.teams = newTeams` komplett. Da die seasonInfo-DTO keine playerIDs/sponsors mitliefert, war nach jedem Polling-Tick der Squad in den Solo-Screens leer. Jetzt mit `priorPlayerIDs`/`priorSponsors`-Backup analog Capital-Erhalt.
  • Tor-Animationen landen 100% im Tor: Lupfer/Curved/Header-Bahnen mit ausschwingenden Mid-Punkten konnten visuell aussehen als ginge der Schuss neben das Tor. Vereinheitlicht auf einen geradlinigen Schuss in eine geclampte Eck-Position innerhalb der Pfosten; Lattenschüsse bleiben als eigenes Highlight bestehen.
  • Default-Lineup für frische Online-Liga: wenn der Manager noch nie eine Aufstellung gewählt hat, wird automatisch 1 GK + Top-10 Outfield nach overallSkill ausgewählt — verhindert die ungewollte Forfeit-Wertung beim ersten Spieltag.
  • LineupValidator akzeptiert KRANK/VERLETZT/GESPERRT silent: vorher 400-Bad-Request beim Submit, sobald ein gespeicherter Spieler zwischenzeitlich ausgefallen war — Solo filtert diese Spieler in `pickLineup` einfach raus, das macht das Backend jetzt auch.
Technische Details
  • Backend b46: neue `LineupSubmission.is_forfeit`-Spalte, `MatchdayRunner.playSingleMatch` Forfeit-Pfad (0:4 + `FinanceEngine.forfeitFine(leagueTier:)`), `SeasonInitializer.generateFallbackSquad` mit Solo-1:1-Random-Spielern aus `BackendRandomNames`, Sponsor-Cap 200 statt 100, EventEngine schreibt `pendingEventIncome`/`pendingEventExpense` für Wochenreport, `repairSeasonIfBroken` re-hydratisiert leere Vereine mit Mid-Saison-Drift.
  • iOS Build 482: `OnlineLeaguePlayView.lineupErrorScreen(check:)` mit drei Solo-Text-Varianten und Sub-Case `case lineupError(check: Game.LineupCheck)` statt separatem `@State` (verlor sich beim Re-Mount); `Game.LineupCheck: Hashable`; `OnlineGameRepository.applySeason` mit `priorPlayerIDs`/`priorSponsors`-Backup; `simulateMatchday` zieht jetzt nach Sim auch `getFinances`/`reloadOwnPlayers`/`getOffers` (Wunderheiler erscheint im Wochenreport).
  • MatchScene.swift: GoalStyle-Enum entfernt, `showGoal` immer geradliniger `.direct`-Schuss mit hardem Pfosten-Clamping. Lattenschüsse bleiben als `MatchHighlight.post`.
  • Verbleibende Lücken: Sponsoren werden nicht im seasonInfo-DTO mitgesendet (iOS-State läuft auseinander wenn App neu gestartet wird ohne loadAll); Pre-Match-Anzeige und Finanzen-Menü greifen auf unterschiedliche Datenquellen zurück, was bei laufender Saison gelegentlich zu Diskrepanzen führen kann.
v0.20.0Beta
5. Mai 2026

Online-Liga komplett — Toto, Training, Taktik, Sponsor + Solo-Hauptmenue

0.20.0 schließt die in 0.19.0 offen gebliebenen Online-Lücken: Toto-Schein, Trainingslager, Taktik-Wechsel, Sponsor-Verträge und Spieler-Positionen funktionieren jetzt auch im Multiplayer. Das Online-Hauptmenue ist identisch zum Solo (17 Items, Atari-ST-Look auf Spielfeld-Background). Vereinsname, Trikotfarben und Schwierigkeitsstufe lassen sich nachträglich editieren, Kredite kann man tilgen.

  • Online-Hauptmenue 1:1 wie Solo: gleiches Atari-ST-Layout mit 17 Punkten auf Spielfeld-Background, kein zweiter UI-Stack — `KickerHauptmenuView` aus `MainMenuView` extrahiert und vom Solo- und Online-Pfad geteilt.
  • Toto-Schein online: Tippen, Einsatz setzen, abgeben — Backend zieht den Einsatz vom Capital ab und persistiert die 9 Tipps für die Auswertung am Spieltag.
  • Trainingslager online: Spieler ins 2-, 4- oder 6-wöchige Camp schicken. Pro Buchung geht eine `sendPlayerToCamp`-Mutation ans Backend, das den autoritativen Stand (Capital + Camp-Belegung) zurückschreibt.
  • Taktik online: Tactic-Wechsel im Solo-Screen wird beim Verlassen via `submitLineup` ans Backend geschickt — auch bei unvollständiger Aufstellung.
  • Sponsor-Verträge online: eingehende Sponsoren-Angebote im Solo-Screen annehmen, Backend persistiert + zahlt das Geld in wöchentlichen Tranchen aus.
  • Spieler-Positionen online: Position pro Spieler im Solo-`PositionsView` ändern — beim Verlassen schickt der Wrapper für jede geänderte Position einen `setPlayerPosition`-Call ans Backend (Wechsel auf Torwart entfernt automatisch aus eingereichter Aufstellung, Original-Verhalten KICKER.BAS:6793).
  • Vereinsname + Trikotfarben nachträglich editierbar: aus dem eigenen Hub heraus über `updateOwnClub` — vorher nur bei Vereinswahl möglich.
  • Schwierigkeitsstufe online: `KickerDifficultyPicker` als wiederverwendbare Atari-Checkbox-Komponente — Liga-Gründer wählt sie beim Anlegen, Commissioner kann sie nachträglich anpassen.
  • Kredit-Tilgung online: aufgenommenen Kredit per Knopfdruck zurückzahlen — `repayCredit` reduziert Capital und löscht den Kredit-Eintrag im Backend.
Technische Details
  • Online-Wrapper-Pattern: Jeder neue `Online*View` rendert den existierenden Solo-Screen und merkt sich beim `task` einen Snapshot des relevanten `Game`-Zustands (Positionen-Map, Sponsor-IDs, Camp-Belegung, Tactic, Toto-Stake). Beim Verlassen wird der Diff berechnet und pro Mutation ein Backend-Call geschickt — Solo-Logik bleibt unverändert, kein paralleler Online-UI-Code.
  • `MenuScreen`-Enum aus `MainMenuView` auf Top-Level gehoben, damit Solo-`MainMenuView` und `OnlineLeaguePlayView` denselben Routing-Typ teilen können.
  • Backend-Erweiterungen: `POST /api/leagues/:id/credit/repay`, `POST /api/leagues/:id/players/:pid/position`, `POST /api/leagues/:id/difficulty`, `PATCH /api/leagues/:id/own-club` (Name + Trikot1/2), `GET /api/leagues/:id/sponsors/own`, `POST /api/leagues/:id/sponsors/sign`.
  • `OnlineGameRepository` um `repayCredit`, `setPlayerPosition`, `updateOwnClub`, `setDifficulty`, `signSponsor` ergänzt — alle reload-getriggert nach erfolgreichem Backend-Call.
  • Verbleibende Lücken aus 0.19.0: kein Push-Empfänger iOS-seitig, kein Buy-Offer-Flow auf andere Vereine (nur Verkauf), Saisonende Spieltag 34 ungetestet, Match-History ohne Tor-Schützen-/Karten-Listen.
v0.19.0Beta
4. Mai 2026

Online-Multiplayer Alpha — Liga gegen echte Mitspieler, asynchron

0.19.0 schaltet den ersten funktional spielbaren Online-Liga-Modus frei. Liga gründen, Mitspieler per Code einladen, Verein wählen, Aufstellung aufstellen, Transfers verhandeln, Stadion ausbauen, Spieltag spielen — alles gegen das Vapor-Backend, das in 0.18.0 fertig wurde. Solo-Modus und Hot-Seat bleiben unverändert.

  • Drei klar getrennte Online-Einstiege im Hauptmenü: „Online-Liga spielen" (eine Liga, in der man Mitglied ist, weiterspielen), „Online-Liga verwalten" (gründen, beitreten, Mitglieder verwalten, Archiv) und „Cloud-Backup" (Solo-Saves wie in 0.18.0).
  • Liga-Hub mit Saison-Header, eigenem Vereinsstatus und Aktions-Buttons — alle wesentlichen Manager-Aktionen erreichbar ohne Solo-Screens umzubauen.
  • Tabelle: alle vier Ligen mit Position, Punkten, Toren und Spiele/Siege/Unentschieden/Niederlagen aus persistiertem Server-State.
  • Aufstellung: existierender Solo-Squad-Screen wird wiederverwendet — 11 Spieler togglen, Submit-Button schickt die Aufstellung mit Tactic ans Backend, Mitspieler sehen sie nach manuellem Refresh.
  • Transfermarkt: eingehende Angebote auf eigene Spieler annehmen oder ablehnen, Backend macht Verein- und Geld-Transfer.
  • Stadion-Ausbau: Steh- und Sitzplätze erweitern, Backend validiert Cost und Bauzeit.
  • Finanzen: Capital, Kredit (Aufnahme + Restlaufzeit) und Termingeld (Anlage + Restlaufzeit).
  • Vertragsverlängerung: Spieler mit auslaufenden Verträgen (≤ 8 Wochen) bekommen 5 Wochen-Optionen (15/30/45/60/75) zur Verlängerung — Salary aus Backend-Default.
  • Commissioner-Privileg: nur der Liga-Gründer triggert den Spieltag manuell. Match-Engine läuft auf dem Server, alle 36 Match-Ergebnisse werden gruppiert nach Liga gezeigt, das eigene Spiel hervorgehoben.
  • Letzte Ergebnisse: alle Mitspieler können den letzten gespielten Spieltag aus der Datenbank nachladen, auch wenn sie ihn nicht selbst gestartet haben.
  • Aktualisieren-Button im Hub: holt sämtliche Liga-Daten frisch vom Server — als Workaround bis Push-Notifications iOS-seitig empfangen werden.
Technische Details
  • Adapter-Pattern: `OnlineGameRepository` (`@MainActor @Observable`) lädt parallel SeasonInfo, LeagueDetail, Finances, Stadium, Events, Offers, Players, Lineup und mappt die Backend-DTOs in das existierende Solo-`Game`-Modell — Solo-Screens (`LeagueTableView`, `SquadView`) werden 1:1 wiederverwendet, kein paralleler Multiplayer-UI-Stack.
  • Mutationen (Aufstellung absenden, Transfer akzeptieren, Stadion ausbauen, Vertrag verlängern, Kredit/Termingeld, Spieltag) gehen über Wrapper-Methoden, die nach erfolgreichem Backend-Call die abhängigen Daten neu laden und im `Game` re-applyen.
  • Backend-Erweiterungen: `GET /api/leagues/:id/players/own` für die eigene Spielerliste, `GET /api/leagues/:id/matchday/last` für persistierte Spieltag-Historie, `SeasonClubDTO` um `played/won/drawn/lost` ergänzt.
  • Synthetischer Solo-Manager im in-memory-`Game` macht den existierenden `SquadView` (der `game.managers.first(teamID:)` braucht) ohne Anpassung online-fähig.
  • Bekannte Lücken in dieser Alpha: kein Push-Empfänger iOS-seitig (Sender existiert), kein Buy-Offer-Flow auf andere Vereine (nur Verkauf), Saisonende Spieltag 34 ungetestet, Toto-/Trainingslager-UI im Online-Modus offen, Match-History ohne Tor-Schützen-/Karten-Listen (DB persistiert das nicht).
v0.18.0Beta
3. Mai 2026

Cloud-Backup mit Apple Sign-In — das Fundament für Online-Multiplayer

0.18.0 markiert einen Wendepunkt: Hinter den Kulissen entsteht das Backend für den geplanten Online-Multiplayer. Sichtbar wird das jetzt schon durch ein optionales Cloud-Backup für Solo-Spielstände — komplett gekapselt, der klassische Solo-Pfad bleibt bit-perfect unverändert.

  • Neuer Punkt „Cloud-Backup" im Sonstiges-Menü: Mit Apple anmelden, aktuellen Spielstand sichern, Anzeigename frei wählen. Wer's ignoriert, merkt keinen Unterschied — kein Login-Zwang, kein neues Onboarding.
  • Wiederherstellen legt einen ZUSÄTZLICHEN lokalen Spielstand an („Name (Cloud)") — das laufende Spiel wird nicht überraschend ersetzt. Lokale Saves bleiben weiter im Documents-Ordner liegen wie immer.
  • Backend self-hosted auf Franks NAS unter `kicker-atari.de/api/`. Postgres für State, Redis für später (Job-Queue), Caddy als Reverse-Proxy, alles in Docker.
  • Apple Sign-In als bewusste Authentifizierungs-Entscheidung: keine Passwörter, kein E-Mail-Bestätigungs-Tanz, ein Tap und drin. Pseudonym frei wählbar.
  • Vorbereitung für den Online-Multiplayer (Konzept v0.4 in `docs/multiplayer-concept-v0.4.md`): Saisonliga (asynchron) und Spieleabend (live), max. 6 Manager pro Liga, persistent über Saisons. Datenmodell + Match-Engine-Port kommen in 0.19.
Technische Details
  • Backend: Vapor 4 (Swift) + Fluent + JWT, Postgres 16 + Redis 7, Caddy bare-metal als Reverse-Proxy unter `kicker-atari.de/api/*`. Eigenes Repo `kicker-backend/` neben dem iOS-Projekt.
  • iOS: ASAuthorizationAppleIDProvider, Keychain für Session-Tokens (HMAC-JWT, 30 Tage), URLSession für die REST-Roundtrips. Bestehender `SaveEngine` bit-perfect unverändert — der Cloud-Service liest nur einen Snapshot.
  • Bundle-ID auf `xyz.weigand.kickerst` umgestellt (sauberer Apple-Sign-In-Identifier).
  • Build-System: BuildKit-Cache-Mount im Backend-Dockerfile reduziert Re-Builds von 10 Min auf 1-2 Min — Iteration ist jetzt erträglich.
v0.17.1Beta
2. Mai 2026

Energie-Drain je Schwierigkeit, Event 12 originalgetreu

Zwei kleine, aber wirkungsvolle Originaltreue-Fixes in der Engine: der Energie-Drain pro Spieltag skaliert jetzt mit der Schwierigkeitsstufe (Tribute-Edition), und das mysteriöse „Spieler verreist"-Event ist endlich richtig portiert — als 2-6-wöchiges Pseudo-Trainingslager statt als Krankheit.

  • Energie-Drain pro Schwierigkeit (Tribute): Anfänger ×0.5 (halber Drain — Krankheit selten), Amateur ×0.7, Fortgeschrittener ×1.0 (Original), Semiprofi ×1.2, Experte ×1.5 (deutlich häufiger krank). Default-Stufe 2 ändert nichts — bestehende Saves bleiben stabil.
  • Authentic-Edition bleibt strikt × 1.0 — das Original (KICKER.BAS:4006) kennt diesen Hebel nicht und behält den Werte-1-zu-1.
  • Event 12 endlich richtig: Spieler verreist 2-6 Wochen (Pseudo-Trainingslager), kein Krankheits-Status, kein Camp-Boost beim Zurückkommen — exakt wie KICKER.BAS:994-999 (Pl.info 60/61/15 gesetzt, Status bleibt .ok).
  • Pseudo-Camp ohne Boost: trainingCampIndex = nil → applyTrainingCampReturn macht nichts (Original Pseudo-Index 6 ist kein echtes Camp).
  • Aufstellungsfilter: Event-12-Spieler werden wie 13er-Camp-Spieler behandelt — nur verfügbare Spieler kommen in die Auslosung, niemand wird aus der laufenden Spielszene gezogen.
v0.17.0Beta
2. Mai 2026

UEFA-Cup-Endspiel: Sprite-Elfmeterschiessen, Pokal-Übersicht, Sieger-Show

Der UEFA-Cup ist jetzt komplett spielbar — vom interaktiven Hin/Rückspiel bis zum animierten Endspiel mit Pokalsieger-Show. Das Elfmeterschiessen läuft als SpriteKit-Choreographie mit echten Spieler-Trikots, korrektem Spielfeld (5er → 11m → 16er → Strafraumbogen) und originalen Sounds. Pokal-Übersicht mit Pagination, gelb hervorgehobenem Sieger, Hin- und Rückspielergebnis pro Zeile. Plus zwei neue Cheats `#ELFER` und `#UEFAFINALE` zum direkten Test.

  • Sprite-basiertes Elfmeterschiessen: echte PlayerSprite-Männlein in den Trikots der jeweiligen Mannschaft, Schütze läuft vom Anlaufpunkt zum Ball, Vorhol-Animation, Schuss, Torwart hechtet parallel — pro Schuss sanftes Fade-out/Fade-in
  • Original-Sounds beim Schiessen: kick.wav (Schuss), cheer.wav (Tor), daneben.wav (Verschossen) — gleiche Audio-Library wie die Spielszenen
  • UEFA-Standardregel im Elfmeterschiessen: 5 Schuss pro Team mit early-termination (sobald uneinholbar), bei Gleichstand Sudden-Death pair-by-pair
  • Korrektes Top-Down-Spielfeld: Tor + Torraum (5er) + Elfmeterpunkt + Strafraum (16er) + Strafraumbogen — Bogen NUR ausserhalb des 16ers sichtbar
  • Trefferanzeige links/rechts vom Score: grüner Soccerball pro Tor, roter pro Verschossen — keine ✕-Markierung, alle Slots gleich breit
  • Penalty-Animation respektiert die Spielszenen-Wahl: bei „Höhepunkte: Nein" wird auch das Schiessen nicht animiert, direkt Match-Result
  • Pokal-Übersicht mit Pagination: 14 Paarungen pro Seite, Header `Paarung | Hin | Rück`, Sieger gelb, Verlierer cyan, n.V./i.E.-Suffix am Rück-Score
  • Tie-Detail-Screen `PAARUNG` direkt nach dem eigenen Rückspiel: Hin-Score, Rück-Score, Aggregat, Sieger gelb hervorgehoben
  • UEFA-Sieger-/Verlierer-Screen zeigt Hin UND Rück: Banner alternierend `HIN Bayern 3:1 Liverpool` / `RÜCK Liverpool 0:2 Bayern`
  • Internationaler Gegner-Name: bei UEFA-Spielen `(Italien)` unter dem Namen — Authentic-Edition originaltreu, Tribute zusätzlich Liga (`Italien · Serie A`) auf einigen Screens
  • Cheat `#ELFER` testet das Schiessen direkt: zwingt Hin 0:0 + Rück 0:0 + ET 0:0 → Penalty
  • Cheat `#UEFAFINALE` springt direkt vor das Finale, Manager im Heim-Slot
  • Cross-Fade zwischen Spieltagen — sanftes Aus-/Einblenden statt harter Phase-Wechsel
  • Atari-Spinner nur bei Cheats (vorher immer): bouncender Soccerball mit Squash-and-Stretch — beim Aufprall flachgedrückt, im Flug rund
  • Original-Auslosung 1:1 portiert (KICKER.BAS:10931-10999): Top 6 der Bundesliga + 58 internationale Teams (Skill ≥ 700-900) → reine Zufallspaarung pro Runde
  • Bug-Fix: schwarzer Bildschirm bei UEFA-Spielszenen gegen internationale Gegner (PlayerSprite-Lookup nur national) — `lookupTeamAnywhere` greift nun auch auf den int. Pool
  • Bug-Fix: `hasCupRueckOverview` deckt jetzt DFB UND UEFA ab — vorher fiel UEFA-Rück durch und die Übersicht wurde nie gezeigt
  • Bug-Fix: Penalty-Tore landeten visuell im Tor obwohl als Daneben markiert — Ball-Y stoppt nun je nach Schuss-Ergebnis (Tor/Pfosten/Torwart)
v0.16.0Beta
1. Mai 2026

Spielszenen-Politur, Pokalsieger-Show, Bedien-Komfort

Ein dickes Update für die Spielszenen: knappere Daneben-Schüsse, neue Sounds (Anpfiff, Latte, Daneben, Foul), realistischere Elfmeter-Quote (~2/3 verwandelt) und Ball klebt nicht mehr im Spielerrücken. Dazu ein animiertes Pokalsieger- und Pokalverlierer-Bild mit Stadion-Bauchbinde, ein wiederverwendbares Eingabe-Rad mit Pfeilen und Swipe für Stadion-Ausbau und Transfer-Gebot, und ein Cheat-Menü mit Atari-Spinner für Saison-Sprünge.

  • Spielszenen: Daneben-Schüsse landen jetzt knapp am Pfosten neben dem Tor (statt weit weg), Lattentreffer stoppt am vorderen Tor, neue Sounds anpfiff/latte/daneben/foul aus dem sounds/-Ordner
  • Elfmeter-Quote: ~2/3 verwandelt durch Tuning des Penalty-Mix (25 % der echten Tore als Elfmeter visualisiert + 3 % Fehl-Elfmeter als Extras) — Engine-Ergebnis bleibt unverändert
  • Ballführung: Der Ball liegt jetzt vor den Füßen des dribbelnden Spielers (mit leichter Diagonale), nicht mehr im Rücken oder unter ihm
  • DigitWheel: Stadion-Ausbau und Transfer-Gebot teilen sich eine neue Eingabe — sichtbare ▲/▼-Pfeile (44 × 44 pt), Swipe-up/down auf der Ziffer, Auto-Repeat beim Halten
  • Pokalsieger-Screen: dfbpokal_gewinner.jpeg als Hintergrund, animierte Bauchbinde mit „[Pokal]-SIEGER · Mannschaft“, Wechsel zur Spielpaarung+Ergebnis, champions.wav in halber Geschwindigkeit
  • Pokalverlierer-Screen: separater dfbloser.jpeg-Background mit roter Banderole und loser.mp3, wenn das eigene Team das Finale verliert
  • Sanftes Aus-/Einblenden auf Pokal-Screens — Wechsel zum nächsten Spieltag wirkt nicht mehr hart
  • Cheat-Code-Menü: Atari-ST-Spinner während Saison-Sprüngen (mind. 5 s sichtbar), apply läuft asynchron, springt direkt aufs Hauptmenü zurück; tippen auf eine Code-Zeile überträgt den Code ins Eingabefeld
  • DFBFINALE-Cheat: rekonstruiert das Finale falls schon vorbei, Manager-Team mit Status .ok, Sperren weg, Verträge ≥30 Wochen — keine Lawine an Vertrags-Events nach dem Sprung
  • Cheats sind nicht mehr permanent in „Sonstiges“ sichtbar — 3-Tap auf die Versions-Zeile in „Über“ öffnet das Cheat-Eingabefeld direkt
  • Über-Seite: Schrift +20 %, Triple-Tap auf Version/Build robust per Button-Hit-Area
  • Cheat-Code-Liste: zwei Spalten (Mid-Game-Boosts links, Saison-Sprünge rechts) mit großzügigem Tap-Bereich
  • Anzahl-Manager-Auswahl: zwei Spalten à 3 Zeilen (1–3 links, 4–6 rechts)
  • Anpfiff-Sound erst wenn Pre-Match-Bild ausgeblendet ist (0,7 s Delay nach OK / Halbzeit-Weiter)
  • x/y-Counter aus Ereignissen, Verkaufsangeboten und Pre-Match-Events entfernt
  • Spielerabgang („Spieler verlässt Verein“) zeigt jetzt spielerweg.jpeg als Hintergrund
  • Finale verloren: kein „du bist ausgeschieden“-Screen mehr — das Finale war ja das Ende
v0.15.0Beta
26. April 2026

Themed Pixel-Art-Hintergründe für Pokal & alle Ereignisse

Der Pokal-Voraus-Screen und alle Ereignisse-Meldungen bekommen eigene Pixel-Art-Hintergründe — vom DFB-Pokal über rote/gelbe Karte und Krankheit bis zu jedem einzelnen Geld-, Moral-, Karrieren- und TV-Rechte-Ereignis. Plus ein hartnäckiger Bug, der Karriere-Beendet-Meldungen falschen Spielern zugeordnet hat, ist endlich weg.

  • Pokal-Voraus-Meldung („Nach der Auslosung der N. Runde …“) und Pokal-Tag-Opener nutzen einen neuen Hintergrund mit goldenem Pokal links — Text sitzt sauber rechts daneben
  • Rote Karte, gelbe-Karte-Sperre und Krankheits-Meldungen zeigen jetzt eigene Schiri- und Spieler-Szenen statt des generischen Spielfelds
  • Alle 13 Ereignis-Arten aus EREIGNIS.KDT (Geld+, Geld−, Technik, Energie, Moral, Zusammenspiel, Karriereende, geschenkter Spieler, Krankheit, Trainingslager, TV-Rechte) bekommen jeweils ein eigenes Pixel-Art-Motiv
  • Bugfix Event-Meldungen: Wenn früher „Littbarski beendet seine Karriere“ angezeigt wurde, blieb Littbarski oft trotzdem im Kader — ein anderer Spieler ging. Meldung und Effekt treffen jetzt denselben Spieler (Original KICKER.BAS:845-857)
  • Krankheits-Meldungen mit grösserer, linksbündiger Schrift wie eine Tagebuch-Notiz neben dem sitzenden Spieler
  • Pro Bild kalibrierter Sicherheitsabstand links — keine Überlagerung von Schiri-Arm, Pokal oder Spieler-Motiv durch den Text
v0.14.0Beta
25. April 2026

Eintrittsgelder-Fix, UX-Vereinheitlichung, Layout-Politur

Ein hartnäckiger Finanz-Bug ist endlich weg, und viele Screens bekommen ein einheitliches Layout: gleiche Spaltenhöhen, gleiche Schriftgrößen, gleiche Optionen-Anordnung wie im Original-Spieltaktik-Screen.

  • Heimspiel-Eintrittsgelder: Anzeige (Steh- und Sitzplatzbesucher) und tatsächliche Einnahme stimmen wieder überein — kein zweiter Zufallswurf, der die Kasse von der Tafel abweichen ließ
  • SONSTIGES, STADION, LIGAINFO, SCHWIERIGKEITSSTUFE und SPIELTAKTIK haben jetzt dieselbe Optik: Optionen vertikal mittig zwischen Titel und Button, einheitliche Checkbox- und Schriftgrößen
  • STATISTIKEN-Menü zentriert, Schrift +30 % — endlich gut lesbar
  • Aufstellung, Positionen, Vertragsverlängerung, Trainingslager: gleiche Spaltenhöhe geometriebasiert berechnet, kein Zeilen-Hüpfen mehr zwischen den Screens
  • Spieltag-Ergebnisse und Tabelle +20 % Schrift, Manager-Info -20 % — Lesbarkeit auf das tatsächliche iPad-Display angepasst
  • Werbung, Fußballwelt, Spielebilanz und Szenario-Auswahl im einheitlichen Layout
  • Neue Default-Schwierigkeitsstufe: »mittel« statt »leicht«
  • Triple-Tap-Cheat im ÜBER-Screen funktioniert wieder zuverlässig (eigener Counter mit 800 ms Reset)
  • Doppel-Eintrag »Atari ST 1.82.3« im ÜBER-Screen entfernt
  • Positionen-Editor: vier Positions-Buttons jetzt linksbündig analog zur Liste daneben
v0.13.1Beta
24. April 2026

Spieler entwickeln sich — Form, Moral, Zusammenspiel

Drei Mechaniken, die bisher nur angedeutet waren, laufen jetzt richtig: Deine Spieler werden im Laufe der Saison stärker oder schwächer, ihre Form hängt an ihrer tatsächlichen Leistung, und die Mannschaft hat ein Stimmungsbarometer.

  • Spielerentwicklung: Wer konstant gut spielt, wird mit der Zeit stärker. Wer häufig schwach spielt, verliert Skill-Punkte
  • Die Entwicklung betrifft alle Spieler im Spiel — auch die gegnerischen Mannschaften verändern sich von Saison zu Saison
  • Form ist kein reiner Zufallswert mehr: Sie folgt der Spielleistung, mit einer kleinen Portion Schwankung
  • Team-Moral und Zusammenspiel sind jetzt echte, gespeicherte Werte, die sich durch Ereignisse verändern und die Mannschaftsstärke beeinflussen
  • Mannschafts-Ereignisse (Streit, gute Laune, Zusammenhalt) wirken jetzt dort, wo sie sollten — nicht mehr nur auf die Form einzelner Spieler
v0.13.0Beta
24. April 2026

Finanzen, Pokal, Verletzungen — Original-Regeln

Das größte Update bisher: Finanzen, der DFB-Pokal-Ablauf, In-Game-Verletzungen und das Karten-System sind komplett auf die Regeln des Atari-Originals umgebaut.

  • DFB-Pokal hat wieder einen richtigen Ablauf: Eröffnungs-Screen, getrennte Hin- und Rückspiel-Übersichten, eigenes Rückspiel dazwischen
  • Spieler können sich jetzt während des Matches verletzen — Pausendauer zwischen einer und acht Wochen
  • Gelbe und rote Karten werden wie im Original gezählt; Sperren sind bei Auswärtsspielen länger als bei Heimspielen
  • Ereignisse-Screen erscheint jetzt VOR dem Hauptmenü: Sperren, Krankheiten und Verletzungen siehst du, bevor du die Aufstellung machst
  • Startkapital, Spielergehälter, Stadion-Kosten, Reisekosten und wöchentliche Sonstiges-Posten folgen den Original-Formeln
  • Pokal-Matches zeigen jetzt Torfolge und Karten wie Ligaspiele, inklusive Verlängerung bei Unentschieden
  • Sechs Sprung-Cheats für den DFB-Pokal (#DFB1 bis #DFB6) zum schnellen Testen der Runden
v0.12.1Beta
23. April 2026

Credits & Tribute-Edition-Hinweis

Kleiner, aber wichtiger Feinschliff auf den Info-Screens: Jahreszahlen, der Hinweis auf die Tribute-Edition und die iPad-Version stehen jetzt überall richtig drin.

  • Programminfo und Über-Screen zeigen Copyright, Original-Version vom Januar 1991 und den Tribute-Edition-Hinweis
  • Version und Build-Nummer werden automatisch aus der App gezogen — sie bleiben beim nächsten Update immer aktuell
v0.12.0Beta
23. April 2026

Zwölf Bugs auf einmal gefixt

Sammel-Release nach dem Feedback aus der 0.11er-Serie: Trainingslager, Aufstellung, Höhepunkte, Pokal-Ablauf, Transferliste und die Leistungs-Grafik bekommen Politur.

  • Trainingslager: Reservisten werden mit Häkchen markiert, Spieler im Camp verschwinden aus der Aufstellung und werden als »verreist« angezeigt
  • Aufstellung: Die Werte-Spalten sind wieder sauber zentriert und lesbar
  • Spielerdetail: Die Leistungs-Historie zeigt jetzt tatsächlich die Entwicklung über die letzten Spieltage in der richtigen Skala
  • Höhepunkte: Tore gehen nicht mehr neben das Tor, Elfmeterschützen stehen wieder aufrecht
  • DFB-Pokal: Ankündigung eine Woche vor der Runde, eigene Pokal-Ankündigungsseite am Spieltag, persönliche Auswertung nach jedem Match
  • Transferliste: Mitteilung nur einmal pro Spieltag, außerhalb der Transferphase erscheint die Original-Meldung
  • Transferwerte passen sich jetzt Spieltag für Spieltag an (bis zu ±25 %), Angebote wirken wieder angemessen
  • Angebote-Screen erscheint auch dann, wenn keine Gebote vorliegen — mit klarer Meldung
v0.11.2Beta
22. April 2026

Transfer-Verkauf & DFB-Pokal nach Original-Regeln

Zwei Abläufe exakt auf die Regeln des Originals getrimmt: der Verkauf eigener Spieler und das DFB-Pokal-Format mit Hin- und Rückspiel.

  • Vor jedem Spieltag siehst du für jeden selbst zum Verkauf gestellten Spieler die eingegangenen Gebote und kannst annehmen oder ablehnen
  • DFB-Pokal: Hinspiel mit Verlängerung bei Unentschieden — bei Entscheidung nach Verlängerung entfällt das Rückspiel, bei Remis gibt es ein eigenständiges Rückspiel
  • Nach jeder Pokal-Paarung Gesamtübersicht: Hinspiel, Rückspiel, Gesamtergebnis mit markiertem Sieger
  • Vor dem Rückspiel steht wieder das Hinspiel-Ergebnis unter den Trikots
  • Persönliche Ereignis-Meldung: »Du ziehst ins Viertelfinale ein« / »Du bist ausgeschieden« nach jeder entschiedenen Runde
  • Die Transfermarkt-Meldungen kommen nur noch am richtigen Spieltag, nicht mehr am Pokal-Zwischentag
v0.11.1Beta
21. April 2026

Finanzen zu Spieltag-Beginn, kleinere Fixes

Drei Iterationen nach dem 0.11.0-Feedback: Finanzen laufen wieder dort, wo sie im Original standen, und ein paar Detail-Bugs sind weg.

  • Finanz-Übersicht erscheint zu Beginn des Spieltags pro Manager — nach dem Handover, vor dem Hauptmenü, wie im Original
  • Sie wird nur angezeigt, wenn der Kontostand liga-abhängige Grenzen reißt; Standardsituationen überspringen sie
  • Der Saisonstart-Banner erscheint nach dem Laden eines Spielstands nicht mehr ein zweites Mal
  • Spielstände aus der Vorgänger-Version laden ohne Probleme weiter
v0.11.0Beta
21. April 2026

Hot-Seat-Multiplayer rundum überarbeitet

Der Hot-Seat-Ablauf für mehrere Spieler ist Schritt für Schritt so nachgebaut, wie er im Original funktioniert — dazu gibt es jetzt eine Spielzeit-Anzeige.

  • Saison-Start-Banner vor dem ersten Spieltag jeder Saison, Wortlaut wörtlich aus dem Original
  • »NAME ist dran!«-Anzeige vor dem Hauptmenü jedes Managers (beim Solo-Spiel übersprungen)
  • Zwischen zwei Spielern blendet der Screen kurz auf Schwarz — der nächste sieht die Eingaben des vorherigen nicht
  • In Tabelle und Ergebnis-Screen sind ALLE menschlichen Manager-Teams hellblau markiert, nicht nur das aktuell laufende
  • Der »Spielstand beenden«-Screen zeigt die gesamte bisherige Spielzeit und die Dauer der aktuellen Sitzung
  • Liga-Namen kommen jetzt authentisch aus den Originaldaten: Bundesliga, 2.Bundesliga, Oberliga, Verbandsliga, Landesliga
v0.10.0Beta
20. April 2026

Spielszenarien & Spielszenen-Politur

Zwei große Neuerungen: unterschiedliche Welten mit eigenen Regeln (analog zum Original) und eine Polier-Runde für die Spielvisualisierung samt Hot-Seat-Details.

  • Sechs Pre-Set-Welten zur Auswahl: Deutschland 1990 und 1991 in Nord/Süd-Varianten, die verworfene Ligareform 1989 mit Playoffs, die TC World League mit Drei-Punkte-Regel, und die All-Stars-Europaliga
  • Jede Welt hat ihre eigenen Regeln: Spielmodus, Punkte pro Sieg, Tor-Boni, Playoff oder Relegation, eigene Liga- und Pokalnamen
  • Bestätigungs-Bildschirm nach der Welt-Auswahl mit allen Parametern im Klartext
  • »Welt ändern«-Editor: Vor Spielstart lassen sich alle Regeln frei anpassen
  • Pokal-Namen überall im Spiel aus der Welt-Definition, nicht mehr fest »DFB-Pokal« und »UEFA-Pokal«
  • Spielszene: Anzeige oben stabilisiert, Elfmeter-Ball liegt richtig auf dem Punkt, Ball liegt immer beim Schützen
  • Elfmeter mit Foul-Animation und Pfiff — keine automatische Karte mehr
  • Begrenzung von Kartenszenen pro Halbzeit — kein übertriebener Karten-Regen mehr
  • Hot-Seat: Übergabe-Screen zwischen Managern während des Spieltags; Gebote auf Mitspieler-Spieler landen in deren Verhandlungen statt per Zufall entschieden zu werden
v0.9.0Beta
19. April 2026

Erstmals komplett durchspielbar

Das Ende der Spielwiese: KICKER ist auf dem iPad erstmals von vorne bis hinten durchspielbar — alle Management-Screens, alle Statistiken, komplette Saisonabläufe.

  • Alle Hauptmenü-Bereiche stehen: Aufstellung, Positionen, Taktik, Trainingslager, Verträge, Werbung, Eintrittspreise, Stadion-Umbau, Fußball-Toto, Spielerverkauf, Ligainfo und Spielebilanz
  • Komplette Statistiken: Plazierungen, Finanzrückblick und -bilanz, Torschützen, Bestenliste, Sünderliste, Auf-/Absteiger, Mannschaft des Jahres, Zuschauer
  • Manager-Info mit Manager-Punkten als 3D-Balken, Spieler-Info mit Leistungsdiagramm
  • Fünf Schwierigkeitsstufen beim Spielstart
  • Über-Screen mit Cheat-Freischaltung (dreimal auf die Version tippen)
  • Abstiegsdrohung ab Spieltag 29, Meldungen zum Sponsor-Ablauf, realistische Ereignis-Kaskaden
  • Kapital-Verlauf, Saison-Einnahmen und -Ausgaben sowie Pokalstatus werden gespeichert
v0.3.0Spielwiese
16. April 2026

Bugfixes & Original-Details

Viele Einzelsysteme an das Original angepasst und Detail-Bugs aus 0.2 ausgeräumt.

  • Gespeicherte Spiele stellen Aufstellungen, Taktik, Pokal und Spielplan vollständig wieder her
  • Verletzungen und Krankheiten kommen wieder so häufig wie im Original
  • Werbeverträge komplett überarbeitet — inklusive Sofortzahlung und Sponsor-Namen auf den Trikots
  • Trikots als Vektorzeichnung im 16-Bit-Atari-Stil
  • Spielfeld-Hintergrund beim Ankündigungs-Screen vor Spielszenen
  • Tabelle mit Plus/Minus-Punkten, eigener Verein in Hellblau hervorgehoben
  • Neuer Über-Screen mit Version, Build und Credits
  • Neues Intro-Video
v0.2.0Spielwiese
16. April 2026

Finanzen, Karten, Verletzungen, Save/Load

Große Mechaniken aus dem Original nachgezogen: detaillierte Finanzen, Karten-Logik, Verletzungen mit Dauer in Spieltagen und ein robusteres Save/Load.

  • Finanzübersicht mit Aufschlüsselung aller Einnahmen und Ausgaben
  • Gelbe und rote Karten mit realistischer Verteilung
  • Verletzungen und Krankheiten dauern mehrere Spieltage, nicht mehr einen einzelnen
  • Save/Load mit Rückwärtskompatibilität — alte Spielstände laden weiterhin
  • Saison mit Hin- und Rückrunde
  • Aufgeräumter Spieltag-Ablauf
  • UI-Verbesserungen in Kader, Tabelle, Finanzen und Einstellungen
v0.1.0Spielwiese
12. April 2026

Erste TestFlight-Version

Der allererste Build für TestFlight: eine authentische Nachbildung des Atari-ST-Fußballmanagers KICKER als iPad-App.

  • Komplette Spielengine: Saison, Liga, Pokal, Finanzen, Zufallsereignisse
  • Original-Daten für Teams, Spieler, Länderspiele und Trainingslager
  • Retro-Oberfläche mit dem Original-Atari-Systemfont
  • Spielszenen in Seitenansicht
  • Original-Sounds: »Kicker!«-Stimme, Jubel, »Another One Bites the Dust«
  • Intro-Ablauf wie früher: PolarSoftware-Video, Mannschaftsfoto mit Credits, »Gleich gehts los!«, Willkommensbildschirm
  • Kader-Verwaltung, Transfermarkt, Finanz-Management
  • Online-Lobby für Multiplayer über iCloud
  • Spielstände speichern und laden

Und jetzt?

Die nächsten Schritte: strukturiertes Feedback einsammeln, Bugs priorisieren, Polieren. Wenn du mitmachen willst — der TestFlight wartet auf dich.

Etwas gefunden, das nicht stimmt? Oder eine Idee? Direkt melden — ohne Login, ohne Account.

FeedbackMitmachenNEU: Online-Alpha