docs: projektplan hinzugefügt

This commit is contained in:
2026-04-24 15:31:28 +02:00
parent 5cc7849328
commit 2960bd4c2f

421
PLAN.md Normal file
View File

@@ -0,0 +1,421 @@
# 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*