Register for your free account! | Forgot your password?

Go Back   elitepvpers > World of Warcraft > WoW Private Server
You last visited: Today at 07:29

  • Please register to post and access all features, it's quick, easy and FREE!

 

RealmPools TrinityCore vs Mangos

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Mar 2011
Posts: 529
Received Thanks: 198
RealmPools TrinityCore vs Mangos

Hier werden sich einige bestimmt fragen:
Realm-was?

Ich gebe erst einmal eine kleine Erklärung was damit gemeint ist.
RealmPools ist ein Verbund vieler Server zu einem Pool, um zum Beispiel Battlegrounds oder Dungeon zusammen machen zu können.

Im Prinzip kann man sich das genauso wie bei Blizzard vorstellen.
Dort spielt man, wenn man einen Battleground betritt, nicht vorwiegend gegen Spieler seines eigenen Realms sondern kann auch Spieler dabei haben, die von einem anderen Realm kommen.
So kann es passieren das man auf Spieler vom Arthas-Realm antrifft, obwohl man auf Onyxia spielt.

Gleiches kann auch während der Benutzung DungeonBrowsers passieren...

Nun möchte ich euch keinen Vortrag darüber halten warum Blizzard sowas hat, sondern zum einen sagen das ich so ein Teil grade programmiere und zum anderen einen kleinen Einblick geben wie man sowas selbst proggen könnte.

Als erstes brauchen wir einen WorldServer, ich habe mich dazu entschieden die TrinityCore zu nutzen, weil ich mit der Core den Spaß schon einmal gemacht hatte und sie bis jetzt ganz positiv darauf reagierte als Node gefahren zu werden.
Zum anderen brauchen wir ein Programm was die Datenströme unseres Clients aufnimmt und an die jeweilige Core weiter gibt.
Quasi einen "intelligenten" Proxy.

Weil ich nicht den WorldServer komplett umbauen möchte sondern ihn weiterhin auch als Standalone nutzen möchte, müssen wir nun den Proxy so umbauen das er die OpCodes des Clients futtert und ggf an den WorldServer routet, gleiches gilt auch für die Pakete vom WorldServer an den Progy (LogonServer), denn es dürfen nicht alle Pakete an den Client.

Im Prinzip hätten wir damit 3 Server, Realm, LogonServer (Proxy) und WorldServer.

Zugegeben, ich hab den LogonServer der Einfachheit aus einem WorldServer gebaut.
Hat ein paar Vorteile:
- man braucht sich keine Sorgen um die Sockets zu machen
- man kann leicht einen neuen Connector-Tread einbauen
- der WorldServer kennt alle OpCodes und kann fröhlich erweitert werden um zu routen
- ScriptSystem ist schon drinnen
- man kann ihn als Backup im Hintergrund fahren lassen
- etc.

Naja, hat man nun den LogonServer stehen sollte man aufpassen, der WorldServer ist ein bisschen empfindlich was die OpCodes und Datenströme angeht, so hab ich das problem das ich nun nach jedem OPCODE einen UIN16(00) und dann den Inhalt senden darf...

Etwas zickig halt, wer es nachbauen will, wird schon selbst auf das Problem stoßen xD

Um beide Betriebsarten zu gewährleisten sollte man ggf eine zweite AUTH-Routine bauen, so das man nicht auf einmal Spieler aufm Node hat und der sich wundert warum nix geht
Hat man das kann man noch den Playerlogin vom LogonServer vorgaukeln lassen und man hat seinen Char auf Logon und Node stehen.

Jetzt noch fröhlich OpCodes sortieren und ausbauen.

Mein jetziger Stand nach 2 Wochen arbeitszeit ist:
- Sockets sind drinnen
- Verbindung zum Node läuft
- Unter Linux keinen Deadlock xD
- OpCodes zum größten Teil zugeordnet
- 4. Datenbank angelegt
- AUTH-Routine erneuert
- Port von World/NodeA zu Node B drinnen (also einfaches Switchen der WorldServer per Script)
- Mehr aufgeräumt

Nicht viel, aber funktionierend xD

Hier noch ein paar Screens:
You must register and activate your account in order to view images.
LogonServer hatte leere DB, also keine Objects beim einloggen sichtbar.
Erst ab verbindung zum WorldServer kamen alle NPCsund Objects.

You must register and activate your account in order to view images.
Hier waren beide leer xD

Mal schauen was sich so alles mit dem Teil zaubern lässt, Spaß machts definitiv sowas zu proggen.

LG Kent Brockman



Kent_Brockman is offline  
Thanks
2 Users
Old   #2
 
elite*gold: 0
Join Date: Apr 2010
Posts: 155
Received Thanks: 22
thumbs up, nice job...
viel glück weiterhin :-)


klemi3 is offline  
Old   #3
 
elite*gold: 0
Join Date: Apr 2007
Posts: 195
Received Thanks: 43
Könnte man damit nicht auch die Welten allgemein voneinander abkapseln damit er nicht überall down geht ein Server?
crazy2 is offline  
Old   #4
 
elite*gold: 0
Join Date: Mar 2011
Posts: 529
Received Thanks: 198
Hab getestet was passiert, wenn die Node down geht, du stehst bis jetzt aufm dem LogonServer bis die Node wieder da ist oder das ErsatzSystem erreicht wurde.

Also kompletter WorldCrash geht nur wenn der Logon down geht.

Aber das direkte und gezielte Clustern der World kommt erst am Schluss.
Jetzt ist erstmal ChatSystem aufteilen drann und evtl schonmal das BG-Pool-System an den Start bringen

EDIT: Wer Lust hat mit zu proggen ist gerne dazu eingeladen mir eine PM zu schreiben


Kent_Brockman is offline  
Old   #5
 
elite*gold: 0
Join Date: Mar 2011
Posts: 529
Received Thanks: 198
Update:
- AutoRouting eingebaut
- Per Script möglich auf eine andere Node geroutet zu werden
- MiniCleanup des LogonServers
- Mehr OpCodes zugewiesen

- Spiele mit Gedanken das ganze mal für nen 4.x.x zu basteln
Kent_Brockman is offline  
Old   #6
 
elite*gold: 0
Join Date: Mar 2011
Posts: 529
Received Thanks: 198
Update der Geschichte:
nun hab ich das ChatSystem umgebaut.
Es hat sich als sehr nützlich erwiesen die Channels, Whispers und anderen globalen Spielereien im LogonServer zu lassen.
Yells, Say, TextEmote hingegen zur Node durchzuleiten.

Das ganze hat weniger was mit Lastenverteilung zu tun, sondern ist konstruktionsbedingter Natur.
Denn der WorldServer muss nicht unbedingt die ganze World beherbergen, sondern kann einen Abschnitt der World verwalten.
Wenn man nun den Chat global über den WorldServer laufen lässt hat man das Problem, das wenn sich ein Spieler auf einem anderen WorldServer befindet man den GlobalChat des anderen Servers nicht mehr mitlesen kann...

Lässt man den ganzen Chat über den LogonServer laufen und der Player befindet sich auf einer Subnode, so können dummerweise auch Spieler die sich nicht auf der Subnode befinden den Chat mitlesen, aber den Player nicht sehen....

Also denke ich die Lösung scheint ein guter Kompromiss zu sein.
Die IngameCommands werden natürlich erst durchgeroutet, wenn der LogonServer das Commando nicht hat xD

lg Kent Brockman

PS: Das System auf Cata umzusetzen hab ich auch so langsam in den Angriff genommen.
Kent_Brockman is offline  
Old   #7
 
elite*gold: 0
Join Date: Mar 2011
Posts: 529
Received Thanks: 198
Es gibt neues von der Front.
Trinity spielt mir glücklicherweise hier sehr gut zu und baut den Server genau so um, wie ich es auch auf dem Logon gebrauchen kann.

Nun bin ich auch dazu übergegangen den LogonServer komplett so zu gestalten das er sämtliche Spielerdaten mit loggen kann.
D.h. der Logon weiß was die World weiß.

Das ganze hat nun mehrere Voteile, zum einen ist bei einem Ausfall der Core der Logon derjenige der die letzten bekannten Daten hat, zum anderen geht der Transfehr von den Spielerdaten in die Pool-DB schneller und falls man das ganze Clustert kann man so schnell hier alle Daten zusammen laufen lassen.

Mal schauen was man noch so mit der Kiste machen kann
Kent_Brockman is offline  
Old   #8
 
elite*gold: 0
Join Date: Aug 2011
Posts: 16
Received Thanks: 0
Da mittlerweile doch eher wenige Informationen kamen, habe ich mich gefragt, ob du bei deinem Projekt weitere Fortschritte machen konntest und ob du ein Repo hast, wo man mitarbeiten könnte
megathorn is offline  
Old   #9
 
elite*gold: 0
Join Date: Mar 2011
Posts: 529
Received Thanks: 198
Der jetzige Stand ist recht schnell beschrieben:

Die 335er Banshee hatte ich vor kurzem in Testbetrieb, jedoch ist alles sehr weit von RealmPools entfernt.
Imho bin ich zeitlich recht knapp angebunden, was sich auf die Core niederschlägt und ich eher dazu geneigt bin ihre kleine Schwester weiter zu schreiben...

Nichtsdestotrotz hab ich mich an die TrilliumCore gesetzt und mal so nen lustigen LogonServer davor geknallt, ihn das Routing und die grundlegenden Routinen zum Mapclustern verpasst.
Derzeit hänge ich das AchievementSystem um und mache mir Gedanken ob ich das TeleportSystem so verwenden soll wie es mal von Blizz gedacht war oder es auf Emu-Standart belassen soll...

Naja wenn dich das CataSystem interessieren sollte, so kannst du hier reinschnuppern:

Erwarte aber keinen vollkommen ausgereiften Cluster oder ähnliches, das hier ist wirklich nach nen early Bird und alles andere als alltagstauglich.
Aber schonmal ein kleiner Einblick wie man es nicht machen sollte, aber wie man sowas machen kann xD
Kent_Brockman is offline  
Old   #10
 
elite*gold: 0
Join Date: Aug 2011
Posts: 16
Received Thanks: 0
Cata ist auf Privatservern bisher kein Thema für mich.
Was mir immernoch so im Kopf herumschwirrt wäre ein vmaps Cluster...
Würde mich aufjedenfall freuen, wenn du da dran bleibst, klingt ziemlich interessant und würde mir vorallem wünschen, dass du uns weiterhin auf dem laufenden hälst
megathorn is offline  
Old   #11
 
elite*gold: 0
Join Date: Mar 2011
Posts: 529
Received Thanks: 198
Solange die original Trillium noch recht bockig läuft, werd ich erstmal an der 335er Yumiko weiter arbeiten.
Das ist die kleinere Core von der sog. Banshee.

Leider muss ich dort mehr oder weniger alles from scratch machen, weil diese vorerst nur dazu gedacht war Daten von einer Node zu speichern und dann bei einem Crash die Verbindungen zu halten, Daten in die DB zu speichern und ggf. auf eine BackupNode umrouten zu können.
Das Ding ist auf dem DebugServer in Betrieb und hat sich bis jetzt dort ganz wacker geschlagen. Jedoch werde ich einen Livebetrieb der Core erst ansetzen wenn ich auch der Meinung bin das es richtig läuft.

Mit dieser wäre es auch möglich einen RealmPool ohne viel drumherum steuern zu können...
Jedoch ist dort kein GildenChat und auch kein Whisper auf seinem "Normalen" Realm möglich, aber das ließe sich einbauen, wenn man Zeit hat

LG

PS: Ein Map-Cluster beinhaltet auch VMAPs, weil eine Node jeweils ein abgespeckter WorldServer ist.
D.h. mit der Banshee hat man die Möglichkeit für jede Map eine andere Node ansteuern zu können.
Leider ist das ohne großartigen Umbau recht witzlos weil man spätestens beim Betreten der Inzen seine GRP-Member nicht sehen kann...
Was daher kommt das die IDs von den verschiedenen Nodes vergeben werden, anstatt von der Node, die für die Inze zuständig ist.
Das Problem liegt aber weniger an der Asyncronität der Nodes, eher daran das der TelePort nicht so verläuft wie es Blizzard gemacht hat.
Um also das Problem zu beseitigen muss man also schonmal das TeleportSystem etwas verändern und im Zusammenspiel zwischen Node und Logon laufen lassen, aber dafür das diese Core eh nirgens eingesetzt werden wird, ist mir der Aufwand zu hoch das umzuschreiben...
Kent_Brockman is offline  
Old   #12
 
elite*gold: 0
Join Date: Jun 2008
Posts: 109
Received Thanks: 154
Quote:
Originally Posted by Kent_Brockman View Post
Es gibt neues von der Front.
Trinity spielt mir glücklicherweise hier sehr gut zu und baut den Server genau so um, wie ich es auch auf dem Logon gebrauchen kann.

Nun bin ich auch dazu übergegangen den LogonServer komplett so zu gestalten das er sämtliche Spielerdaten mit loggen kann.
D.h. der Logon weiß was die World weiß.

Das ganze hat nun mehrere Voteile, zum einen ist bei einem Ausfall der Core der Logon derjenige der die letzten bekannten Daten hat, zum anderen geht der Transfehr von den Spielerdaten in die Pool-DB schneller und falls man das ganze Clustert kann man so schnell hier alle Daten zusammen laufen lassen.

Mal schauen was man noch so mit der Kiste machen kann
awsome.

Du hast meinen größten Respekt! Ich denke die meisten wissen hier gar nicht was du dir für eine Arbeit machst! Es wäre gar keine schlechte Idee das ganze mal als Patch ins Trinity Forum zu schmeißen. Du machst in sachen Stabilität Lichtjahre nach vorne!
Master674 is offline  
Old   #13
 
elite*gold: 0
Join Date: Mar 2011
Posts: 529
Received Thanks: 198
Danke für die Blumen xD

Ich hab nun die kleine Schwester von der Banshee auf einem unserer Realms in betrieb und schau mal wie sich das System schlägt.
Wenn es keine großartigen Probleme gibt, werde ich damit anfangen alle Achievements über den LogonServer zu speichern und die HybridCore komplett auf diesen Betrieb umstellen.
Hybrid bedeutet, diese Core kann sowohl als Normale TC als auch mit einem LogonServer gefahren werden...
Kent_Brockman is offline  
Old   #14
 
elite*gold: 0
Join Date: Mar 2011
Posts: 529
Received Thanks: 198
Okay 48h Betrieb hat sie überstanden, 2 crashes waren drinnen, diese kamen nicht von Socket sondern von ein paar Flüchtigkeitsfehlern von mir xD

Jetzt kann ich anfangen die Achieves umzulegen...
Kent_Brockman is offline  
Old   #15
 
elite*gold: 0
Join Date: Aug 2011
Posts: 16
Received Thanks: 0
Arbeitest du privat für dich, oder für ein bestimmtes Projekt?
Wenn für irgendein Projekt, würde mich eure HP interessieren
Bin eigl ziemlich begeistert, dass sich da überhaupt jemand dran setzt


megathorn is offline  
Reply



« Previous Thread | Next Thread »

Similar Threads
[Release] TrinityCore 3.3.5a
TrinityCore 3.3.5a UltraCore2 Revision Build 8941 Hallo liebe Community! Ich poste euch hier die neuste Trinity Core für die Version...
34 Replies - WoW PServer Hosting
Patch für TrinityCore!
schon erledigt danke! ^^
0 Replies - WoW Private Server
Frage zu den Realmpools
Hey. Kann mir jemand sagen wo ich nachschaun kann auf welche realmpool wenig horde vorhanden is da ich zur zeit auf onyxia spiele und mir die...
2 Replies - WoW Main - Discussions / Questions
WoW -Trinitycore ArenaAddicts
An arena server run by an awesome owner and Dev's. We just started, but this server is going far, trust me. Pvp/Arena server with a pvp system with...
2 Replies - Private Server - Discussions / Questions
Fragen zu TrinityCore
Heyho ich hab da mal paar fragen -wie erstelle ic hda ei naccoutn bzw brauch ich nen md5 hash? -was ist der acceslevel von Admin ,gm ,user usw...
1 Replies - WoW PServer Hosting



All times are GMT +1. The time now is 07:29.


Powered by vBulletin®
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2017 elitepvpers All Rights Reserved.