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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

2. Planeten und Gebäude<br />

20<br />

gem resque<br />

gem resque-scheduler<br />

Mit dem Aufruf bundle install, werden die neuen gems nun installiert Außerdem benötigt Resque den<br />

Redis-server, welcher auf http://redis.io/download <strong>zum</strong> Download zur verfügung steht. Über den Terminal<br />

starten wir nun den Worker und den Scheduler mittels<br />

rake resque:work QUEUE=*<br />

rake resque:scheduler<br />

Modell<br />

Ressourcenproduktion<br />

Der Planet stellt uns bereits Methoden bereit, die im Fall dass ein Planet gewisse Gebäude besitzt, die<br />

Ressourcen des Planeten ständig erhöht werden. Methoden in planet.rb:<br />

• 'get_production', ist eine get Methode, die den Produktionswert eines Gebäudes berechnet und diesen zurück<br />

gibt. Der Wert berechnet sich aus einem Forschungswert, der bei höherer Forschungsstufe erhöht wird und<br />

dem Attribut 'production', welches die Gebäudetypen bereitstellen.<br />

• 'update_ressources', ist nun die Methode, die die Ressourcen eines Planeten erhöht. Bedingung dieser<br />

Methode ist zunächst, dass die Energievorräte auf dem Planeten größer Null sind. Ist dies der Fall, so wird<br />

mittels get_production ermittelt, wie viel produziert werden soll und dies auf den aktuellen Bestand der<br />

Ressource aufsummiert. Die Bedingung, dass die Energievorräte des Planeten größer Null sind, gilt jedoch<br />

nicht für die Produktion der Energie, um sicherzustellen, dass unser MMOG spielbar bleibt.<br />

Am Ende der Methode wird dann die 'create_production_job' methode ausgeführt. Dies ist sozusagen ein<br />

rekursiver Aufruf der update_ressources Methode, sodass sich dieser Prozess nach einem gewissen Zeitraum<br />

wiederholt.<br />

• 'create_production_job', ruft den Resque-worker auf. Hier wird die Zeit mit der der Worker zeitversetzt<br />

aufgerufen werden soll, der Name des Workers und die benötigten Attribute mitgegeben.<br />

Resque.enqueue_in(30.second, ProduceResources, self.id)<br />

Der Worker, produce_ressources.rb:<br />

• Ein worker bekommt nur die self.perform Methode, welche die benötigten Attribute übergeben bekommt.<br />

class ProduceResources<br />

@queue = "workqueue"<br />

def self.perform(id)<br />

@planet = Planet.find_by_id(id)<br />

@planet.update_resources<br />

@planet.save<br />

end<br />

end<br />

Gebäudebau<br />

Ein Planet kann bis zu acht Gebäude besitzen. Auch hier sind die Methoden <strong>zum</strong> Bau im Planeten gegeben.<br />

Planet.rb:<br />

• 'build_building', erstellt das gewünschte Gebäude auf dem Planeten.<br />

• 'create_building_job', startet den Worker <strong>zum</strong> Erstellen eines Gebäudes.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!