# Airline Tycoon Browser-MMO — Projektplan **Projekt:** game1.shadow-land.de **Status:** Planungsphase **Stand:** 24. April 2026 --- ## 1. Spielkonzept Ein vollwertiges Airline-Tycoon-Browsergame als MMO: - **Multiplayer:** 16–18 Spieler pro Session - **Echtzeit:** 1 Spieltag = 16 Stunden (Beschleunigung, nicht in Echtzeit) - **Plattform:** Browser-basiert (HTML5/JS Frontend, PHP/DB Backend) - **Grafik:** Comic-Stil (à la Airline Tycoon Original) - **Start:** Jeder Spieler beginnt mit gleichem Startkapital + 2 Grundflugzeugen **Freies Spielziel:** Jeder Spieler verfolgt eigene Strategien - Reichste Airline - Meiste Flugzeuge - Meiste Passagiere - Größtes Streckennetz - Bestes Sabotage-Imperium --- ## 2. Spielwelt — Reale Flughäfen ### Datenquelle - OurAirports Open Data (85.000+ Flughäfen, 1.162 große internationale) - IATA-Codes, Namen, Städte, Länder, Koordinaten ### Spielwelt-Auswahl (Phase 1) **60 Flughäfen weltweit** — ausgewogen auf alle Kontinente: | Region | Flughäfen | |--------|-----------| | Europa | FRA, LHR, CDG, AMS, MUC, ZRH, FCO, MAD, BAR, LBU | | Nordamerika | JFK, LAX, ORD, DFW, ATL, SFO, MIA, SEA, YYZ, YVR | | Asien | DXB, HND, PEK, PVG, NRT, SIN, HKG, ICN, DEL, BKK | | Naher/Mittlerer Osten | DOH, AUH, JED, RUH, IST, AMM, BEY | | Südamerika | GRU, GIG, EZE, BOG, LIM, SCL, CCS, BHI | | Afrika | JNB, CAI, CMN, LOS, ADD, NBO, SEZ | | Ozeanien | SYD, MEL, AKL, WLG | ### Flughafen-Attribute (pro Flughafen, pro Runde) - **Passagier-Nachfrage:** variiert nach Wirtschaftslage - **Treibstoffpreis:** schwankt täglich - **Flughafengebühren:** fix pro Start/Landung - **Slots:** begrenzte Start-/Landezeitfenster - **Regionaler Bonus:** manche Routen haben höhere Nachfrage --- ## 3. Flugzeuge ### Flugzeugtypen (realistische Vorbilder) | Name | Hersteller | Range (km) | Kapazität (Pax) | Kaufpreis | Crew-Kosten/Tick | |------|-----------|------------|-----------------|-----------|-----------------| | **Prop 1** | Dash 8-100 | 1.500 | 37 | 500.000 | 200 | | **Prop 2** | ATR 72-500 | 1.650 | 70 | 1.500.000 | 300 | | **Narrowbody 1** | A320-200 | 5.700 | 150 | 8.000.000 | 600 | | **Narrowbody 2** | B737-800 | 5.700 | 162 | 9.500.000 | 650 | | **Widebody 1** | B777-200 | 12.000 | 300 | 35.000.000 | 1.200 | | **Widebody 2** | A350-900 | 15.000 | 325 | 42.000.000 | 1.400 | | **Langstrecke** | A380-800 | 15.200 | 525 | 85.000.000 | 2.000 | ### Flugzeug-Zustand - **Zustandswert:** 100% → 0% (bei Absturz/Sabotage) - **Wartung:** Alle 50 Ticks fällig, senkt Zustand um 5% - **Reparatur:** Kosten = (Kaufpreis × fehlende %) - **Absturz:** Bei Sabotage oder Zustand 0% ### Flugzeug-Design (Customization) - **Lackierung:** 12 Farben + Airline-Logo-Text - **Sitzklassen:** First/Business/Economy Mix konfigurierbar - **Ausstattung:** WLAN, Unterhaltung, Mahlzeiten (beeinflusst Zufriedenheit) --- ## 4. Routen & Flugplanung ### Routen-System - **Route mieten:** Kosten pro Tag (10.000–500.000/Tag je nach Beliebtheit) - **Route kaufen:** Einmalkauf (Kaufpreis = 100× Tagesmiete) - **Flugroute:** Direktflug von A nach B - **Distance:** Berechnet aus Koordinaten (Haversine-Formel) ### Tägliche Berechnungen pro Route ``` Einnahmen/Tick = gebuchte_Pax × Ticketpreis × Nachfrage_Faktor Kosten/Tick = Treibstoff × (Distanz/Verbrauch) + Crew_Kosten + Gebühren ``` ### Ticketpreis-Setzung - **Min/Max:** abhängig von Distanz (0,05–2,00 €/km) - **Nachfrage-Kurve:** zu hohe Preise → weniger Passagiere - **Komfort-Faktor:** Ausstattung beeinflusst Nachfrage ### Flugplan (pro Flugzeug) - Startflughafen, Zielflughafen, Abflugzeit (Tick) - Automatische Rundflüge bis Flughafen voll ist oder Flugzeug umgeleitet wird --- ## 5. Finanzen ### Kontostand - **Startkapital:** 10.000.000 Credits - **Kredite:** max. 50.000.000, Zins 2% pro Spieltag - **Bankrott:** Kontostand < -10.000.000 → Game Over, Session wird verlassen ### Einnahmen - Passagier-Tickets (Hauptquelle) - Fracht (wenn Cargo-Flugzeug auf Route) - Werbeverträge (tägliche Prämie für frequentierte Routes) ### Ausgaben - Crew-Gehalter (täglich) - Treibstoff (täglich, preisvariabel) - Flughafengebühren (Start/Landung) - Routen-Mieten (täglich) - Wartung (periodisch) - Werbung (optional) - Kreditzinsen (täglich) - Sabotage-Kosten ### Finanzübersicht (pro Spieler) - Tagesbilanz - Historie (letzte 30 Spieltage) - Rankings: Kontostand, Umsatz, Gewinn --- ## 6. Sabotage-System ### Verfügbare Sabotage-Aktionen | Aktion | Kosten | Wirkung | Gegenmaßnahme | |--------|--------|---------|---------------| | ** Essen versalzen** | 50.000 | Crew-Zufriedenheit -30% auf einer Route für 5 Ticks → Einnahmen -40% | Ersatz-Crew ordern (20.000) | | ** Treibstoff manipulieren** | 80.000 | Flugzeug verliert 20% Zustand | Wartung früher einplanen | | ** Slot-Störung** | 30.000 | Ziel-Flughafen-Slot für 2 Ticks blockiert | Slot-Warteschlange abwarten | | ** Werbekampagne sabotieren** | 40.000 | Konkurrent verliert Passagiere auf einer Route für 3 Ticks | Eigene Werbung | | ** Mechaniker bestechen** | 60.000 | Wartung eines Flugzeugs verzögert sich um 10 Ticks | Interner Mechaniker (extra teuer) | | ** Passagier-Skandal** | 100.000 | Negativ-Presseecho auf gesamte Airline für 7 Ticks → alle Routen -25% | PR-Kampagne schalten (50.000) | | ** Slots aufkaufen** | 150.000 | Die eigenen Slots am Zielflughafen verdoppeln | Konkurrenz kann Gegen-Slots kaufen | | ** Sicherheitsbeamter abwerben** | 45.000 | Sabotage-Abwehr eines Konkurrenten für 10 Ticks deaktiviert | Gegenseitige Sabotage | ### Sabotage-Regeln - Max. 3 aktive Sabotage-Aktionen pro Spieler gleichzeitig - Aktionen werden als "Gerüchte" in der Presse angezeigt - Sabotage-Erfolgschance: 70% (kann durch Sicherheitspersonal erhöht werden) - Sicherheitsstufe der Airline: 0–5 Sterne (kostenloser Basisschutz) --- ## 7. KI-Rivalen (NPC-Spieler) ### NPC-Typen - **Passiv:** Kauft selten Flugzeuge, wenig aktiv - **Normal:** Ausgewogene Strategie, konkurriert moderat - **Aggressiv:** Sabotiert häufig, drängt auf Expansionskurs - **Bedenklicher Investor:** plant langfristig, wartet auf beste Deals ### NPC-Verhalten pro Tick 1. Prüfe Finanzen 2. Prüfe Routen-Einnahmen 3. Entscheide: Neues Flugzeug kaufen / Route mieten / Sabotage / Wartung 4. Aktualisiere Ticketpreise basierend auf Nachfrage 5. Zufalls-Events (Ereignisse im Spiel) ### NPC-Start-Konfiguration - Gleiches Startkapital (10.000.000 Credits) - Gleiche 2 Grundflugzeuge - Zufälliger NPC-Typ + zufälliger Airline-Name --- ## 8. Spieler-Konto & Authentifizierung ### Registrierung - Benutzername (einzigartig, 3–20 Zeichen) - E-Mail - Passwort (hashed) - Airline-Name (einzigartig, 3–30 Zeichen) ### Login - Session-basiert (PHP Sessions + Cookie) - "Angemeldet bleiben" für 30 Tage ### Spieler-Profil - Airline-Name und Logo (Text-basiert, Comic-Schriftart) - Airline-Farbe (1 aus 12 Farben) - Statistiken: Spieltage, Flüge, Passagiere, Sabotage-Erfolge - Rangliste-Position --- ## 9. Matchmaking & Session-System ### Session-Aufbau - **Min. Spieler:** 16 (1 Mensch reicht, Rest KI) - **Max. Spieler:** 18 - **Matchmaking:** Wer sich einloggt ohne offene Session → neue Session erstellen ### Session-Verwaltung ``` Session[ID] - status: 'open' | 'running' | 'closing' | 'finished' - players: [SpielerID, ...] (max 18) - npcs: [NPC-ID, ...] (bis 16 humans + 2 minimum NPCs) - day: aktueller Spieltag - opened_at: timestamp - closes_at: timestamp (opened_at + 90 days) — danach keine neuen Spieler - ends_at: timestamp (opened_at + ~365 Tage) — Saisonende ``` ### Spielerbeitritt - Session hat < 16 Menschen → KI füllt auf 16 auf - 17. Mensch kommt → Session bleibt bei 16 Menschen (KI wird entfernt wenn ≥16 Menschen) - 18. Mensch kommt → Neue Session wird erstellt - Bei Verbindung: automatisch nächste offene Session oder neue ### Session-Lebenszyklus - **Öffnungsphase:** Session ist offen für Neueinsteiger - **Max. Laufzeit:** 3 Kalendermonate (90 Tage) — dann automatische Neue Session - **Schlussphase:** Nach 3 Monaten: keine neuen Spieler mehr, Rest spielt weiter bis Ende - **Saisonende:** Nach ~6 Spielmonaten (realistisch 1 Jahr) wird Session abgeschlossen, Leaderboard-Ehren vergeben - **Grund:** Gleiche Startbedingungen für alle, kein ewiges Aufholen müssen ### Session-Leave - Spieler verlässt Session → Lücke wird NICHT aufgefüllt (bis Session beendet) - Bei Disconnect: Spieler hat 7 Spieltage Zeit wieder beizutreten, sonst rausgeworfen --- ## 10. Spiel-Tick & Zeit-System ### Tick-System - **1 Spieltag = 16 Stunden = 1 Echtzeit-Tag** - **1 Tick = 1 Stunde (16 Ticks pro Spieltag)** - Cron-Job alle 2,5 Echtzeit-Stunden (später: kontinuierlich via PHP CLI daemon) ### Pro Tick berechnet: 1. Alle Flugzeuge bewegen sich (Distanz → Tick-Dauer) 2. Einnahmen/Ausgaben kalkulieren 3. Sabotage-Effekte prüfen 4. NPC-Entscheidungen ausführen 5. Nachrichten/Events generieren 6. Leaderboards aktualisieren ### Spieltag-Ende: 1. Tagesbilanz zusammenfassen 2. Zinsberechnung für Kredite 3. Wartungsintervalle prüfen 4. Sabotage-Timer aktualisieren 5. Presse/News-Report generieren 6. Leaderboard-Updates --- ## 11. Leaderboards ### Rankings (pro Session) | Rangliste | Sortierung | |-----------|-----------| | 🏆 Kontostand | Guthaben (Assets - Schulden) | | ✈️ Flugzeug-Flotte | Anzahl Flugzeuge (nach Kaufpreis) | | 👥 Passagiere | Gesamte transportierte Pax | | 💰 Umsatz | Summe aller Einnahmen | | 📉 Gewinn | Umsatz - Ausgaben (letzte 30 Tage) | | 🌍 Routen-Netz | Anzahl aktive Routen | | ⭐ Sabotage-Erfolge | Erfolgreiche Aktionen | ### Globale Rankings (alle Sessions kumuliert) - All-Time richest airline - Most flights completed - Best Saboteur Award --- ## 12. Benutzeroberfläche (UI) ### Seiten/Views 1. **Dashboard** — Übersicht: Kontostand, Flotte, nächste Flüge, aktive Routen, Leaderboard-Vorschau 2. **Flughäfen** — Weltkarte mit allen Flughäfen, eigene Routen markiert, Nachfrage anzeigen 3. **Flugzeuge** — Eigene Flotte, Zustand, nächste Wartung, Flugzeug kaufen 4. **Routen** — Eigene Routen, Ticketpreise, Passagier-Zahlen, Routen mieten/kündigen 5. **Sabotage** — Aktive Aktionen, Sabotage-Report, Sicherheitsstufe 6. **Finanzen** — Bilanz, Kontobewegungen, Kredite, Tagesbericht 7. **Markt** — Flugzeug-Markt (Gebrauchtflugzeuge), Treibstoff-Preise 8. **Presse** — Nachrichten, Gerüchte, Industrie-News 9. **Ranglisten** — Alle Leaderboards 10. **Profil** — Airline-Name, Logo, Statistiken, Einstellungen ### Design / Grafik - **Comic-Stil:** Cartoon-Flugzeuge (SVG/CSS gezeichnet), bunte Farben - **Flugzeug-Grafiken:** Einfache SVG-Icons pro Flugzeugtyp - **Weltkarte:** Interaktive SVG-Weltkarte mit Flughafen-Markern - **Schriftart:** Humorvolle Comic-Schrift (z.B. Bangers, Russo One via Google Fonts) - **Farben:** Knallige Airline-Farben, Pastell-Töne, dunkle Panels --- ## 13. Technische Architektur ### Stack - **Backend:** PHP 8.4 + SQLite (für Portabilität) oder MariaDB (bestehend) - **Frontend:** Vanilla JS + CSS Grid/Flexbox (kein Framework nötig) - **Server:** Bestehender Server (Caddy, PHP-FPM) - **Session:** Browser-Cookies + Server-seitige DB-Sessions ### Datenbank-Schema (Kerntabellen) ``` users — Account-Daten airlines — Airline-Profile pro User sessions — Spiel-Sessions session_players — Spieler in Sessions (Link User <-> Session) airports — Flughafen-Referenzdaten routes — Gemietete/gekaufte Routen pro Airline aircraft — Flugzeuge pro Airline flights — Aktive/ geplante Flüge sabotage_actions — Aktive Sabotage-Aktionen news_events — Presseberichte / Events game_state — Aktueller Tick-Stand pro Session ``` ### Spiel-Berechnung (Batch) - PHP CLI Skript, läuft alle 2,5 Std per Cron - Oder: `while(true)` Loop mit 5-Min-Pausen - Berechnet alle aktiven Sessions parallel ### Sicherheit - Passwort-Hashing (bcrypt) - CSRF-Token für alle POSTs - Input-Validierung - SQL-Injection-Schutz (Prepared Statements) - Session-Timeouts --- ## 14. Spiel-Balance ### Startbedingungen - Startkapital: 10.000.000 Credits - Startflugzeuge: 2× Prop 1 (Dash 8-100) - Freie Route: 1× regionale Route (z.B. Frankfurt → München) ### Wirtschaftsparameter - Treibstoff: 0,80–2,50 €/Liter (variiert täglich) - Passage-Nachfrage: 100 Pax/Tag pro Route (Basis, modifiziert durch Economy-Faktor) - Gebühren: 5.000–50.000 € pro Start/Landung je nach Flughafen - Crew-Kosten: 200–2.000 €/Tick je nach Flugzeugtyp - ROI: Typischer Payback ~30–60 Spieltage pro Route ### Zeitrahmen (geschätzt) - Frühe Phase (Tage 1–10): Flugzeug kennenlernen, erste Routen - Expansionsphase (Tage 10–50): 2–5 Flugzeuge, 3–10 Routen - Wettbewerbsphase (Tage 50–200): Große Flotten, Sabotage, KI wird aggressiver --- ## 15. Implementierungs-Phasen ### Phase 1: Grundgerüst ★ - Datenbank-Schema erstellen - User-Registrierung / Login - Flughafen-Daten importieren (60 Flughäfen) - Grundlegende UI (Dashboard, Flughafen-Karte) - **Ergebnis:** Anmeldung möglich, Weltkarte mit Flughäfen sichtbar ### Phase 2: Flugzeuge & Finanzen ★★ - Flugzeug-Modell (Kauf, Zustand, Wartung) - Finanzen-Modell (Einnahmen, Ausgaben, Kredite) - Flugzeug-Übersicht - **Ergebnis:** Echte Flugzeuge kaufen und fliegen sehen ### Phase 3: Routen & Flugpläne ★★☆ - Routen-System (mieten/kaufen) - Flugplanung (pro Flugzeug) - Tägliche Berechnung (Tick) - **Ergebnis:** Eigene Routen betreiben, Einnahmen sehen ### Phase 4: NPCs & Matchmaking ★★☆ - NPC-AI - Matchmaking-Logik - Session-System - **Ergebnis:** 16 Spieler (KI) in einer Session ### Phase 5: Sabotage ★★★ - Sabotage-Aktionen - Sicherheitsstufen - Presse/Events - **Ergebnis:** Sabotage möglich + News-System ### Phase 6: Leaderboards & Polish ★★☆ - Alle Leaderboards - Presse-Seite - Spielende-Bedingungen - Comic-Grafiken (Flugzeuge, Flughäfen) - **Ergebnis:** Vollständiges Spiel --- ## 16. Nächste Schritte (sofort) 1. ✅ Projekt-Repo auf Gitea anlegen 2. Datenbank-Schema designen 3. User-System programmieren 4. Flughafen-Daten importieren 5. Comic-Sprite-Grafiken erstellen (oder素材 finden) --- *Erstellt: 24. April 2026* *Geschätzer Aufwand: ~200–300 Stunden Entwicklungszeit*