[C++] Mithilfe gesucht!

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [C++] Mithilfe gesucht!




      Vorstellung des Projektes unserer Developer im Bereich World of Warcraft


      1. Vorstellung
      2. Durchführung
      3. Was bietet Ihr?
      4. Kontakt


      1. Vorstellung

      Unser jetzt noch 3 köpfiges Team hat sich in den Kopf gesetzt, eine Core basierend auf Trinity zu schreiben. Da zwei Professionelle Developer und ein "Azubi" nicht eine komplette Core zusammen bekommen, suchen sie Hilfe.


      2. Durchführung

      Die Durchführung des kleinen Developerprojektes wird durch eine geeignete Suche erfolgen. Sobald ein paar professionelle Developer sich Bereiterklären mitzuwirken, wird eine Core auf der TrinityCoreX: USAGI aufgebaut.



      3. Was bietet Ihr?


      - ein recht gut organisiertes Team, kein Kindergarten
      - professionelle Leute, die Ihr Fach beherrschen, egal in welchem Bereich
      - Vermögen, groß zu werden


      4. Kontakt

      Interesse geweckt? Dann meldet Euch unter:
      munga@element-network.de


      [align=center][/align]




    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Jep, Usagi ist die Nachfolgecore von der Yumi.
      Hatte beide Cores gebaut um Erfahrung im Bereich des Clusterns zu sammeln.
      Yumi war die erste auf der ich das Map<->Cluster System eingebaut und getestet hatte.
      Anschliessend hab ich das ganze auf 333a neu erstellt und dabei Änderungen am Paketrouting und der Auswertung der zurückkommenden gemacht.
      So sind dann nach und nach ein paar neue Klassen und Routinen hinzugekommen und das Routing an für sich wurde etwas vereinfacht.
      Weil nun aber schon die Zeit von 3.3.5a ist, würde ich gerne diese Technik komplett auf der TrinityCore Rev 9199 anwenden und diese Core einsatzfähig im Cluster-betrieb haben.

      Der Anfang währe hier erst einmal eine Core so umzuschreiben, das sie als BG-Core funzt (quasi WoldServer vermittelt an BG server).
      Später kommt dann wieder das ganze auf Map-Clustern raus.

      Ist halt mal was anderes als die single Cores.


      LG GiR-Blunti
    • Das System ist ähnlich was Blizzard nutzt.
      Du connectest als erstes auf Realmserver, holst dir die Realmlist.
      Von diesen wirst du auf einen Logonserver vermittelt, welcher (im Fall der Yumi und Usagi) aber nur die Playerposition, Items und ein paar andere Dinge speichert, aber nichts berechnet.
      Je nachdem auf welcher Map du dich befindet werden deine Daten an den jeweiligen Cluster zur berechnung geschickt, welcher dann die Monster Movements, sowie auch alles andere ausrechnet, die Pakete fertig macht und wieder an den Logon zurückschickt und dieser anschliessend an dich.

      Somit wird die Welt nicht von einem Server gestellt, sondern von vielen.
      Das ganze hat Vor- und Nachteile.

      Nachteil:
      - leicht höherer Ping
      - mehr Ressourcen für den Server notwending (wenn man im mehr Cluster betrieb arbeitet)

      Vorteil:
      - LogonServer ist backupserver, fällt ein Cluster aus hat der LogonServer die Item- und ein paar andere Daten und somit geht so gut wie nix flöten
      - Crashed ein Cluster, dann reissts nicht den ganzen Server down
      - Man kann Inzen in der laufenden World debuggen und braucht keine Testcore dafür
      - Man kann mehr Player verwalten und berechnen lassen


      Schematisch ausgedrückt läuft das so:
      Client -> Realmserver (sendet IP)
      Client <- DATEN -> LogonServer (Hat Map zuweisung) <- DATEN -> Cluster

      LG GiR-Blunti
    • Das klingt ja cool xD
      Aber, wenn ich das richtig lese, läuft auf den LogonServer eine riesige Sendelast zu.
      Da ja jede Map einen eigenen Cluster hat. Geht da nicht spätestens bei K.A. 1 000 Spielern der LogonServer down?
      Dann hätte ich noch eine Frage zu der Verbindung zwischen LogonServer und den Clustern. Wie wird das Verbunden?
      Über Named Pipes (Glaube ich nicht xD) oder Sockets?
    • Das mit der Sendelast stimmt schon, ist aber nicht weiter tragisch, weil selbst die normalen single Cores auch knapp 2500 und mehr fassen können.
      Meist werden sie einfach durch ihre Berechnungen für die Map gebremst.
      Der Logonserver in dem Fall berechnet ja nix, ausser das Routing und neu verpacken der Daten.
      Das Senden der Playerdaten läuft auf einem oder mehr Threads, genauso wie das Senden und empfangen der Clusterdaten (genauso wie die single Core das ja jetzt schon macht).
      Der Cluster selbst sollte dafür auch nen Threading bekommen (quasi Chilprozesse auf denen er die Lasten verteilt).
      Wobei dieses mein jetziges Problem ist, weil ich mit ACE mal so gut wie kaum umgehen kann, aber weiss das es geht.

      Schematisch:
      Client->Logon (Thread I)->Cluster (Thread I)
      Client->Logon (Thread II)->Cluster (Thread I oder II)

      Genauso gehts auch wieder zurück.

      Nun kann man eben so viele Player aufnehmen, bis die 1Gbit Leitung voll oder Logon wirklich am Ende ist.
      Die jetzige Core könnte mit einem single Socket knapp 500Spieler pro Cluster vermitteln, der Cluster wirft alle Daten in die jeweilige Queue und weiter gehts.
      Der LogonServer schafft aber selbst mehr als 2k zu verwalten.
      Es ist wirklich nur die Verbindung zum Cluster die verbessert werden muss, leider hab ich einen umständlichen Weg gewählt und hab die Listenener im Logon und die Connectoren im Cluster und nicht umgekehrt.
      Was aber eine kleine Sicherheit bietet, weil man so nicht einfach in den Clusterstream einhacken kann, hier müsste man seinen Hack auf den Logonserver machen, was aber aufgrund einiger geplanten oder schon vorhandenen technisch bedingten Sachen nicht ohne weiteres möglich ist.
    • OK du hast Ahnung xD
      Danke für deine vielen Infos du hast mir sehr geholfen. ( Werde mir jetzt auch sowas basteln xD ) Aber was ist der große Nachteil wenn der LogonServer auf Verbindungen wartet und der Cluster Verbindet? xD
      Wegen der Sicherheit:
      Pakete verschlüsseln ( Mit AES, vielleicht? ) und unverschlüsselte Pakete verwerfen.
    • Das Verschlüsseln würde ich mit einem T- oder standart XOR-Verfahren machen, weil beide recht unverbreitet sind.
      Einen rotierenden Schlüssel der bei jeder Transaktion weiter generiert und auf den ersten aufbaut.
      Damit ist schonmal auf die schnelle nix zu machen.
      So sollte die Leitung sicher sein, weil man nun den InitKey braucht um einen Cluster vorgaukeln zu können, der nunmal nicht mitgesendet wird xD
      T-Code oder 3PairCode ist zu aufwändig und auch schwer zu handlen (z.b. A12BDx98DF2x67BCA, so in etwa würde der Code aussehen ein 3x5er standart)

      Wie genau das mit dem XOR abläuft möchte ich lieber nicht erläutern...
    • Natürlich kommt es auch auf die Geschwindigkeit an. Bei XOR weiß ich es nicht genau, ob es schnell ist, aber der Advanced Encryption Standart ist auch für Geheimdokumente zugelassen :P
      Außerdem ist er ein "symmetrisches Kryptosystem".
      Dies Verschlüsselungen verschlüsseln sehr schnell.
      Jetzt kommt noch mein Trumpf :D
      Skype benutzt dieses System zusammen mit 2 anderen Verschlüsselungen und es ist wird bei 7zip genutzt ;D

      Aber ich denke die größte Schwachstelle wird beim Client sein.
      Um genau zu sein: Zwischen der Game exe und der Verschlüsselungs exe. ( Außer ihr habt den Source ;-) )
      Es gibt zwar Binder, die 2 exen zu einer machen können, aber naja :/

      Edit:
      Wegen den wechselnden Schlüsseln: Wie willst du sichergehen das die Pakete mit dem richtigen Schlüssel ge- und entcryptet werden? Dazu müsste man eine Tabele anlegen, und die Zeilennummer des nächsten Schlüssels im Paket mit angeben.
    • Naja, das KeyLess XOR hab schon im Feldversuch gehabt.
      Funzte einwandfrei, ist mir vor Jahren in der Schule im Unterricht eingefallen.
      10 Jahre später hab ich das ganze mal innem Programm umgesetzt.
      Ist auch nicht schwierig oder gar kompliziert und ressourcen fressend aber fürs erste Wirkungsvoll :)
      Das Probelm ist nur das die Counter syncron laufen müssen, was aber nicht weiter Tragisch ist, weils relativ einfach zu lösen ist.
      Dumm nur, wenn jemand den Einsprung und den Faktor hat, ab dem Moment nutzt das ganze nix mehr, denn dann muss man neu modulieren.

      Welche Tabelle es ist, bekommt man schnell raus, jeder Computer hat sie, jeder nutzt sie, aber kaum einer weiss das sie Statisch basiert xD
    • Das glaubst nur du. =P

      Sag mir Boards, wo ich gezielt danach suchen kann. ;) Überall treiben sich die Leute herum. Man kann nicht sagen, dass ich in einem Board für z.B. Lebensmittel falsch bin, um einen Polizisten zu suchen, da die sich nicht dort rumtreiben. Deshalb glaube ich, dass ich im jeden Board einige finden werden.

      MfG