[TUTORIAL/INFO] Structurarea unui server de metin2

Ghiduri şi tutoriale despre cum să vă îmbunătăţiţi serverul/clientul dv. de metin2.
Avatar utilizator
Syron
Developer

Developer
Mesaje: 712
Membru din: 14 Mai 2014, 23:41
Aprecieri: 5  
Mulţumiri: 138  
Medalii

In urmatorul post o sa vorbim despre structurarea serverului de metin2 si anume un raspuns dezvoltat la intrebarea 'cate procese/core-uri trebuie sa am pentru un server de metin care sa fie stabil?'
In general, orice server la momentul actual foloseste de la 1 pana la 5 procese pentru fiecare canal deschis, la care se adauga 1 proces pentru canalul 99, 1 proces pentru auth - adica login - si 1 proces pentru db. Un document scris de developerii jocului ne dezvaluie urmatoarele, fisierul se cheama INSTALL si dateaza normal cu data de 28.09.2013:
Imagine
1. Harta de casatorie si razboaie bresle sunt mereu pe canalul 99. Initial daca o sa cititi mai sus in fisier, o sa vedeti ca 'game99' este supranumit si Guild Warfare Server / Guild War Server (길드전 서버 / 길드전서버) pentru ca pentru asta a fost conceput initial.
2. Dungeon-urile trebuie sa fie legate de harta de provenienta. Mai clar o sa devina mai jos* unde aveti un exemplu de distribuire a hartilor pe fiecare core.
3. Un lucru deja stiut, fiecare core are folderul lui separat si e un proces independent.
4. Scopul divizunii e sa reduca impactul in cazul in care apar probleme, daca doar un core pica => nu pica tot serverul.
Aici apare o mare confuzie pe care am observat-o in multe topicuri de pe forum. Ideea de 'baga mapa in fiecare canal, core si game99 ca sa mearga' e strict gresita si nu asa functioneaza. Daca fiecare core al fiecarui canal are toate hartile, practic rulati procesele aditionale degeaba si doar ingreunati serverul. Mai jos avem 4 exemple prezente in fisier:
Imagine
1. Un server de teste are mereu un core, un canal. Asta ar trebui sa va raspunda la intrebarea 'cate canale/core-uri pentru un server de teste?'
2. Pentru cei care inca nu stiau, oficialul a decis sa foloseasca mai multe servere dedicate/vps-uri pentru fiecare server. De exemplu un server precum 'Leonis' putea sa fie defapt un numar de 6-8 sau chiar mai multe servere. De ce? Pentru ca fiecare canal era distribuit pe un alt server (cu IP intern - deci in acelasi datacenter) dupa care mai erau si structurate pe core-uri, o solutie buna pentru acele vremuri. Aici avem un exemplu de '1 server pentru un canal' - deci daca am fi avut 4 canale, aveam nevoie de 4 servere separate care erau toate legate probabil la un singur server pentru auth/db.
3. *Dupa cum vedeti, harta 65 (Templul Hwang) si harta 66 (Turnul Demonilor) se afla pe acelasi core pentru ca sunt harti din care se intra din una in alta direct. Pe langa asta, acolo mai este prezenta si 64 (Valea Orcilor) pentru ca de acolo se intra in Templul Hwang in primul rand.
4. Dupa cum vedem, cu toate ca diviziunea proceselor pe mai multe servere creste, hartile raman pe aceleasi core-uri, impreuna.
5. Acelasi lucru si aici unde avem 3 servere compuse din 2 core-uri pe primele 2 si un singur server cu 1 core + ch99 care este separat mereu.
Sper ca lucrul acesta sa clarifice putin treaba si sa nu mai fie nevoie de explicatii. Puteti sa aranjati core-urile cum vreti voi pentru eficienta maxima si sa nu aglomerati toate hartile pe un singur core. Mai jos avem un lucru EXTREM de important care nu prea e inteles cred eu de multa lume. Sincer sa fiu, nu mi-am dat nici eu seama prima oara dar dupa ce citesti putin o sa intelegi ca 'totul chiar are sens!' - este vorba despre ITEM ID RANGE, adica ce ID poate lua un item in tabelul item din player.
Imagine
1. Serverul de test are un numar maxim de 11 milioane de iteme - primele 10 milioane se pot crea doar pe canalul 99 si 1 milion pe canalul 1, ciudat dar oricum nu ai nevoie de mai mult de atat pentru un server unde testezi.
2. Din aceasta schema reiese ca fiecare core adauga un numar de 10 milioane de id-uri posibile pentru itemele noastre. Deci conform lor, fiecare canal (pentru ca are 5 core-uri) suporta numarul de 50 de milioane de iteme.
3. Aici vedem aceeasi structura pentru canalul 2 iar numerele continua, 10 milioane de iteme pentru fiecare core al canalului 2. In total avem cu 2 canale si 10 coreuri un numar maxim de 100 de milioane de iteme.
4. Interesant e faptul ca primele 10 milioane de iteme (id-uri) apartin exclusiv canalului 99. De asta multi o sa vedeti ca in tabelul item numaratoare incepe de la 10 milioane.
Cat de important e acest lucru? Daca facem o socoata simpla, un server de durata care a strans 100.000 de caractere in timp si cu un numar average de 400 iteme / caracter ajungem la numarul de 40 de milioane. Ideea este ca lucrul asta a fost conceput pentru viitor si nu 1 sau 2 ani asa ca un server poate rula destul timp, avand o banda larga de iteme (6CH/5C => 310 milioane iteme posibile) - iar asta nu este tot. Mai jos avem o mica schita cum putem ajusta numerele (logic daca intelegi schematica de mai sus) in cazul in care depasim un anumit numar:
Imagine
1. Aici vedem ca exista o documentatie privind o anumita 'Item Recovery Band' insa aceasta este goala. Probabil la momentul acela nu exista ceva pentru a recupera itemele insa ma gandesc ca acum exista (totusi nu am auzit sa fie recuperabile itemele pe oficial) - niciodata. Desi un lucru de genu se poate face extrem de usor, de exemplu prin trecerea itemelor sterse intr-un tabel separat item_deleted, la fel cum exista si player_deleted pentru caracterele sterse.
Imagine
Imagine
Mai sus aveti exemple cum sa va configurati fiecare core in parte si anume fisierul CONFIG exemplar. Puteti vedea ca range-ul este definit in fiecare core. Acesta poate sa fie schimbat dupa un timp pentru a genera alte id-uri pentru iteme. Inca un lucru important este unicitatea la fiecare port normal si p2p pentru fiecare core in parte care nu trebuie sa lipseasca.
Personal va recomand sa va faceti un fisier text sau tabel unde sa organizati inainte de toate porturile si range-urile pentru fiecare ch/core inainte sa va apucati sa configurati serverul vostru. Vreau sa precizez in final ca acest ghid a fost scris in totalitate de mine pentru just4metin.ro si daca aveti nelamuriri, va astept cu un reply sau mesaj privat aici pe forum.
Pentru probleme mai complexe, nu ezitati sa deschideti un topic aici: probleme/.
Pentru acest mesaj, Syron a primit 10 (de) mulţumiri
blackghost27 • Lehel • $Machiavelli$ • exo. • Trigun10 • assembly • Asky • Kazuhiri • Thunder. • Kazuya
Avatar utilizator
Tropycal
Nivel 1

Nivel 1
Mesaje: 56
Membru din: 14 Aug 2020, 11:50
Regat: Chunjo
Aprecieri: 58  
Mulţumiri: 5  
Medalii

eu personal ma ghidez doar pe cat de utilizate sunt mapele.

pt ca fiecare core consuma in mod egal cpu.

toate mapele> map1/2 ,turnu demonilor, orci,desert ,templu
core1> map1
core2>map2+orci+desert+templu
g99>turnu demonilor

adica impart mapele in functie de cat de utilizate sunt de jucatori.
iar pe g99 pun dungeonuri
Avatar utilizator
assembly
Membru Club

Membru Club
Mesaje: 502
Membru din: 23 Feb 2015, 10:53
Regat: Chunjo
Aprecieri: 99  
Mulţumiri: 203  
Medalii

Înainte serverele oficiale aveau P2P intre ele pe DB, iti dadeai seama de la sine prin simplul fapt ca verifica numele la caracter intre servere(nu iti permitea sa ai acelasi nume peste tot), in situatia de azi cu launcherul probabil ca s a schimbat treaba

[ Postat de pe Android ] Imagine
Engineer at CNH Industrial
Afișează semnătura
Avatar utilizator
Asky
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 1472
Membru din: 08 Oct 2014, 17:32
Regat: Chunjo
Aprecieri: 98  
Mulţumiri: 4811  
Discord: Copiază ID
 Contact:
Medalii

Felicitări pentru acest topic, destul de util.
Imagine
Afișează semnătura
Avatar utilizator
Thunder.
Nivel 1

Nivel 1
Mesaje: 51
Membru din: 25 Iun 2019, 17:13
Server: Thugs2
Aprecieri: 247  
Mulţumiri: 24  
Discord: Copiază ID
Medalii

Foarte util si explicit
Imagine
Afișează semnătura
Răspunde

Înapoi la “Ghiduri şi Tutoriale”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 1 vizitator