Einige ideen um die Serverlast der engine zu mindern

Hier könnt ihr eure kreativen Ergüsse verewigen. In diesem Forum könnt ihr Vorschläge für neue Items, NPCs und dergleichen einbringen.
ph34r_0ph_l34der
kleines Schaf
Beiträge: 3
Registriert: 14. Dez 2008, 17:22

Einige ideen um die Serverlast der engine zu mindern

Beitrag von ph34r_0ph_l34der » 14. Dez 2008, 17:59

Hallo,

ich bin seid kurzem Freewarspieler und habe auch vorher schon immer ma wieder zugeschaut( ein Kumpel von mir ist seid 2 Jahren aktiv)
Auf dem Wiki und so steht überall, das freewar aufgrund der engine ziemlich beschränkt ist, da diese scheinbar ziemlich CPU zieht und es deswegen auch bei eigentlich geringen Spielerzahlen ( 30 -200 ) schon lag gibt.

Ich hätte hier meinen Senf aus jetzt fast 7 Jahren codeerfahrung, wie man das ganze etwas schneller laufen lassen könnte ( geht direkt an sotrax):
Ich weiss natürlich nicht, wie freewar programmiert ist, daher werden einige von den sachen sicher schon gemacht worden sein:

1) PHP-Caching aktivieren:
Dies redutziert die compilezeit von PHP ohne änderungen am Code:
Sollte eigentlich schon an sein, wenn nicht, geht das einfach und die meisten cacher kosten nichts:
z.B. währen da:
http://www.php-accelerator.co.uk/
http://pecl.php.net/package/APC ( APC, nimmt die Wikipedia)
http://eaccelerator.net/ ( wie der TurkMMCache. hatte ich selber und war sehr zufrieden, mein jetziger serverop hat aber überall Xcache installiert)
http://xcache.lighttpd.net/


Diese können PHP selbst um einige hundert prozent schneller machen.
2) Persistene Datenbankverbindungen.
Sollten eigentlich auch schon da sein. Machen das ganze auch noch mal schneller

3) wichtig für browsergames: (HIER IST das wichtigste)
http://www.danga.com/memcached/

Das ist ein system mit dem ihr datenbankabfragen und auch andere daten "cachen" könnt.
Daten aus diesem cache zu holen und zu speichern ist um vieles schneller als eine Datenbank, da sowohl alle daten im arbeitsspeicher vorgehalten werden, als auch keine komplexen SQL-Features implementiert sein müssen) .
Zum einen könnt ihr im memcached, wie auch auf der seite empfohlen, häufige Datenbankabfragen zwischenspeichern (z.B. "Welche Items hat spieler xy").
Ein Weg währe z.B. die items, stats und ähnliches aller spieler, die online sind, im memcached abzulegen und alle paar minuten (z.B. wenn die serverlast gerade niedrig ist: cron oder ähnliches) die daten aller spieler in eine persistente( also MySQL) datenbank abzuspeichern. Dabei könnten dann auch die Daten aller inaktiven und ausgeloggten Spieler aus dem memcached entfernt werden, damit dieser klein und effizient bleibt. Wenn ein neuer spieler einloggt ist er noch nicht im memcache vorhanden und wird aus der Datenbank nachgeladen. Deswegen gibt es sehr viel weniger datenbankabfragen( < 1% normalerweise, da ja alles schon im speicher des memcacheds abgespeichtert ist) und somit weniger Festplatten/ prozessoraktivität -> Die engine läuft schneller und kann mehr anfragen / sekunde bearbeiten.

Zum anderen müssen ja nicht alle informationen permanent im memcached abgespeichert werden -> zum beispiel ob ein gewisser NPC gespawnt ist muss ja nicht zwingend in der Datenbank stehen. Solche dinge können auch einfach nur im memcached geschrieben werden-> nach einem kompletten serverausfall sind dann eben alle NPCs wieder mit vollen HP auf der startposition . Ähnlich verhält sich der Cache und sogar items die nur rumliegen....

4) generelles auslagern periodischer aufgaben in cronjobs.
Wie oben bereits angedeutet können mit dem Linux / UNIX (oder wenn ihr das habt auch Windows-portierbarem) Cron-System aufgaben periodisch durchgeführt werden , zum beispiel das respawnen von monstern. Anstelle in jeder clientanfrage zu prüfen, ob ein monster respawnt werden muss, ob sich ein monster bewegt oder ähnlcihes, könnte dieser PHP code auch einfach in einem anderen script abgelegt werden, dass das z.B. alle 30 sekunden oder noch häufiger von cron ausgeführt wird.
Somit "laggen" client nicht, wenn ihre anfrage eben auch mal die Monster-KI oder einige respawns erledigen muss.


5) Chat optional in Flash implementieren.
Der chat momentan ist durch ein häufig aktualisiertes javascript/HTML mit PHP implementiert -> das ist langsam und setzt dem server großer last aus. Fast alle clients haben heutzutage flash also könnte man bei allen, die Flash haben, ein einfaches Flash script schreiben, dass den Chat anbietet (Flash kann dinge wie chat sehr viel schneller implementieren als Javascript, z.B. durch flash-HTTP-data connections). Dies sieht dann genauso aus wie jetzt, nur hat der server weniger arbeit.
Alle clients die kein Flash-Plugin haben sehen weiterhin das gewohnte Interface und vllt eine Notiz, dass sie Freewar die arbeit leichter machenund weniger lag haben, wenn sie flash installieren( selbiges gilt für leute hinter Proxies, o ä. die so konfiguriert sind, dass Flash- daten nicht durchkönnen).


So ich hoffe diese paar dinge helfen euch irgendwie - Solltet ihr hilfe beim coden oder so brauchen bin ich immer wieder hier aktiv oder unter meinem namen auf ActionFreewar zu erreichen...

Edit: nehmt dies nicht als beleidigung- es ist eher ein gut gemeinter Rat, damit FW noch schneller laufen kann. Euer spiel ist echt cool, vor allem wenn man betrachtet, dass ihr sogut wie keine resourcen habt( im Vergleich zu z.B. ogame)

Benutzeravatar
Taruso
Nachtgonk
Beiträge: 238
Registriert: 28. Sep 2008, 16:26

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von Taruso » 14. Dez 2008, 19:27

PN an Sotrax schicken?=)
Bild

ph34r_0ph_l34der
kleines Schaf
Beiträge: 3
Registriert: 14. Dez 2008, 17:22

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von ph34r_0ph_l34der » 14. Dez 2008, 19:36

rgr, wird gemacht

hackerzzzz
Kopolaspinne
Beiträge: 1237
Registriert: 7. Aug 2007, 15:59
Wohnort: Lardikia

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von hackerzzzz » 16. Dez 2008, 15:59

Denkst du ernsthaft, Sotrax hat solche Dinge noch nicht in Betracht gezogen, oder nicht bereits realisiert?
Freewar ist kein Browser-Spiel dass auf einem kleine Mini-Server läuft,.. wird ja auch immer wieder bewiesen.
Sotrax steckt unmengen von Geldern in die gesamte Server-Landschaft und ich vermute mal einfach, dass er sich dabei auch auf ein Betreuungsteam oÄ verlassen kann.

Ich denke Anmerkungen sind ja schön und gut, jedoch bezweifle ich, dass ein User, der die internen Abläufe von Freewar nicht kennt, irgendetwas an Verbesserungsvorschlägen anbringen kann, als ein Admin.

Deine Anmerkungen sind sicher nicht schlecht, jedoch würde ich mir da nicht allzugrosse Hoffnungen machen, dass du damit Sotrax helfen kannst.

*duck*
Die Hoffnung stirbt zuletzt.

Benutzeravatar
-MusK-
Gelbbart-Yeti
Beiträge: 2175
Registriert: 17. Apr 2006, 19:26
Wohnort: Die Festung. Wo sonst?

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von -MusK- » 16. Dez 2008, 16:29

na, besser es wird gesagt und keiner brauchts, als andersrum...
der herzhafteste forenbeitrag eines pk, den ich je gelesen habe:

abschaltbares pvp halte ich für blödsinn,da es am natlastatus nichts ändern wird, außer das keiner mehr pvp anhat und man garkeinen mehr killen kann

spricht für sich, oder?

Benutzeravatar
Schmiddi
Feuervogel
Beiträge: 4467
Registriert: 26. Jul 2005, 17:09

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von Schmiddi » 16. Dez 2008, 16:58

Ich finds gut, dass er das wenigstens sagt. Wenn sich was findet, was die Server schneller macht, ists besser, als wenn niemand sowas erwähnt und man es nie merkt

samira-w9
Kaklatron
Beiträge: 30
Registriert: 4. Mär 2008, 19:40

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von samira-w9 » 16. Dez 2008, 17:38

omg, computerfreaks oO

Benutzeravatar
AnubisII
Wächter des Vulkans
Beiträge: 299
Registriert: 14. Mai 2005, 12:22
Wohnort: Zu Hause

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von AnubisII » 17. Dez 2008, 18:06

Nur weil man so etwas interessant findet, ist man noch lange kein Freak, auch wenn ich nicht zu diesen Leuten gehöre(Ein Freund hat mir mal ein bisschen beigebracht, weils sau Spaß machen soll, fand ich aber nich wirklich und habs in kürzester Zeit wieder vergessen xD). Das Kennen von irgendwelchen Promis, Fußballspielern o. auch von klassischen Opern etc. ist wesentlich nutzloser, solche Leute werden aber nicht Freaks genannt, also ist dein Post nicht nur unnötig, sondern auch unlogisch.

€: Ich finds natürlich gut, dass jemand helfen will, auch wenns sinnlos gewesen sein mag.
Zuletzt geändert von AnubisII am 17. Dez 2008, 18:50, insgesamt 1-mal geändert.

Gruenblatt-Stalker
Wächter des Vulkans
Beiträge: 325
Registriert: 22. Okt 2008, 23:32

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von Gruenblatt-Stalker » 17. Dez 2008, 18:45

Vielleicht falscher Ort, aber danke für deine Arbeit und deine Ideen.

Helfen kanns immer.

Don't feed Trolls.

Und hört auf, Ideen in den Boden stampfen zu wollen, verdammt nochmal, genau deswegen sind viele Menschen zurückgezogen und können ihre Ideen nicht mitteilen

hrmpf
Gruenblatt-Stalker aka Arastrus
Sotrax hat geschrieben:Es gibt hier keine Demokratie
Blumenpflücker
Stufe 80 / 80

Benutzeravatar
Maverick123
Zauberer der Bergwiesen
Beiträge: 625
Registriert: 27. Nov 2005, 13:46

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von Maverick123 » 19. Dez 2008, 06:47

AnubisII hat geschrieben:€: Ich finds natürlich gut, dass jemand helfen will, auch wenns sinnlos gewesen sein mag.
Wer sagt, dass es sinnlos gewesen ist? Hört sich danach an, als wüsste der Threadersteller, wovon er redet, wenn Sotrax das liest, kann er bestimmt was davon verwenden ;)
BildHerbstwind - Welt 13

Benutzeravatar
halbleiter
Feuerwolf
Beiträge: 67
Registriert: 22. Feb 2007, 21:38

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von halbleiter » 19. Dez 2008, 10:24

Bitte kein Flash - weg mit dem proprietären Kram...

Benutzeravatar
-MusK-
Gelbbart-Yeti
Beiträge: 2175
Registriert: 17. Apr 2006, 19:26
Wohnort: Die Festung. Wo sonst?

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von -MusK- » 19. Dez 2008, 10:56

wie gesagt: der te hat sich eine platte gemacht und technisch versiert argumentiert. falls und wenn der scheffe davon was nutzen kann - umso besser. jedes gelaber aka klugsch... ist imho deplaziert. an sich gehört dieser thread als pn an sotrax und unkommentiert.
sry, aber so isses.
ps: ich vermisse noch das dagegen und den :roll: :roll: von rondo...
der herzhafteste forenbeitrag eines pk, den ich je gelesen habe:

abschaltbares pvp halte ich für blödsinn,da es am natlastatus nichts ändern wird, außer das keiner mehr pvp anhat und man garkeinen mehr killen kann

spricht für sich, oder?

ph34r_0ph_l34der
kleines Schaf
Beiträge: 3
Registriert: 14. Dez 2008, 17:22

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von ph34r_0ph_l34der » 23. Dez 2008, 01:05

nuja es stimmt wirklich- es ist alles schon da oder der cheffel will es nicht benutzen (memcache). Sein game - seine Server -seine Entscheidung ^^·

Nur so ganz am Rande: Wenn ihr mich für unfähig haltet behaltet es doch für euch oder gebt bessere Vorschläge ab, bzw sagt, warum meine Vorschläge schlecht sind.

Benutzeravatar
damh
großer Laubbär
Beiträge: 2591
Registriert: 15. Mär 2005, 01:10

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von damh » 25. Dez 2008, 16:47

Punkt 1-4 laufen eh schon.

Punkt 5 stimmt schon. Der Chat ist bisschen umständlich programmiert, aber genauso müsste man theoretisch auch bei den anderen Frames dann rangehen und das System ausbauen. Aber mal ehrlich, wenn man den Server optimieren will, soll man ihn gleich neu programmieren und dann:
- ohne proprietäre Datenbank, da selbst bei bester Nutzung viel zu lahm (für Prototypen ist das eine nette Entwicklungshilfe, aber das wars dann auch schon :P).
- ohne PHP, da selbst mit Vorübersetzung, der Code viel zu lahm ist.
- ohne Apache, da ebenfalls zu doof und lahm (gerade wenn man in den Belastungsbereich kommt).

Aber im groben und ganzen muss ich Dir Recht geben, dass es noch viel besser funktionieren könnte.

Gruß damh
Glück ist das Maß, in dem ich zulasse, dass meine Bedürfnisse erfüllt werden können.
=> Wer glücklich sein will, muss wissen, was er braucht.
=> Wer weiß, was er braucht, kann beobachten, wer oder was ihm im Weg steht. Man ist es fast immer selbst.

Benutzeravatar
gloop
Gelbbart-Yeti
Beiträge: 2377
Registriert: 28. Dez 2003, 00:24
Kontaktdaten:

Re: Einige ideen um die Serverlast der engine zu mindern

Beitrag von gloop » 25. Dez 2008, 19:44

Dann kann er glei alles in c++ schreiben und das dann Spiel vertreiben, dann kann man sich glei wow kaufen. Grad das alles so wies ist ist freewar. Solle nix dran geändert werden, vor allem flash finde ich nicht wirklich eine schnellere variante als das ajax (obwohl ajax ziemlich viel headerinfos hat) ...

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 6 Gäste