Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Spiele-/Grafikprogrammierung ::  Eigener Spieleserver sinnvoll? Viele Nutzer mit wenig Daten  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
scrontch
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.08.2000
Beiträge: 1794
Beitrag scrontch Mitglied 10:17:06 06.02.2018   Titel:              Zitieren

B.Nutzer schrieb:
Soweit ich gelesen habe ist UDP weniger teuer als TCP und reicht auch. Werde versuchen dies zu verwenden. Gesicherte Verbindung hat auch sein Vorteile, aber da werden keine sensiblen Daten gesendet. Cheaten kann man auch nicht. Höchstens unter falscher Idendität könnte man spielen. Da muss ich mir noch was einfallen lassen.


Die "Gesicherte Verbindung" bei TCP bezieht sich weniger auf Cybersicherheit als darauf dass deine App sich keinen Kopf machen muss um sicherzustellen dass auch alles (und in der richtigen Reihenfolge) beim gegenüber angekommen ist.
(Das musst du sonst bei UDP nunmal irgenwie behandeln und coden)
Insofern benutze TCP! Es sei denn Du hast Realtime Anforderungen.
B.Nutzer
Unregistrierter




Beitrag B.Nutzer Unregistrierter 16:41:03 06.02.2018   Titel:              Zitieren

scrontch schrieb:

Die "Gesicherte Verbindung" bei TCP bezieht sich weniger auf Cybersicherheit als darauf dass deine App sich keinen Kopf machen muss um sicherzustellen dass auch alles (und in der richtigen Reihenfolge) beim gegenüber angekommen ist.
(Das musst du sonst bei UDP nunmal irgenwie behandeln und coden)
Insofern benutze TCP! Es sei denn Du hast Realtime Anforderungen.

Ich meinte nicht TCP direkt, sondern das auch genannte Secure Sockets Layer (SSL) oder heute eher Transport Layer Security (TLS) genannt.
Die Reihenfolge ist kein Problem, da nur aller 5 Sekunden ein Signal kommt (höchstens bei sehr schlechter Internetverbindung). Höchstens das eventuelle Ausbleiben der Nachricht kann Probleme machen.
rapso
Moderator

Benutzerprofil
Anmeldungsdatum: 17.06.2002
Beiträge: 8807
Beitrag rapso Moderator 17:13:46 06.02.2018   Titel:              Zitieren

Fang mit TCP an, bis alles funzt, danach UDP einzubauen ist nicht viel code. UDP ist nicht schwierig, aber kann viel debugzeit sein bis man alle seltenen faelle gefixt hat. fuer den prototypen waere das imho ein risikofaktor ohne vorteile.

spaeter macht natuerlich nur UDP sinn, damit kannst du selbst die packete/verbindungen verwalten und brauchst nicht den OS overhead.

_________________
follow me|
-Mod im Spiele-/Grafikprogrammierung
Gast3
Unregistrierter




Beitrag Gast3 Unregistrierter 11:59:48 08.02.2018   Titel:              Zitieren

Zitat:
Das Spiel ist recht datensparsam (für den Server). I.d.R. müssen pro Spieler nur etwa aller 5 Sekunden 2 Byte Informationen gesendet/empfangen werden. Pro Match (5min) einmal auch etwa 10-50 Byte. Pi mal Daumen kommt man dann im Schnitt auf:
-1Byte pro Sekunde je Match I/O.
-Arbeitsspeichernutzung je Match: ~50 Byte
-CPU-Insturuktionen je Match: <100 pro Sekunde (+Instuktionen für Datenempfang und senden)
-Festplattenspeicher je Spieler: 10 Byte
-Ping fast egal: <1sec

Was glaubt wieviele Leute da auf einer Maschine gleichzeitig spielen können?


1. die CPU-Instruktions-Angabe ist totaler Quatsch und absolut unrealistisch
- doch ein Trollversuch?

2. wenn du keine Erfahrung mit TCP/IP Server Implementierung hast kannst du problemlos einen miserabel skalierenden Server bauen - absolut problemlos
-Thread per Client - skaliert nicht sonderlich gut
-Proactor Pattern (z.B. wie bei Boost/Asio)
-Multiprocessing (nicht nur Multithreading)

3. wenn deine Kommunikation wirklich so trivial ist würde ich einfach mal
eine kleine Lösung bauen die mit 1000 Fake Clients testen und schauen ob alles ausreichend gut funktioniert, wenn du dann die 100.000 Marke sprengst schreibst du den ganzen Kommunikations-Code einfach in 1-2 Tagen um oder passt ihn an und fertig ist

4. wenn du schon so zahlen auf den Tisch legst wäre es schon mal ganz interessant was deine Test-Strategie für 100-200.000 Clients wäre, also ohne
echte 100.000 Clients oder mehr? Falls du da keinen Plan hast würde ich einfach mal Anfangen was zu machen - der TCP/IP-Server dafür wird mit Boost/Asio ca. 2-3h Zeit brauchen dann kannst du testen

definitiv wird eine einfach zu implementierende 100-1000 Client-Lösung nicht mit einer 200.000 Client Anforderung klar kommen - weil die ganz anders aufgebaut sein muss
SeppJ
Global Moderator

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 28573
Beitrag SeppJ Global Moderator 13:45:51 08.02.2018   Titel:              Zitieren

Gast3 schrieb:
1. die CPU-Instruktions-Angabe ist totaler Quatsch und absolut unrealistisch
- doch ein Trollversuch?
Der Thread geht darum, dass jemand mit seinem selbstgeschriebenen Brettspiel mehrere hunderttausend Spieler gleichzeitig(!) erwartet¹. Was denkst du?





¹: Mehrere hunderttausend weltweit gleichzeitig ist zum Beispiel eine typische Zahl für solch kleine Nischentitel wie World of Warcraft.

_________________
Korrekte Rechtschreibung und Grammatik sind das sprachliche Äquivalent zu einer Dusche und gepflegter Kleidung.
rapso
Moderator

Benutzerprofil
Anmeldungsdatum: 17.06.2002
Beiträge: 8807
Beitrag rapso Moderator 14:28:15 08.02.2018   Titel:              Zitieren

wenn ihr helfen wollt, dann helft, wenn nicht, dann muesst ihr nichts schreiben. Aber worst case ist, falls ein troll einen forumsbereich vom thema abbringen will und hier jemand einen meta-chat ala "ist es ein troll?" anfaengt, denn: 100% beweisen koennen wir es nicht, einem legitimen user fahren wir an und ein troll haette seine genugtuung. Also :arrow: nur hilfreich zum Thema antworten, bitte.

_________________
follow me|
-Mod im Spiele-/Grafikprogrammierung
B.Nutzer
Unregistrierter




Beitrag B.Nutzer Unregistrierter 05:15:05 09.02.2018   Titel:              Zitieren

Sooo.., ich habe mal einen Prototypen mit UDP gemacht.

Durch Fehlerkorrekturen und Dinge, die ich noch vergessen hatte, sind, wie ihr schon vermutet habt, noch ein paar Instruktionen und Speicher hinzugekommen. Hält sich jedoch noch in Grenzen.
Jedoch, konnte ich leider nur bis etwa 28.000 Clienten testen. Da mir dann die Ports ausgingen und kein freier mehr gefunden werden konnte.

Dabei braucht der Server maximal 16.3MB Arbeitsspeicher und hat meist <1% CPU-Auslastung (beides Werte vom System-monitor). Höchste CPU-Wert, den ich gesehen habe war 2%. Ein Ranksystem für alle Spieler ist noch nicht mit drin.

Die 200.000 warn tatsächlich bisschen hoch gegriffen. War nur der worst bzw best-case. Und das auch nur um zu sagen, dass selbst dann die CPU/Speicher-Auslastung verschwindet gering wäre. Aber selbst, wenn die oben gennanten Werte 10 mal so groß wären, wäre das immer noch sehr wenig.


Mit 2 Spielern braucht es 14.1MB Speicher. Macht also ca. 80 Byte je Client (2.2MB mehr für 28.000). Bei 200.000 wärn das also insgesammt ca. 30MB Speicher. Da war meine Schätzung zwar 60% und 100% daneben aber trotzdem gar nicht mal so schlecht (50Byte und 15MB). Ich verwende jetzt schon, falls möglich sparsame Datentypen wie char und Co. Optimierung ist aber bestimmt noch drin.
Die Punkteliste/Rang von allen Spielern ist jedoch noch nicht mit drin. Auch die Suche nach gleichguten Gegner nicht. Dies wird an den Zahlen aber nicht groß was ändern.

Bleibt also bei der Frage, ob es auch Angebote für weniger ressourcenhungrige Server gibt. 28.000 Clienten für einen Server scheinen zumindest möglich.
C++ Forum :: Spiele-/Grafikprogrammierung ::  Eigener Spieleserver sinnvoll? Viele Nutzer mit wenig Daten  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.