ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
703
703
EMPFEHLEN
-
Hallo,
ich wollte mal wissen was perfomanter ist!
Das ganze soll dann auf einem Web-Server laufen und anfragen von einem BrowserGame verarbeiten bzw. nach einer bestimmten Zeit alle eingegangenen Befehle abarbeitet.
Wäre es besser wenn ich einen Java-Server programmiere, der dann auf dem Server im Hintergrund läuft und z.B. alle 5 Minuten die erhaltenen Befehle ausführt ( z.b. Kämpfe, Ressourcenupdate, etc...).
Alternativ könnten auch alle Befehle in eine MySQL-DB geschrieben werden und werden dann abgearbeitet.
Die andere Möglichkeite wäre ein CronJob, der ein PHP-Script aufruft, das dann auch in der DB alle Befehle durchführt.
Oder man könnte auch mit timestamps arbeiten die bei jedem Seiten-Refresh überprüft werden und dann gegebenenfalls Ressourcen erhöhen etc...
Welche der 4 Möglichkeiten wär am schlauesten/perfomantesten bei ziemlich vielen Spielern ( mögliches Problem bei Möglichkeit 4 )
Danke schonmal!
greetz
daddzbe inspired...simplify...
-
Also das kommt ganz drauf an wie das Game aussehen soll, so etwas DroidWars mäßiges kannst du wohl ruhig in Verbindung mit PHP machen, aber etwas "aktives" z.B. ein Billardgame solltest du mit Java machen oder mit Flash etc.
Wenn euch mein Beitrag gefällt, meldet euch als Referal bei Dropbox an: http://db.tt/4tKC8O5
-
Nein, es geht nicht um das Frontend, sondern um das Backend.
Zitat von Sinac
Und meine herzerfrischende Antwort ist, dass du es in der Sprache machen solltest, die du (besser) beherrscht. Java sollte schneller sein, ist aber auch, von den Kosten für einen Server etc. pp., teurer und um »etwas« komplizierter.Im Ruhestand.
-
Hmm, also rein Kosten-Technisch ist das nicht so das Problem. Es wird auf eigenen Servern laufen. Ich hab mir halt gedacht, das es so läuft wie z.B. der Apache-Server -> als eigenständiges Programm.
Vom können her...ist PHP eigentlich die bessere Wahl, aber da ich auch momentan am Java lernen bin und auch schon was in Richtung Server-/Client-Software gemacht hab dachte ich mir, dass das eine gute Möglichkeit wäre meine Kenntnisse noch zu erweitern.
greetz
daddzbe inspired...simplify...
-
hallo
ich arbeite momentan an einem generischen und voll konfigurierbaren browsergame-server in Java, der dynamische daten in eine datenbank speichert. in der konfiguration werden die game-objekte, die units und items zuerst mittels XML modeliert, dynamische attribute werden für jeden user in die DB geschrieben... und so weiter. tasks werden in der DB abgespeichert und ein eingens dafür zuständiger thread checkt diese in einem bestimmten intervall und führt die task aus, wenn die wait-time abgelaufen ist.
das problem stellte sich mir auch; soll ich items, die konstant wachsen, wie resourcen (holz, lehm, getreide u.s.w) via eines eigenen threads, eines immer laufenden tasks steuern oder gäbe es wohl eine performantere methode?
dann kam ich auf die idee, dem attribute noch den intervall wert zuzuschreiben und den timestamp des letzten updates. so kann der momentane wert der resource erst bei einem konkreten zugriff auf den wert also einem user request, berechnet und upgedated werden.
das sieht dann in der DB etwa so aus:
TABLE: COUNTED_ATTRIBUTES
COLUMN: id (integer) (primary key)
COLUMN: object (game object reference) (foreign key)
COLUMN: name (VARCHAR)
COLUMN: value (integer)
COLUMN: interval (integer)
COLUMN: lastUpdate (timestamp)
nun kann bei einem zugriff mit interval, lastUpdate und value (wo immer der wert zum zeitpunkt last update steht) der aktuelle wert berechnet werden und upgedated werden.
konkretes beispiel:
value = 3; interval = 1 (/h); lastUpdate=1 (vor einer stunde)
nun erfolgt ein request auf die aktuelle value. erst muss die aktuelle value berechnet, dann upgadated werden, dann kann der request ausgeführt werden --->
requestTime = 2 --->
set value = value + interval * ( requestTime - lastUpdate );
set lastUpdate = requestTime;
return value;
der vorteil ist, dass es keine speziellen task braucht, um die wert aktuell zu halten, diese werden einfach immer bei bedarf berechnet, und nur dann. dies ist viel performanter.
zu beachten ist nocht, dass bei interval oder value änderungen immer zuerst ein update der value gemacht wird, bevor der neue intervall wert gesetzt wird oder bevor die value verändert wird.
hoffe dies hilft dir... grüsse
SindbadGeändert von _Sindbad_ (09.11.06 um 22:11 Uhr)
-
Leider ist das Projekt gestorben, aber der Server wurde weiterverwendet (zumindest das Konzept) für ein anderes Projekt(siehe Signatur).
Zum Glück hab ich ihn damals schon gut durchdacht und dynamisch aufgebaut, sodass man ihn ganz einfach umfunktionieren kann.
greetz
daddzbe inspired...simplify...
Ähnliche Themen
-
Passwort ändern oder Registrier Script für Login Script
Von SSchaffrath im Forum PHPAntworten: 8Letzter Beitrag: 14.12.09, 15:43 -
Flash <-> Server komunikation mit Socket :: Server mit Java, PHP oder was anderem?
Von PHs im Forum Flash PlattformAntworten: 0Letzter Beitrag: 26.01.08, 16:02 -
Java Server Face & Java Server Page
Von lernen.2007 im Forum JavaAntworten: 1Letzter Beitrag: 14.02.06, 13:25 -
HP: bei java script oder iframe geht mouseover verloren
Von Devilson im Forum HTML-EditorenAntworten: 0Letzter Beitrag: 20.02.05, 02:28





Zitieren
Login





