Netzwerkgeschwindigkeit



  • Hallo,

    ich programmiere zur Zeit mit einem Freund ein kleines Spiel.

    Wir haben uns dabei entschlossen, die gesamte Spiellogik auf einen Server zu verlagern und den Client - also das Spiel - nur das rendern zu überlassen.

    Der Client sendet eine Anfrage an den Server und der gibt irgendwas zurück. Auf der Basis zeichnet der Client dann was schönes für den Benutzer.

    Das Programm soll einen Single-Player Modus unterstützen, wie auch einen Multi-Player Modus (online und "offline"). Beide Modi unterscheiden sich im Grunde nicht. Immer wird mit dem Server gearbeitet. Bei der Multi-Player offline Version wird ebenfalls mit dem Server gearbeitet und beispielsweise zwei Verbindungen mit ein und dem selben PC hergestellt (Es sitzen bspw. zwei Spieler am PC). Der Server läuft natürlich bei Single- und Multi-Player Version ("offline") auf dem selben PC, wie auch der Client.

    Meine Frage ist nun, ob sich die Logikverschiebung auf den Server bei lokalen Spielen auf die Ausführgeschwindigkeit auswirkt. Ich habe mal gelesen, dass das nicht der Fall ist und eine "Netzwerkverbindung" mit dem eigenen Computer keinen Unterschied zur direkten Implementation macht. Stimmt das?

    In der Hoffnung, das Problem verständlich erklärt zu haben, verbleibe ich
    mit freundlichen Grüßen 🙂



  • Du hast sicherlich Overhead dadurch, dass du alle Ereignisse in deinem Spiel übers (an einer lokalen Maschine nur virtuelle) Netzwerk schicken musst - hiermit meine ich nicht die Dauer des Sendens selbst, die beim gleichen Rechner sicher als nahe 0 angesehen werden darf, sondern viel mehr das Erstellen und Lesen der zu versendenen Nachrichten. Da du keinerlei Logik auf dem Client haben willst, werden das mitunter sehr viele Nachrichten, so dass du insgesamt sicherlich eine schlechtere Performanz hast, als wenn du die Methoden direkt aufrufen könntest. Die Frage - die ich dir nicht beantworten kann - ist viel mehr, ob sich dieser Einbruch bemerkbar macht oder nicht. Tendenziell würde ich schon davon ausgehen, dass es ein merklicher Unterschied gegenüber einer direkten Implementierung ist - allerdings habe ich auch nahezu keine Erfahrung im Bereich der (praktischen) Spieleprogrammierung.



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    fuer ein kleines spiel wird das vollkommen ok sein. es gibt auch ein grosse spiele mit soeiner architektur. es gibt aber natuerlich grenzen, wenn physic usw. fuer viele objekte berechnet wird, wird diese daten kopiererei ein problem. zudem solltest du grundsaetzlich darueber nachdenken wieviel server und wieviel der client berechnet und welche daten dupliziert werden.

    ist z.b. gegen waende laufen nur graphik relevant und beeinflusst eigentlich keine AI? sind particle die irgendwo apprallen noch AI?

    zudem koenntet ihr daten teilen bei der offline version. z.b. muss das ganze level nicht zweimal geladen werden, jedenfalls alle statischen dinge nicht.



  • was genau meinst du mit "logik"? willst du den server wirklich alles machen lassen, also auch kollisionsabfragen usw?


Anmelden zum Antworten