개인 자료란 (JE)

  서버 커뮤니티


Profile 마리오군 한마포 명예에디터

MarioGoon 6af4b154a2a44198b5f6ee94fea77528

Profile

자료 공통 게임소식 업데이트

마인크래프트 1.18 정식 업데이트 (총정리-기술편)

2021.12.05 조회 수 701 추천 수 3
플랫폼 자바 에디션 (JE) 

블로그 / 텔레그램 채널

기본 업데이트 내용이 궁금하다면? 기본편 보러가기 > 

f7f65e3a076053000d04a5995ac1fb33.png

꽤 긴 여정이었지만 저희는 여기 있습니다. 정상에서 말이죠. 동굴과 절벽(Caves & Cliffs) 업데이트: 2부가 오늘 출시(당시 11월 30일)되어 많은 기대를 모은 동굴 업데이트를 완료했습니다. 그 어느 때보다 높은 산의 정상에 오르는 것보다 축하하는 더 좋은 방법은 무엇일까요? 잠시 시간을 내어 그 견해를 살펴보겠습니다. 기다리세요. 무슨 소리예요. 염소가 돌아왔다고 말하지 마세요.

아아아악.

으악! 아야! 아오!

어디 있는 거지? 여기 어두워요! 오늘보다 더 멀리 떨어진 것 같습니다. 피규어. 이 점적석 동굴에서 벗어나려고 노력하는 동안 1.18이 제공하는 모든 새로운 기능을 즐겨주시기 바랍니다. 떠나기 전에 촛불을 건네주실래요? 여기 아래는 정말 어둡습니다.

- 마인크래프트 홈페이지 뉴스 내용 중

마인크래프트 자바 에디션 1.18, 동굴과 절벽(Caves & Cliffs): 2부2021년 11월 30일자로 정식 출시되었습니다.

1.18에서는 주요 업데이트는 물론, 자바 버전이 16에서 17로 올라가고, 세계 생성, 오래된 세계에 대한 변환 방법, 렌더링 방법과 성능 개선, 버그 수정 등이 이루어졌습니다.

기존 계획에서 두 부분으로 나누어 진행됐기 때문에 1.17이 나온 지 약 반 년만에 출시되었습니다. 늘 그렇듯이... 내용이 너무 방대하고, 학업인 데다가 기말고사 기간까지 겹쳐서 업로드가 늦어진 점 이해 부탁드립니다.

* 동굴과 절벽 업데이트 로고 한글화는 여기를 눌러 내려받을 수 있습니다.


업데이트 내용


세계 생성

기반암 층은 이제 생성될 때 세계의 시드에 따릅니다.

오버월드 생성을 위한 난수 생성기가 새로워졌습니다.


오래된 세계

마인크래프트 1.2 이전 버전("Anvil" 이전)에 마지막으로 저장한 세계를 열려면 이전 버전에서 변환해야 합니다.

1.6.4와 그 이전 버전에서는 잘 작동하며, 이후 버전에서 처음 세계를 열면 잘못된 생물 군계 정보를 가집니다.


자바

자바(Java/OpenJDK) 런타임 버전이 17로 올라갔습니다.

이번 버전부터 기본 런처에 별도로 설정을 하지 않은 경우 자바 17이 기본으로 설치되며, 제삼자 런처를 사용중인 경우, 서버를 운영중인 경우 설치되는(혹은 수동으로 설치한) 자바 버전을 확인해야 할 수 있습니다. 자바 17이 아닌 경우 실행이 불가능할 수 있습니다.


bdefe68c2d807e15288aecd0a887d97c.jpeg예전에 서버 돌리던 시절의 맵. 렌더거리: 청크 9개

렌더 거리

이제 청크가 플레이어 주위에 정사각형 대신 원통형으로 불러옵니다. 원 밖의 거리는 그림자로 처리됩니다.


청크 렌더링

파이프라인 우선 순위가 변경됨으로써 최고 렌더 거리로 세계를 빠르게 비행하는 동안 더 이상 렌더링되지 않은 청크 구멍이 나타나지 않습니다.


시뮬레이션 거리 설정

비디오 설정에서 슬라이더(서버의 server.properties에서는 simulation-distance)로 조정할 수 있으며, 해당 거리로 설정하면 개체가 시뮬레이션 거리 밖에서 업데이트되지 않고 CPU 부하는 줄이면서 더 높은 렌더 거리를 허용할 수 있습니다.


청크 구성기 설정

이 설정은 청크 섹션이 단일 프레임으로 돌아가는 동안 즉시 업데이트되는지 또는 스레드를 사용하여 비동기적으로 업데이트되는지를 결정합니다.

  • 완전 차단형 - 블록이 부서질 때 발생할 수 있는 시각적 간격을 방지하는 청크를 업데이트했던 이전 방식에 해당합니다.
  • 스레드 활용 - 블록(특히 광원)을 놓거나 부술 때 버벅거림을 크게 줄이지만 짧은 시각적 간격은 거의 발생하지 않을 수 있습니다.
  • 부분 차단형 - 중간 설정이며, 중요한 것으로 간주되는 청크만 즉시 업데이트합니다. 그렇지 않은 경우 업데이트가 스레드를 사용하여 비동기적으로 발생합니다.


몹 생성 제한은 이제 각 차원의 전역이 아닌 플레이어 단위로 이루어집니다.


백그라운드 스레드

worldgen을 비롯한 다양한 백그라운드 작업은 이제 백그라운드 스레드 풀에서 실행됩니다.

사용하는 스레드는 사용 가능한 CPU 스레드의 양에서 1을 뺀 것과 같지만 상한은 7까지였으며, 이제 이 상한은 255로 증가되었습니다. 이는 세계 최고 수준의 성능을 가진 고급형 기기에도 도움이 될 수 있습니다.

예를 들어, 단일 시스템에서 여러 서버를 실행할 때 상한선은 자바 시스템 속성인 max.bg.threads로 재정의될 수 있습니다.


리소스 팩

리소스 팩의 포맷 버전이 8로 올라갔습니다. 8 이하인 버전은 기본적으로 호환되지 않음으로 표시됩니다(적용은 가능).

minecraft/textures/gui/container/inventory.png는 이제 보관함에 있는 효과 목록의 얇은 레이아웃 버전에 대한 추가 스프라이트를 포함합니다.

서버 리소스 팩의 경우 크기 제한이 100MB에서 250MB로 늘어났습니다.


데이터 팩

데이터 팩의 포맷 버전이 8로 올라갔습니다. 8 이하인 버전은 기본적으로 호환되지 않음으로 표시됩니다(적용은 가능).


d7f9f5b777571191e26af0bc99518257.jpeg

디버그 화면

이제 세계 생성 멀티노이즈에 대한 정보가 표시됩니다.


발전 과제

변경된 트리거

nether_travel

  • 입력된 조건이 start_position으로 이름이 변경되었습니다.
  • exitedplayer.location과 동일하므로 제거되었습니다.

새로운 트리거

fall_from_height

플레이어가 떨어진 후 착지할 때 트리거됩니다.

조건은 다음과 같습니다:

  • player - 이 트리거가 실행되는 플레이어
  • start_position - 시작 전 마지막 위치에 대한 위치 술어
  • distance - start_position과 플레이어 사이의 거리에 대한 술어

ride_entity_in_lava

플레이어가 용암에서 탈 때마다 틱마다 트리거됩니다.

조건은 다음과 같습니다:

  • player - 이 트리거가 실행되는 플레이어
  • start_position - 탑승이 시작된 위치(용암의 첫 틱)
  • distance - start_position과 플레이어 사이의 거리에 대한 술어


노획물 목록

변경된 함수

set_contents, set_loot_table의 새로운 필수 필드 유형이 추가되었습니다.

여기서 type은 해당 태그가 버전 간 올바르게 이동할 수 있는지 확인하기 위해 BlockEntityTag.id에 기록됩니다.

새로운 함수

모든 아이템에 potion 태그를 설정할 수 있는 set_potion 태그가 추가되었습니다.

여기서 매개변수인 id는 물약의 ID를 뜻합니다.


입자

block_marker

구성된 블록 상태에 할당된 모델의 입자 슬롯에 선언된 텍스처로 렌더링합니다.

블록 입자와 동일한 구문으로 소환됩니다(예: block_marker wheat[age=2]).


, 방벽

입자가 block_marker로 교체되었습니다.


생성기 데이터

  • 생성기는 이제 SpawnData 필드와 SpawnPotentials 목록에서 custom_spawn_rules NBT를 지원합니다.
  • custom_spawn_rules는 이제 block_light_limitsky_light_limit 필드를 포함할 수 있습니다. 이는 둘 다 min_includemax_inclusive 필드가 있는 정수 범위이며, 몹 생성에 대한 조명 검사를 무시할 수 있습니다.
  • SpawnPotentials 형식을 다른 가중치 목록과 유사하게 만들기 위해 구조가 {weight: <int>, data: <previous contents without 'Weight', 'Entity' renamed to 'entity'>}로 변경되었습니다.
  • 해당 변경 사항을 수용하기 위해 SpawnData의 이전 내용이 SpawnData.entity로 이동되었습니다(해당 필드의 형식을 SpawnPotentials.data의 요소와 동일하게 만듦).

예시

SpawnData: {
    entity: {
        id: "minecraft:cow"
    },
    custom_spawn_rules: {
          sky_light_limit: {min_inclusive: 10, max_inclusive: 15}
    },
}
SpawnPotentials: [
  {
    data: {
      custom_spawn_rules: {
          block_light_limit: {min_inclusive: 0, max_inclusive: 15}
      },
      entity: {id: "minecraft:pig"},
    },
    weight: 2
  },
  {
    data: {
      custom_spawn_rules: {
          block_light_limit: {min_inclusive: 5, max_inclusive: 10},
          sky_light_limit: {min_inclusive: 10, max_inclusive: 15}
      },
      entity: {id: "minecraft:panda"}
    },
    weight: 1
  }
]


세계 데이터: 청크 포맷

  • 청크의 Level이 제거되었으며, 그에 포함된 모든 것이 이동되었습니다.
  • 청크의 Level.Entitiesentities로 이동되었습니다.
  • 청크의 Level.TileEntitiesblock_entities로 이동되었습니다.
  • 청크의 Level.TileTicks, Level.ToBeTickedblock_ticks로 이동되었습니다.
  • 청크의 Level.LiquidTicks, Level.LiquidsToBeTickedfluid_ticks로 이동되었습니다.
  • 청크의 Level.Sectionssections로 이동되었습니다.
  • 청크의 Level.Structuresstructures로 이동되었습니다.
  • 청크의 Level.Structures.Startsstructures.starts로 이동되었습니다.
  • 청크의 Level.Sections[].BlockStates, Level.Sections[].Palettesections[].block_states의 컨테이너 구조로 이동되었습니다.
  • 청크의 Level.Biomes는 이제 팔레트에 표시되고 sections[].biomes의 유사한 컨테이너 구조에 있습니다.
  • 청크의 최소 섹션 y 위치에 yPos가 추가되었습니다.
  • 0 아래의 높이의 생성을 지원하는 데이터가 포함된 below_zero_retrogen이 추가되었습니다.
  • 새로운 세계 생성을 기존 청크와 혼합하는 것을 지원하기 위해 데이터가 포함된 blending_data가 추가되었습니다.


서버

서버는 이제 server.properties에서 hide-online-playerstrue로 변경하면 서버 상태에 플레이어 목록을 볼 수 없습니다.

번들링

server.jar은 이제 모든 파일을 단일 아카이브로 병합하는 대신 개별 라이브러리를 번들로 제공합니다.

이런 변경점은 자바 모듈과 관련된 특정 문제를 해결하기 위한 것이며, 시작 시 server.jarbundlerRepoDir(기본값: Working Directory)에 의해 구성된 디렉토리에 라이브러리의 압축을 풉니다.

서버와 다른 기본 클래스를 실행하려면 bundlerMainClass 속성(예: java -DbundlerMainClass=net.minecraft.data.Main -jar server.jar --reports)을 사용하거나 수동으로 jar 압축을 풀고 명령줄에 META-INF/classpath-joined의 내용을 사용하세요.

bundlerMainClass가 비어 있으면 프로그램은 파일의 유효성을 검사하고 추출한 다음 종료됩니다.

서버 클래스는 이제 서명되었습니다.


JFR 프로파일링

사용자 지정 이벤트

jfr start 명령 또는 --jfrProfile 시작 플래그를 사용하여 프로파일링을 시작할 때 모든 이벤트가 활성화됩니다.

모니터링 목적으로 다른 수단을 통해 프로파일링을 시작하면 기본적으로 ServerTickTime, LoadWorld, NetworkSummary만 포함됩니다.

  • minecraft.ServerTickTime: 1초 간격으로 평균 서버 틱 시간을 노출하는 샘플링 이벤트
  • minecraft.NetworkSummary: 연결 당 총 패킷 크기, 개수를 보고하는 주기적인 이벤트 (10초 간격)
  • minecraft.PacketReceived | minecraft.PacketSent: 네트워크 트래픽
  • minecraft.ChunkGeneration: 개별 청크 레벨을 생성하는 데 걸리는 시간
  • minecraft.LoadWorld: 초기 세계를 불러오는 데 걸리는 시간

개요

Java Flight Recorder(자바 비행 기록기)는 성능과 런타임 특성을 분석하기 위해 자바 런타임과 함께 번들로 제공되는 내부 JVM 프로파일링 도구입니다. 내부 JVM 성능 메트릭스와 기본 자바 프로파일러 또는 모니터링 에이전트를 사용하여 모니터링하거나 분석할 수 있는 사용자 정의 메트릭스를 노출하는 데 유용한 도구입니다.

프로파일링 수명 주기

다음 대안 중 하나를 사용하여 프로파일링 실행을 시작할 수 있습니다:

  • 마인크래프트 서버 또는 클라이언트(런처의 설치 설정에 있는 JVM 인수(설정 더 보기 눌러야함))를 시작할 때 --jfrProfile 플래그 시작
  • 게임 내 jfr start 명령
  • jcmd와 같은 일반 자바 CLI 도구

다음 대안 중 하나를 사용하여 프로파일링 실행을 중지할 수 있습니다:

  • JVM 종료
  • 게임 내 jfr stop 명령
  • jcmd와 같은 일반 자바 CLI 도구

보고

요약된 JSON 보고서는 로그 파일과 디버그 폴더 모두에 기록되며, JMC 또는 형식을 지원하는 다른 프로파일러 도구에서 분석할 수 있는 .jfr 기록이 동반됩니다.


원격 측정

이번 버전부터 2018년까지 자바 에디션의 일부였던 진단 추적 기능이 다시 도입되었습니다.

플레이어를 더 잘 이해하고 경험 개선을 위해 다시 추가되었으며, 실제로 이는 복잡한 지형에서 하드웨어가 성능이 떨어지는지와 같이 게임에서 기술적인 문제를 식별하는 것을 의미할 수 있습니다.

이 정보는 또한 개발의 다양한 측면을 우선시하고, 게임 기능의 균형을 맞추는 데 도움이 될 수 있으며(예를 들어 염소가 모든 플레이어를 절벽에서 밀어내고 있다는 것을 배움으로써), 새로운 사용자에게 (많은 사람들이 같은 곳에 막혀 있다는 사실을 깨달은 후) 도움을 줄 수도 있습니다.

모든 데이터는 GDPR(General Data Protection Regulation, 개인정보보호 규정)CCPA(California Consumer Privacy Act, 캘리포니아 소비자 프라이버시법)의 모범적 사례에 따라 처리되며, 더 나은 성능과 일반적으로 더 즐거운 마인크래프트: 자바 에디션을 개발하는 데 사용됩니다.

이 시점에서 구현된 유일한 이벤트는 세계 불러오기입니다.

세계 불러오기 이벤트

싱글 플레이 세계를 불러오거나 멀티 플레이 서버에 연결할 때 전송됩니다. 이벤트는 다음 정보가 포함되어 있습니다:

  • 런처 식별자
  • 사용자 식별자 (XUID)
  • 클라이언트 세션 ID (재시작 시 변경)
  • 세계 세션 ID (세계 불러오기 당 변경점, 이후 이벤트에 재사용)
  • 게임 버전
  • 운영 체제 이름 및 버전
  • 자바 런타임 버전
  • 클라이언트 또는 서버가 수정된 경우(충돌 로그와 동일한 정보)
  • 서버 유형(싱글 플레이어, 렐름(Realms) 또는 기타)
  • 게임 모드


기타

  • 점수판, 점수 보유자, 팀 이름에 대한 길이 제한이 제거되었습니다.
  • 클라이언트바운드 청크 업데이트 네트워크 패킷이 가벼운 업데이트 데이터를 추가로 포함하는 다른 패킷으로 교체되었습니다. 별도의 조명 업데이트 패킷이 여전히 존재하며, 청크 업데이트 없이 조명 업데이트가 발생할 때 전송됩니다.
  • 마인크래프트: 던전스에 있는 룬 같은 글꼴이 추가되었습니다. 현재 illageralt 명령을 통해서만 사용 가능합니다.
  • 데이터 생성기의 --report 설정은 이제 생물 군계 대신 전체 worldgen의 참조 파일을 생성합니다.


고침

250개 이상의 문제들이 고쳐졌습니다. 자세한 내용을 보려면 여기를 누르세요(영어)


기술 업데이트 내용이 궁금하다면? 기본편 보러가기 > 




개발 버전 목록

1.18이 정식으로 출시되기까지 7개의 실험용 스냅샷, 8개의 스냅샷, 8개의 프리릴리스, 4개의 릴리스 후보, 합해서 총 26개의 개발 버전이 나왔습니다.

각 버전을 누르면 해당 버전의 업데이트 내용을 보실 수 있습니다.

실험용 스냅샷

스냅샷 (21w)

프리릴리스

릴리스 후보(RC)


출처 및 참고

https://www.minecraft.net/ko-kr/article/caves---cliffs--part-ii-out-today-java


바로가기

⚠️ 마인크래프트 계정 이동에 관한 내용은 여기를 참조하세요! ⚠️


동굴과 절벽 업데이트 내용은 여기를 참조하세요!


마인크래프트 관련


글쓴이  마리오군
번역도움  파차 


Warning
댓글이 없습니다.

새로운 댓글을 등록해 주세요!