Dokumentation zum Massive Multiplayer Online Game - Universität ...
Dokumentation zum Massive Multiplayer Online Game - Universität ...
Dokumentation zum Massive Multiplayer Online Game - Universität ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
4. Schiffe und Missionen<br />
42<br />
Umsetzung<br />
Die Umsetzung dieser Seite gestaltete sich relativ simpel denn es mussten lediglich die Datenfelder der Flotten<br />
geschickt ausgelesen werden, da die kompletten Informationen über den Flug im Model der Flotte abgespeichert<br />
sind.<br />
Es gibt im Endeffekt 3 Abschnitte in denen man stationierte, eigene Flotten auf Mission und ankommende<br />
Flotten sehen kann. Sollten Flotten Fracht geladen haben, wird ein Button angezeigt, welcher einen<br />
AJAX-Request auslöst, der, wenn es intern keine Probleme gegeben hat die Seite neu lädt um die Werte für<br />
den Planeten zu aktualisieren.<br />
Ein weiteres Feature ist der Abbruch einer Mission, wo ebenfalls durch Drücken eines entsprechenden Knopfes<br />
ein AJAX-Request gesendet wird, der für ein Neuladen der Seite sorgt. Die Flotte deren Mission abgebrochen<br />
wurde ist anschließend sowohl im Bildschirm für eigene, als auch für ankommende Flotten.<br />
4.3 Kampfmechanismus<br />
von Isaak Mitschke<br />
Einleitung<br />
Wann immer ein Spieler einen anderen angreift kommt unser Kampfmechanismus <strong>zum</strong> Einsatz. Dieser sorgt<br />
dafür, dass Kämpfe nach einer bestimmten Logik ablaufen. Entscheidend für unsere Berechnungen sind die<br />
Angriff- und Verteidigungskraft einer Flotte. Der Angriff-/Verteidigungswert einer Flotte ist die Summe der<br />
entsprechenden Werte aller Schiffe in einer Flotte. Wir haben uns dafür entschieden, dass ein Schiff sowohl<br />
einen Angriffs- als auch einen Verteidigungswert hat, damit wir Schiffe mit verschiedenen Funktionen erstellen<br />
können. So hat z.B. eine Verteidigungsplattform einen hohen Verteidigungswert aber einen niedrigen Angriffswert,<br />
analog ein Zerstörer einen höheren Angriffswert.<br />
Ablauf und Implementierung<br />
Bei einem Angriff tritt der Angreifer gegen den Verteidiger und seine Verbündeten an (falls Mitglieder seiner<br />
Allianz Flotten bei ihm stationiert haben). Als erstes wird der „Kampfwert“ berechnet. Dieser ist die Differenz<br />
zwischen Angriffswert des Angreifers und Summe der Verteidigungswerte der Verteidigerflotten. Nun wird<br />
entschieden:<br />
• Kampfwert > 0: Angriff erfolgreich.<br />
• Kampfwert < 0: Angriff fehlgeschlagen<br />
• Kampfwert = 0: Unentschieden<br />
Der Verlierer verliert immer alle Schiffe, je nachdem wie stark er aber war, verliert auch der Gewinner Schiffe.<br />
Um dies zu realisieren wird nun vom Gewinner solange ein zufällig gewähltes Schiff gelöscht bis der<br />
Angriff-/Verteidigungswert des Gewinners kleiner oder gleich dem „Kampfwert“ ist. Damit Kämpfe aber nicht<br />
jedes Mal gleich ablaufen wird in der Schleife der Kampfwert mit einem Zufallswert zwischen 0,8 und 1,2<br />
Multipliziert.<br />
Zum berechnen der Verluste haben wir uns anfangs für folgendes Verfahren entschieden: Wähle zufällig eine<br />
der Gewinner Flotten (Falls Verteidiger der Sieger ist), wähle dann Zufällig einen der Schiffstypen. Von diesem<br />
wird dann die Anzahl in der Flotte entsprechend dekrementiert. Dies führt allerdings dazu, dass eine Flotte von<br />
jedem Schiffstyp etwa gleichviel Schiffe verliert, was zur Folge hat das besonders „wertvolle“ Schiffe von denen<br />
man nur wenige in seiner Flotte hat in der Regel alle zerstört werden. Da uns diese Ergebnisse aber zu<br />
vorhersehbar erschienen, haben wir stattdessen alle Schiffe in ein Array getan um dieses Problem zu lösen.<br />
Von diesem Array wird dann immer ein Schiff zufällig gewählt, dass gelöscht wird. Dadurch erhöht sich die<br />
Chance, ein teures, starkes Schiff nicht zu verlieren, wenn man beispielsweise mit 1000 kleinen Schiffen und<br />
einem sehr starken angreift.