Der Slime #296

Closed
opened 2026-10-02 23:13:45 +02:00 by admin · 1 comment

Erstelle einen Gegner für das Projekt cbbf160bb7e8

Es soll ein Slime sein samt Pixelart und Animation.

Es müssen 3 Radien definiert werden:

  1. Bereich in dem sich der Slime random bewegt. Ursprung ist die Startposition, da wo er platziert bzw. später mal gespawnt wird (halbe geschwindigkeit)
  2. Aggro-Radius: befindet der spieler im radius vom slime wird dieser aggressiv
  3. normalerweise größer als der aggro radius - befindet sich der spieler außerhalb dieses radius, wird der Slime wieder neutral und geht wieder zurück zu seinen stationären Bereich wo er sich dann wieder random bewegt (1.)

(dafür würde sich eine state machine für den slime ergeben)

Berührt der Slime den spieler, erhält dieser Schaden. Der Spieler selbst kann ihn mit seiner Waffen Hitbox Schaden zufügen.
Der Spieler bekommt 3 Leben, wird er getroffen verliert er eines. Wenn der Spieler schaden erhält, macht sein shader "Flash" und ist er für eine kurze Zeit unverwundbar. Hat der Spieler 0 Leben stirbt er nicht (gibt noch keinen Tod), die Leben wandern vorerst einfach ins Minus.

Wenn der Slime Schaden erhält soll er "wegbouncen" und ebenfalls Flash am shader bekommen (eventuell wäre da eine Hit Animation gut).

Der Slime hat selbst 3 Leben. Hat man ihn 3 mal getroffen soll er sterben. Einfach die Breakable Animation verwenden. Danach soll das zugewiesene Loot spawnen

Habe ich etwas vergessen? wenn ja, dann bitte rückfragen.

Erstelle einen Gegner für das Projekt `cbbf160bb7e8` Es soll ein Slime sein samt Pixelart und Animation. Es müssen 3 Radien definiert werden: 1. Bereich in dem sich der Slime random bewegt. Ursprung ist die Startposition, da wo er platziert bzw. später mal gespawnt wird (halbe geschwindigkeit) 2. Aggro-Radius: befindet der spieler im radius vom slime wird dieser aggressiv 3. normalerweise größer als der aggro radius - befindet sich der spieler außerhalb dieses radius, wird der Slime wieder neutral und geht wieder zurück zu seinen stationären Bereich wo er sich dann wieder random bewegt (1.) (dafür würde sich eine state machine für den slime ergeben) Berührt der Slime den spieler, erhält dieser Schaden. Der Spieler selbst kann ihn mit seiner Waffen Hitbox Schaden zufügen. Der Spieler bekommt 3 Leben, wird er getroffen verliert er eines. Wenn der Spieler schaden erhält, macht sein shader "Flash" und ist er für eine kurze Zeit unverwundbar. Hat der Spieler 0 Leben stirbt er nicht (gibt noch keinen Tod), die Leben wandern vorerst einfach ins Minus. Wenn der Slime Schaden erhält soll er "wegbouncen" und ebenfalls Flash am shader bekommen (eventuell wäre da eine Hit Animation gut). Der Slime hat selbst 3 Leben. Hat man ihn 3 mal getroffen soll er sterben. Einfach die Breakable Animation verwenden. Danach soll das zugewiesene Loot spawnen Habe ich etwas vergessen? wenn ja, dann bitte rückfragen.
admin added this to the Development project 2026-10-02 23:13:45 +02:00
admin moved this to Next in Development on 2026-10-02 23:13:48 +02:00
Owner

Der Slime ist im Projekt „Garden of Sacrifices“ (cbbf160bb7e8): Pixel-Art, Animationen, State Machine, Schaden in beide Richtungen und Loot. Zwei stehen in der Demo-Szene. Dazu kamen zwei Dinge im Editor: der Node Move toward und Distance in Welteinheiten (0dda6a0, Wiki Behaviors in bdb7f33).

Entschieden (Rückfragen vom 2026-10-03)

  1. Fehlende Nodes: Distance misst jetzt in Welteinheiten. Vorher war der Abstand zum Spieler falsch, weil dessen Sprite in einem Container steckt. Neu ist der Node Move toward (Ziel x/y in Welt, speed, dt, Collide with solids; Ausgänge arrived, distance und zusätzlich hit).
  2. Körperkontakt: Slime und Spieler gehen durcheinander durch, Wände und Kisten blockieren beide. Bei einem Treffer wird der Spieler ein Stück weggestoßen.
  3. Leben des Spielers: Variable Lives (Start 3) im Variables-Asset „Savegame“, bei jedem Treffer eine Zeile in der Konsole. Kein HUD.
  4. Loot: neuer Eintrag „Slime“ in Loots (Database): Gold 1 bis 3.
  5. Break: zielt jetzt auf das Sprite, auf dem es läuft (Wurzel „Breakable Sprite“, Ziel = es selbst). „Breakable“ spielt es auf dem Sprite statt auf dem Container. Kisten, Vasen und Slime teilen sich die Animation.

Was im Projekt neu ist

  • Container „Slime“: Sprite, Collider „Body“, Trigger „Hitbox“ und das Behavior „Slime“. Die Werte stehen am Behavior im Inspector:
    • Lives 3, Speed 42 (Einheiten/s; der Spieler läuft etwa 72)
    • WanderRadius 24, AggroRadius 56, LeashRadius 110
    • LootName „Slime“, KnockbackSpeed 150, ChaseOffsetY 9
    • Die übrigen Werte (HomeX … KnockY) schreibt das Behavior selbst.
  • State Machine „Slime“: Wander → Chase → Return → Wander, dazu Hurt und Dead.
    • Wander: Er ruht 0,6 bis 1,8 s und hüpft dann mit halber Geschwindigkeit zu einem zufälligen Punkt im WanderRadius um seinen Startpunkt. An einer Wand nimmt er gleich einen neuen.
    • Chase: Kommt der Spieler näher als AggroRadius, hüpft er ihm mit voller Geschwindigkeit nach.
    • Return: Ist der Spieler weiter als LeashRadius weg, geht er mit halber Geschwindigkeit heim. Kommt der Spieler unterwegs wieder näher als AggroRadius, jagt er wieder. Sobald er im WanderRadius ist, wandert er.
    • Hurt: Ein Schwung der Waffe auf den Körper kostet ein Leben. Er prallt vom Spieler weg und wird langsamer, dazu Flash und ein Treffer-Frame. Danach jagt er.
    • Dead: Beim dritten Treffer spielt „Break“, dann fällt das Loot aus LootName, und der ganze Slime verschwindet.
  • Pixel-Art „Slime“ (16x16, Palette „Enemies Palette“): 4 Frames Idle, 6 Frames Hüpfen, 1 Treffer-Frame. Animationen „Slime - Idle“, „Slime - Hop“, „Slime - Hit“.
  • Behavior „Player health“ am Sprite des Spielers:
    • Berührt der Spieler eine „Enemy Hitbox“, verliert er ein Leben, die Konsole sagt „Player hit, lives left: N“, er wird weggestoßen und blinkt.
    • Unverwundbar ist er, solange die Animation „Player - Hurt“ läuft (1 s: Flash, dann blinkt Alpha).
    • Die Leben gehen ins Minus, gestorben wird nicht.
  • Layer „Enemy“: Auf ihm liegt der Körper des Slimes, er trifft nur Default und Enemy. Der Collider des Spielers lässt Enemy aus.

Was ich selbst festgelegt habe

  • Jeder Collider mit dem Asset „Enemy Hitbox“ verletzt den Spieler. Ein späterer Gegner braucht also nur diesen Trigger.
  • Während Hurt und Dead zählen keine Treffer am Slime. Während Hurt verletzt er den Spieler auch nicht.
  • Rückstoß des Spielers: 120 Einheiten/s in der ersten Fünftelsekunde des Blinkens, langsamer werdend.
  • „Savegame“ ist nicht persistent, die Leben fangen also bei jedem Start wieder bei 3 an.
  • Ohne passenden Loot-Eintrag verschwindet der Slime trotzdem.
  • Die zwei Slimes stehen bei (110, 40) und (-110, -60).

Under the hood

  • Move toward rechnet den Schritt in die Achsen des Parents um. Er läuft also auch unter einem verschobenen oder gedrehten Parent auf den Weltpunkt.
  • Geschrieben habe ich nur, weil Revision und Inhalt am Server noch genau meiner Kopie entsprachen (Revision 10195 → 10196).

Tests

  • Gate auf melektaus-atx: 220 Files, 3442 Tests (3436 + 6), CHECK EXIT 0. Beide Gegenproben greifen.
  • Headless am gespeicherten Projekt, mit Physik:
    • Wandern: höchstens 20,7 vom Startpunkt.
    • Verfolgen: der Abstand sinkt in 0,5 s von 41 auf 21,7.
    • Der Spieler verliert ein Leben je Blinken.
    • Nach dem Weglaufen ist der Slime wieder 16,7 vom Startpunkt.
    • Drei Treffer zählen 3 → 2 → 1 → 0, mit Flash und rund 20 Einheiten Rückstoß. Danach ist der Slime weg und Gold liegt da.
  • Eine Kiste verhält sich vorher und nachher gleich: Flash-Spitze 0,7, sie zerbricht, Loot fällt.
  • Browser (Wegwerf-Kopie, danach gelöscht): Play ohne Fehler im Log und ohne Exceptions. Beide Slimes stehen in der Szene, ein vergrößerter Ausschnitt zeigt einen mitten im Sprung samt Schatten.

Nicht geprüft

  • Mit echter Tastatur gespielt habe ich nicht. Treffer am Slime liefen headless über eine eingeschaltete Hitbox, nicht über einen echten Schwung.
  • Wie sich die Radien und Geschwindigkeiten anfühlen. Sie lassen sich am Behavior einstellen.
  • Ob die Startpunkte gut liegen (frei sind sie, gemessen an den Bildern).
Der Slime ist im Projekt „Garden of Sacrifices“ (`cbbf160bb7e8`): Pixel-Art, Animationen, State Machine, Schaden in beide Richtungen und Loot. Zwei stehen in der Demo-Szene. Dazu kamen zwei Dinge im Editor: der Node `Move toward` und `Distance` in Welteinheiten (0dda6a0, Wiki *Behaviors* in `bdb7f33`). ## Entschieden (Rückfragen vom 2026-10-03) 1. **Fehlende Nodes:** `Distance` misst jetzt in Welteinheiten. Vorher war der Abstand zum Spieler falsch, weil dessen Sprite in einem Container steckt. Neu ist der Node `Move toward` (Ziel x/y in Welt, speed, dt, *Collide with solids*; Ausgänge `arrived`, `distance` und zusätzlich `hit`). 2. **Körperkontakt:** Slime und Spieler gehen durcheinander durch, Wände und Kisten blockieren beide. Bei einem Treffer wird der Spieler ein Stück weggestoßen. 3. **Leben des Spielers:** Variable `Lives` (Start 3) im Variables-Asset „Savegame“, bei jedem Treffer eine Zeile in der Konsole. Kein HUD. 4. **Loot:** neuer Eintrag „Slime“ in `Loots` (Database): Gold 1 bis 3. 5. **Break:** zielt jetzt auf das Sprite, auf dem es läuft (Wurzel „Breakable Sprite“, Ziel = es selbst). „Breakable“ spielt es auf dem Sprite statt auf dem Container. Kisten, Vasen und Slime teilen sich die Animation. ## Was im Projekt neu ist - **Container „Slime“:** Sprite, Collider „Body“, Trigger „Hitbox“ und das Behavior „Slime“. Die Werte stehen am Behavior im Inspector: - `Lives` 3, `Speed` 42 (Einheiten/s; der Spieler läuft etwa 72) - `WanderRadius` 24, `AggroRadius` 56, `LeashRadius` 110 - `LootName` „Slime“, `KnockbackSpeed` 150, `ChaseOffsetY` 9 - Die übrigen Werte (`HomeX` … `KnockY`) schreibt das Behavior selbst. - **State Machine „Slime“:** Wander → Chase → Return → Wander, dazu Hurt und Dead. - **Wander:** Er ruht 0,6 bis 1,8 s und hüpft dann mit halber Geschwindigkeit zu einem zufälligen Punkt im `WanderRadius` um seinen Startpunkt. An einer Wand nimmt er gleich einen neuen. - **Chase:** Kommt der Spieler näher als `AggroRadius`, hüpft er ihm mit voller Geschwindigkeit nach. - **Return:** Ist der Spieler weiter als `LeashRadius` weg, geht er mit halber Geschwindigkeit heim. Kommt der Spieler unterwegs wieder näher als `AggroRadius`, jagt er wieder. Sobald er im `WanderRadius` ist, wandert er. - **Hurt:** Ein Schwung der Waffe auf den Körper kostet ein Leben. Er prallt vom Spieler weg und wird langsamer, dazu Flash und ein Treffer-Frame. Danach jagt er. - **Dead:** Beim dritten Treffer spielt „Break“, dann fällt das Loot aus `LootName`, und der ganze Slime verschwindet. - **Pixel-Art „Slime“** (16x16, Palette „Enemies Palette“): 4 Frames Idle, 6 Frames Hüpfen, 1 Treffer-Frame. Animationen „Slime - Idle“, „Slime - Hop“, „Slime - Hit“. - **Behavior „Player health“** am Sprite des Spielers: - Berührt der Spieler eine „Enemy Hitbox“, verliert er ein Leben, die Konsole sagt „Player hit, lives left: N“, er wird weggestoßen und blinkt. - Unverwundbar ist er, solange die Animation „Player - Hurt“ läuft (1 s: Flash, dann blinkt Alpha). - Die Leben gehen ins Minus, gestorben wird nicht. - **Layer „Enemy“:** Auf ihm liegt der Körper des Slimes, er trifft nur Default und Enemy. Der Collider des Spielers lässt Enemy aus. ## Was ich selbst festgelegt habe - **Jeder Collider mit dem Asset „Enemy Hitbox“ verletzt den Spieler.** Ein späterer Gegner braucht also nur diesen Trigger. - **Während Hurt und Dead zählen keine Treffer am Slime.** Während Hurt verletzt er den Spieler auch nicht. - **Rückstoß des Spielers:** 120 Einheiten/s in der ersten Fünftelsekunde des Blinkens, langsamer werdend. - **„Savegame“ ist nicht persistent**, die Leben fangen also bei jedem Start wieder bei 3 an. - **Ohne passenden Loot-Eintrag** verschwindet der Slime trotzdem. - **Die zwei Slimes stehen bei (110, 40) und (-110, -60).** ## Under the hood - `Move toward` rechnet den Schritt in die Achsen des Parents um. Er läuft also auch unter einem verschobenen oder gedrehten Parent auf den Weltpunkt. - Geschrieben habe ich nur, weil Revision und Inhalt am Server noch genau meiner Kopie entsprachen (Revision 10195 → 10196). ## Tests - **Gate** auf `melektaus-atx`: 220 Files, 3442 Tests (3436 + 6), `CHECK EXIT 0`. Beide Gegenproben greifen. - **Headless am gespeicherten Projekt, mit Physik:** - Wandern: höchstens 20,7 vom Startpunkt. - Verfolgen: der Abstand sinkt in 0,5 s von 41 auf 21,7. - Der Spieler verliert ein Leben je Blinken. - Nach dem Weglaufen ist der Slime wieder 16,7 vom Startpunkt. - Drei Treffer zählen 3 → 2 → 1 → 0, mit Flash und rund 20 Einheiten Rückstoß. Danach ist der Slime weg und Gold liegt da. - **Eine Kiste verhält sich vorher und nachher gleich:** Flash-Spitze 0,7, sie zerbricht, Loot fällt. - **Browser** (Wegwerf-Kopie, danach gelöscht): Play ohne Fehler im Log und ohne Exceptions. Beide Slimes stehen in der Szene, ein vergrößerter Ausschnitt zeigt einen mitten im Sprung samt Schatten. ## Nicht geprüft - Mit echter Tastatur gespielt habe ich nicht. Treffer am Slime liefen headless über eine eingeschaltete Hitbox, nicht über einen echten Schwung. - Wie sich die Radien und Geschwindigkeiten anfühlen. Sie lassen sich am Behavior einstellen. - Ob die Startpunkte gut liegen (frei sind sie, gemessen an den Bildern).
admin moved this to Done in Development on 2026-10-03 10:44:05 +02:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#296