Online Game - Script nach gewisser Zeit ausführen...

stonk

Erfahrenes Mitglied
Tach zusammen,

einige werden mich wahrscheinlich noch kennen! ;)
so, mein online game nimmt nach und nach form an... nun habe ich aber ein weiteres problem...
Es ist vorgesehen dass man in meinem Online game dann angriffe auf andere spieler durchführen kann. Nun dachte ich, ich mache es folgendermassen:
1. User startet angriff... alle daten werden in eine tabelle eingetragen... es dauert aber ein wenig, bis die truppen dann am ziel sind, z.B. 30min... dies würde ich auch in die tabelle eintragen ( time() + 30min... und dann den Unterschied berechnen)...
nun mein problem: wie kann ich machen, dass das Script nach diesen 30 minuten ausgeführt wird...? der angriff sollte ja genau nach dieser Zeit erfolgen, und nicht, wenn der User das nächste mal aktualisiert...
gibt es da irgendwie eine timer funktion? oder wie sonst könnte ich das am besten machen?

so, hoffentlich habe ich alles gut beschrieben...:)

besten dank schon im voraus
gruss stonk
 
Variante 1 Beim nächsten Einloggen/Aufruf ausführen.
Variante 2 Cronjob oder Hintergrundprozess.

Nichts für Ungut mal sollte sich sowas überlegen bevor man anfängt besonders bei solch größeren Projekten.
 
ich stecke ja eigentlich no in der planung...:) meinte mit "es nimmt form an", dass es auf papier form an nimmt :)

deine erst variante wäre dass, was ich eben nicht möchte, dann würde der angriff viel zu spät ausgeführt werden, dann könnte der andere spieler ja noch lange verteidigung aufbauen

zu deiner 2. variante: hat mir jemand eine gute seite, wo was über cronjobs und Co. steht?

thx @ all

mfg stonk
 
Bei der 1. müsstest du dies berücksichtigen und nen bisschen rechnen.
Cronjob ähm... googlen/wikipedia ;-)
Mit denen müsstest du aber auch nen skript starten was eventuell nen bisschen wartet wenn man nen eigenen Server hat eventuell noch mit Cronjob's sollte man schon auf ne Hintergrund runtime zurück greifen.
 
verstehe ich das richtig, für jeden angriff müsste ich einen cronjob starten? wenn ja, wäre dies nich möglich, da ich nur 5 cronjobs auf meinem webspace zur verfügung habe...


hat jemand sonst noch eine idee, wie ich dies (einfacher) machen könnte?
besten dank schon jetzt! :)
 
Denk doch mal nach nicht bei jeden Angriff wird halt alle x min geprüft und dein skript wartet vielleicht noch x sekunden.
Schau mal auf galaxy-news.de ...dort bist du eher an der richtigen adr.
 
Alternativ zu den Cronjobs - die gewissermaßen auch eine unsichere Methode darstellen, da sie auch mal ausfallen könnten - kannst du auch einen Daemon (Programm welches permanent im Hintergrund läuft) in C/C++/Java schreiben.

Ich bin an einem ähnlichen Projekt dran, bin allerdings schon etwas weiter als du ;-).

Es würde dann folgendermaßen laufen, dass der Daemon die ganze Zeit wartet, sobald das Frontend(PHP) etwas an den Daemon schickt trägt er es in eine Queue (Warteschleife) ein und legt sich so lange schlafen, bis die Aktion ausgeführt werden soll, dann wacht er automatisch auf und führt die nötigen Aktionen durch.

Die Programmierung eines solchen Daemons erfordert natürlich etwas Einarbeitung...

Es würde dann theoretisch so laufen, wenn der User einen Angriff startet:
- Absenden des Formulars
- PHP rpüft die Angaben und schickt sie an den Daemon weiter
- Der Daemon trägt den Angriff in die Warteschleife ein und legt sich schlafen
- Der Daemon wacht auf, führt die Aktionen aus und löscht das Element aus der Queue

Hört sich einfach an...ist es aber nicht ;-)

Dieser Daemon läuft aber nciht auf einem einfachen Webspace, dazu bedarf es schon einigem mehr... ...ich würde mal behaupten für ein ordentliches Browsergame ist ein System welches auf Cronjobs basiert die Minimal-Lösung - alles andere ist umständlich und unpraktikabel.
 
Wie ich schon sagte cronjob's alleine reichen eh nicht damit muss das prog nur nicht die ganze Zeit laufen (damit kann man das ohne prob's in php machen)

Ich habe dies extra erwähnt da du wahrscheinlich keinen Server hast so hört es sich zumindest bisher an.
 
Zuletzt bearbeitet:
stonk hat gesagt.:
verstehe ich das richtig, für jeden angriff müsste ich einen cronjob starten? wenn ja, wäre dies nich möglich, da ich nur 5 cronjobs auf meinem webspace zur verfügung habe...

Hier kannst du beliebig viele Cronjobs starten.

mfg
forsterm
 
Zurück