Poly 모드 로더 — 프로젝트 개요 및 로드맵
**Poly Mod Loader (Poly)**는 마인크래프트 Java Edition (최신 26.1, 26.1.1, 26.1.2, 26.2, 26.3, Java 25)을 위한 차세대 인게임 바이트코드 변환 엔진이자 멀티로더 통합 플랫폼입니다.
1. 프로젝트 개요
외부에서 프로필을 분리 실행하는 일반 런처(Prism Launcher, CurseForge 등)와 달리, Poly는 게임 프로세스 내부에서 동작하는 모드로더 엔진입니다:
- Fabric, Forge, NeoForge, Quilt 모드를 하나의 마인크래프트 게임 안에서 동시에 실행할 수 있습니다.
- 서로 다른 모드로더 간의 클래스 충돌, 믹스인(Mixin) 패치 불일치, 레지스트리 동결 시점 차이를 런타임에 바이트코드 레벨에서 자동으로 조율합니다.
- 플랫폼에 종속되지 않는 고유의 Native API와 선언적 바이트코드 변환기를 제공합니다.
2. 핵심 기술적 차별점
+-----------------------------------------------------------------------------------+
| Poly Mod Loader |
+-----------------------------------------------------------------------------------+
| [ Native API ] [ Fabric Bridge ] [ Forge Bridge ] [ NeoForge Bridge ] |
| - System API - FabricLoader API - FML Virtualizer - FML 11 Layer Bridge |
| - Lifecycle API - QuiltLoader API - ModLauncher Shim - Shared Mixin Engine |
+-----------------------------------------------------------------------------------+
| Poly Transform Engine (ASM 9.11) |
| - Declarative Bytecode Transforms - Dynamic Host Patch Adjustments (ADR-0030) |
| - Unified Mixin 0.8.7 Service - Granular Conflict Pre-flight Assessment |
+-----------------------------------------------------------------------------------+
| Poly Transforming ClassLoader & JRE 25 |
+-----------------------------------------------------------------------------------+
| Minecraft: Java Edition (26.x) |
+-----------------------------------------------------------------------------------+
1) 단일 JVM 멀티로더 동시 구동
별도의 에뮬레이션이나 프로세스 복제 없이, 단일 게임 클래스로더 상에서 Poly, Fabric, Forge, NeoForge 모드가 동시에 실행됩니다. Forge와 NeoForge의 FML 서비스는 Poly가 관리하는 레이어 내부에서 동작하며, Fabric과 Quilt 모드는 통합 Mixin 파이프라인으로 구동됩니다.
2) 사전 호환성 진단 (POLY-COMPAT-224)
Forge나 NeoForge가 바닐라 클래스를 패치했을 때 기존 Fabric Mixin이 충돌할 수 있습니다. Poly는 **호스트 패치 사전 검사(HostPatchCheck)**를 내장하여:
- 부팅 전 모든 모드의 Mixin을 실제 패치된 바이트코드와 대조합니다.
- 안전하게 변환 가능한 경우 파라미터 재배열, 호출 대체 등으로 실시간 적응(
HostPatchAdjustments)시킵니다. - 호환이 불가능한 모드는 시작 전에 안전하게 격리하고 명확한 진단 코드(
POLY-COMPAT-224)를 남겨 게임 크래시를 방지합니다.
3) 제로 오버헤드 네이티브 성능
- 시작 시간 및 메모리: 바닐라 및 단독 로더와 비교해 측정 오차 범위 내의 가벼운 메모리 풋프린트를 유지합니다.
- 그래픽 최적화 모드 완벽 지원: Sodium, Iris, Lithium 등 핵심 최적화 모드가 정상 작동합니다.
- 다크 테마 로딩 오버레이: 세련된
#0E131F커스텀 화면과 실시간 로더별 활성 모드 수 뱃지를 제공합니다.
3. 현재 릴리스 현황 (Release 1.2.3)
| 구성 요소 | 대상 / 범위 | 상태 | 참고 사항 |
|---|---|---|---|
| 지원 마인크래프트 | 26.1, 26.1.1, 26.1.2, 26.2, 26.3 | 안정(Stable) | 전 플랫폼 Java 25 필수. |
| Fabric 모드 지원 | Fabric Loader 0.19.5 API / Mixin 0.8.7 | 완전 지원 | 26.2 기준 인기 모드 138개 이상 동시 검증 완료. |
| Quilt 모드 지원 | Quilt Loader 0.31.x / quilt.mod.json | 완전 지원 | Modrinth 기준 Quilt 전용 모드 114개 이상 검증. |
| Forge 모드 지원 | MinecraftForge 62.0.9 ~ 66.1.0 | 완전 지원 | 클라이언트, 전용 서버, GameTest 서버 전수 검증. |
| NeoForge 모드 지원 | NeoForge 26.1.0 ~ 26.3.0 | 완전 지원 | 통합 FML 레이어를 통해 구동; Fabric/Quilt와 병행 구동. |
| Forge 상 Fabric API | 6개 핵심 모듈 (아이템, 레지스트리 동기화, 컨텐츠 레지스트리 등) | 적응 완료 | 충돌 없이 Forge 패치에 자동 재배열되어 구동. |
| NeoForge 주입점 대체 | 화면, 컨테이너 메뉴, 데이터 어태치먼트 | 활성 (1.2.3) | NeoForgeInjectionPoints 규칙 추가 완료. |
| 커스텀 로딩 UI | PolyLoadingOverlay | 완료 | 1.2.3에서 글씨 깨짐 수정 완료; 로더별 모드 수 오버레이. |
| 버그 리포트 연동 | 공식 GitHub Issues 직통 라우팅 | 완료 | 오류 및 크래시 시 공식 이슈 트래커로 바로 연결. |
4. 향후 로드맵 및 마일스톤
마일스톤 A: 클라이언트 & NeoForge Fabric API 적응 (진행 중)
fabric-screen-api-v1:GuiMixin:onExtractGui를 재타겟팅하여 NeoForge 클라이언트 UI 모드(ModMenu등) 호환성 확보.fabric-menu-api-v1&fabric-data-attachment-api-v1: NeoForge의 메뉴 오픈 및 어태치먼트 확장과 연동.- 렌더링 및 모델 모듈:
fabric-renderer-api-v1,fabric-rendering-v1,fabric-model-loading-api-v1적응.
마일스톤 B: Minecraft 26.3 실세계 대규모 모드팩 코퍼스 검증
- 26.3 환경에서 대규모 실세계 모드팩(
corpusFabric26_3,corpusForge26_3,corpusNeoForge26_3) 헤드리스 검증 및 월드 세이브/로드 안정성 확인. - 26.3 변경사항(SDL 키보드 처리, 셰이더
#include, 데이터팩 오버레이 형식) 완벽 대응.
마일스톤 C: 기술 벤치마크
- 독립 로더 대비 메모리, 틱레이트, 시작 속도 정밀 벤치마크 데이터 공개.
장기 계획: Forge on NeoForge
- NeoForge를 호스트로 두고 MinecraftForge 모드를 그 위에서 실행하는 9단계 브릿지 파이프라인 (
F-N0~F-N8).