Ressourcen verteilen!

FeX

Grünschnabel
aaaaalso mein prob:
ich will ein onlinegame programmieren (weiss sehr schwer :)) aber ich suche halt neue herausforderungen!
so nun zum prob:

ne dauerschleife die alle meinetwegen 15 mins ressourcen verteilen
Mir ist bisher nur die forschleife bekannt mit der so etwas evt möglich wäre. aber da muss der user ja nach den 15 mins immer online sein muss. gibts da jetzte noch ne andre schleife oder ne funktion oder soetwas in der art habe mir schon sehr viele gedanken gemacht aber bin bisher zu keinem ergebnis gekommen
Hoffe es kann mir wer helfen!
Ciao FeX aka Deception :rolleyes:
 
Vergiss das mit PHP mal ganz schnell.

PHP-Scripts haben eine Timeout-Zeit von normalerweise höchstens 30 Sekunden. Was Du suchst ist unter Unix ein "Cronjob" und unter Windows ein "Scheduled Task"... sowas kriegst Du aber normalerweise nur als ROOT vom Webserver.

Damit kann man dann z. B. ein PHP-Script, das eine Aufgabe erledigen soll, starten.

Dieses Thema hatten wir aber schon X mal im Forum ...


DEN SEARCH BUTTON VERWENDEN!!!
 
Wobei es bei Onlinegames sinnvoller wäre die Implementierung dieser immer wieder auftretenden Berechnungen und Datenbankoperationen zwecks höherer Performanz in C bzw. C++ zu programmieren und dann per Cronjob auszuführen. root-Zugriff ist für ein solches Projekt natürlich selbstverständlich.
 
alternativ kannst du mit public querys arbeiten!

Also einfach beim zugriff irgendeines users (spielers) ein paar querys in einer include ausführen die das game auf den aktuellen stand bringen (ressourcen verteilen, baustatus updaten etc...) dh: wenn derjenige spieler dann auf seine ressourcen schaut sieht er die aktuellen werte und alle werte aller anderen spieler werden dann auch auf aktuellen stand gebracht...

grosser nachteil: bei vielen spielern werden die querys datenbank-killend :)

good luck!
 
Außerdem krieg man mit der Methode Probleme, wenn mal eine längere Zeit lang kein Spieler eine Aktion macht. Man müsste immer zuerst checken wieviele Ticks vergangen sind, und dann zurückrechnen... spätestens wenn man mal Zufallsereignisse einbauen will, kriegt man somit Probleme.
 
PHP-Scripts haben eine Timeout-Zeit von normalerweise höchstens 30 Sekunden. Was Du suchst ist unter Unix ein "Cronjob" und unter Windows ein ""... sowas kriegst Du aber normalerweise nur als ROOT vom Webserver.

also ich bin ein windows user! *schäm* naja wie mach ich das mit dem Scheduled Task wie greife ich darauf zu etc.. oder gehört das nicht weiter in das forum? ich weiss im mom leider nit wie ich danach suchen soll in welchen foren usw sonst würde ich ja suchen naja warte nun mal hier auf antwort!

Ciao FeX aka Deception
 
Und du willst das auf deinem eigenen Windowsrechner laufen lassen? Das kann ich absolut nicht empfehlen... erstens wäre da eine statische IP nicht ganz unpraktisch, zweitens genügend Upstream... wobei ich jetzt mal bezweifle, dass du Zugriff auf diese Features hast. Wenn doch, dann ist da immer noch das Problem mit der Performanz, die auf einem Linuxsystem wohl doch höher wäre...
 
Zuletzt bearbeitet:
eigentlich müsste das doch auch nur in php möglich sein...
ich würds so machen:
eine funktion schreiben, der man die playerid übergibt, und dann alles von dem aktualisiert. also resourcen hinzufügen, truppen und gebäude verwalten etc...
wenn man sich einloggt wird man dann nur selber aktualisiert, nur sobald man mit einem anderen spiele in kontakt kommt, z.b. durch profil angucken oder so wird auch für den spieler die funktion gestartet. sollte einiges an performance sparen gegenüber der variante, wo alle spieler aktualisiert werden..
 
sollte einiges an performance sparen gegenüber der variante, wo alle spieler aktualisiert werden..

Das wage ich jetzt mal zu bezweifeln, denn: Immer wenn ein Spieler mit einem anderen in Kontakt tritt, soll also aktualisiert werden. Diese Situation wird aber wahrscheinlich recht oft eintreten, und manchmal wird ein Spieler auch mit mehreren Spielern gleichzeitig in Kontakt treten... Es tritt also mit steigender Spieleranzahl ein Aktualisierungs-Overkill auf, da immer öfter aktualisiert wird, obwohl es gar nicht nötig wäre. Noch dazu finden die Aktualisierungen ständig statt, also nicht nur beispielsweise alle 5 Minuten. Das macht (wiederum bei steigender Spieleranzahl) ein flüssiges Spielen fast unmöglich und raubt somit Spielspaß. Außerdem wird mit immer mehr Features im Spiel die zusätzliche Programmierarbeit enorm. Um das ganze dennoch möglichst performant zu halten, wird man wohl bei jeder Situation neu entscheiden müssen, welche Daten eines Spielers jetzt aktualisiert werden müssen und welche nicht. Fügt man jetzt im Nachhinein ein neues Feature hinzu, müssen alle anderen Aktionen, die ein Spieler in Verbindung mit einem anderen ausführen kann, wiederum neu überdacht und umgeschrieben werden.

Deshalb wäre wohl für ein ernsthaftes Projekt die Cronjob-Variante vorzuziehen. Wenn's nur was kleines, leicht überschaubares werden soll, spricht natürlich nichts gegen eine non-Cronjob-Variante :)
 
jo schon nur jez denk mal nach...

ein spieler geht 2tage nicht rein, sagen wir in den 2tagen baut ein anderer ein schiff,oder panzer kA irgendwas und fahrt fliegt oder rollt eben rüber zum anderen und greift den an.
wenn der andere sich nicht einloggt wird also auch nicht "weitergebaut", da müsstest du bei echt jeder aktion die iirgendwie andere spieler betrifft auch diese aktualisieren
 
Zurück