mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 23.04.2024 13:46 Benutzername: Passwort: Auto-Login

Thema: Performanceprobleme bei Browsergame vom 26.06.2009


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Performanceprobleme bei Browsergame
Seite: 1, 2  Weiter
Autor Nachricht
chrizzz0r
Threadersteller

Dabei seit: 24.07.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Fr 26.06.2009 20:59
Titel

Performanceprobleme bei Browsergame

Antworten mit Zitat Zum Seitenanfang

Hallo,

ich programmiere mit PHP ein browsergame, es geht um Fussball. Eingebaut ist auch ein Feature, das sich "Live-Spiel" nennt - man hat die möglichkeit, auf einem einfach gehaltenen spielfeld den eigenen spieler zu steuern, um zusammen mit den teamkollegen das match zu gewinnen. ist ein spieler nicht online, wird die aktion des spielers durch eine "KI" berechnet.
Das spiel selbst läuft dabei in schritten ab: Jede minute wird per cronjob ein shell script gestartet, das mit der sleep-funktion alle 15 sekunden auf dem server die "spielberechnung" lädt, die alle aktionen aus der datenbank abruft, und daraus die neue spielsituation berechnet.
Die teilnehmer befinden sich während des spiels auf einer Seite, die alle 2 sekunden (mit AJAX) in der datenbank nach aktualisierten spielinformationen sucht: sind neue vorhanden, wird mit den php image funktionen ein bild erzeugt(10KB), das sämtliche positionen der spieler etc. darstellt, und anschliessend dem spieler auf den bildschirm geladen.

Jetzt zu meinem Problem: Während des ersten Testlaufes während des Spiels hatten wir Probleme mit der Performance - ständige Laggs. dabei waren ca 3-5 leute gleichzeitig im Spiel, und die spielberechnung hat gleichzeitig 4 spiele berechnet (die restlichen Spieler werden durch die "KI" gesteuert).
Gehostet wurde das Spiel zu diesem Zeitpunkt von server4you.de auf dem kleinsten v-server ("pro x3").

Meine Frage: Was wird Grund für die schlechte performance gewesen sein? - die gleichzeitigen Abrufe des aktuellen Spielstands vom server? die laufzeit der spielberechnung?

Momentan liegt das Browsergame auf bplaced.net, wo eine Zeitmessung der spielberechnung bei 4 gleichzeitig ablaufenden spielen im Bereich zwischen 0,2 und 1 sec liegt. - Unsere Laggs gingen beim test allerdings teilweise über 15sec. hinaus.

Die Nächste Frage ist natürlich: Wie könnte man die Performance verbessern?
Ein vergleich mit einer global verfügbaren $_Session als Speicherort der Daten während des Spiels als Alternative zur Datenbank scheint keine nennenswerte Verbesserung zu liefern (die spielberechnung läuft ja auch so schon relativ schnell).

Würde mich freuen, wenn sich jemand die zeit genommen hat das zu lesen, und wenn er einen Tipp für mich hat, noch mehr Lächel

MfG
  View user's profile Private Nachricht senden
benedict r.

Dabei seit: 07.06.2007
Ort: Friedberg (Hessen)
Alter: 33
Geschlecht: Männlich
Verfasst Sa 27.06.2009 11:34
Titel

Antworten mit Zitat Zum Seitenanfang

Hallo!

Ich habe zwar leider keine praktische Erfahrung mit Browser-Game-
Programmierung, aber ich könnte mir vorstellen, dass die Leistung
eures Servers nicht ausreichen könnte.

Zitat:
2.000 MHz Prozessor-Power
15.000 MB Webspace (SCSI)
384 MB RAM
2.048 MB FlexRAM


Sollte an sich aber genügend Speicher für 5 Anfragen sein. Rufen
die AJAX-Abfragen jedes mal eine neue Grafik ab? Das würde na-
türlich einen enormen Unterschied machen.


Grüße,
Benedikt
  View user's profile Private Nachricht senden
Anzeige
Anzeige
chrizzz0r
Threadersteller

Dabei seit: 24.07.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Sa 27.06.2009 13:10
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
Rufen
die AJAX-Abfragen jedes mal eine neue Grafik ab?


Ja, die grafik verändert sich mit jedem Spielschritt. Dennoch unwahrscheinlich, dass der server schon bei 5 gleichzeitigen abfragen von einem 10KB grossem bild streikt, oder?

MfG
  View user's profile Private Nachricht senden
benedict r.

Dabei seit: 07.06.2007
Ort: Friedberg (Hessen)
Alter: 33
Geschlecht: Männlich
Verfasst Sa 27.06.2009 20:36
Titel

Antworten mit Zitat Zum Seitenanfang

Naja. Kommt drauf an. Rufen die AJAX-Abfragen alle 2 Sekunden die
neuen Bilder ab oder werden vorerst nur Spieldaten (Zahlen) abgerufen?


Grüße,
Benedikt
  View user's profile Private Nachricht senden
chrizzz0r
Threadersteller

Dabei seit: 24.07.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Sa 27.06.2009 20:45
Titel

Antworten mit Zitat Zum Seitenanfang

In der Datenbank stehen ja nur die Rohdaten vom Spiel, zB die Positionen der Spieler ausgedrückt in Koordinaten. Damit der Spieler aber eine schöne Anzeige bekommt, wird vom Server aus den Daten mit den PHP Image funktionen ein Bild erzeugt. Das Bild bekommt der User dann auf den Bildschirm geladen.

Ich habe schon darüber nachgedacht das Spiel mit Flash zu realisieren, sodass wirklich nurnoch die Rohdaten übermittelt werden müssen, und der Rest clientseitig erledigt wird. Aber aufgrund meiner Unsicherheit über den Nutzen wollte ich mich zuerst über die Relevanz für die Performance im Forum erkundigen *zwinker*

MfG
  View user's profile Private Nachricht senden
sjalf

Dabei seit: 21.04.2008
Ort: Berlin
Alter: -
Geschlecht: -
Verfasst Sa 27.06.2009 21:52
Titel

Antworten mit Zitat Zum Seitenanfang

Was bei 5 Spielern laggt, kann man optimieren, natürlich ... aber bei 500 wird es wieder laggen. Ich denke, du hast mit deiner Idee von ständiger Generierung ein prinzipielles Performance-Probleme, vor allem verlangst du sehr breite Internetanbindung. Außerdem solltest du dir definitiv Gedanken über viel viel Caching machen.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
chrizzz0r
Threadersteller

Dabei seit: 24.07.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Sa 27.06.2009 22:26
Titel

Antworten mit Zitat Zum Seitenanfang

Danke für die Antwort.

Zitat:
Was bei 5 Spielern laggt, kann man optimieren, natürlich ... aber bei 500 wird es wieder laggen.


Das "Live-Spiel" nimmt ja nur einen kleinen Teil des Spiels ein. Ein Spiel dauert 15min, und aller 2 Tage hat eine Mannschaft ein Spiel. Jeden Tag stellen wir 8 verschiedene Startzeiten bereit, sodass letztendlich 16 verschiedene Startzeiten vorhanden sind. Ziel ist, dass 4 Spiele gleichzeitig stattfinden können. Das würde dann 4*16 Spiele bedeuten, das macht bei 2 Mannschaften a 5 Spielern (Hallenfussball,daher nur 5) 640 Spieler, die auf einem Server Platz hätten. Gleichzeitig im Spiel sind dagegen maximal 40.

Das System der Aufteilung könnte Ich eventuell noch ausbauen.

Denkst du also, dass der Grund für die schlechte Performance die gleichzeitigen Abfragen der User sind? Denkst du, eine Umstellung auf Flash (Und damit die Übertragung von <0,1KB statt 10KB) würde das Problem lösen?

Zitat:
Außerdem solltest du dir definitiv Gedanken über viel viel Caching machen.

Was genau meinst du mit Caching? Den Cache des Users?

MfG
  View user's profile Private Nachricht senden
choise

Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht: Männlich
Verfasst Sa 27.06.2009 23:58
Titel

Antworten mit Zitat Zum Seitenanfang

du musst auf jeden fall deine bilder cachen... dh... du solltest die bilder auf dem server als reale jpgs oder was auch immer abspeichern und dann diese aufrufen und nicht jedes mal ein neues generieren.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen Performanceprobleme bei großem Webdesign-.psd und PS CS6
Tweenings vor FLVs abspielen ohne Performanceprobleme?
Browsergame Maker
3D-Miniatur-Gebäude (BrowserGame)
Wo Grafiker, Flasher, Zeichner für Browsergame finden?
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.