Spielsteuerung im Hintergrund

Patrizier Sven

Möglichkeiten

Um die einzelnen Ereignisse innerhalb des Spieles abzuarbeiten fallen mir auf Anhieb drei Möglichkeiten ein. Als erstes könnte man die nötigen Berechnungen durchfĂŒhren, wenn ein Benutzer eine Webseite im Spiel aufruft. Die zweite wĂ€re ein Cronjob, der in möglichst kurzen Intervallen aufgerufen wird um die Aufgaben zu erfĂŒllen. Als letztes ein Daemon, der permanent die Aufgaben erfĂŒllt.

Aufruf durch den Spieler

Eine in meinen Augen nur fĂŒr simple Aufgaben geeignete Methode ist die Resourcenberechnung beim Abruf von einzelnen Webseiten. Wenn hier die Berechnungsgrundlagen aufwendiger oder die Menge einfach grĂ¶ĂŸer wird, geht die Geschwindigkeit der Serverantworten in den Keller. Es ist einem Nutzer nicht zumutbar, bei jedem Seitenaufruf einige Sekunden warten zu mĂŒssen – so sind 2 Sekunden bei Webseiten schon mĂ€chtig langsam.

Abarbeitung durch einen Cronjob

Ein Cronjob hat den Vorteil, das auch Aktionen berechnet werden können, wenn kein Spieler im System unterwegs ist. Des Weiteren können die Berechnungen durch die erlaubten lĂ€ngeren Skriptlaufzeiten auch mehr Zeit in Anspruch nehmen, wenn PHP ĂŒber die Shell aufgerufen wird. Je nachdem wie viele Tasks im Hintergrund zu berechnen sind, ist so ein Cronjob schon völlig ausreichend. Problematisch wird dies erst, wenn der minimale Abstand von 1 Minute zwischen zwei Aufrufen nicht mehr ausreicht.

Daemon im Hintergrund

Am besten finde ich einen Daemon, ein Programm welches permanent im Hintergrund wartet und anfallende Aufgaben erledigt. Zur Steuerung kĂ€me z. B. eine einfache Queue per Datenbanktabelle in Frage, wo die Aktionen gespeichert werden. Dies hat auch zu Folge, das man die AusfĂŒhrung der Aktion sekundengenau starten kann. Da der Daemon die gesamte Zeit lĂ€uft, und die Aufgaben permanent abarbeitet, dĂŒrfte auch kein „RĂŒckstand“ fĂŒr die Aktionen entstehen. Falls dem doch so ist, wird einfach ein zweiter Daemon gestartet, natĂŒrlich mit entsprechenden Mechanismen, dass nicht beide die selben Aktionen gleichzeitig ausfĂŒhren.


»«

2 Kommentare zu “Spielsteuerung im Hintergrund”

  • Andrej sagt dazu:

    Am besten ist es einen Deamon zu nehmen der als Kontrollprogramm lĂ€uft und fĂŒr die notwendeigen Aufgaben dann den dafĂŒr vorgesehenen Daemon startet. Dadurch ist auch parallelitĂ€t im Programmablauf gewĂ€hrleistet (insofern die Hardware und BS dies unterstĂŒtzt)

    Antworten
  • Marc sagt dazu:

    Das Problem bei Aufrufen durch den Nutzer entstehen schnell Probleme mit dem zeitlichen Ablauf der Ereignisse (A griff B an, B hat nur noch reduzierte Ressourcen, hat aber zu einem spĂ€teren Zeitpunkt automatisiert C angegriffen. Dadurch entsteht ein ellenlanger Rattenschwanz, der dann quasi an einem Nutzer „hĂ€ngen“ bleibt.

    Ein Deamon hĂ€tte auch noch den Vorteil, dass man eine Interaktionsmöglichkeit fĂŒr einen Admin implementieren könnte..

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.