32 vagy 64 bites Metin2-kliens: az EXE és az LAA jelző ellenőrzése
Ellenőrizd a Metin2-kliens architektúráját és LAA jelzőjét módosítás nélkül: 2/4 GB-os korlátok, natív x64 és hálózati kompatibilitás.
A 4 GB-os jelzőtől az x86-os kliens nem lesz x64-es
A Metin2 kliense akkor is maradhat 32 bites x86-os program, ha 64 bites Windowson fut, és engedélyezve van benne a Large Address Aware jelző. Ez a jelző, amelyet gyakran a „4 GB-os javítással” kapcsolnak össze, a címtérre vonatkozik. A natív x64-es kliens más gépi architektúrára készült, eltérő fordítás. Egyik megjelölés sem bizonyít önmagában magasabb FPS-t vagy minden összeomlásra megoldást.
Elsőként ezt érdemes tisztázni: milyen architektúrájú a játék tényleges futtatható állománya? A szerver Windows-követelményei, az indítóprogram és a játékfolyamat különböző dolgokat írhatnak le. Ez az útmutató az EXE fejlécének módosítás nélküli ellenőrzését és az eredmény korlátait mutatja be. Nem feltételezi, hogy minden Metin2-szerver ugyanazt a klienst biztosítja.

Metin2-játékreferenciák alapján generált illusztráció. Nem képernyőkép, memóriamérés vagy egy konkrét kliensváltozat bizonyítéka.
Mit jelentenek valójában a memóriakorlátok?
A Microsoft LAA-útmutatója és memóriakorlátokat összegző táblázatai külön kezelik a folyamat virtuális címterét és a gépbe szerelt fizikai RAM-ot. A táblázat memóriakorlátokról szóló sorai a Windows x64-es kiadását feltételezik. Az ARM64-sor más fájlarchitektúrát azonosít; nem állítja, hogy ilyen fájl futtatható x64-es Windowson.
| Futtatható állomány | Machine / formátum | LAA | Jelentése |
|---|---|---|---|
| 32 bites x86 | 0x014C / PE32 | Kikapcsolva | Általában 2 GB-os felhasználói virtuális címtérkorlát |
| 32 bites x86 | 0x014C / PE32 | Bekapcsolva | Legfeljebb 4 GB felhasználói virtuális címtér; továbbra is x86 |
| Natív x64 | 0x8664 / PE32+ | Bekapcsolva | Az x86-os plafonnál nagyobb címtér, a Windows-verzió és a folyamat korlátain belül |
| ARM64 | 0xAA64 / PE32+ | Külön ellenőrizendő | Más architektúra; a PE32+ önmagában nem jelent AMD64/x64-et |
Ezek címtérkorlátok. Nem garantálják, hogy a kliens egyetlen összefüggő, 4 GB-os blokkot tud lefoglalni, az összes RAM-ot használhatja, vagy minden memóriafoglalás sikeres lesz. A natív x64-es állományra is további korlátozások vonatkoznak, ha az LAA jelző nincs beállítva; a tényleges korlátot ne pusztán a „64 bites” megjelölésből következtesd ki.
Fordítva is igaz: 32 GB fizikai RAM sem szünteti meg az x86-os folyamat címtérkorlátját. A korlát megemelése csak az azon múló problémákon segíthet. A sérült játékadat, az érvénytelen mutató vagy az inkompatibilis modul külön hibakeresést igényel.
Miért számít ez a különbség a Metin2 fejlesztésénél?
A Turkmmo 2026. májusi beszélgetésének szerzője MartySama v5.8 alapot nevez meg, és arról számol be, hogy a szerveroldali 64 bites fordítás könnyebb volt a kliens átültetésénél. A válaszok az x86-os és x64-es változat párhuzamos fenntartását, valamint a csomagkompatibilitás megőrzését tárgyalják. Ezek a szerző saját forráskészletéről szóló beszámolók, nem egy másik szerveren kipróbált átállási eljárás.
Egy ettől független, Linux-szerverről és x64-es kliensről szóló Reddit-beszélgetés egy másik bizonytalanságot is megmutat: arra a kérdésre, hogy maga portolta-e a klienst, a szerző azt válaszolja, hogy mástól szerezte. Egy képernyőkép vagy a szerver átültetésének ténye nem azonosítja minden összetevő eredetét, revízióját és architektúráját.
Az EterNext 2026. április 1-jei fejlesztői bejegyzése az adott projekthez tartozó natív 64 bites klienst jelent be. A jelenlegi futtatható állományukat nem vizsgáltuk meg, és a teljesítményre vonatkozó állításaikat sem reprodukáltuk. Az üzemeltető dátummal ellátott közlését az adott projektről szóló információként kezeld; mielőtt más kliensre is kiterjesztenéd, ellenőrizd annak tényleges változatát.
A játék EXE-fájljának ellenőrzése módosítás nélkül
Először azonosítsd a játékot futtató állományt. A javító-, frissítő- és beállítóprogram külön fájl lehet, akár eltérő architektúrával. Nézd meg az üzemeltető dokumentációját vagy a játékfolyamat nevét a Feladatkezelőben; ne feltételezd, hogy minden privát kliens ugyanazt a fájlnevet használja.
A Microsoft PE/COFF-specifikációja határozza meg a Machine mezőt, az opcionális fejléc formátumát és az IMAGE_FILE_LARGE_ADDRESS_AWARE jelzőt. Az alábbi Python 3-program kizárólag a szabványos könyvtárat használja, és a kiválasztott fájlt bináris olvasási módban nyitja meg. Mentsd el pe_info.py néven, majd futtasd a python pe_info.py client.exe parancsot. Az utolsó fájlnevet cseréld ki az előzőleg azonosított futtatható állomány nevére.
import json
import struct
import sys
def inspect_pe(path):
with open(path, "rb") as f:
size = f.seek(0, 2)
f.seek(0)
dos = f.read(64)
if len(dos) != 64 or dos[:2] != b"MZ":
raise ValueError("Missing DOS header")
offset = struct.unpack_from("<I", dos, 0x3C)[0]
if offset < 64 or offset + 26 > size:
raise ValueError("PE offset outside file")
f.seek(offset)
header = f.read(24)
if header[:4] != b"PE\0\0":
raise ValueError("Missing PE signature")
machine = struct.unpack_from("<H", header, 4)[0]
optional_size, flags = struct.unpack_from("<HH", header, 20)
if optional_size < 2 or offset + 24 + optional_size > size:
raise ValueError("Truncated optional header")
magic = struct.unpack("<H", f.read(2))[0]
expected = {0x014C: 0x010B, 0x8664: 0x020B, 0xAA64: 0x020B}
if machine not in expected or magic != expected[machine]:
raise ValueError("Unsupported or inconsistent Machine/Magic")
return {
"Machine": f"0x{machine:04X}",
"Format": "PE32" if magic == 0x010B else "PE32+",
"LAA": bool(flags & 0x0020),
}
if __name__ == "__main__":
if len(sys.argv) != 2:
raise SystemExit("Usage: python pe_info.py client.exe")
print(json.dumps(inspect_pe(sys.argv[1]), indent=2))
A mezőket együtt értelmezd. A Machine:0x014C, Format:PE32, LAA:true kombináció nagy címteret kezelőként megjelölt x86-os állományt jelent, nem natív x64-es programot. A Machine:0x8664 és a PE32+ együtt AMD64-et azonosít; a 0xAA64 ezzel szemben ARM64-et. Ezeket a neveket a Microsoft specifikációja rögzíti, nem a fájlnévből következtetünk rájuk.
A program ellenőrzi a DOS/PE-aláírásokat, a fejléc fájlon belüli határait és a három támogatott Machine/Magic párost. Egyszerű metaadat-olvasó, nem teljes PE-betöltési ellenőrző, digitálisaláírás-vizsgáló vagy annak megítélése, hogy biztonságos-e futtatni a fájlt. A nem támogatott vagy ellentmondásos fejléc miatt abba kell hagyni az eredmény értelmezését, nem pedig megjavítani az EXE-t. A program nem módosítja a fejlécet, és nem futtatja az állományt.
A natív x64-hez nem elég átállítani egy fejlécet
A Microsoft játékok átültetéséről szóló útmutatója a mutatók csonkolását, az igazítást, a tárolt bináris adatelrendezéseket és a külső könyvtárakat is az átállás szempontjai közé sorolja. A folyamaton belül betöltött szokásos natív DLL-eknek illeszkedniük kell a folyamat architektúrájához; egy x86-os DLL átnevezéssel nem válik x64-es függőséggé.
Egy Metin2-forrásfában ellenőrizni kell a mutatókat vagy hosszakat szűkebb egész típusokban tároló kódot, a Python és a natív kód közötti határt, az erőforrás-dekódolókat és az adott revízió által használt könyvtárakat. Ezután le kell fordítani a hozzájuk tartozó függőségeket. A pontos feladatok a projekttől függenek; ez a felsorolás nem egy azonosítatlan forráscsomagra telepíthető javítás.
Az architektúrát és a mért teljesítményt külön kezeld. Azonos kliensrevíziót, játékadatokat, jelenetet és beállításokat hasonlíts össze, és a képkockaidők mellett a memóriával összefüggő hibák körülményeit is rögzítsd. A Microsoft útmutatója portolás után teljesítményprofilozást javasol. Ehhez a cikkhez nem mértünk FPS-növekedést x64-es Metin2-klienssel.
A szervernek is 64 bitesnek kell lennie?
A hálózaton bájtok utaznak, nem a kliens processzorarchitektúrájának neve. A 32 bites kliens és a 64 bites szerver együttműködhet, ha a tényleges protokolljuk kompatibilis marad. Ennek megállapításához egy konkrét Metin2-pár csomagdefiníciói és tesztjei szükségesek; az egyező szervernevek vagy a sikeres fordítás nem bizonyítják a kompatibilitást.
Az alábbi szemléltető példa bájtformátumokat mutat be, nem egy Metin2-csomag definícióját:
import struct
for fmt in ("<BI", "<BQ"):
packet = struct.pack(fmt, 1, 1000)
print(fmt, len(packet), packet.hex())
A kimenet <BI 5 01e8030000 és <BQ 9 01e803000000000000. A Python struct dokumentációja szerint a < little-endian bájtsorrendet, szabványos méreteket és igazítási kitöltés nélküli tárolást jelent; az I 4, a Q 8 bájtot foglal. A mező egyszerű szélesítése 5-ről 9 bájtra növeli az üzenetet. A régi elrendezést váró fogadóhoz egyeztetett protokollmódosítás kell; nem elég abban bízni, hogy az új processzorarchitektúra megoldja a problémát.
Ugyanezt kell ellenőrizni a mentett bináris adatoknál és az erőforrás-formátumoknál is. Őrizd meg a hálózati és fájlformátumok kifejezett szerződéseit, vagy tudatosan vezess be új verziót, és teszteld mindkét oldalt. Ne cserélj le gépiesen minden 32 bites egészet mutatóméretű típusra: a játékazonosítók, számlálók, hosszak és mutatók eltérő feladatot látnak el.
Mit bizonyít ez az ellenőrzés a játékosoknak és az üzemeltetőknek?
Játékosként a fejléc ellenőrzésével különválaszthatod a megadott fájl architektúráját az indítóprogram megjelölésétől vagy a Windows-követelménytől. Használd a szerver által támogatott klienscsomagot, és kérdezd meg az üzemeltetőt, melyik játékverziót tartalmazza. Az eredmény nem ellenőrzi a bejelentkezést, a játékvilágba belépést, a stabilitást vagy a szerver védelmével való kompatibilitást.
Üzemeltetőként őrizd meg az ismerten működő változatot, miközben a saját tulajdonú vagy jogszerűen licencelt forrásokat és függőségeket vizsgálod. A nyilvánosan olvasható forráskód, a letöltési hivatkozás és a nyílt forráskódú licenc három külön tény. Ez a cikk nem ajánl ellenőrizetlen forráscsomag-letöltést kész 64 bites kliensként.
Az olvasóprogramot négy mesterséges fejlécmintán és két meglévő Windows-programon futtattuk, és ellenőriztük, hogy a fájlok bájtjai változatlanok maradtak. Tíz hibás vagy ellentmondásos mintát a program elutasított. A bájtsorozatot előállító példa is a dokumentált 5/9 bájtos eredményt adta. Ezek az ellenőrzések a példákat igazolják; Metin2-klienst nem fordítottunk, nem módosítottunk és nem indítottunk el, és játékteljesítményre vonatkozó eredményt sem állítunk.
Más projektnél annak saját, aktuális változatából és követelményeiből indulj ki; a Metin2 privát szerverek jegyzéke segít megtalálni a profilját. Ha a kliens a grafika inicializálásakor áll le, az ettől eltérő tünettel a külön No Appropriate Device útmutató foglalkozik.
Források
- Microsoft: LAA és a 4 GB-os címtér, memóriakorlátok Windows-verziónként, PE/COFF-formátum, játékok átültetése 64 bitre.
- Python: szabványos bináris formátumok és igazítás.
- Turkmmo: átállási kérdés megnevezett forrásalappal és Reddit: a szerző válaszai a kliens eredetéről.
- EterNext: a projekt saját átállási bejelentése.
A forrásokat 2026. november 5-én ellenőriztük. A források állításai, a futtatható állomány metaadatai és a kipróbált játékmenet továbbra is külön bizonyítékot jelentenek.
Gyakran Ismételt Kérdések
A 4 GB-os javítástól 64 bites lesz a Metin2-kliensem?
A 64 bites Windows bizonyítja, hogy a játékkliensem is 64 bites?
Csatlakozhat x86-os kliens x64-es szerverhez?
Kapcsolódó Oldalak
Találd meg a tökéletes szervered
Böngéssz a legjobban rangsorolt Metin2 privát szerverek között a METIN2.GG-n vagy küldd be a saját szervered a ranglistára.

