Clientul jocului e un program separat de server. Rulează pe Windows, la jucători, și se compilează tot pe Windows, cu **Visual Studio** de la Microsoft. Nu orice pachet vine cu sursa clientului; multe vin doar cu executabilul gata făcut. Dacă al tău are sursa, lecția asta te ajută să faci prima compilare, fără modificări, ca să știi că mediul tău e bun.
.sln al clientului, alegi configurația potrivită (de exemplu Release și Win32), apeși Build Solution și testezi executabilul rezultat cu clientul și serverul de test.Nivel: Avansat. Ce trebuie să știi înainte: ce e sursa, conectarea clientului la server și să ai un server de test pornit. Ai nevoie de un calculator cu Windows și câteva zeci de GB liberi.
Cuvinte pe care le vei întâlni
| Cuvânt | Ce înseamnă |
|---|---|
| Visual Studio | Programul Microsoft în care scrii și compilezi cod C++ pe Windows. Ediția Community e gratuită pentru multe situații; verifică licența pentru cazul tău. |
Soluție (.sln) | Fișierul care adună toate proiectele clientului. Îl deschizi cu dublu clic. |
Proiect (.vcxproj) | O parte din client (grafică, sunet, interfață). |
| Toolset | Versiunea uneltelor de compilare din Visual Studio, de exemplu v143. |
| Configurație | Felul compilării: Debug (pentru depanare), Release (optimizat) etc. |
| Platformă | Win32 (32 de biți) sau x64 (64 de biți). |
Ce am găsit în sursa verificată
În pachetul pe care l-am verificat, sursa clientului e în client-src/ClientVS22/:
| Ce | Valoare |
|---|---|
| Soluția | client.sln (făcută pentru Visual Studio 2022) |
| Toolset | v143 |
| Platforme | doar Win32 |
| Configurații | Debug, Release, Distribute |
| Proiectul principal | UserInterface (plus librării ca EterLib, GameLib, EffectLib) |
| Unde iese executabilul | folderul binary\, cu numele Metin2Release.exe, Metin2Debug.exe sau Metin2Distribute.exe |
| Librării externe | incluse, în extern\include și extern\library |
Clientul gata făcut din pachet folosește Metin2Distribute.exe. Fișierul Readme.txt al sursei mai spune un lucru important: trebuie instalată și componenta C++ MFC pentru toolset-ul v143.
Alte surse pot cere alte versiuni de Visual Studio. Un proiect făcut pentru Visual Studio 2013 nu se compilează mereu fără adaptări în 2022. Uită-te la ce scrie în sursa ta.
Pasul 1: Instalează Visual Studio
- Descarcă Visual Studio Installer de pe site-ul Microsoft.
- Bifează sarcina Desktop development with C++.
- În lista din dreapta (sau în fila Individual components), bifează și C++ MFC pentru toolset-ul cerut (la noi,
v143) și un Windows SDK. - Instalează. Durează, iar descărcarea are câțiva GB.
Dacă ai uitat MFC, deschizi din nou Visual Studio Installer, apeși Modify și îl adaugi.
Pasul 2: Deschide soluția
Copiază sursa într-un folder simplu, fără spații și diacritice în cale, de exemplu C:\m2\ClientVS22. Apoi dublu clic pe client.sln.
Dacă Visual Studio îți propune să „retargetezi” proiectele (să le schimbe toolset-ul), la prima compilare refuză. Vrei să afli întâi dacă sursa se compilează așa cum a fost gândită.
Pasul 3: Alege configurația
Sus, în bara de unelte, sunt două liste:
- prima: alegi
Release(sauDistribute, dacă vrei să obții același tip de fișier ca în client); - a doua: alegi
Win32.
În Solution Explorer (panoul cu proiecte), clic dreapta pe UserInterface și Set as Startup Project. E proiectul care produce executabilul.
Pasul 4: Compilează
Din meniul Build, alege Build Solution (sau apasă Ctrl+Shift+B). În panoul Output de jos vezi cum se compilează fiecare proiect.
Ce ar trebui să vezi: la final, un rând de forma Build: 17 succeeded, 0 failed (numărul diferă) și fișierul nou în folderul binary\, de exemplu Metin2Release.exe.
Dacă apar erori, citește prima din panoul Error List. Cele mai dese:
| Ce vezi | Ce înseamnă | Ce faci |
|---|---|---|
RC1015: cannot open include file 'afxres.h' | Lipsește componenta MFC | Instalează C++ MFC pentru toolset-ul cerut |
MSB8020: The build tools for v143 cannot be found | Lipsește toolset-ul cerut | Instalează-l din Visual Studio Installer |
C1083: Cannot open include file | Lipsește un fișier .h | Verifică dacă folderul extern e complet |
LNK2019: unresolved external symbol | Lipsește o librărie la legare | Vezi erori de compilare |
Pasul 5: Testează executabilul
- Fă o copie a folderului clientului de test.
- Copiază noul
Metin2Release.exeîn acel folder, lângă executabilul vechi. Nu îl suprascrie. - Pornește-l. Clientul trebuie să fie setat spre serverul de test (vezi conectarea clientului).
- Testează: login, alegerea personajului, inventarul, o hartă, o fereastră de magazin, ieșirea.
Ce ar trebui să vezi: jocul se comportă la fel ca cu executabilul original. Dacă ai compilat sursa fără modificări, orice diferență înseamnă că sursa nu e exact cea a clientului tău.
Atenție la fișierele cu text coreean
Multe fișiere din sursa clientului (și a serverului) au comentarii vechi în coreeană, salvate cu o codificare veche. În sursa verificată, zeci de fișiere .cpp din UserInterface au astfel de caractere. Dacă le deschizi într-un editor care le salvează automat în UTF-8, comentariile se transformă în semne � și uneori se strică și textele din joc. Editează-le în Visual Studio, care păstrează codificarea, și verifică după salvare ce s-a schimbat.
Greșeli des întâlnite
- Compilezi în
x64sauDebugși te miri că nu merge ca originalul. Folosește configurația și platforma clientului tău. - Accepți conversia proiectelor fără să știi ce schimbă.
- Pui executabilul nou direct la jucători, fără test. Un client greșit nu se mai poate „retrage” ușor.
- Schimbi în client ce se trimite la server fără să schimbi și serverul. Vezi protocolul game–client.
Întrebări frecvente
Pachetul meu nu are sursa clientului. Ce pot face?
Poți schimba în continuare multe lucruri fără sursă: pack-urile clientului (iconițe, texte, interfață în Python). Pentru schimbări în executabil îți trebuie sursa exactă. O sursă luată de altundeva poate să nu se potrivească cu serverul tău.
Ce e DumpProto din același folder?
E o unealtă separată, cu soluția ei (Importer.sln), folosită pentru a transforma item_proto și mob_proto în formatul citit de client. Nu e nevoie de ea ca să compilezi clientul.
Cum ajunge executabilul nou la jucători?
Prin update de client, de obicei cu autopatcher. Vezi update de client cu autopatcher.
Ce urmează
Afli cum citești erorile de compilare frecvente. Toate lecțiile sunt în lista tutorialelor Metin2.
Server Metin2 gata de joc
Găzduire Metin2 în România, cu instalare de serverfiles, bază de date MySQL și protecție Anti-DDoS inclusă.