Skip to content
Snippets Groups Projects
concept.txt 2.29 KiB
Newer Older
  • Learn to ignore specific revisions
  • Adrian Paschkowski's avatar
    Adrian Paschkowski committed
    - Game Target: Kill Auto Hero
    - Auto Hero
        - Automatically runs to next enemy and bashes away
        - Stats increase with every lost battle
    - Mana
        - Player has limited mana available
        - Used to spawn enemies
        - Used to upgrade enemies
        - Gain mana by dealing Damage to Auto Hero or defeating him
        - Can be spent on permanent upgrades
        - Persists after battle rounds
    - Enemies
        - Multiple Types
        - Close combat, weak
        - Tank
        - Far Archer / Mage
        - Drag-n-drop enemies into game
        - Enemies stay at their spawned position
    - Upgrades
        - HP
        - Deal more damage
        - Take less damage
        - Reduced Mana Costs
    
        - One-time use extreme buffs to put on a specific enemy
    
    ----------------------------------------------
    
    - Weitere Sprites für bestimmte Klassen suchen
    - Oberklasse Enemy mit HP, Stats etc
    - Enemies haben (permanente) Upgrades
    - Unterklassen für spezifische Behaviors, z.B. für movement, attacks etc
    - Enemies bleiben tot sobald tot
    - AntiPlayer
    
    -> StatsManager singleton mit dontDestroyOnLoad
        - hat Methoden, um spezifische Upgrades zu exposen
        - speichert Mana und wie viele Upgrades wovon man schon hat
        - Mana wird immer generiert, sobald man etwas damage dealt
        - Mana bleibt immer erhalten und wird nie resetted
        - Upgrades kann man erst kaufen, sobald mindestens ein Enemy auf dem Feld ist
        - public EnemyStats GetEnemyStats()
        - AntiPlayer stats bleiben auch im StatsManager, stats sind aber fixed pro Szene
            - public AntiPlayerStats GetAntiPlayerStats(int stage)
        - Enemy Stats bleiben über Szenen erhalten
    -> Enemy Basisklasse
        - zieht sich Upgrades aus StatsManager
        - macht jeden Frame StatsManager.GetEnemyStats() oder so
        - ruft darauf basierend abstrakte Methoden in Unterklasse auf
            - abstract void Attack(), called on Timer
        - managed selber HP
        - TakeDamage(int dmg)
            - aufgerufen vom AntiPlayer
                - Dessen Schwert hat OnTriggerEnter2D() und berechnet dann seinen Damage und damaged den Enemy
        - anders herum, wenn Enemy den AntiPlayer damaged:
            - Enemy hat OnTriggerEnter2D(), berechnet eigenes Damage, damaged Player
            - Oder ein Projektil macht das
    -> Enemy-spezifische Unterklassen
        - Implementeren abstrakte Methoden wie Attack()
            - Schießen Pfeile, Schwertattacke etc