{{{#!wiki style="display:inline-block; margin:-10px; vertical-align:bottom;" | <tablebordercolor=darkgreen> |
버전별 모드로더 · API |
}}} | ||
{{{#!wiki style="min-height:calc(1.5em + 5px); margin:0 -10px -5px; word-break:keep-all;" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin:-6px -1px -11px;" |
<colbgcolor=#eee,#2d2f34> 베타
|
Risugami's ModLoader | |||
1.1 ~ 1.6
|
포지 | '''''' | |||
1.7 ~ 1.12
|
|||||
1.13
|
|||||
1.14 ~ 1.20.1
|
패브릭 |
→ |
|||
1.20.2 ~
|
↓
|
||||
볼드 표시: 주요 모드로더 화살표: 분리된 모드로더 |
1. 개요
다양한 모드들의 호환과 다른 모드들을 쉽게 만들 수 있도록 만들어주는 비공식 모드 플랫폼. 경쟁 상대로 Forge가 있다.공식 홈페이지 Fabric Loader Fabric 위키 Fabric API
2. 특징
Yarn과 Intermediray, Loom, Fabric Loader, Fabric, Cuchaz의 Enigma 포크와 여러개의 작은 도구들을 포함하고 있다. Fabric을 사용해 개발된 모드들은 Fabric과 Fabric Loader를 설치해야 구동할 수 있다. 기존의 포지, 리프트와 같은 모드로더랑은 다르게 더 간단하고 가벼우며, 특정 버전으로의 포팅이 간편하여 개발 속도가 빠른편이다. 스냅샷 버전도 지원하며, 심지어 구버전에 이식시킨 사례도 있다. 이식에 성공한 가장 오래된 버전이 알파 1.2.2a[1]다! 또한 포지가 바닐라 코드들을 수정하여 후킹 코드들을 삽입하는 것과 달리 패브릭은 바닐라 코드에 최대한 비침습적인 방법으로 접근하는 특징을 가진다.[2]또한 OptiFine보다 훨씬 강력한 소듐(Sodium)이라는 최적화 모드가 존재하며, 소듐과 동시에 구동할 수 있는 최적화 모드들이 추가로 있어서 옵티파인과 비교가 안 될 정도의 강력한 최적화가 가능하다. 다만 소듐은 1.16.1 이상 버전에서만 사용할 수 있는데, 왜냐하면 이 모드의 개발 취지가 스피드런에서 옵티파인이 밴[3]을 먹으며 최적화 모드가 사용 불가능해지자 이에 대응하기 위해 만든 것이기 때문이다. 소듐 하나로는 셰이더 적용이 불가능하며 셰이더 적용을 위해서는 아이리스라는 셰이더 툴이 필요하다. 아이리스만 설치할 때에는 소듐을 자체적으로 내장하지만 다른 패브릭 모드처럼 jar파일로 사용하려면 소듐을 따로 다운로드 해야한다. 이를 사용하면 셰이더를 쓸 때 큰 이점을 가진다.
2018년 12월에 첫 등장한 모드 플랫폼으로 비교적 신생 모드 플랫폼임에도 불구하고 단순 좋은 성능으로 빠르게 포지와 양대산맥을 구축할 수 있었다.
3. 단점
아무래도 일반 사용자 입장에서는 포지보다 모드풀이 좁은게 느껴진다. 마인크래프트 버전 1.1부터, 혹은 그 이전부터 지원해온 포지와 비교하면 대형 모드의 부재가 꽤 크게 다가온다.제공되는 API 코드의 수가 포지에 비해 적은 편이기에 이를 보완하기 위한 코드들을 모드내에 자체적으로 구현하거나 라이브러리 모드를 사용해야 하는 점이 있다. 예컨대 포지에는 다양한 이벤트 핸들러가 있지만, 패브릭에서는 Mixin이라는 ASM[4] 툴을 이용하여 바닐라 코드에 직접 만든 이벤트를 삽입시켜야 한다. 이러한 이유로 패브릭 모드에서는 한 라이브러리/엔진을 서로 공유하는 경우가 흔하다. 또한 상술한 아이리스가 최적화가 엄청나긴 하나 지원하는 셰이더가 적은 게 단점.[5]
그리고 포지와는 다르게 API와 Loader가 분리되어 있다. 즉 Fabric Loader를 설치한 다음에 Fabric API를 mods 폴더에 넣어야 한다는 것이다. 그렇지만 Fabric API가 없어도 실행은 되기 때문에 Fabric Loader만 설치하고 실행해 본 뒤 정상적으로 설치된 것을 확인하고 게임을 끈 후에 모드를 넣어서 다시 실행했는데 오류가 나면 포지를 써오다가 패브릭을 처음 쓴다면 당황할수도 있다. 이런 단점이 있지만 장점도 있다. 포지는 업데이트 기능이 없어서 같은 버전의 포지 최신버전이 나오면 새로 설치해야 해서 이걸 반복하다보면 같은 버전의 포지가 런처에 주르르륵 나오지만 패브릭은 API가 업데이트되면 다운로드받아서 mods 폴더에 들어가서 이전 버전의 API를 삭제하고 새 버전의 API를 넣어주면 된다. 그럼 다음에 Loader를 실행하고 모드 목록에서 확인해보면 업데이트된 API를 볼 수 있다.
다만 Fabric Loader의 버전이 업데이트되는 경우도 있으며, 이 경우 새로 설치해줘야 한다.
4. 설치 방법
공식 홈페이지에서 인스톨러의 버전중 최신 버전을 다운로드하여 실행하고 마인크래프트 버전과 Loader 버전을 선택하고 Install을 눌러주면 된다. 설치 이후 이곳에 들어가서 API를 받은 후 mods 폴더에 넣어주자. 넣어야 대부분의 모드가 작동한다. 모드설치는 mods 폴더에 Fabric을 지원하는 모드 .jar 파일을 넣어주면 된다.4.1. 옵티파인 사용 방법
기본적으로 옵티파인은 사용하지 않는 것이 권장되지만, 옵티파인이 오히려 프레임이 잘 나오는 등 특수한 상황에서 사용할 수 있는 방법이다.옵티파인과 같이 사용하기 위해서는 옵티파인을 설치한 후 OptiFabric이라는 모드를 깔아줘야 하며, 옵티파인 파일도 함께 "%APPDATA%\\.minecraft\\mods"에 넣어야 한다. 하지만 셰이더 관련해서 버그가 있기 때문에 설치한 후에 .minecraft\\config\\fabric에 있는 indigo-renderer.properties 파일을 메모장으로 연 후에 always-tesselate-blocks를 auto에서 false로, ambient-occlusion-mode를 enhanced에서 vanilla로 바꿔줘야 한다.
옵티패브릭은 상술한 아이리스와 소듐을 지원하지 않기 때문에 셰이더 최적화가 패브릭만 쓸 때보다 오히려 떨어지고 모드 호환성은 매우 나빠지므로 정말 특수한 상황이 아니면 권장되지 않는 방법이다.
5. 기타
- 구버전을 엄격히 배척하고 신버전에 집중하는 포지와는 달리, 패브릭은 구버전도 적극적으로 지원하며 구버전이라도 크래시 보고를 올리고 문제점을 설명하면 바로 답변해 줄 정도로 커뮤니티가 매우 친절한 편이다.
- 패브릭의 등장 이후 마인크래프트 모드 커뮤니티는 패브릭과 포지로 분할되어 둘 중 하나를 사용하면 타 API 전용으로만 개발된 모드를 포기해야 하는 문제점이 생겨났으며, 포지가 여러 문제점 및 논란에 휩싸인 이후로 패브릭 기반으로 개발되는 모드가 늘어나고 있다. 그러나 역사가 깊은 인기 모드들은 API 코드 부족과 경로의존성 등의 이유로 여전히 포지만 지원하는 경우가 흔하다.[6] 기존 포지의 규모가 엄청 커서 이걸 지금 당장 변경하기에는 힘들지만 앞으로 먼미래에 시간이 흐름에 따라 패브릭이 포지를 추월할 가능성은 있다.
- 한때 패브릭과 포지의 모드는 상호 호환이 불가능하다는 단점을 보완하기 위해, 패브릭 환경에 포지 모드를 설치할 수 있게 해주는 PatchworkMC라는 프로젝트가 진행된 적이 있었다. 2023년 12월 기준 지원이 종료되었고 깃허브 저장소는 아카이브 되었다.
- 패브릭과 포지를 모두 지원하여, 하나의 모드 파일로 양쪽에서 동시 실행 가능한 모드 또한 존재한다. 모드의 정보를 불러오는 파일이 모딩 플랫폼마다 달라[7] 그것을 이용해 모딩 플랫폼마다 다른 코드를 실행시키게 하는 원리다. 혹은 크로스플랫폼 API 모드를 사용한 경우이다.
- 포지 전용 모드를 패브릭에 설치하거나 그 반대의 경우 충돌은 일어나지 않으나, 유효한 모드 파일로 인식되지 못하므로 로딩되지 않는다. 모드에 따라 실행 시 맞지 않는 모드라고 뜰 수도 있긴 하지만 아닌 경우가 많으므로 모드를 설치했는데 아무 일도 일어나지 않는다면 잘못된 전용 모드를 설치했을 가능성이 높다.
- 패브릭에서 사용되는 ASM 툴인 Mixin은 바이트코드 조작을 통한 소스코드 수정을 보다 편리하게 할 수 있게끔 도와주기에 패브릭 뿐 아니라 포지 모드계에서도 사용이 늘고 있다.
- 패브릭 모드를 포지로, 또는 그 반대로 포트할 경우 난독화 해제된 바닐라 코드에 대해 패브릭은 Yarn 맵핑을, 포지는 MCP 맵핑을 사용하므로 동일한 바닐라 클래스나 메소드를 사용하더라도 이름을 바꿔줘야 한다. 예를 들어 타일엔티티는 패브릭 개발환경에서는 BlockEntity.class로 명명된 반면 포지에서는 TileEntity.class로 명명되어 있다.
- Sodium가 NVIDIA 그래픽 카드 드라이버와 충돌하는 문제( #)가 있어서 게임 버전을 속이는 방식으로 패치를 적용하고 있다. 패치가 적용될 경우 게임 창 제목에는 "(version hidden from driver)"라는 글자가 붙여진다. 2023년 12월 기준으로 이 문제는 해결되어서 나오지 않는다.
- 마인크래프트 1.3.2~1.13.2에서 돌아가는 Legacy Fabric이란 녀석도 존재한다.
[1]
pack.png가 촬영된 그 버전 맞다.
[2]
그래서인지 패브릭 기반 모드들은 대부분 바닐라 친화적인 특징을 지닌다. 반대로 포지는
테라퍼마처럼 바닐라 시스템 자체를 갈아엎어버리는 모드들도 있다.
[3]
시야 확대 기능(줌 모드) 사용 금지, 안개 제거 옵션,
빠른 계산으로 인한 오차, 바닐라보다 높은 렌더 거리,
셰이더 금지, 애니메이션 차단 금지, 옵티파인 리소스팩 사용 금지, 맑은 물 금지, 세부 파티클 설정 금지, 스무스 청크, FPS 표시 금지, 물속 안개 제거 금지 등. 옵티파인 설정 제한 규칙만 해도 2페이지로 넘어가는 바람에 옵티파인 사용을 금지시킨 것.
[4]
자바 바이트코드를 조작하여 소스코드를 간접적으로 수정하는 기능이다.
[5]
그나마 보편적으로 인기 있는 셰이더는 대부분 지원하고있으며, Iris 출시 이후에 나온 대부분의 셰이더 팩은 OptiFine과 Iris 둘다 지원하는 추세이다. 또한 Iris 쪽에서도 점점 옵티파인 셰이더를 지원 가능하게 개발하는 중이다.
[6]
IC2, 빌드크래프트, Applied Energistics 등의 예외가 있긴 하나 아직 소수이다.
[7]
Forge의 경우 mods.toml, Fabric의 경우 fabric.mod.json