12.01.2014 Aufrufe

Dokumentation zum Massive Multiplayer Online Game - Universität ...

Dokumentation zum Massive Multiplayer Online Game - Universität ...

Dokumentation zum Massive Multiplayer Online Game - Universität ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 />

36<br />

class Fleet < ActiveRecord::Base<br />

has_many :shipfleets, dependent: :delete_all<br />

has_many :ships, :through => :shipfleets<br />

belongs_to :start_planet, class_name: "Planet", foreign_key: "start_planet"<br />

belongs_to :target_planet, class_name: "Planet", foreign_key: "target_planet"<br />

belongs_to :origin_planet, class_name: "Planet", foreign_key: "origin_planet"<br />

belongs_to :user<br />

belongs_to :mission<br />

...<br />

end<br />

Attribute<br />

| Ausschnitt des ER Diagramms<br />

Jeder User hat an jedem seiner Planeten eine Heimatflotte (eventuell auch ohne Schiffe). Sobald eine Flotte<br />

auf Mission geschickt werden soll, wird sie gesplittet und die neu entstandene Flotte erhält Attribute für den<br />

Flug (Zeit, Ziel, Mission, ...). Diese neue Flotte existiert nur solange sie unterwegs ist, denn wenn sie wieder<br />

zurückkehrt oder zu einem anderen eigenen Planeten fliegt, werden ihre Schiffe der dortigen Heimatflotte<br />

hinzugefügt und die Flotte wird gelöscht. Lediglich eine Ausnahme stellt die erfolgreiche Kolonialisierung dar,<br />

wo die Flotte am Ziel auch die neue Heimatflotte darstellt.<br />

Diese Umsetzung war nötig um die Technologiefaktoren miteinbeziehen zu können. Sollte während eines<br />

Fluges <strong>zum</strong> Beispiel eine Technologie für erhöhte Geschwindigkeit erforscht worden sein, dann sollte sich das<br />

nur auf stationierte Flotten auswirken. Abhilfe schaffen also die temporären fliegenden Flotten, indem sie die<br />

beim Abflug aktuellen Werte für Technologien abspeichern. So kann bei Abbruch der Mission oder Rückkehr<br />

der Flotte die Zeit für den Rückweg realistisch berechnet werden.<br />

Eine Flotte hat Attribute für Start-, Ziel- und Heimatplanet. Anhand dieser Informationen ist eindeutig ablesbar<br />

wo sie sich zu einem Zeitpunkt befindet. Durch die Angabe eines Heimatplaneten ist immer eindeutig festgelegt,<br />

ob sich die Flotte auf einem Hinflug (Startplanet = Heimatplanet), oder einem Rückflug (Zielplanet = Heimatplanet)<br />

befindet. Außerdem sind sowohl Abflugs- als auch Ankunftszeit in der Flotte abgespeichert, da dies nötig ist<br />

um Missionen abbrechen zu können. Denn mithilfe der Abflugszeit lässt sich die bisher verstrichene Zeit<br />

berechnen, welche bei die Zeitdauer darstellt, die die Flotte für ihren Heimweg benötigt.<br />

Missionsmethoden<br />

Um Flotten auf eine Mission zu schicken gibt es im Fleet-Model eine Methode die eine Mission, einen<br />

Zielplaneten, die Anzahl der jeweiligen Schiffe als Hash und eventuelle Rohstoffe empfängt. Der Ablauf innerhalb<br />

dieser Methode lässt sich wie folgt beschreiben:<br />

Zunächst werden die Eingaben überprüft (Beispiel: ist das Objekt tatsächlich ein Planet). Anschließend wird<br />

die Heimatflotte gesplitted, sodass eine neue Flotte entsteht. An ihr werden dann Attribute für Start-, Ziel- und<br />

Heimatplanet, Start- und Ankunftszeit gesetzt. Daraufhin, wird geschaut, welcher Missionstyp eingegeben<br />

wurde:<br />

def move(mission, destination, ship_hash, ore, crystal, credit)<br />

case mission.id<br />

when 2 then # Colonization<br />

... # missionsspezifische Aktionen<br />

when 3 then # Attack

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!