Files
Cozypaw-Hospital/docs/development-plan.md
2026-04-17 16:18:07 +02:00

14 KiB
Raw Blame History

Entwicklungsplan: Tier-Krankenhaus (Arbeitstitel)

Ein Sandbox-Spiel für Kinder im Stil von Yasa Pets Hospital — aber werbefrei, ohne Datensammlung, ohne grüne Giftflaschen und liebevoll selbst gemacht.


1. Produkt-Vision

Kernprinzip: Digitale Puppenstube. Keine Ziele, kein Scheitern, kein Zeitdruck. Die Kinder erzählen sich mit den Figuren Geschichten.

Was bleibt vom Original:

  • 3-Etagen-Krankenhaus im Querschnitt (Sidescroller-Puppenhaus)
  • Häschen- und Kätzchen-Figuren
  • Drag & Drop von Figuren zwischen Räumen
  • ~4060 interaktive Objekte
  • Gartenparty als Bonusbereich

Was wir besser machen:

  • Keine Werbung (Kinder spielen ungestört)
  • Keine Datensammlung (keine Analytics, kein Tracking)
  • Keine "grünen Giftflaschen" — ersetzt durch harmlose Mechaniken
  • Offline-first (keine Internetpflicht)
  • Gartenbereich von Anfang an offen (keine Sammellogik mit Sternen)
  • Größere Touch-Targets (mind. 48dp/64px, Kritikpunkt am Original)
  • Figuren basierend auf Fotos eurer eigenen Haustiere / Wünschen der Kinder (das ist der eigentliche Kicker)

2. Tech-Stack-Empfehlung: Godot 4.x

Warum Godot

Kriterium Godot 4 Unity libGDX Flutter/Flame
Kosten Kostenlos, MIT-Lizenz Kostenlos bis Umsatzschwelle Kostenlos Kostenlos
2D-Eignung Exzellent Gut Gut Mittel
Android-Export Out-of-the-box Ja Ja (nativ) Ja
iOS-Export Ja (Mac nötig) Ja (Mac nötig) Ja (Mac nötig) Ja (Mac nötig)
Engine-Größe ~100 MB ~10 GB Sehr klein Mittel
Lernkurve (Java-Dev) 3-5 Tage 1-2 Wochen Vertraut 1 Woche (Dart)
Perfekt für Sandbox Ja (Node-Tree!) Ja Eher Code-zentrisch Mittel

Godot-Killer-Feature für dieses Spiel: Die Scene-Node-Hierarchie bildet dein Krankenhaus 1:1 ab:

Hospital (Node2D)
├── Floor1 (Node2D)
│   ├── Reception (Node2D)
│   │   ├── Desk (StaticBody2D)
│   │   ├── QueueDisplay (Sprite2D)
│   │   └── InteractiveObjects/*
│   ├── GiftShop
│   ├── Restaurant
│   └── EmergencyRoom
├── Floor2 (XRay, Pharmacy, Lab, PatientRooms)
├── Floor3 (Delivery, Nursery, Ultrasound)
├── Home (GardenParty)
└── Characters (Autoload)
    ├── Bunny1
    ├── Bunny2
    └── Kitten1

Voraussetzungen

  • Entwicklungs-Rechner: Dein Arbeitsplatz reicht
  • Android-Export: Android Studio SDK + JDK (einmalig einrichten)
  • iOS-Export: Mac + Xcode + Apple Developer Account (€99/Jahr) — oder: Android zuerst, iOS später nachziehen
  • Version Control: Git (Godot-Projekte sind git-freundlich, .import/ und .godot/ in .gitignore)

Empfohlene VS Code Setup (alternativ zum Godot-Editor)

  • Godot-Editor für Scenes und visuelle Arbeit
  • VS Code mit godot-tools Extension für GDScript
  • Git Workflow wie gewohnt

3. Architektur

3.1 Scene-Struktur

Drei zentrale Scene-Typen:

1. Room.tscn (Basisscene)

  • Hintergrundbild
  • Spawnpoints für Figuren
  • Array von InteractiveObject-Nodes
  • Camera-Grenzen

2. InteractiveObject.tscn

  • Sprite mit mehreren Zuständen (z.B. Röntgengerät: idle/scanning/result)
  • DraggableArea2D für Drag-Erkennung
  • Action-Signal (z.B. wenn Häschen draufgelegt wird)
  • Sound-Trigger

3. Character.tscn

  • AnimatedSprite2D (idle, walking, happy, sick, sleeping)
  • DraggableComponent
  • State-Enum: healthy / sick / pregnant / baby / tired

3.2 Datenmodell

# character_data.gd (Resource)
class_name CharacterData extends Resource

@export var id: String
@export var display_name: String
@export var species: String  # "bunny", "kitten"
@export var age: String      # "baby", "adult", "pregnant"
@export var current_room: String
@export var position: Vector2
@export var state: String    # "idle", "sick", "sleeping"

3.3 Save-System

Godot hat FileAccess und Resource-Serialisierung built-in:

# save_manager.gd
func save_game():
    var state = {
        "characters": get_tree().get_nodes_in_group("characters").map(
            func(c): return c.to_dict()
        ),
        "objects": get_tree().get_nodes_in_group("savable_objects").map(
            func(o): return o.to_dict()
        ),
        "version": 1
    }
    var file = FileAccess.open("user://savegame.json", FileAccess.WRITE)
    file.store_string(JSON.stringify(state))

Auto-Save nach jeder Interaktion (die Kinder werden die App einfach schließen).

3.4 Core Systems

System Komplexität Notizen
Drag & Drop Mittel _unhandled_input + Area2D.input_event
Raum-Navigation Niedrig Scene-Switch oder Camera-Pan
Zustand von Objekten Niedrig Enum + Sprite-Wechsel
Sound Niedrig AudioStreamPlayer2D pro Raum
Save/Load Niedrig JSON in user://
Tutorial Mittel Einmaliger Hinweis beim ersten Start
Settings-Menü Niedrig Lautstärke, Sprache, Reset

4. Content-Umfang

4.1 Räume (12 Stück)

Etage Raum Objekte Besonderheit
EG Empfang Tresen, Wartebereich, Nummernanzeige Einstiegspunkt
EG Geschenke-Shop Blumen, Kuscheltiere, Karten Einfach
EG Restaurant 3 Menüs, Tische Essen als Interaktion
EG Notaufnahme Krankenwagen, OP-Tisch Dramaturgie
1.OG Röntgen Röntgengerät, Gips-Station Coolster Raum für Kinder
1.OG Apotheke Medikamente (alle gut!) Ohne "Gift"-Mechanik
1.OG Labor Mikroskop, Reagenzgläser Lerneffekt
1.OG Patientenzimmer 2-3 Betten, TV Ruhe
2.OG Ultraschall Gerät, Liege Süß
2.OG Kreißsaal OP-Equipment Sensibel, aber wichtig
2.OG Säuglingsstation Wiegen, Babys Kern-Magie
Extern Zuhause/Garten Wiege, Tisch, Geschenke Gemütlich

4.2 Figuren (8 Stück für MVP)

  • 2× Erwachsene Häschen (männlich/weiblich)
  • 2× Erwachsene Kätzchen
  • 2× Baby-Häschen / Baby-Kätzchen
  • 2× Ärzte/Pfleger (andere Tierart? → Eule, Fuchs?)

4.3 Interaktive Objekte (~50)

Typen:

  • Geräte (Röntgen, Ultraschall, Ambulanz) → mehrere Zustände
  • Verbrauchsgegenstände (Pflaster, Medikamente, Essen) → spawn-able
  • Möbel (Betten, Tische, Stühle) → statisch mit Sitz-Slot für Figuren
  • Dekoration (Pflanzen, Bilder) → nur visuell

4.4 Sound

  • Hintergrundmusik pro Etage (ruhige, fröhliche Loops)
  • Soundeffekte: Krankenwagen-Sirene, Röntgen-Piep, Babygeräusche, Kassenklingel
  • Tier-Geräusche (wichtig!): Häschen-Schnuffeln, Kätzchen-Miau

Quelle: freesound.org, opengameart.org — Creative Commons.


5. Asset-Strategie (der kritische Teil)

Hier scheitern die meisten Hobby-Gamedev-Projekte. Drei realistische Wege:

Option A: Eigene Kinder als Illustratoren (mein Favorit 💡)

  • Deine Kinder malen die Häschen, Objekte und Räume auf Papier
  • Du digitalisierst (Scan + Photoshop/GIMP/Krita → PNG mit Transparenz)
  • Vorteil: Emotionale Bindung, einzigartiger Look, Kinder sind stolz
  • Nachteil: Konsistenz-Herausforderung, mehr Nacharbeit
  • Zeitaufwand: 20-30 Stunden Digitalisierung

Option B: Asset-Packs kaufen

  • itch.io — oft €1050 pro Pack
  • Kenney.nl — kostenlos, hochwertig, aber limitiertes Tier-Angebot
  • Kombination aus 23 Packs + eigene Anpassungen
  • Kosten: €50200
  • Zeitaufwand: 510 Stunden

Option C: Freelancer

  • Fiverr/Upwork: Cartoon-Illustrator mit 2D-Spiele-Erfahrung
  • 2D-Charakter-Set (8 Figuren, 4 Animationen): €300800
  • Hintergründe (12 Räume): €5001500
  • Gesamt: €8002300
  • Zeitaufwand: 23 Wochen Koordination

Option D: KI-gestützt mit Nachbearbeitung

  • Midjourney / DALL-E / Stable Diffusion für Konzepte
  • Manuelle Nacharbeit in Krita/GIMP für Konsistenz
  • Achtung: Urheberrecht und Konsistenz-Probleme über Figuren hinweg
  • Kosten: €20 Midjourney-Monat
  • Zeitaufwand: 3050 Stunden

Meine Empfehlung: Option A + C hybrid. Kinder malen die Helden-Figuren (ihre Lieblinge), Freelancer macht die Hintergründe und generische Objekte. Das wird emotional und professionell.


6. Sprint-Plan (16 Wochen, ca. 8h/Woche)

Realistisch für einen Vollzeit-Entwickler mit Familie und Side-Projekten. Kürzer geht, wenn du die Abende länger nutzt.

Sprint 0: Setup (Woche 1)

  • Godot 4 installieren, Android-Export einrichten
  • Git-Repo anlegen
  • GDScript-Grundlagen durchgehen (Godot-Docs, 3-5h)
  • Apple Developer Account falls iOS geplant
  • Projektname + Logo-Idee

Sprint 1-2: Proof of Concept (Woche 2-3)

  • Ein Raum (z.B. Empfang) mit Hintergrund
  • Eine Figur (Platzhalter-Häschen) per Drag bewegen
  • Ein interaktives Objekt (z.B. Blume pflücken)
  • Auf echtem Tablet testen
  • Gate: Funktioniert der Kern-Loop? Finden die Kinder es gut?

Sprint 3-4: Core Systems (Woche 4-5)

  • Raum-Navigationssystem (Etagen-Wechsel per Aufzug)
  • Save/Load-System
  • Settings-Menü (Lautstärke, Reset)
  • Character-State-System (gesund, krank, schläft)

Sprint 5-7: Erdgeschoss (Woche 6-8)

  • Empfang komplett
  • Geschenke-Shop
  • Restaurant
  • Notaufnahme mit Krankenwagen-Animation

Sprint 8-10: 1. Obergeschoss (Woche 9-11)

  • Röntgen mit Slide-Animation
  • Apotheke (alle Medikamente positiv!)
  • Labor
  • Patientenzimmer

Sprint 11-13: 2. Obergeschoss (Woche 12-14)

  • Ultraschall (sanfte Herzschlag-Animation)
  • Kreißsaal (kindgerecht: Mama kommt rein, Baby ist da)
  • Säuglingsstation mit Wiegen

Sprint 14: Zuhause & Garten (Woche 15)

  • Garten-Szene
  • Party-Mechanik (Geschenke auspacken, Tee)

Sprint 15: Polish & Sound (Woche 16)

  • Alle Sounds einbauen
  • Hintergrundmusik mit Cross-Fade
  • Animations-Feinschliff
  • Tutorial / erster Start

Sprint 16: Release-Vorbereitung (Woche 17+)

  • Icon, Splash Screen
  • Play Console Setup, Screenshots, Beschreibung
  • Internal Testing mit Kindern
  • Release auf Play Store (Android zuerst)
  • iOS-Port falls gewünscht

7. Release & Distribution

Android (einfacher Start)

  1. Google Play Developer Account (€25 einmalig)
  2. Release als Privat/Closed Testing zuerst — nur Familie
  3. Oder: Direkte APK-Distribution in der Familie (kein Store nötig)
  4. Ggf. später: Öffentlicher Release

iOS (später)

  • Apple Developer Account (€99/Jahr)
  • TestFlight für Familie
  • App Store Review deutlich strenger als Google

WICHTIG — COPPA/Kids-Compliance

Da Zielgruppe 3+ Jahre:

  • Keine Analytics (Google Analytics, Firebase, etc.)
  • Keine externen Links ohne Parental Gate
  • Keine personenbezogenen Daten
  • In der Play Store Data Safety: "Keine Daten erhoben" angeben — und das auch umsetzen

Monetarisierung

Empfehlung: Keine. Das ist ein Projekt für deine Kinder. Wenn du später öffentlich willst:

  • Einmalkauf €2,99 (fair, keine Werbung)
  • Keine In-App-Käufe, keine Werbung

8. Risiken & Tipps

Größte Fallstricke

Risiko Mitigation
Asset-Produktion zieht sich Mit Platzhaltern entwickeln, Assets parallelisieren
iOS-Deployment kompliziert Erst Android, iOS später
Feature-Creep Strikt am MVP-Plan halten, später iterieren
Motivation ebbt nach 2 Monaten ab Kinder regelmäßig Build zeigen → Feedback = Motor
Komplexe Animationen Mit einfachen 2-Frame-Animationen starten

Pro-Tipps aus der Praxis

  1. Kinder sind deine Beta-Tester. Zeig ihnen jeden Build. Was sie nicht finden, ist zu versteckt. Was sie zum Lachen bringt, behältst du.
  2. Finger statt Maus. Entwickle am Rechner, teste aber wöchentlich auf dem echten Tablet. UI-Elemente brauchen mindestens 48dp / besser 64dp Größe.
  3. Persistierende Chaos-Toleranz. Wenn das Kind alle Objekte in eine Ecke stapelt — perfekt. Ladet es genau so wieder. Kein "Ordnen" beim Reset.
  4. Bewusste Musik-Lautstärke. Default auf 60%, nicht 100%. Kinder-Tablets stehen oft auf Max.
  5. Großer Zurück-Button immer sichtbar. Kein Verirren in Untermenüs.
  6. Keine Text-UI für Kinder unter 6. Icons, Symbole, Farben. Text nur für dich als Dev.
  7. Idle-Animationen. Jede Figur blinzelt / atmet auch im Stand. Das macht die Welt lebendig.
  8. Sound ist 50% der Magie. Ein gutes "Ploppen" beim Aufnehmen eines Objekts ist mehr wert als jede Animation.

Was ich NICHT machen würde

  • Multiplayer / Online-Features
  • Prozedurale Generierung
  • Physik-Engine (nicht nötig für ein Puppenhaus)
  • Eigene Character-Editor (Kinder wollen spielen, nicht konfigurieren)
  • Level-System / Achievements (widerspricht dem Sandbox-Charakter)

9. Nächste Schritte (diese Woche)

  1. Godot 4 installieren und das offizielle "Your First 2D Game"-Tutorial durchspielen (ca. 2h) — danach verstehst du die Engine
  2. Git-Repo anlegen (lokal oder auf GitHub privat)
  3. Ein leeres Projekt mit Main.tscn und einem leeren Raum erstellen
  4. Projektnamen mit den Kindern festlegen — das macht es offiziell
  5. Mit den Kindern 23 Figuren-Skizzen auf Papier machen (zum Einscannen später)

10. Nützliche Ressourcen

Godot lernen:

Assets:

Sounds:

Inspiration / Benchmarks:

  • Yasa Pets World, Farm, Town (gleiches Studio, anderer Kontext)
  • Pepi Hospital 2 (4,1 Sterne, sauberer umgesetzt)
  • Toca Boca Serie (Goldstandard in diesem Genre)

Dieser Plan ist ein lebendes Dokument. Anpassen nach jedem Sprint.