Files
game1.shadow-land.de/PLAN.md

422 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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:** 1618 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.000500.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,052,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: 05 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, 320 Zeichen)
- E-Mail
- Passwort (hashed)
- Airline-Name (einzigartig, 330 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,802,50 €/Liter (variiert täglich)
- Passage-Nachfrage: 100 Pax/Tag pro Route (Basis, modifiziert durch Economy-Faktor)
- Gebühren: 5.00050.000 € pro Start/Landung je nach Flughafen
- Crew-Kosten: 2002.000 €/Tick je nach Flugzeugtyp
- ROI: Typischer Payback ~3060 Spieltage pro Route
### Zeitrahmen (geschätzt)
- Frühe Phase (Tage 110): Flugzeug kennenlernen, erste Routen
- Expansionsphase (Tage 1050): 25 Flugzeuge, 310 Routen
- Wettbewerbsphase (Tage 50200): 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: ~200300 Stunden Entwicklungszeit*