Skip to content

Spiellabor/PRIMA

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PRIMA

Wichtige Hinweise

  • F11 für Vollbildmodus
  • bei Performance Problemen einfach das Browser Fenster verkleinern
  • das Level ist schwierig aber nicht unschaffbar

Links

Checkliste für Leistungsnachweis

© Prof. Dipl.-Ing. Jirka R. Dell'Oro-Friedl, HFU

Nr Bezeichnung Inhalt
Titel Tower
Name Bilel Spannagel, Jonas Plotzky
Matrikelnummer 256661, 256539
1 Nutzerinteraktion Steurung erfolgt über die Tastatur:
A - Bewegung nach links
D - Bewegung nach rechts
SPACE - Springen/Bestätigen: Die Sprunghöhe kann dadurch beeinflusst werden wie lange die Leertaste gedrückt wird.
ESC - Pausiert das Spiel bzw. öffnet das Optionsmenü.
W - Navigation nach oben
D - Navigation nach unten
2 Objektinteraktion Der Spieler Charakter prüft sich gegen alle Platformen(Tiles) und löst Kollisionen mit ihnen auf (Er wird aus Platformen heruausgeschoben.
Die Windböen(Gusts) prüfen ob sie mit dem Spieler kollidieren und solange sie dies tun schieben sie den Spieler mit einem Teil ihrer zurückgelegten Distanz mit sich mit, wenn der Spieler diese wieder verlässt wird ihm ein Teil der Geschwindigkeit der Windböe auf seine eigene Geschwindigkeit addiert.
3 Objektanzahl variabel Es werden periodisch Windböen(Gusts) von den plazierten GustSpawnern erzeugt. Nach dem Ablauf ihrer Lebenszeit entfernen sich die Gusts selbständig wieder. (siehe GustSpawner.ts)
4 Szenenhierarchie Der Game-Node wird hinzugefügt:
Eine Level-Node, diese enthält die vom LevelGenerator erzeugten Tiles und GustSpawner. Ebenfalls enthält das Level den Background. Die GustSpawner fügen sich die von ihnen gespawnten Gusts als Kinder hinzu damit die Flugrichtung der Gusts durch die Rotation des GustSpawners bestimmt wird.
Eine GUI-Node, welche das Menü und die Camera enthält und dem Spieler folgt.
Die Player-Node, welche den Spieler Charakter enthält.

Dem Player, den Tiles und den Gusts wird eine Collidable-Node (ihre Hitbox, Player erhält zwei) hinzugefügt damit die HitBox unabhängig skaliert werden kann, sich aber gleichzeitig mit der Eltern-Node mitbewegt.
Alle Aktoren (Player, Gust) halten sich ihre verschiedenen NodeSprites in einer AnimatedNodeSprite welche sich um das abspielen von Animationen kümmert.
Der Menu-Node werden ihre Komponenten als Kinder hinzugefügt damit diese zusammen mit dieser mitbewegt werden.
5 Sound Sounds werden durch folgenede Aktionen abgespielt:
Springen - Beim Absprung wird ein Geräusch erzeugt.
Laufen - beim Laufen werden Schrittgeräusche abgespielt genau dann wenn die Füße des Sprites auf dem Boden aufkommen.
Menü: Ein Geräusch wird beim bewegen des Cursors abgespielt, ein anderes beim Bestätigen der ausgewählten Aktion.
Die Musik startet nach dem der Titlescreen durch aktivieren von "Play" verlassen wurde. Während man sich im Pausenmenü befindet läuft die Musik auf halber Lautstärke.
6 GUI Im Titlescreen und Pausenmenü lässt sich jeglicher Sound stumm schalten und die Spielgeschwindigkeit auf normal, 0.5x oder 2x setzen.
7 Externe Daten In der level.json lassen sich die Kameragrenzen konfigurieren und verschiedene Level-Bausteine(Platformen, Mauern, Boden, GustSpawner) platzieren. GustSpwaner können hier auch noch konfiguriert werden (SpawnOffset, SpawnInterval, Rotation, Lebensdauer der Gusts, Geschwindigkeit der Gusts)
8 Verhaltensklassen Folgende Verhaltensklassen sind definiert:
Character - kapselt die Characterphysik und das Kollisionsverhalten mit Tiles.
Background - kümmert sich um den AUfbau des Hintergrunds
Audio - Verwaltung von Soundeffekten.
AnimatedNodeSPrite - Verwaltung von Spriteanimationen.
Collidable - dienen als Hitbox.
Gust - Windböen mit eigener Physik, Spielerinteraktion und Animation.
GustSüawner - Erzeugung und konfiguration von Gust-Objekten.
LevelGenerator - Erzeugung des Levels us der Datei level.json
Menu - Titlescreen und Pausescreen zugleich, verwaltet Optionsmöglichkeiten und stellt diese dar.
MenuComponent - stellt die einzlenen Menübausteine dar
Tile - Definiert die verschiednen Levelbausteine.
Actor - abstracte Oberklasse, enthält Animations-Komponente und Sprites. Verwaltet zusätzlich das registrieren der Update-Methoden in der Game-Loop.
9 Subklassen Folgende Klassenhierachie existiert:
Charakter, Gust und GustSpawner erben alle von der abstrakten Klasse Actor. Jede von ihnen enthält eine Update-Methode welche in der Game-Loop registriert wird. Charakter und Gust nutzen zusätlich die AnimatedNodeSprite von Actor.
Folgende Klassen erben direkt von Node: Actor, Background, Menu, Collidable, NodeSprite damit sie zu SPielobjekten werden.
Folgende Klassen erben von NodeSprite: MenuComponent, Tile damit sie direkt über die Spriteanzeige-Funktionalität verfügen.
10 Maße & Positionen Eine Einheit enspricht genau einem Meter. Der Spielerchrakter ist somit ca. 1,8m groß. Es werden echte physiklaische Einheiten benutzt(m, s, m/s, m/s^2). Die Levelbausteine wurden so gesetzt, dass sich der Spieler nur auf positiven Welt-Koordinaten bewegt. Gusts bewegen sich in bezug auf die lokalen koordinaten der GustSpawner (Beim drehen des Spawners wird richtung von Gust bestimmt)
11 Event-System Die AnimatedNodeSprite-Komponente sendet folgende Events nach oben in die Hierachie:
"frameChanged" - wenn sich ihr dargestlltes SpriteFrame geändert hat, Charakter nimmt dieses Event entgegen um die Fußtritt-Sounds im richtigen Moment abzuspielen.
"animationFinished" - wenn alle SpriteFrames einer NodeSprite einmal angezeigt wurden (am Ende der Animation), Charakter nimmt dieses Event entgegen um seine Idle Animationen(Fallen/Rumstehen) im Anschluss an einmalige Animationen(Springen) zu starten. Ebenfalls wird hier nach beendigen der Absprunganimation (JumpSquat) der eigentlich Sprung gestartet.
In der Main wird das Event "registerHitBox" in die Level-Node gebroadcastet welches von den verscheidenen Tiles entgegengenommen wird woraufhin diese ihr HitBox-Rectangle in das statische Array der Klasse Tile hinzufügen. Charakter prüft seine Kollisionen gegen diese Rectangles.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 82.9%
  • TypeScript 16.2%
  • HTML 0.9%