콘텐츠로 이동

Slime 월드 포맷

Slime 월드 포맷은 Hypixel이 개발한 월드 저장 포맷이다.

장점:

  • zlib 대신 zstd를 써서 용량과 로딩 속도가 크게 개선된다.
  • 데이터베이스를 로딩 백엔드로 쓸 수 있어, 여러 서버에 걸친 미니게임에 아주 유용하다.
  • readonly를 지원한다. 게임이 끝나면 변경 사항은 사라진다.
  • 메모리에 미리 로드되므로 플레이어가 로딩 때문에 렉을 겪지 않는다.

적합한 서버:

  • 대형 야생 월드에는 맞지 않고, 미니게임 맵이나 서버 로비 같은 작은 월드에 적합하다.

GitHub Release에서 맞는 버전을 받으면 된다.

  • plugin-***-R0.1-SNAPSHOT.1.jar ASM의 플러그인 버전(추천).
  • asp-server.jar ASM의 독립 서버 코어 버전(Paper 기반).
  • importer-***-R0.1-SNAPSHOT.jar ASM의 독립 임포트 도구. 바닐라 월드 포맷을 SRF 포맷으로 변환할 수 있다.

이 부분에서는 Slime 월드를 설정하는 방법을 다룬다.

예시:

worlds:
my_great_world:
source: mongodb
loadOnStartup: false
readOnly: true
spawn: 940, 2, -370
allowMonsters: false
allowAnimals: false
difficulty: peaceful
pvp: false
environment: NORMAL
worldType: default

source 월드를 저장할 데이터 소스 이름.

사용 가능한 값: file, mysql, mongodb. 서드파티 플러그인이 제공하는 다른 데이터 소스도 쓸 수 있다.

loadOnStartup 서버 시작 시 월드를 로드할지 여부.

사용 가능한 값: true, false.

readOnly 읽기 전용 옵션.

true이면 월드의 변경 사항이 절대 저장되지 않는다. false이면 월드가 잠기므로, 다른 서버는 읽기 전용 모드가 아니면 이 월드에 접근할 수 없다.

spawn 월드의 스폰 좌표.

기본값: 0, 255, 0

environment 월드 환경.

사용 가능한 값: normal, nether, the_end

worldType 월드 유형.

사용 가능한 값: default, flat, large_biomes, amplified, customized, debug_all_block_states, default_1_1.

나머지 옵션은 이름만 봐도 뜻을 알 수 있으니 설명은 생략한다.

데이터베이스에 월드를 저장하려면 먼저 sources.yml에서 설정해야 한다. 예시:

file:
# 월드를 저장할 경로
path: slime_worlds
mysql:
enabled: true
host: 127.0.0.1
port: 3306
username: my_mysql_username
password: my_mysql_password
database: slimeworldmanager
mongodb:
enabled: true
host: 127.0.0.1
port: 27017
username: my_mongo_username
password: my_mongo_password
auth: admin
database: slimeworldmanager
collection: worlds

공식 Wiki를 참고하자.

1.8 버전 Wiki.

공식 Wiki를 참고하자.

1.8 버전 Wiki.

설정 파일에서 enable_async_world_gen 옵션을 켜면 된다.

물론이다.

Multiverse-Core는 월드 디렉터리를 찾지 못하기 때문에 Slime 월드를 로드되지 않은 상태로 보고 그냥 무시한다. 문제가 생기지는 않지만, Multiverse-Core로 Slime 월드를 다룰 수는 없다.

있다. Slime은 최대 46340x4630 청크 영역까지 처리할 수 있다. 메모리가 충분하다는 전제하에 이론상 처리 가능한 최대 크기다. 물론 이렇게 큰 월드는 전혀 추천하지 않는다.