1. #1
    Avatar von UnknownUser
    Registriert seit
    07.05.2014
    Beiträge
    139
    Thanked 227 Times in 73 Posts

    Standard Grundsatzfragen zu Client-Server-Architektur / Matchmaking

    Hallo Leute,

    ich möchte ein kleines Multiplayerspiel umsetzen und versuche mir dazu eine geeignete Client-Server-Struktur zu überlegen. In einem Match sollen stets 4 Spieler gegeneinander antreten welche vom Server per Matchmaking zusammengewürfelt werden sollen (vgl. mit dem Matchmaking von league of legends).

    Meine Überlegung ist nun, dass ich vom Server aus neue Prozesse (Java-Anwendungen / Server) starte, die das jeweilige Match betreuen. Wie kann ich nun die Clients an diese Server (gleiche IP) weitergeben? Benötigt jede Java-Anwendung / Server einen eigenen Port zur Identifizierung? Wie macht man das richtig / normalerweise?


    liebe Grüße,

    UnknownUser

  2. #2
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: Grundsatzfragen zu Client-Server-Architektur / Matchmaking

    Ich würde da eher mit Multithreading arbeiten, dürfte auch performanter sein als jedes mal einen komplett eigenen Prozess zu starten. Zumal so wie ich dein Vorhaben verstanden habe da sowieso deutlicher Overhead anfallen würde, wenn du da einen Fronted-Server machen willst der die Connections dann irgendwie an Backend-Server weiterleitet die auch noch eigene Prozesse starten. Grundsätzlich kann ein Port nur von einem Socket, also in deinem Fall einer Anwendung, zur gleichen Zeit genutzt werden. Sprich wenn Anwendung A z.B. auf Port 2345 läuft, kann Anwendung B diesen Port nicht nutzen und müsste etwa 2346 nehmen. Das ganze fällt mit Multithreading aber eh weg, weil es keine verschiedenen Server gibt wo dann irgendwas an Backends umgeleitet wird. Du hast eine Anwendung, in der wird dann für jeden Spieler z.B. eine Instanz der Klasse Player erstellt. Beispiele mit Erklärungen gibts dazu genug, etwa Galileo Computing :: Java 7 - Mehr als eine Insel - 11 Netzwerkprogrammierung
    Die Spieler speicherst du in einem Array und musst dann eben einen Algorithmus entwickeln, der die Spieler entsprechend zusammenführt. Ich kenne League of Legends nicht, aber laut diesem Wiki-Eintrag zum Matchmaking von LoL werden die Spieler wohl anhand ihrer Fähigkeiten zusammengeführt, sodass die Teams einigermaßen ausgeglichen sind und kein Anfänger gegen einen Vollprofi spielt.
    Gerade bei größeren Sachen setzt man aus Performancegründen bei so was aber eher nicht auf Java. Was dabei rauskommt wenn man es doch tut sieht man ja z.B. bei Minecraft, das frisst Ressourcen ohne Ende. Das dürfte bei dir aber erst mal wohl keine große Rolle spielen, zumal du deinem Beitrag nach noch ziemlich am Anfang stehst. Da ist es erst mal wichtiger, das grundsätzliche Konzept zu verstehen und mal umgesetzt zu haben. Und wenn du ein erfolgreiches Spielkonzept entwickeln solltest ist das am Ende sowieso zweitrangig, siehe Minecraft


  3. The Following User Says Thank You to DMW007 For This Useful Post:

    UnknownUser (10.05.2014)

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 14.07.2013, 01:02
  2. Zwei Minecraft Bukkit Server auf einem Server oder Computer
    Von Max899 im Forum Server-Administration
    Antworten: 1
    Letzter Beitrag: 04.05.2013, 17:57
  3. Intel 8051 Architektur
    Von MG800 im Forum Hardware
    Antworten: 3
    Letzter Beitrag: 27.10.2012, 19:14
  4. Applet Für MC-CLIENT
    Von xpl4iixboy im Forum Fragen & Probleme
    Antworten: 5
    Letzter Beitrag: 08.04.2012, 11:25
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.