tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
703
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Sep 2003
    Ort
    Fürth(Franken)
    Beiträge
    1.060
    Blog-Einträge
    3
    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
    daddz
     
    be inspired...simplify...

  2. #2
    Registriert seit
    Jan 2002
    Ort
    Hamburg
    Beiträge
    2.852
    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

  3. #3
    Registriert seit
    Nov 2002
    Beiträge
    2.709
    Zitat Zitat von Sinac
    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.
    Nein, es geht nicht um das Frontend, sondern um das Backend.
    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.

  4. #4
    Registriert seit
    Sep 2003
    Ort
    Fürth(Franken)
    Beiträge
    1.060
    Blog-Einträge
    3
    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
    daddz
     
    be inspired...simplify...

  5. #5
    _Sindbad_ _Sindbad_ ist offline Rookie
    Registriert seit
    Nov 2006
    Beiträge
    0
    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

    Sindbad
    Geändert von _Sindbad_ (09.11.06 um 22:11 Uhr)
     

  6. #6
    Registriert seit
    Sep 2003
    Ort
    Fürth(Franken)
    Beiträge
    1.060
    Blog-Einträge
    3
    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
    daddz
     
    be inspired...simplify...

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 14.12.09, 15:43
  2. Antworten: 0
    Letzter Beitrag: 26.01.08, 16:02
  3. Java Server Face & Java Server Page
    Von lernen.2007 im Forum Java
    Antworten: 1
    Letzter Beitrag: 14.02.06, 13:25
  4. HP: bei java script oder iframe geht mouseover verloren
    Von Devilson im Forum HTML-Editoren
    Antworten: 0
    Letzter Beitrag: 20.02.05, 02:28