All posts by Sebastian Copei
Version: 4.0.5
Bugfixes:
- Der SplashDamage von Türmen tötet Vampire direkt anstatt ihre Gesundheit unter 0 zu drücken.
Version: 4.0.4
Bugfixes:
- Nach dem updaten eines Turmes, wird die neu berrechnete Reichweite gesendet.
- Der Server sendet die Nachricht eines neues Vampires auch wenn er beim Spawm direkt stirbt. Dafür wurde die Ausführungsreihenfolge der Commands geändert.
Version: 4.0.3
Bugfixes:
- Die Veränderte Geschwindkeit von Vampiren werden gesendet, wenn diese von einem Frostturm getroffen worden sind.
- Temporäre Nutzer werden nicht mehr plötzlich ausgelogged.
- Wenn ein Turm gebaut wird, sendet der Server nun die tatsächliche Reichweite des Turmes anstellen von Kommazahlen.
Version: 4.0.2
Bugfixes:
- Attacker / Defender werden beim verlassen der GameLobby korrekt gesetzt, auch beim rejoin.
Version: 4.0.1
Bugfixes:
- Temporäre Nutzer werden korrekt aus der Datenbank entfernt wenn diese bei einem join nicht korrekt dem GameSocket beigetreten sind.
- SplashDamage wird für die beiden Türme Boom und Swash berechnet und gesendet.
Version: 4.0.0
Features:
- Der Server sendet eine Info welcher Turm welchen Vampir angreift.
- Um die Spiellänge kürzer zu halten, wird das Income nach dem verlieren eines Vampires nicht mehr reduziert.
Version: 3.0.5
Bugfixes:
- Vampire werden nach dem Verlassen eines Spieler korrekt weiterbewegt oder entfernt. Vampire eines Spielers der das Spiel verlassen hat, werden auf das nächste angreifbare Segment bewegt.
Version: 3.0.4
Bugfixes:
- Ein Fehler im Json Parser wurde behoben, dadurch werden Karten korrekt validiert.
Version: 3.0.3
Bugfixes:
- Gestartete Spiele werden nicht mehr über den REST Endpoint GET /game gesendet. Wenn ein Spiel gestartet wurde, wird dies ebenfalls über den System Socket bekannt gegeben. Damit kann das Spiel aus der Liste in der Lobby entfernt werden.
- Spieler werden korrekt entfernt wenn ihre Herzen auf 0 sinken. Der besiegt Spieler erhält eine Meldung das er besiegt wurde.
Version: 3.0.2
Bugfixes:
- Der Server informiert korrekt über den Abbau des Datenmodelles, wenn ein Spieler das Spiel verlässt. Bidirektionale Kanten oder implizite Kanten werden nicht mitgeschickt um das Nachrichten aufkommen geringer zu halten.
Version: 3.0.1
Bugfixes:
- Karten mit diagonalen Pfaden werden korrekt validiert
Version: 3.0.0
Bugfixes:
Features:
- Änderungen können der aktuellen Serverdokumentation entnommen werde.
Version: 2.1.2
Bugfixes:
- Weitere Nullpointer Exception während der Map Endpoints behoben.
Version: 2.1.1
Bugfixes:
- Join Game löst kein Nullpointer mehr aus, wenn versucht wird einem Spiel beizutreten dessen ID nicht existiert.
Version: 2.1.0
Bugfixes:
Features:
- Alle 30 Minuten wird das Serverdatenmodell auf konsistentz geprüft und veraltete Objekte werden gelöscht. Dies betrifft aktuell nur Spiele aus der Spiele Liste.
Version: 2.0.1
Bugfixes:
- Dem Systemsocket kann nicht beigetreten werden wenn man im Spiel.
- Fehlermeldungen im Chatsocket wurden an das allgemeine Nachrichtenformat angepasst.
- Nachrichten Feld des Spielers beim beitritt eines Spieles wurde von currentGame zu game geändert.
- Temporale Benutzer können wieder verwendet werden
Version: 2.0.0
Bugfixes:
Features:
- Änderungen können der aktuellen Serverdokumentation entnommen werde.
Version: 1.1.0
Bugfixes:
- POST /game verwendet nun eine zufällige Karten, sofern die gesendete MapId unbekannt ist oder das ganze Feld wegelassen wird.
Features:
- GET /game liefert nun eine Liste von Spielern die sich bereits im Spiel befinden.
Einleitung
Vampire Slayer ist ein Multiplayer Tower Defense Spiel. Jeder Spieler hat die Kontrolle über seinen eigenen Sektor und kann dort an bestimmten Stellen (abhängig von der Karte) Verteidigungsanlagen bauen. Seinen Gegnern kann er Vampire schicken, die dann durch deren Verteidigungsanlagen zerstört werden müssen. Schafft es ein gegnerischer Vampire durch die eigenen Verteidigungslinien, verliert der Spieler 1 Leben. Sind alle 20 Leben aufgebraucht, verliert der Spieler.
Der Spieler, der am Längsten durchhält, gewinnt!
Spielablauf
- Um an Vampire Slayer teilzunehmen, muss zunächst in der Lobby ein Spiel erzeugt werden. Der Spielname kann frei gewählt werden. Optional kann die gewünschte Karte angegeben und festgelegt werden. Jeder Spieler hat 20 Leben und eine “Balance” von 200.
- Sobald man bereit ist, kann das Spiel gestartet werden. Das Spiel wird erst gestartet, wenn alle am Spiel teilnehmenden Spieler sich als bereit makiert haben!
- Die Spielsimulation startet und jeder Spieler bekommt die initiale Spielwelt sowie regelmäßig Updates in Form von Events über die aktuelle Spielsituation zugeschickt. Nun sollte man durch geschicktes Aussenden von Vampiren und Bauen von Verteidigungsanlagen versuchen, seine Gegner zur Strecke zu bringen.
- Jeder Spieler hat ein regelmäßiges Einkommen, mit dem er Verteidigungsanlagen und Vampire finanzieren kann. Alle 15 Sekunden bekommt er sein aktuelles “Income” auf sein “Balance” aufaddiert. Das “Income” kann nur gesteigert werden, indem man seinen Gegnern Vampire schickt. Dabei gilt: Je stärker der Vampir umso stärker steigt das Income. Der Schlüssel zum Sieg liegt daher in einer gesunden Mischung von Offensive und Defensive.
Spielelemente
In diesem Abschnitt soll ein Überblick über die in Vampire Slayer vorkommenden Spielelemente gegeben werden.
Karten
Jeder Spieler spielt auf einer 16 x 16 Felder großen Karte. Jedes dieser Felder besitzt einen der folgenden drei Zustände:
- NONE (Hier kann keine Verteidigungsanlage gebaut werden und kein Vampir kann diese Zelle betreten)
- DEFENSE (Hier können Verteidigungsanlagen gebaut werden, jedoch kann kein Vampir diese Zelle betreten)
- WALKABLE (Weg für Vampire, hier kann keine Verteidigungsanlage gebaut werden)
Jede Karte wird über eine Startzelle betreten und über eine Endzelle verlassen. Zudem besitzt jede Karte ein Hintergrundbild. Ein komplettes Spiel entsteht dann durch jeweilige 90° Drehung der Karte. Beim Design einer Karte ist es also wichtig, dass die Start- und Endzelle so gelegt wird, dass nach einer 90° Drehung die Startzelle der gedrehten Karte an die Endzelle der ersten Karte grenzt.
Ein Beispiel eines Spiels ist in folgendem Screenshot zu sehen:
Hier ist gerade ein 3-Spieler Spiel zu sehen. Die Startzelle von Spieler 1 befindet sich in seinem Kartenteil unten links, die Endzelle oben rechts. Durch 90° Drehung der Karte wird das Spielfeld von Spieler 2 erstellt. Die Endzelle von Spieler 1 grenzt nun also an die Startzelle von Spieler 2.
Vampire
Hier gibt es eine Übersicht über alle verfügbaren Vampire sowie deren Charakteristik. “Price” zeigt die Kosten zum Kauf eines Vampires diese werden von der eigenen “Balance” abgezogen. “Health” gibt die Lebenspunkte an. “Speed” gibt die Geschwindigkeit in Wegpunkten pro Sekunde an. “Income” beschreibt den Wert, der auf den “Income” Wert des Spielers aufaddiert wird. “Bounty” gibt die Belohnung an, wenn ein Vampir zur Strecke gebracht wird.
Vampire | Price | Health | Speed | Income | Bounty |
---|---|---|---|---|---|
Walker | 50 | 300 | 1.4 | 5 | 5 |
Vomiter | 100 | 700 | 1.3 | 10 | 10 |
Runner | 250 | 1400 | 1.6 | 25 | 25 |
Destroyer | 500 | 3500 | 1.0 | 50 | 50 |
Sleeper | 1000 | 7000 | 1.2 | 90 | 90 |
Hider | 2000 | 14000 | 1.3 | 180 | 180 |
Chaser | 4000 | 30000 | 1.8 | 360 | 360 |
Titan | 8000 | 80000 | 1.2 | 720 | 720 |
Kicker | 15000 | 140000 | 1.4 | 1200 | 1200 |
Biter | 25000 | 250000 | 1.5 | 2000 | 2000 |
Jumper | 40000 | 500000 | 2.0 | 3200 | 3200 |
Big Boss | 60000 | 1200000 | 1.3 | 4800 | 4800 |
Hiker | 100000 | 1500000 | 1.3 | 7000 | 7000 |
Burner | 200000 | 2500000 | 1.6 | 14000 | 14000 |
Fast Runner | 400000 | 6000000 | 2.8 | 28000 | 28000 |
Brainiac | 1000000 | 15000000 | 1.4 | 56000 | 56000 |
Schickt ein Spieler einen Vampir, startet der Vampir bei der Startzelle des im Uhrzeigersinn nächsten Spielers. Schafft der Gegner es, den Vampir zur Strecke zu bringen, erhält dieser den für den Vampir ausgeschriebenen “Bounty”. Schafft der Gegner dies nicht, betritt der Vampir automatisch die Karte des nächsten Spielers. Bei einem 2-Spieler Spiel, startet der Vampir dann sofort wieder beim Gegner, d.h. selbst ausgesandte Vampire betreten NICHT die eigene Karte.
Tower
Im Folgenden eine Übersicht aller Verteidigungsanlagen. Hier eine Erläuterung einiger Attribute:
- Cooldown: Gibt die Zeit in Millisekunden an, die die Anlage zum erneuten Feuern benötigt.
- Color: Visualisiert das Anlagenlevel
- Range: Die Reichweite der Anlage in Anzahl Zellen
- Slowrate: Gibt den Faktor an, um den Vampire verlangsamt werden
- Slowtime: Gibt die Dauer des Sloweffects in Millisekunden an
- Splash radius: Gibt den Radius in Anzahl Zellen an
- Splash damage reduction: Gibt an, um wieviel Prozent der Schaden am äußersten Rand des “Splash radius” reduziert wird, d.h. beschießt eine Anlage mit Splash-Fähigkeit einen Vampir, bekommen alle Vampire in dessen Umgebung ebenfalls Schaden. Dabei gilt: Je näher sich ein Vampir am ursprünglich beschossenen Vampir befindet, desto mehr Schaden bekommt er.
Folgende Angriffsstrategien können für die Türme definiert werden:
- Closest, greift den nähesten Vampir an.
- Fastest, greift den schnellsten Vampir an.
- Strongest, greift den Vampir mit den meisten verbleibenden Lebenspunkten an.
- Farthest, greift den am weit entferntesten Vampir, der sich aber noch in Reichweite befindet, an.
- Weakest, greift den Vampir mit den wenigsten verbliebenden Lebenpunkten an.
Alle Türme haben, bezogen auf ihre Fähigkeiten, eine geeignete Strategie nach dem Bau automatisch gesetzt.
Verteidigungseinheit | Description | Level | Price | Cooldown (ms) | Color | Range | Damage | Slowrate | Slowtime(ms) | Splash radius | Splash damage reduction |
---|---|---|---|---|---|---|---|---|---|---|---|
Small | – | 1 | 50 | 650 | 00ff00 | 1.75 | 25 | – | – | – | – |
Small | – | 2 | 100 | 650 | 0000ff | 2.0 | 50 | – | – | – | – |
Small | – | 3 | 1000 | 650 | ff0000 | 2.25 | 250 | – | – | – | – |
Small | – | 4 | 3000 | 650 | ffc800 | 2.5 | 1000 | – | – | – | – |
Frost | slows target | 1 | 100 | 750 | 00ff00 | 1.75 | 25 | 0.3 | 2000 | – | – |
Frost | slows target | 2 | 200 | 800 | 0000ff | 2.25 | 50 | 0.35 | 2000 | – | – |
Frost | slows target | 3 | 400 | 850 | ff0000 | 2.5 | 75 | 0.45 | 2500 | – | – |
Frost | slows multiple targets | 4 | 3000 | 900 | ffc800 | 2.5 | 100 | 0.5 | 2500 | 1.25 | 0.7 |
Swash | attacks multiple targets | 1 | 250 | 750 | 00ff00 | 2.0 | 50 | – | – | 1.75 | 0.7 |
Swash | attacks multiple targets | 2 | 750 | 600 | 0000ff | 2.25 | 200 | – | – | 1.75 | 0.7 |
Swash | attacks multiple targets | 3 | 3000 | 500 | ff0000 | 2.75 | 400 | – | – | 1.75 | 0.6 |
Swash | attacks multiple targets | 4 | 7500 | 500 | ffc800 | 3.0 | 1100 | – | – | 1.75 | 0.5 |
Boom | attacks multiple targets | 1 | 1000 | 3750 | 00ff00 | 2.5 | 1000 | – | – | 1.25 | 0.8 |
Boom | attacks multiple targets | 2 | 3000 | 3750 | 0000ff | 3.0 | 2500 | – | – | 1.25 | 0.8 |
Boom | attacks multiple targets | 3 | 7500 | 3250 | ff0000 | 3.5 | 7500 | – | – | 1.5 | 0.7 |
Boom | attacks multiple targets | 4 | 15000 | 3000 | ffc800 | 4.0 | 15000 | – | – | 1.75 | 0.6 |
Tempo | – | 1 | 1000 | 450 | 00ff00 | 2.5 | 225 | – | – | – | – |
Tempo | – | 2 | 3000 | 350 | 0000ff | 2.75 | 450 | – | – | – | – |
Tempo | – | 3 | 7500 | 250 | ff0000 | 3.0 | 1100 | – | – | – | – |
Tempo | – | 4 | 15000 | 150 | ffc800 | 3.25 | 1800 | – | – | – | – |
Big Bang | – | 1 | 20000 | 5000 | 00ff00 | 5.0 | 25000 | – | – | – | – |
Big Bang | – | 2 | 50000 | 2500 | ffc800 | 7.5 | 40000 | – | – | – | – |
Befehle
Falls ein Befehl nicht korrekt ausgeführt werden kann, bekommt der Spieler eine Fehlermeldung vom Server. Typische Fehler sind:
- Befehl existiert nicht
- Syntax ist nicht korrekt. Es könnten z.B. nötige Parameter fehlen.
- Befehl ist nicht ausführbar. Beispiele:
- Vorraussetzungen sind nicht erfüllt
- Es wird versucht eine gegnerische Anlage zu verkaufen
- …
Hier eine kurze Beschreibung des SM/PO: Projektrollenaufteilung