Poradniki8 min czytania

Metin2: klient 32- czy 64-bitowy? Sprawdź EXE i flagę 4 GB

Sprawdź architekturę klienta Metin2 i flagę LAA bez modyfikowania EXE. Wyjaśniamy limity 2/4 GB, natywne x64 oraz zgodność z serwerem.

Autor METIN2.GG

Flaga 4 GB nie zmienia klienta x86 w x64

Klient Metin2 może pozostać 32-bitowym programem x86, nawet gdy działa w 64-bitowym Windows i ma włączoną flagę Large Address Aware. Ta flaga, często kojarzona z „łatką 4 GB”, dotyczy przestrzeni adresowej. Natywny klient x64 to inna kompilacja o innej architekturze maszynowej. Żadne z tych określeń samo w sobie nie dowodzi wyższych FPS ani usunięcia wszystkich awarii.

Pierwsze przydatne pytanie brzmi: jaką architekturę ma właściwy plik wykonywalny gry? Wymagania Windows podane przez serwer, jego launcher i proces gry mogą opisywać różne rzeczy. Ten poradnik wyjaśnia kontrolę nagłówka EXE wyłącznie przez odczyt oraz ograniczenia jej wyniku. Nie zakłada, że każdy serwer Metin2 udostępnia tego samego klienta.

Postać gracza Metin2 z zielonymi związanymi włosami, srebrnoniebieską zbroją i szerokim złotym ostrzem obok abstrakcyjnych paneli danych klienta

Wygenerowana ilustracja na podstawie materiałów referencyjnych Metin2. Nie jest zrzutem ekranu, pomiarem pamięci ani dowodem konkretnej kompilacji klienta.

Prawidłowo odczytuj liczby dotyczące pamięci

Dokumentacja LAA Microsoftu i tabele limitów pamięci odróżniają wirtualną przestrzeń adresową procesu od zainstalowanej fizycznej pamięci RAM. Wiersze dotyczące limitów pamięci zakładają wydanie Windows x64. Wiersz ARM64 identyfikuje inną architekturę pliku; nie oznacza, że taki plik działa w Windows x64.

Plik wykonywalnyMachine / formatLAAZnaczenie
32-bitowy x860x014C / PE32WyłączonaZwykle limit 2 GB wirtualnej przestrzeni adresowej użytkownika
32-bitowy x860x014C / PE32WłączonaDo 4 GB wirtualnej przestrzeni adresowej użytkownika; nadal x86
Natywny x640x8664 / PE32+WłączonaWiększa przestrzeń adresowa zależna od wersji Windows i limitów procesu, zamiast pułapu x86
ARM640xAA64 / PE32+Sprawdź osobnoInna architektura; samo PE32+ nie oznacza AMD64/x64

Są to limity przestrzeni adresowej. Nie obiecują, że klient przydzieli jeden ciągły blok 4 GB, wykorzysta całą pamięć RAM ani uniknie każdego nieudanego przydziału pamięci. Natywny obraz x64 z wyłączoną flagą LAA również ma dodatkowe ograniczenia. Nie wyciągaj więc wniosku o rzeczywistym limicie z samego określenia „64-bitowy”.

Analogicznie 32 GB fizycznej pamięci RAM nie usuwa pułapu przestrzeni adresowej procesu x86. Jego podniesienie pomaga tylko w problemach, które rzeczywiście od niego zależą. Uszkodzony zasób, nieprawidłowy wskaźnik lub niezgodny moduł wymaga osobnej diagnozy.

Dlaczego to rozróżnienie ma znaczenie przy rozwijaniu Metin2

W dyskusji na Turkmmo z maja 2026 autor wskazuje bazę MartySama v5.8 i pisze, że 64-bitowa kompilacja serwera była łatwiejsza niż przeniesienie klienta. Odpowiedzi dotyczą równoległego utrzymywania dystrybucji x86 i x64 oraz zachowania zgodności pakietów. To relacje dotyczące jego konkretnego zestawu źródeł, a nie przetestowana procedura migracji innego serwera.

Niezależna dyskusja na Reddicie o serwerze Linux i kliencie x64 pokazuje kolejną niejasność: zapytany, czy sam przeniósł klienta, autor odpowiada, że otrzymał go od kogoś innego. Zrzut ekranu ani sam fakt przeniesienia serwera nie określa pochodzenia, rewizji i architektury każdego składnika.

Dziennik EterNext z 1 kwietnia 2026 zapowiada natywnego 64-bitowego klienta dla tego konkretnego projektu. Nie zbadaliśmy jego aktualnego pliku wykonywalnego ani nie odtworzyliśmy deklarowanych wyników wydajności. Datowaną wypowiedź operatora traktuj jako informację o tym projekcie; sprawdź faktyczną kompilację, zanim odniesiesz ją do innego klienta.

Sprawdź EXE gry bez jego modyfikowania

Najpierw ustal, który plik uruchamia grę. Patcher, aktualizator i konfigurator mogą być oddzielnymi plikami o różnych architekturach. Sprawdź dokumentację operatora lub nazwę procesu gry w Menedżerze zadań. Nie zakładaj, że każdy prywatny klient używa tej samej nazwy pliku.

Specyfikacja PE/COFF Microsoftu definiuje pole Machine, format opcjonalnego nagłówka i flagę IMAGE_FILE_LARGE_ADDRESS_AWARE. Poniższy czytnik w Pythonie 3 korzysta tylko z biblioteki standardowej i otwiera wybrany plik w trybie binarnego odczytu. Zapisz go jako pe_info.py, a następnie uruchom python pe_info.py client.exe, zastępując ostatnią nazwę ustalonym właściwym plikiem gry.

Python
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))

Interpretuj pola razem. Machine:0x014C, Format:PE32, LAA:true oznacza obraz x86 oznaczony jako large-address-aware, a nie natywny plik wykonywalny x64. Machine:0x8664 wraz z PE32+ wskazuje AMD64, natomiast 0xAA64 oznacza ARM64. Nazwy te wynikają ze specyfikacji Microsoftu, nie z nazwy pliku.

Czytnik sprawdza sygnatury DOS/PE, granice nagłówków i trzy obsługiwane pary Machine/Magic. Jest małym inspektorem metadanych, a nie kompletnym walidatorem programu ładującego PE, narzędziem do sprawdzania podpisów ani oceną, czy plik można bezpiecznie uruchomić. Nieobsługiwany lub niespójny nagłówek oznacza, że należy przerwać interpretowanie wyniku, nie naprawiać EXE według tej informacji. Skrypt nie łata nagłówków i nie wykonuje pliku.

Natywne x64 wymaga więcej niż zmiany nagłówka

Poradnik Microsoftu dotyczący przenoszenia gier wymienia obcinanie wskaźników, wyrównanie, utrwalone układy danych binarnych i biblioteki zewnętrzne jako kwestie migracji. Zwykłe natywne biblioteki DLL ładowane wewnątrz procesu muszą odpowiadać jego architekturze. Zmiana nazwy DLL x86 nie czyni z niej zależności x64.

W drzewie źródeł Metin2 sprawdź kod zapisujący wskaźniki lub długości w węższych typach całkowitych, granicę między Pythonem a kodem natywnym, dekodery zasobów i biblioteki używane w danej rewizji. Następnie zbuduj odpowiednie zależności. Dokładny zakres prac zależy od projektu; ta lista nie jest łatką do zainstalowania w niezidentyfikowanej paczce źródeł.

Rozdziel architekturę od wyników wydajności. Porównuj tę samą rewizję klienta, zasoby, scenę i ustawienia. Oprócz czasów klatek zapisuj warunki występowania awarii związanych z pamięcią. Microsoft zaleca ponowne profilowanie po przeniesieniu programu. Na potrzeby tego artykułu nie zmierzyliśmy wzrostu FPS w kompilacji Metin2 x64.

Czy serwer też musi być 64-bitowy?

Sieć przesyła bajty, a nie etykietę CPU klienta. 32-bitowy klient i 64-bitowy serwer mogą współpracować, jeśli ich rzeczywisty protokół pozostanie zgodny. Potwierdzenie tego dla konkretnej pary Metin2 wymaga jej definicji pakietów i testów. Zgodne nazwy serwera ani udana kompilacja nie dowodzą kompatybilności.

Oto poglądowy przykład formatu bajtowego, a nie definicja pakietu Metin2:

Python
import struct

for fmt in ("<BI", "<BQ"):
    packet = struct.pack(fmt, 1, 1000)
    print(fmt, len(packet), packet.hex())

Wynik to <BI 5 01e8030000 i <BQ 9 01e803000000000000. Według dokumentacji Python struct prefiks < określa little-endian, standardowe rozmiary i brak dopełnienia wynikającego z wyrównania. I zajmuje 4 bajty, a Q 8. Samo poszerzenie tego pola zmienia wiadomość z 5 do 9 bajtów. Odbiorca oczekujący starego układu potrzebuje uzgodnionej zmiany protokołu; nowa architektura CPU sama tego nie naprawia.

Taki sam audyt dotyczy zapisanych danych binarnych i formatów zasobów. Zachowaj jawne kontrakty transmisji i plików albo świadomie wersjonuj zmiany oraz przetestuj obie strony. Nie zastępuj automatycznie każdej 32-bitowej liczby całkowitej typem o rozmiarze wskaźnika: identyfikatory gry, liczniki, długości i wskaźniki pełnią różne funkcje.

Co ta kontrola potwierdza graczom i właścicielom

Graczowi kontrola nagłówka pozwala odróżnić architekturę podanego pliku od etykiety launchera lub wymagań Windows. Korzystaj z dystrybucji obsługiwanej przez serwer i zapytaj operatora, jaką kompilację gry zawiera. Wynik nie weryfikuje logowania, wejścia do świata, stabilności ani współpracy z zabezpieczeniami serwera.

Jako właściciel zachowaj działającą kompilację podczas audytu źródeł i zależności, których jesteś właścicielem lub na których używanie masz licencję. Publicznie czytelny kod, link do pobrania i licencja open source to różne rzeczy. Ten artykuł nie poleca niezweryfikowanej paczki źródeł jako gotowego 64-bitowego klienta.

Czytnik uruchomiliśmy na czterech syntetycznych próbkach nagłówków i dwóch istniejących plikach wykonywalnych Windows, potwierdzając niezmienność ich bajtów. Odrzucono dziesięć uszkodzonych lub niespójnych próbek. Przykład serializacji dał również opisane wyniki 5/9 bajtów. Kontrole te potwierdzają przykłady; nie zbudowano, nie zmodyfikowano ani nie uruchomiono klienta Metin2 i nie deklarujemy wyniku wydajności gry.

W innym projekcie zacznij od jego aktualnej kompilacji i wymagań. Odpowiedni profil znajdziesz w katalogu prywatnych serwerów Metin2. Jeśli klient zatrzymuje się podczas inicjalizacji grafiki, osobny poradnik No Appropriate Device opisuje ten odmienny objaw.

Źródła

Najczęściej Zadawane Pytania

Czy łatka 4 GB zmienia klienta Metin2 na 64-bitowego?

Włączenie LAA w obrazie x86 nie zmienia architektury maszynowej. Proces x86 z LAA w Windows x64 może mieć do 4 GB wirtualnej przestrzeni adresowej użytkownika; natywne x64 to inna kompilacja.

Czy 64-bitowy Windows dowodzi, że klient gry też jest 64-bitowy?

Nie. System operacyjny, launcher i plik wykonywalny gry to osobne składniki. Sprawdź pole Machine i format opcjonalnego nagłówka właściwego EXE gry albo uzyskaj od operatora dokładne informacje o kompilacji.

Czy klient x86 może połączyć się z serwerem x64?

Różne architektury CPU same w sobie nie określają zgodności sieciowej. Serializowany protokół musi być zgodny. Poglądowy przykład 5/9 bajtów pokazuje, dlaczego zmiana szerokości pola może naruszyć ten kontrakt. Nie sprawdziliśmy tutaj konkretnej pary klient–serwer prywatny.

Powiązane Strony

Znajdź swój idealny serwer

Przeglądaj najlepiej oceniane prywatne serwery Metin2 na METIN2.GG lub dodaj własny serwer do rankingu.