본문으로 건너뛰기
버전: Minecraft 26.2

Minecraft 26.1 · 26.2 · 26.3 코드 일치도(98%) 및 아키텍처 영향 분석 보고서

문서 번호: PML-ANALYSIS-2026-10-27
대상 버전: Minecraft 26.1, 26.1.1, 26.1.2, 26.2, 26.3 (Java 25)
분석 기준: Poly Mod Loader 바이트코드 엔진 및 minecraftVersionDiff 정량 측정 데이터


1. 개요 및 배경​

커뮤니티 및 일반 분석에서 **"Minecraft 26.1, 26.2, 26.3의 코드가 전체적으로 약 98% 일치한다"**는 주장이 자주 제기됩니다.

이 분석은 거시적인 통계(클래스 수, 게임 플레이 로직, 수학 라이브러리 등) 관점에서는 사실에 부합하지만, 바이트코드를 런타임에 직접 조작하고 가상화하는 모드 로더(Poly Mod Loader, Fabric, Forge, NeoForge) 관점에서는 치명적인 기술적 착시를 유발할 수 있습니다.


2. 정량적 지표: 무엇이 같고 무엇이 다른가?​

+-----------------------------------------------------------------------------------+
| Minecraft 26.3 Client JAR (11,383 클래스) |
+----------------------------------------------------+------------------------------+
| 동일/유사 유지 클래스 (약 95~98%) | 핵심 변경 (Breaking 2%) |
| - 월드 틱 및 청크 루프 | - 렌더링 엔진 전면 교체 |
| - 블록/아이템 정의 및 상태 머신 | - GLFW -> SDL 입력 교체 |
| - 엔티티 AI 및 경로 탐색 | - Java 25 런타임 인수 강화 |
| - JOML 수학 및 네트워킹 기본 구조 | - 3,188개 클래스 바이트코드 변경|
+----------------------------------------------------+------------------------------+
항목Minecraft 26.2Minecraft 26.3변동 사항 / 영향
Java 런타임Java 25Java 25동일 유지 (java-runtime-epsilon)
전체 클래스 수10,952개11,383개+980개 추가, -549개 삭제
바이트코드 변경 클래스-3,188개전체 클래스의 약 28%에서 바이트코드 변형 발생
에셋 인덱스3234포맷 갱신
윈도우/입력 백엔드lwjgl-glfwlwjgl-sdlGLFW 완전 제거, SDL 전면 도입

3. 치명적인 "2%의 차이": 5대 핵심 파괴적 변경사항​

98%의 게임 로직이 유지되더라도, 변경된 2%는 게임 엔진의 가장 밑바닥 인프라에 집중되어 있습니다.

① 렌더링 파이프라인의 전면 소멸 및 교체 (com.mojang.blaze3d 증발)​

  • 현상: 마인크래프트에서 오랫동안 사용된 com.mojang.blaze3d 패키지 전체가 26.3에서 통째로 삭제되었습니다.
  • 삭제된 핵심 클래스 (24개 중 일부):
    • com.mojang.blaze3d.pipeline.RenderPipeline
    • com.mojang.blaze3d.systems.GpuDevice
    • com.mojang.blaze3d.buffers.GpuBuffer
    • com.mojang.blaze3d.systems.RenderPass
    • com.mojang.blaze3d.vertex.VertexFormat
  • 신규 도입: 차세대 렌더링 계층인 com.mojang.renderpearl(api/pipeline, api/device, backend/opengl, backend/vulkan) 도입.
  • 영향: 모든 모드의 커스텀 GUI 화면, 텍스처 렌더링, 셰이더 및 최적화 모드(Sodium, Iris) 코드가 100% 무력화됩니다.

② 창(Window) 및 입력 서브시스템 교체 (GLFW → SDL)​

  • 현상: lwjgl-glfw와 lwjgl-tinyfd 라이브러리가 완전히 제거되고 **lwjgl-sdl**이 도입되었습니다.
  • 영향:
    • 키 입력 코드가 GLFW 정수 상수에서 SDL 스캔코드로 변경되었습니다.
    • 기존 26.1/26.2용으로 빌드된 모드들은 사용자가 키를 눌러도 엉뚱한 키로 인식하거나 예외를 발생시킵니다.
  • Poly의 해결책: [ADR-0029]를 수립하여 Poly Native 키코드를 GLFW 기반으로 고정하고, 26.3 게임 계층에서 119개의 GLFW ↔ SDL 양방향 스캔코드 매핑 테이블을 구축하여 흡수했습니다.

③ Mixin 시스템의 극단적 취약성 (LVT 및 바이트코드 밀림)​

  • 현상: Fabric과 NeoForge 모드 생태계는 바닐라 바이트코드의 특정 위치에 코드를 주입하는 **Mixin(0.8.7)**에 의존합니다.
  • 영향:
    • 26.3에서 바이트코드가 바뀐 3,188개 클래스 중 메서드 내부의 로컬 변수 테이블(LVT)이나 옵코드 순서가 단 1줄이라도 변경되면, Mixin은 대상 주입 지점(InjectionPoint)을 찾지 못하고 즉시 MixinTransformationException을 던지며 게임이 크래시납니다.

④ Java 25 런타임 제약 및 JVM 파라미터 정책 변경​

  • 제거된 플래그: --sun-misc-unsafe-memory-access=allow
  • 추가된 플래그:
    • -XX:StackShadowPages=32
    • --add-exports java.base/jdk.internal.misc=ALL-UNNAMED
  • 영향: 구형 리플렉션이나 고성능 네이티브 버퍼에 비표준 접근을 시도하던 로더 및 라이브러리들이 JVM 부팅 단계에서 즉시 차단됩니다.

⑤ 엔티티 및 바이옴 스폰 아키텍처 개편​

  • 엔티티 피격 속도 동기화 메서드가 hurtMarked에서 syncVelocity로 변경되었습니다.
  • 바이옴 엔티티 스폰 목록이 환경 속성 EnvironmentAttributes.NATURAL_MOB_SPAWNS 오버레이 체계로 변경되었습니다.

4. Poly 로더 모듈 영향도 정밀 분석​

Poly Mod Loader의 26.2 모듈(poly-version-adapter-v26_2, poly-game-v26_2)이 참조하는 바닐라 클래스 469개와 멤버 1,007개를 대상으로 실시한 정량 분석 결과:

  • 26.3에서 완전히 삭제된 클래스: 24개
  • 더 이상 찾을 수 없는 필드 및 메서드: 64개
  • 바이트코드가 변형된 사용 클래스: 206개

아키텍처 결론​

단순한 핫픽스로는 두 버전을 하나의 모듈에서 감당할 수 없으며, poly-version-adapter-v26_3 및 poly-game-v26_3 독립 모듈이 필수적입니다.

Buy me a coffee