Lobbysystem

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Manawyrm.

    Hallo

    Ich würde gern ein Programm mit Lobbysystem entwickeln:

    - Man kann eine Lobby erstellen (soll dann in einer Liste angezeigt werden) oder einer beitreten
    - Man kann die Lobby beim erstellen individuell anpassen, z.B. max. Anzahl an Personen die beitreten können, mit oder ohne Passwort, etc.
    - Die Person, die die Lobby erstellt hat, ist Administrator und kann jeden kicken/bannen
    - Bei einen Timeout sind die Personen automatisch nicht mehr in der Lobby

    usw.


    In wie weit kann ich das ohne Geld auszugeben realisieren? Was benötige ich noch dafür? :)
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford
    Kommt drauf an, wie du das ganze umsetzt:
    • Du könntest mit einem zentralen Server arbeiten. Dieser hat jedoch den Nachteil, dass du einen Server anschaffen und warten musst, sofern du nicht schon einen hast. Vorteil: Der Server ist fast immer erreichbar, hat (normalerweise) eine feste IP und ist schwerer zu manipulieren.
    • Du arbeitest mit einem dezentralen P2P-Netz. Hierbei musst du dir keinen Server anschaffen und diesen entsprechend auch nicht warten. Allerdings kann so ein Netz wesentlich leichter manipuliert werden, weil die Daten bei den Usern liegen. Außerdem brauchen neue Nutzer immer eine "Einstiegs-IP", damit der Client weiß, wohin er sich verbinden soll. Das ist z.B. die IP von irgendeinem Nutzer in der Lobby. Das Problem daran ist aber, dass sich die IPs häufig ändern (außer man hat eine Static-IP oder einen dynamischen DNS-Dienst dahinter, nur wer hat das schon als normaler Anwender :D). Abhilfe kann hier ein Vermittlungsserver leisten, nur dann kann man gleich Methode eins wählen.
    Es ist immer ein Abwägen zwischen den Punkten Sicherheit und Kosten. Hast du in die Nutzer volles Vertrauen und es ist gewährleistet, dass man immer die IP von mindestens einem Gerät in seiner Lobby kennt (bzw. des ganzen Systems, wenn du die Lobbys auf allen Rechnern und nicht nur auf den Rechnern der Lobbyteilnehmer speichern willst. Dies erhöht zwar die Erreichbarkeit, stellt aber wiederum Sicherheitseinbußen dar), dann würde ich sofort ein P2P-Netz verwenden. Soll es aber möglichst sicher sein, dann brauchst du einen zentralen Server, der die Lobbys verwaltet. Man kann auch eine Mischung aus beiden System verwenden, in der der Server dann eine höhere Priorität hat usw.

    Solltest du dich wirklich für einen zentralen Server entscheiden brauchst du auf jeden Fall folgendes:
    • Den Server an sich. Du könntest deinen eigenen Computer benutzen, der dann 24/7 läuft, einen Serverplatz anmieten oder einen eigenen Server kaufen. Das muss am Anfang sicherlich kein riesen System sein. Du könntest z.B. anfangs einen Raspberry Pi benutzen. ABER: Das Verwaltungssystem auf dem Server müsstest du dann wahrscheinlich in Python oder C++ schreiben, wegen Linux. Ich weiß nicht, wie gut der Pi mit Mono zurechtkommt, da hab ich mich nie wirklich für interessiert ;)
    • Eine schnelle Internetverbindung. Am besten natürlich 'ne Flat.
    • Strom.
    Für ein dezentrales P2P-Netzwerk brauchst du eigentlich nur Nutzer, damit alles funktioniert.

    Ich hoffe ich konnte dir einen kleinen Einblick verschaffen, gute Nacht :)
    Drei Worte, die dein Programmieren verändern: Option Strict On

    - Man kann eine Lobby erstellen (soll dann in einer Liste angezeigt werden) oder einer beitreten
    Meiner meinung nach eine List(Of DeineLobbyKlasse) und einen Button zum Joinen/erstellen

    - Man kann die Lobby beim erstellen individuell anpassen, z.B. max. Anzahl an Personen die beitreten können, mit oder ohne Passwort, etc.

    Meiner meinung eine zweite Form

    - Die Person, die die Lobby erstellt hat, ist Administrator und kann jeden kicken/bannen

    Das kannst du ja mit paar zusatz-Buttons und der Visible-eigenschaft machen.
    und Admin z.B. als String in der DeineLobbyKlasse und Gebannte als List(Of String) in der DeineLobbyKlasse

    - Bei einen Timeout sind die Personen automatisch nicht mehr in der Lobby
    einen Timer (vllt Systemuhr oder irgend ein Zeit-Server)


    @Fritschifisch
    Naja, alles auf allen Computern des P2P-Netzes speichern und dann einfach nach dem Demokratie-Prinzip schauen, was am öftesten auftaucht. (und die die nicht darunter sind ggf bannen) Dann müssten sie sich schon alle (mind. die Hälfte) absprechen zum manipulieren.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „00yoshi“ ()

    Wenn du dein Lobbysystem mit TCP machst und du dich für das P2P entscheidest, denk daran das der Host, der den Server erstellt, auch den ensorechenden Port freigibt. Deswegen würd ich davon abraten.
    Hol dir nen VPS für 5-10€ im Monat und du hast Freiheit, was das experimentieren angeht. Stabiler, Sicherer, Schneller:)
    Danke erstmal für die Antworten!

    Wäre denn auch ein FTP für sowas möglich?
    Beispiel: Wenn eine neue Lobby erstellt wird, legt der Benutzer einen Ordner auf dem FTP + Configfile (Einstellungen für die Lobby) ab, wenn dann jemand aus der Liste diese Lobby auswählt und auf beitreten drückt, wird die Configfile im Lobby-Ordner aufgerufen und das Programm danach konfiguriert, wie Chatten erlaubt = Nein (TxB_Chatten.Enable = False), Passwort = ABCPW (Geben Sie das Passwort ein = ?) usw.
    Das einzige wo ich am überlegen bin ist, wie das mit dem Personen in der Lobby so ganz funktionieren soll.

    (Das mit denn Daten im Programme kenne ich bereits)

    @n1nja
    Leider kann ich mir das erstmal nicht leisten :-/ Deswegen muss ich das irgendwie kostenlos hinbekommen.
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford
    Du könntest mit einem Webservice arbeiten, php Scripte erstellen und mit POST zwichen dem Programm und den Script Kommunizieren. Kostet mit nem freehoster nichts und ist sicher, sofern man sich in php auskennt.
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener