Earth nature field

TUTORIAL: Forrás fordítása

Minden ami szerverkészítéshez tartozik (szerverfájlok, src, kliensek stb)
Válasz küldése
serverfan
Tapasztalt Harcos

Tapasztalt Harcos
Hozzászólások: 21
Csatlakozott: 2025.08.29. 17:27

TUTORIAL: Forrás fordítása

Hozzászólás Szerző: serverfan »

⚙️ Metin2 szerver források fordítása – Teljes útmutató kezdőknek és haladóknak
A Metin2 privát szerverek szíve a forráskód (source).
Ebben található minden logika: a `game` (játékfolyamat) és a `db` (adatbáziskezelő) program.
Ha új funkciót szeretnél hozzáadni, hibát javítani vagy rendszert fejleszteni, elengedhetetlen, hogy tudd hogyan kell lefordítani a forrásokat.

Ez az útmutató bemutatja lépésről lépésre a teljes folyamatot – a környezet előkészítésétől a fordításon át a hibák javításáig.

---

🔹 1. Előkészületek

A Metin2 szerver forrásai FreeBSD alatt fordíthatók (ez az operációs rendszer kezeli legjobban a régi forrásokhoz szükséges környezetet).
A pontos verzió attól függ, milyen forrást használsz:
- Régebbi forrásokhoz: FreeBSD 9.2 – 10.x
- Újabb forrásokhoz: FreeBSD 12.x – 13.x

Szükséges csomagok telepítése FreeBSD-n:

Kód: Egész kijelölése

pkg install gmake gcc mysql57-client mysql57-server zlib openssl subversion git cmake
Ez biztosítja a fordítóeszközöket (gcc, gmake), a MySQL klienskönyvtárat, valamint az SSL és zlib támogatást.

---

🔹 2. Források előkészítése

Töltsd fel a forrásokat a szerverre. A struktúra általában így néz ki:

Kód: Egész kijelölése

/usr/src/game/src   <-- a game forráskód
/usr/src/db/src     <-- a db forráskód
Hasznos könyvtárak:
- `common/` – közös header és util fájlok
- `lib/` – külső függőségek (pl. cryptopp, lua, boost, stb.)
- `game/src/` – a game kódja
- `db/src/` – a db kódja

---

🔹 3. Makefile ellenőrzése

Minden forrás könyvtárban van egy Makefile, ami meghatározza a fordítási szabályokat.
Példa:

Kód: Egész kijelölése

CC = g++49
CFLAGS = -Wall -O2 -pipe -fexceptions -D_THREAD_SAFE -fPIC
LIBS = -lm -lz -lmysqlclient -lssl -lcrypto
Ha újabb GCC van telepítve, frissítsd a `CC` sort (pl. `g++7`, `g++8`).
Ügyelj, hogy a `LIBS` tartalmazza a MySQL, SSL, Zlib könyvtárakat.

---

🔹 4. Fordítás folyamata

Lépj a `game/src` könyvtárba és futtasd:

Kód: Egész kijelölése

gmake clean && gmake -j4
A `-j4` opció párhuzamosan fordít 4 szálon (gyorsabb).
Siker esetén létrejön:

Kód: Egész kijelölése

../game
Ezután a `db/src` könyvtárban:

Kód: Egész kijelölése

gmake clean && gmake -j4
Siker esetén: ---

🔹 5. Fordítás közben előforduló hibák

A forrásfordítás során gyakori hibák és megoldások:
  • fatal error: mysql/mysql.h: No such file or directory
    → Hiányzik a MySQL fejlesztői csomag. Telepítsd:

    Kód: Egész kijelölése

    pkg install mysql57-client
  • undefined reference to `SSL_*`
    → Hiányzik az OpenSSL támogatás. Telepítsd:

    Kód: Egész kijelölése

    pkg install openssl
  • gmake: Command not found
    → Telepítsd a gmake-et:

    Kód: Egész kijelölése

    pkg install gmake
  • undefined reference to `crc32`
    → Hiányzó Zlib könyvtár. Telepítsd:

    Kód: Egész kijelölése

    pkg install zlib
  • Segmentation fault indítás után
    → Rossz FreeBSD verzióval fordítottad, vagy inkompatibilis GCC-t használtál. Ellenőrizd a forrás README-jét, hogy milyen környezetet igényel.
---

🔹 6. Diff patch-ek alkalmazása

Sok fejlesztés (pl. új rendszer, bugfix) diff patch formájában érhető el.
Alkalmazása:

Kód: Egész kijelölése

cd /usr/src/game/src
patch < update.diff
Ha hibát ad, manuálisan kell beilleszteni a kódot az adott fájlba.
Fordítás után ellenőrizd, hogy nincs hiba.

---

🔹 7. Fordított binárisok másolása

Ha sikeres a fordítás, a binárisokat másold a futtatási könyvtárba:

Kód: Egész kijelölése

cp /usr/src/game/game /usr/metin2/channel1/
cp /usr/src/db/db /usr/metin2/db/
Ezután indítható a szerver:

Kód: Egész kijelölése

sh start.sh
---

🔹 8. Gyakorlati tippek
  • Mindig készíts biztonsági mentést a fordítás előtt.
  • Használj `gmake clean`-t minden fordítás előtt.
  • Jegyezd fel, milyen GCC/FreeBSD verzióval fordítasz – kompatibilitási hibáknál ez fontos lesz.
  • A `syserr` és `core` fájlok segítenek hibakeresésben.
  • Ha komoly fejlesztést végzel, verziókövetést (git/svn) érdemes használni.
---
✅ Összefoglalás
A Metin2 szerver forrásainak fordítása FreeBSD alatt történik, a `gmake` használatával.
A folyamat:
1. Környezet előkészítése → 2. Források feltöltése → 3. Makefile ellenőrzése → 4. gmake clean && gmake → 5. Binárisok bemásolása.

Ha hibát kapsz, az szinte mindig hiányzó könyvtár, rossz GCC verzió, vagy diff patch ütközés.
ShadowBlade
Kezdő

Kezdő
Hozzászólások: 13
Csatlakozott: 2025.08.28. 18:11

Re: TUTORIAL: Forrás fordítása

Hozzászólás Szerző: ShadowBlade »

Pont erre volt szükségem, köszönöm a bemutatást :lol:
serverfan
Tapasztalt Harcos

Tapasztalt Harcos
Hozzászólások: 21
Csatlakozott: 2025.08.29. 17:27

Re: TUTORIAL: Forrás fordítása

Hozzászólás Szerző: serverfan »

Örülök hogy segíthettem!
Válasz küldése