Privat-Server Netzwerk

06/03/2012 15:18 GLemon#1
Hey,

ich wollte fragen ob ihr empfehlenswerte Lib's kennt für die Netzwerk Programmierung.
Habe vor J4F einen Game Server Emulator zu schreiben, auch wenn ich vll nicht sehr weit komme. Andere frage währe welche Netzwerk Methode am effiziensten ist gibt ja mehrere sprich (Threads starten, Select Methode, Prozess starten etc.) sollte Performant laufen.

Gibt eine Public Source eines Server's der auf Thread's basiert von Aaron Anderson (Winsock Lib):


Läuft diese Performant? Bei z.b 100 Clients?
Diese könnte man schön in eine Klasse packen, oder sollte ich doch lieber selber eine eigene Server Klasse coden?

Eine andere Frage ist wo ich noch ein Problem sehe ist folgende:

Es gibt 5 Maps in jeder sind 100 Monster verteilt, diese müssen sich ja auch bewegen d.h Server muss Packets erstellen mit der Position wohingelaufen werden muss usw. nun werden diese Movement Packets quasi geflooded, wie soll man sowas noch Performancemäßig hinbekommen?

Anhand der Fragen sieht man das ich es doch vll sein lassen sollte, aber es ist nur ein J4F Projekt und würde sicher auch anderen helfen, da im Internet leider kaum was dazu gibt.

Bedanke mich schonmal ;)
06/05/2012 08:03 Tyrar#2
ich persönlich würde jeden server socket in nem eigenen thread laufen lassen, allerdings daten und neue clients über die select func abfragen..
macht für 5 server sockets 5 threads (oder 6 wenn man den main thread mit einbezieht)
06/06/2012 01:00 Kent_Brockman#3
Ich arbeite notgedrungen mit der ACE-Lib, die ist zwar recht mies dokumentiert, jedoch vollkommen in Ordnung wenn man massive Verbindungen hat.

Das Threading was mein Vorposter angesprochen hat, ist fast schon Pflicht, jedoch würde ich 500 - 1000 Sockets in einer Task/Threads-Base laufen lassen.
Die Sockets auch über diese aktualisieren.

Die Sessions für Spieler würde ich über den Socket spawnen und ggf. über einen anderen Thread updaten (was bei den WoW-Emus eh Gang und Gebe ist).
So laufen die SocketUpdates und die Sessions getrennt von einander, was Vor- aber auch Nachteile haben kann.

Zu deinen Movements: Du kannst einen Update Intervall nutzen was den flood eindämmt, wenn du z.b. das Movement nur alle 50-100ms updatest.
Jetzt kannst du nebenbei einstellen ob die Monster in deiner Sichtweite sind und nur dann die Pakete an den Client schicken, wenn das auch zutrifft.
06/06/2012 09:50 Demon-777#4
Ich würde [Only registered and activated users can see links. Click Here To Register...] vorschlagen :)