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.
---
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
---
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
- `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
---
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
Ügyelj, hogy a `LIBS` tartalmazza a MySQL, SSL, Zlib könyvtárakat.
---
Lépj a `game/src` könyvtárba és futtasd:
Kód: Egész kijelölése
gmake clean && gmake -j4
Siker esetén létrejön:
Kód: Egész kijelölése
../game
Kód: Egész kijelölése
gmake clean && gmake -j4
Kód: Egész kijelölése
../db
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.
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
Fordítás után ellenőrizd, hogy nincs hiba.
---
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/
Kód: Egész kijelölése
sh start.sh
- 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.
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.