Refresh Page - andere Lösung nötig?

Subwoover

Erfahrenes Mitglied
hey mal ein Problem welches eventuell neu ist :)

Ich habe vor kurzem mein erstes Browsergame für die Testphase gestartet.
Nun spielen eine handvoll user und testen das game, derzeit rennt es noch auf meinem PC.

Die Aktualisierung der Ressourcen / Truppen-Bewegungen und der gleichen rennt über 1 file die sich selbst alle 2sek refresht.
nun hab ich das problem: wenn ich das game ins netz lade auf einen server den ich heute bestellt habe, dann muss irgendwo auf irgendeinem PC ein IE offen sein und diese file angewählt haben, sprich die php file muss ständig geöffnet sein.

Ist bisschen umständlich aber wie gesagt: mein erstes browsergame...

nun die frage der fragen: wisst ihr obs solche dienste im web gibt?Die eine file ständig laufen haben?Also shell server oder sowas?
bzw:
wie könnte man das anders lösen?

wenn ein user die page bsucht und alles aktualisiert wird seit dem letzten besuch -> funktioniert nicht ==> beispiel:
User A schickt seine Truppen um 18h weg (dauer 2h) -> ankunft 20h
User B schickt seine Truppen um 19h weg (dauer 2h) -> ankunft 21h

User C besucht die page um 23.30 -> aktualisierung -> User A und User B truppen kommen gleichzeitg an..


hilfe bitte!
 
Es gibt 2 Wege, das Problem zu lösen.

A) Du nimmst einen Server, der Cron Jobs unterstützt. Dort kannst du dann einstellen, dass ein bestimmtes Skript in regelmäßigen Zeitabständen aufgerufen werden soll. (Allerdings ist 2x/sek zu oft für ein Browsergame, würde ich sagen. Das gibt zu viel Last!)

B) Bei jedem Zugriff eines Users auf den Server prüfst du zunächst, ob das Berechnungsskript aufgerufen werden muss. Das heißt, du speicherst bei einer Ausführung den Ausführungszeitpunkt irgendwo ab. Wenn nun irgendwo zugegriffen wird, gleichst du diesen gespeicherten Zeitpunkt mit der aktuellen Zeit ab und stellst fest, ob mindestens 2 Sekunden vergangen sind. Diese Methode arbeitet dann so, dass keine Ticks stattfinden, wenn kein User auf den Server zugreift, ist also recht ökonomisch. Allerdings setzt sie voraus, dass sich ein Spielstatus einigermaßen "linear" berechnen lässt. Wenn also 10 Ticks vergangen sind, ohne dass neu berechnet wurde, dann muss das Programm in der Lage sein, den Spielstand auch nach 10 Ticks zu berechnen und nicht nur nach 1.

Das Problem, das du da beschrieben hast, dass die Truppen gleichzeitig ankommen, ist kein Problem dieser Lösungsmethode, sondern ein Fehler in deinem Programm. Du musst lediglich die Programmstruktur so wählen, dass überall die Daten vorhanden sind, die du brauchst, um den aktuellen Status zu berechnen. Das mit den Truppen funktioniert also sehr wohl.

Gawayn
 
Zuletzt bearbeitet:
hm so gesehen stimmt das mit den truppen...

nun aber ich hätte noch die möglichkeit eine exe zu entwerfen welche diese seite aufruft und diese exe müsste dann auf nem server laufen!

dadurch dass es keine "ticks" gibt, erscheint das game in realtime, also man erhält alle paar sekunden neun ressourcen.
diesen effekt würde ich gern beibehalten und mit webcron hab ich minimale aktualisierung auf 1h oder?
dadurch ist dieser effekt leider auch nicht mehr gegeben!
 
Wenn du einen externen Rechner die 2-sekündigen Ticks generieren lässt, dann schafft das eine Abhängigkeit, die sich recht schlimm auf das Spiel auswirken kann. Würde ich nicht machen.

Ein Cronjob kann technisch gesehen beliebig oft aufgerufen werden, nicht nur 1x pro Stunde. Aber das hängt halt von deinem Provider ab, was der dir erlaubt! Wenn er dir nur 1x pro Stunde erlaubt, ist das nicht so toll.

2-sekündige Ticks sind recht anspruchsvoll, allerdings nicht wegen des "Truppenproblems", das sich noch vergleichsweise einfach lösen lässt, sondern wegen der Synchronisierung der Daten. Erstens erzeugt das eine massive Last auf dem Server, wenn einige Hundert Spieler am Start sind, und außerdem muss man aufpassen, dass sich die ganzen vielen Dateizugriffe nicht gegenseitig ins Gehege kommen.

Wieso müssen es denn unbedingt 2 Sekunden sein? Denk daran, dass es nun einmal ein BROWSERgame ist. Das ist nicht das Medium für Echtzeit! Tuns nicht auch 30 oder 60 Sekunden? Auch das ist noch fast Echtzeit im Vergleich zu anderen Games, die Ticks von mindestens 15 Minuten verwenden.

Gawayn
 
Zuletzt bearbeitet:
30 sek wären auch nicht so schlimm aber dann bleibt immer noch das problem wie ich diese datei aufrufe...

1min ist auch ok, wie gesagt das problem des aufrufes bleibt jedoch :(
 
Hm ist sehr aufwendig das zu ändern, bzw uff das wär ein ziemlich heftiger aufwand wäre aber realisierbar...
 
Ich schätze einfach mal das, dass Basisscript auf rudimindärer Basis läuft, sprich Stand Alone. Es ist dann doch wirklich nun ein leichtes alle 30 Sekunden per Cron Job die Daten zu aktualisieren. Ich empfehle aber eher 2 Minuten.
Ein wirklich gutes Serverpaket bietet daher 1und1. Sehr schnell und ausgestattet mit Sekunden Cron Jobs die man wahlweise per AdminOberfläche Confixx oder im Administrationsmenu im 1un1 Center einstellen kann. Eine einfache Angelegenheit wo man eine menge Ressourcen spart.

In diesem Sinne
 
Wie gesagt, ist das mit dem Cronjob nicht unbedingt realisierbar. Es kommt dabei stark auf die Aufgabe an. Es kann durchaus vorkommen, dass durch einen Cronjob die Serverlast zu groß wird.

Gawayn
 
also derzeit (10 user) liegt die auslastung meines rechners bei 2% oder so....
da rennt aber windows, winamp und 10 andere fenster auch noch :)

hmmm
1un1 bietet cronjobs ?
 
Zurück