Ist es einfach ein Spiel online-fähig zu machen?

  • Ist das überhaupt möglich?
    Welche Voraussetzungen braucht man dafür? Über das Netzwerk werden Koordinaten der Spieler, deren Aussehen, Neigungswinkel und so Sachen ausgetauscht. Wie teuer wird so ein Server der 100 Leute aushält (10 Spieler pro Map)? Auf Youtube sieht man ja Leute die ihr "Spiel" online-fähig machen. Kann ich das auch?
    Wenn ihr sagt das geht nicht dann muss ich das miteinbeziehen. :O

    • Offizieller Beitrag
    Zitat

    Ist es einfach ein Spiel online-fähig zu machen?


    Ja!


    Zitat

    Welche Voraussetzungen braucht man dafür? Über das Netzwerk werden Koordinaten der Spieler, deren Aussehen, Neigungswinkel und so Sachen ausgetauscht. Wie teuer wird so ein Server der 100 Leute aushält (10 Spieler pro Map)?


    Ich kann dir zwar nicht sagen wie das Netzwerk-technisch funktioniert aber mit wie vielen leuten du auf einer Maps spielen kannst hängt sehr stark davon aber wie Grafik performant du gearbeitet hast.


    Mit einer Charakter mit 50000 Tris wird das Spiel wohl eher nicht so gut laufen zumindest nicht wenn 100 Charakter auf der Karte sind.
    Informartionen zur Position etc musst du zwischen den Spieler sehr oft miteinander synchronisieren damit das Spiel synchron leuft.


    Wie das genau Netzwerk technisch funktioniert kann dir da eher jemand sagen der davon mehr Ahnung hat wie ich.


    Zitat

    Wenn ihr sagt das geht nicht dann muss ich das miteinbeziehen. :O


    Natürlich kannst du mit der UE Onlinespiele machen.


    Zitat

    Auf Youtube sieht man ja Leute die ihr "Spiel" online-fähig machen. Kann ich das auch?


    Ich weis nicht ob du das kannst aber ich denke nicht :) das musst du schon selber wissen.



    Vielleicht hilft dir dies weiter:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    https://docs.unrealengine.com/…/INT/Gameplay/Networking/
    https://docs.unrealengine.com/…ing/Blueprints/index.html

  • Zitat

    Ich kann dir zwar nicht sagen wie das Netzwerk-technisch funktioniert aber mit wie vielen leuten du auf einer Maps spielen kannst hängt sehr stark davon aber wie Grafik performant du gearbeitet hast.Mit einer Charakter mit 50000 Tris wird das Spiel wohl eher nicht so gut laufen zumindest nicht wenn 100 Charakter auf der Karte sind. Informartionen zur Position etc musst du zwischen den Spieler sehr oft miteinander synchronisieren damit das Spiel synchron leuft.


    Ist in diesem zusammenhang absolut irrelevant.


    Edit:


    Zitat

    osition etc musst du zwischen den Spieler sehr oft miteinander synchronisieren damit das Spiel synchron leuft


    Nope, die Positionen werden inter/extrapoliert auf Basis der alten Daten, sodass du keinen "Jitter" hast und die Netzlast verringert wird.


    Zitat

    Wie teuer wird so ein Server der 100 Leute aushält (10 Spieler pro Map)?


    Das kann man nicht pauschalisieren, das hängt alles davon ab, was du übers Netz jagst und wie viele ressourcen dein server verlangt. Du musst das ganze schon profilen um zu wissen wie viele Ressourcen das ganze benötigt.


    Zitat

    Ist es einfach ein Spiel online-fähig zu machen?


    Das kommt ganz darauf an, mit den Build-In Features der UE4? Dann Ja!
    Willst du dir selbst so eine Netzwerk "Lib" bauen, wird das ganze schon deutlich komplizierter.

  • Ganz kurz zusammengefasst, du prüfst z.B. wie viel RAM dein Programm benötigt oder wie lange es brauch um gewisse Dinge abzuarbeiten um zu sehen wo Nadelöhre sind und wo du was optimieren kannst. Das selbe geht auch mit dem Netzwerk.


    In Blueprint oder C++? In Blueprints kannste das ganze auf simpelste Weise mit den 4 von Unreal bereitgestellten Nodes lösen.

  • In dem Video sieht man wie ein Spieler den Server darstellt worauf sich andere Spieler (Clients) verbinden können.


    Was ist wenn der Server-Programm kein anderer Spieler sein soll, sondern ein Hintergrundprozess auf einem Linux Server? Muss man da dann selber was coden?



    Für alle die den Hintergrund nicht kennen:


    Multiplayer Spiele wo ein Spieler als Server dient, haben den Vorteil dass die Spielebetreiber keine eigenen zentralen Server betreiben müssen. Der Nachteil ist das Spiel läuft solange wie der eine Spieler, der als Server dient, online bleibt.
    Beispiel: Bei Mass Effect 3 spielen vier Spieler und ein Spieler ist der Server. Geht der Server Spieler mitten im Spiel offline, stoppt das Spiel und es wird versucht einen der verbliebenen drei Spieler zum Server zu machen, das klappt leider nicht immer, wenn es klappt geht das Spiel weiter, falls nicht, endet es.


    Multiplayer Spieler wo ein zentraler Computer (Internet Server) als Server dient, haben den Vorteil dass beliebige Spieler offline gehen können, ohne dass das Spiel endet. Der Nachteil ist das die Spielebetreiber solche zentralen Computer (Internet Server) betreiben müssen. Was je nach Anzahl der Spieler (bei kommerziellen Ausmaßen) hohe Kosten verursachen kann.
    Beispiel: WoW besitzt vermutlich hunderte von Servern, worauf sich Spieler verbinden können. Das Spiel läuft solange wie der zentrale Server läuft, von Wartungsarbeiten und Störungen abgesehen laufen die rund um die Uhr.



    Diese beiden Lösungen können auch kombiniert werden. Ein zentraler Server kann als Vermittler dienen, der einmal die Spieler für ein Spiel verbindet und sich dann ausklingt, während der weitere Traffic über einen Spieler läuft.
    Das senkt die Kosten weil man weniger zentrale Server benötigt.

  • Was ist wenn der Server-Programm kein anderer Spieler sein soll, sondern ein Hintergrundprozess auf einem Linux Server? Muss man da dann selber was coden?


    Nö, das ganze nennt sich Dedicated Server und ist ohne weiteres mit einer selbst kompilierten Version der Engine kompilierbar.

  • Das kommt gaaanz drauf an, normale simple Implementierung mit direct ip connect und lan discovery ist unglaublich einfach. Alles andere sind dann doch eher fortgeschrittene Themen wo man definitiv erstmal wissen über netzwerk Programmierung anhäufen sollte.