Witaj
Gość

Wątek: [Poradnik] Cykl Artykułów: L2j zza kulis, czyli architektura serwera  (Przeczytany 4622 razy)

  • Wiadomości: 391

  • Pochwał: 10

Witam serdecznie w pierwszym artykule opartym o dokładnym omówieniu specyfiki emulatora l2j. Postaram się tutaj opisać w kilkunastu tematach, jak tak na prawdę działa serwer l2j. W skład artykułów będą wchodzić następujące tematy:

- Uniwersum Lineage 2 czyli w jakim to świecie przyszło nam się zalogować.
- LoginServer Wpisuje login i hasło. Niby proste, a jednak...
- Teoria ewolucji czyli od L2Object do L2PetInstance.
- MMOCore czyli jak serwer rozmawia z klientami.
- AI czyli jak te keltiry myślą.
- Instancje. Jednak istnieją inne światy!

I wiele wiele innych.

Moim zadaniem będzie napisanie wszystkiego językiem potocznym, tak aby Osoba, która niekoniecznie jest zaawansowanym programistą, mogła przeczytać bez pogubienia się w połowie.
Będę aktualizować artykuły, w chwili kiedy przyjdzie napisać o czymś co pominąłem, o waszych sugestiach, oraz w chwili gdy zostaną zmienione.
O zmianach będę informować osobnymi postami. a w temacie będę dawać notkę z zaznaczoną datą edycji.
Chciałbym aby komentarze w tych tematach służyły poradzie, krytyce, oraz pomagały w korekcie.

O mnie:

Na imię mam Daniel. Na forum tym siedzę już trochę czasu. Głównie pracuje w tematyce serwerów. Swoje doświadczenie z programowaniem zacząłem właśnie od l2j. Doświadczenie w programowaniu około 2letnie.
Wykształcenie: Technik teleinformatyk, Posiadam certyfikacje Microsoftu w administracji serwerami 2008. Posiadam Tytuł MCTS oraz MCITP.
Obecnie Student Informatyki.

Pracuje w Salonie Orange jako konsultant od roku.

Let's the story begin...

Serwer L2j.

Ogólnym zamierzeniem serwera l2j, jest stworzenie emulatora, który jest w stanie obsłużyć klienty do tej gry. Ma on w możliwie największym stopniu udostępnić warunki podobne do pierwowzoru. Wybrano Javę, ze względu na szybkość i wygodę programowania, która zapewnia minimalnie mniejszą wydajność w stosunku do C++, w którym został napisany pierwowzór.
L2j dzięki temu zapewnia możliwość postawienia na każdej konfiguracji sprzętowej, oraz niemal na każdym systemie operacyjnym posiadającym zainstalowaną maszynę wirtualną Javy.

Dlaczego L2j jest tak daleko od celu ? Dlaczego tyle bugów, tyle restartów potrzebnych i tyle problemów?
Serwer został zaprojektowany dobrze, Szkielet solidny, jednak ekipa się zmieniała i niemal każdy dodając coś od siebie żył przekonaniem, że najlepiej najpierw udostępnić kod a dopiero potem jak się przypomni to poprawić zgłoszone błędy.
W dodatku ilość składu NCSoftu a l2jteam równe jest mniej więcej 10 do jednego, co świadczy o różnicy. W dodatku Reverse Engineering, także zakłóca tempo pracy.

Mniejsza z tym. Emulator można zainstalować, uruchomić, można grać, można administrować, uczyć się pracy. Można także do woli legalnie modyfikować, tworzyć własne projekty w oparciu. Wszystko czego dusza zapragnie.

Jednak mało kto stara się ogarnąć całokształt. Tutaj moje artykuły będą pomagać. Pokażę jak działają duże elementy, jak i małe całego serwera. Mam nadzieję, że w chwili ukończenia wszystkich dokumentów, po przeczytaniu będziemy mogli pisać kod według wzorców, ograniczając powielanie się kodu.

Teraz zaczniemy od samej struktury emulatora.

Cały projekt l2j składa się z dwóch podprojektów:


Core - Główna część serwera. To tutaj znajduje się większość funkcji związanych z funkcjonowaniem serwera. To tutaj jest opisana struktura funkcjonowania uniwersum, obiektów, obsługę AI, questów, skilli, forum BBS, obsługi logowania i tak dalej i tak dalej ale o tym w dalszej części artykułów.
Datapack - Osobny projekt. W nim znajdują się wszystkie dane, które według konwencji programowania z kilku przyczyn, nie powinny znajdować się w skompilowanej sekcji.
Dlatego, w każdej chwili możemy mieć dostęp do modyfikacji lub dodawania skilli, eventów, questów. Trzeba jednak trzymać się pewnych konwencji.

Zajmijmy się dalej częścią Core:

Jak widać na powyższym obrazku, Sam "rdzeń" serwera dzieli się na kilka kategorii.

MMOCore - Choć znajduje się z niewiadomych przyczyn w osobnej bibliotece, bezpośrednio zakompilowanej (choć mamy spokojnie dostęp do modyfikacji tego kodu), to jest on główną częścią odpowiedzialną za odbieranie, przesyłanie pakietów, obsługę klienta. W osobnym artykule dokładnie postaram się opisać jak to działa oraz pokażę jak z tego korzystać.
Na razie wiedzmy tylko, że MMOCore to biblioteka zawierająca kod, który pozwala nam na odebranie/przesłanie danych między serwerem a klientem.

Login Server - To jest bramka, która jest odpowiedzialna za to czy przepuści dane konto, w zależności od tego czy istnieje czy też nie. Pozwala na wyrzucenie gracza, ujawnienie mu informacji o istniejących serwerach gry (gameserver) oraz ich stanie. W chwili gdy loginserver zweryfikuje gracza, przekazuje go dalej. LoginServer także ma za zadanie uzyskać informacje o kliencie. Przykładem jest np. uruchomiony GameGuard.
Oczywiście wszystko omówię w przyszłości. Na razie wiedzmy, że login server służy jako osobny program weryfikujący osoby próbujące dostać się do któregoś z gameserver'ów.

Game Server - Chyba najistotniejsza część kodu. Zbyt dużo do omówienia w skrócie. Powinniśmy wiedzieć, że to tutaj jest opisana obsługa zajmująca się interakcją graczy w świecie. To tutaj znajduje się szkielet, który obsługuje pliki, skrypty zawarte w Datapack.
Wiele artykułów postaram się napisać właśnie o tym co się tutaj dzieje. Postaram się tak bardzo szczegółowo jak tylko się da.

Na razie koniec pierwszego artykułu, który powinniśmy potraktować jako przedmowę. Mam nadzieję, że za jakiś czas powstanie doskonała siatka tematów, w których poznamy emulator l2j zza kulis. Po przeczytaniu wszystkich dokumentów, bez problemu będziemy mogli odnaleźć się w kodzie. Będziemy wiedzieli gdzie szukać odpowiednich Klas, obiektów, metod.
 

/Naito -- Autor postu otrzymał pochwałę !
« Ostatnia zmiana: Wrzesień 25, 2010, 05:11:50 am wysłana przez Naito »
Polaczkowo:
Impos - Aeore Healer lvl 93 / Wynn Summoner 85 / TH 58
klan - Kowale
CP Sairea


  • Wiadomości: 116

  • Pochwał: 1

Odp: [Poradnik] Cykl Artykułów: L2j zza kulis, czyli architektura serwera
« Odpowiedź #1 dnia: Listopad 06, 2010, 05:49:43 pm »
można wiedzieć kiedy będzie 2gi artykuł, gdyż nie powiem zaciekawił mnie ten pierwszy
EU Retail - Franz - 2007-2009 - sold

01.04.2011 - L2Ex x5

81 EE - Sold


  • Wiadomości: 391

  • Pochwał: 10

Odp: [Poradnik] Cykl Artykułów: L2j zza kulis, czyli architektura serwera
« Odpowiedź #2 dnia: Listopad 08, 2010, 09:03:45 pm »
nikt nic nie mówił. A nie wiedziałem czy ma ktoś ochotę na dalsze części. Może dziś wieczorkiem zacznę coś przygotowywać.
Polaczkowo:
Impos - Aeore Healer lvl 93 / Wynn Summoner 85 / TH 58
klan - Kowale
CP Sairea


  • Wiadomości: 13

  • Pochwał: 0

Odp: [Poradnik] Cykl Artykułów: L2j zza kulis, czyli architektura serwera
« Odpowiedź #3 dnia: Listopad 08, 2010, 10:18:41 pm »
Dla mnie jest to ciekawe i czekam na następną część.


  • Wiadomości: 391

  • Pochwał: 10

Odp: [Poradnik] Cykl Artykułów: L2j zza kulis, czyli architektura serwera
« Odpowiedź #4 dnia: Listopad 10, 2010, 02:11:44 am »
Przygotowuje materiały jak wszystko będzie gotowe, wkleję na forum.
Polaczkowo:
Impos - Aeore Healer lvl 93 / Wynn Summoner 85 / TH 58
klan - Kowale
CP Sairea


  • Wiadomości: 161

  • Pochwał: 2

  • Lineage 2 Player <3
Odp: [Poradnik] Cykl Artykułów: L2j zza kulis, czyli architektura serwera
« Odpowiedź #5 dnia: Styczeń 19, 2011, 03:39:00 pm »
Zauważyłem to dopiero teraz ale ciekawe.

PS:Szukam drugiej części ;d
Head admin z Rosji dlatego lt strona
admin to ja


  • Wiadomości: 391

  • Pochwał: 10

Odp: [Poradnik] Cykl Artykułów: L2j zza kulis, czyli architektura serwera
« Odpowiedź #6 dnia: Styczeń 19, 2011, 07:47:04 pm »
Z chęcią... ale sesja :<
Polaczkowo:
Impos - Aeore Healer lvl 93 / Wynn Summoner 85 / TH 58
klan - Kowale
CP Sairea


  • Wiadomości: 270

  • Pochwał: 1

Odp: [Poradnik] Cykl Artykułów: L2j zza kulis, czyli architektura serwera
« Odpowiedź #7 dnia: Styczeń 19, 2011, 09:11:16 pm »
Bardzo ciekawe, czekam z nie cierpliwoscia na 2 czesc :)
http://fpscs.net/?sid=339d13730fed9a68d80cf8eebf73ff78- polska sieć gry Counter Strike, zapraszam!!