Minecraft: Java Edition, 창·입력 백엔드를 SDL3로 전환

18 hours ago 3
  • Minecraft 26.3 Snapshot 4는 창 관리·입력·플랫폼 통합 백엔드를 GLFW에서 SDL3로 교체하고, 키보드 입력에 SDL 스캔코드와 키코드를 도입함
  • 키 바인딩은 자판 배열별 코드 대신 물리적 키 위치를 사용하며, Linux에서는 가능하면 Wayland를 우선하고 macOS에서는 네이티브 입력 후보 창을 지원함
  • 사용자 지정 화로·양조 연료용 데이터 컴포넌트가 추가돼 연소 시간, 사용 횟수, 조리·양조 속도를 number provider로 설정할 수 있음
  • 데이터 팩 111.0과 리소스 팩 92.0에서 표지판 클릭 이벤트, 전리품 테이블 참조, 발전 과제 트리거, 몹 생성 환경 속성, 지형 생성 설정과 셰이더가 대폭 바뀜
  • Windows 다중 모니터와 Wayland에서는 독점 전체 화면 충돌이 알려져 있으며, 테스트 버전이 월드를 손상시킬 수 있어 백업하거나 별도 폴더에서 실행해야 함

SDL3 기반 창·입력 시스템

  • 창 관리, 입력, 플랫폼 통합 라이브러리를 GLFW에서 SDL3로 전환
    • 키보드 입력은 물리적 키 위치에 SDL scancode를 사용함
    • 자판 배열에 따라 달라지는 텍스트 편집 단축키에는 SDL keycode를 적용함
  • 키 바인딩은 자판 배열별 키 코드가 아닌 물리적 키를 기준으로 동작함
  • Raw Input 마우스 설정을 제거하고, 게임 플레이 중에는 항상 상대 마우스 모드를 사용함
  • 테두리 없는 전체 화면이 기본 전체 화면 모드가 됐으며, 테두리 없음과 독점 모드 사이를 재시작 없이 전환할 수 있음
    • macOS에서는 독점 전체 화면을 더 이상 지원하지 않음
    • 최소 창 크기는 320×240픽셀
  • Linux에서는 사용할 수 있을 때 Wayland를 네이티브로 우선 사용
  • macOS에서 텍스트 입력 중 키를 길게 누르면 네이티브 악센트·후보 팝업이 표시됨

알려진 전체 화면 문제

  • Windows의 독점 전체 화면은 특정 상황, 특히 다중 모니터 환경에서 게임 충돌을 일으킬 수 있음
  • Wayland에서는 독점 전체 화면에 진입하면 게임이 충돌함

플레이와 인터페이스 변경

  • 관전자 모드 플레이어가 포털과 상호작용해 순간이동할 수 있음
  • 아르마딜로는 액체에 잠겼을 때 몸을 말려고 시도하지 않음
  • 디버그 오버레이에 별도 GUI 배율을 적용할 수 있음
    • F3 + F6의 Debug Options에서 설정함
    • 기본값 Auto는 일반 GUI보다 높은 해상도를 유지하고, Unchanged는 일반 GUI 배율과 일치함
    • 플레이어의 틱당 블록 이동 속도를 보여주는 player_speed와 디스플레이 주사율 표시도 추가됨
  • 크리에이티브 인벤토리의 광물 순서를 비티어 재료, 미정제 티어 재료, 정제 티어 재료 순으로 재배치함
    • 건축 블록은 비티어 광물, 정제 티어 광물, Copper 계열 순이며 항목이 많은 Copper 블록은 뒤쪽에 배치함
    • Natural Blocks 탭은 Overworld → Nether → End 순서로 정리됨

사용자 지정 연료와 아이템 컴포넌트

  • minecraft:cooking_fuel은 Furnace, Smoker, Blast Furnace용 연료를 정의함
    • burn_time은 연소 틱 수, speed_multiplier는 조리·제련 속도를 각각 minecraft:number_provider로 지정함
  • minecraft:brewing_fuel은 Brewing Stand 연료의 사용 횟수와 양조 속도를 정의함
    • 기존 #brewing_fuel 아이템 태그는 제거돼 새 양조 연료 등록에 사용할 수 없음
  • Smoker와 Blast Furnace 레시피는 Furnace와 같은 조리 시간을 사용하며, 속도 향상은 연료 컴포넌트의 minecraft:cooking/speed_default가 담당함
  • 화로·훈연기·용광로의 조리 및 연료 시간 필드는 short에서 integer로 바뀌고 speed_multiplier가 추가됨
  • Brewing Stand의 BrewTime과 Fuel도 integer로 바뀌며 total_brew_time, total_fuel, speed_multiplier가 추가됨
  • 추가된 데이터 컴포넌트는 다음과 같음
    • minecraft:sign_text_front, minecraft:sign_text_back: 표지판 앞·뒤 텍스트를 저장하고 아이템 툴팁에 표시함
    • minecraft:waxed: 내용물이 왁스 처리됐음을 나타내는 필드 없는 마커임
    • minecraft:cushion/color: 배치된 Cushion에 16가지 염료 색상을 적용함
    • minecraft:villager_food: 주민이 먹을 수 있는 아이템과 영양 수치를 정의함
    • minecraft:mob_visibility: 장비가 몹의 감지 거리에 미치는 비율을 0.0~10.0으로 지정하며, 중첩해도 최대 시야 값은 10.0을 넘지 않음

표지판과 데이터 팩 호환성

  • 데이터 팩 버전은 111.0으로 올라감
  • 표지판 사용자 지정 텍스트의 명령과 클릭 이벤트는 기본적으로 블록 클릭 시 실행되지 않으며, 새 표지판의 텍스트 컴포넌트도 자동 해석되지 않음
    • 새 allow_op_features 필드의 기본값은 false이며, 이전 동작을 복원하려면 명시적으로 true로 설정해야 함
    • 이전 버전에서 저장된 표지판과 표지판 데이터를 담은 minecraft:block_entity_data에는 allow_op_features=true가 적용됨
  • 배치 후 표지판 편집 화면은 왁스 처리되지 않았고 앞면 텍스트를 편집할 수 있는 등, 일반 클릭으로 편집 화면을 열 수 있을 때만 표시됨
  • 표지판은 minecraft:sign_text_front, minecraft:sign_text_back, minecraft:waxed 컴포넌트를 주고받음
  • /spreadplayers가 플레이어를 배치할 수 있는 안전한 블록은 #entities_can_teleport_to 블록 태그로 제어함

레지스트리 참조와 전리품·발전 과제 변경

  • 전용 레지스트리가 있는 전리품 테이블 타입은 레지스트리 요소와 태그 참조를 지원함
    • 단일 요소 필드는 namespaced ID 또는 인라인 값을 받을 수 있음
    • 목록 필드는 인라인 값, 단일·복수 namespaced ID, 인라인 값 목록, # 태그 ID를 받을 수 있음
    • 대상은 advancement, item modifier, loot table, number provider, predicate, recipe, slot source임
  • predicate, item modifier, slot source의 기존 reference 타입은 불필요해져 제거됨
  • 발전 과제 트리거의 여러 필드는 인라인 predicate뿐 아니라 namespaced predicate ID도 받을 수 있음
    • 기존 조건 목록의 암시적 minecraft:all_of 동작이 제거돼 type을 반드시 지정해야 함
    • 여러 block, recipe_id, loot_table 필드는 각각 복수형으로 바뀌고 단일 ID, 목록 또는 태그를 지원함
  • Loot Pool Entry의 conditions는 condition, functions는 modifier로 이름이 바뀜
  • Loot Function의 conditions는 condition, 함수 타입을 나타내던 function은 type으로 변경됨
    • 인라인 조건 목록은 더 이상 받지 않으며, 같은 동작에는 minecraft:all_of를 명시해야 함
  • Predicate의 타입 필드 condition은 type으로 바뀌고 minecraft:reference와 minecraft:block_state_property는 제거됨
    • 새 minecraft:match_block은 블록 ID·태그, 상태, NBT, 컴포넌트와 컴포넌트 predicate를 함께 검사함
  • 인라인 number provider는 type을 항상 명시해야 하며, 더 이상 minecraft:uniform을 기본값으로 사용하지 않음
  • 조리 연료별 연소 시간과 기본 조리·양조 속도 및 양조 횟수를 제공하는 여러 Vanilla number provider가 추가됨

몹 생성과 월드 생성

  • 새 환경 속성 minecraft:gameplay/natural_mob_spawns가 카테고리별 가중치 기반 몹 생성과 엔티티별 spawn cost를 정의함
    • 월드 생성 배치 중에는 Dimension과 Biome만 이 속성을 적용함
    • overlay 수정자는 상위 계층의 카테고리 설정과 같은 엔티티의 spawn cost를 우선 적용함
  • minecraft:gameplay/creature_world_gen_spawn_probability는 월드 생성 중 creature 카테고리 몹 생성 반복 확률을 0 이상 1 미만으로 지정하며 기본값은 0.1임
  • Biome의 spawners, spawn_costs, creature_spawn_probability는 제거되고 새 환경 속성으로 이동함
  • 주변 입자 환경 속성은 타임라인 키프레임 사이의 확률을 보간하며, 하위 계층 입자 목록에 항목을 이어 붙이는 append 수정자를 지원함
  • Noise Settings에서 aquifer와 ore vein 설정을 각각 선택적 aquifers 객체와 ore_veins 목록으로 재구성함
    • 설정이 없으면 해당 aquifer 또는 ore vein을 생성하지 않음
    • 관련 density function 필드는 noise_router에서 새 구조로 이동함
  • Density Function에 sub, div, negate, lerp, floor, round, ceil, truncate, beardifier가 추가됨
    • 여러 기존 인수 이름은 value, left, right, input, noise로 변경됨
    • invert는 reciprocal로 이름이 바뀜
    • final_density에는 더 이상 beardifier가 암시적으로 더해지지 않음

그래픽과 주요 버그 수정

  • 리소스 팩 버전은 92.0으로 올라감
  • 순서 독립 투명도(order-independent transparency)를 지원하는 셰이더와 OIT_ALWAYS_WRITE_DEPTH 정의가 추가됨
  • core/integrate_depth.fsh는 3D HUD와 항상 위에 표시되는 gizmo의 깊이 버퍼를 메인 깊이 버퍼에 통합함
  • 수정된 주요 문제는 다음과 같음
    • 비 QWERTY 자판과 macOS·CJK 입력 관련 키 바인딩 및 입력 문제
    • Improved Transparency에서 지도 렌더링 충돌, 유리·반투명 객체·파티클·월드 경계 표시 문제
    • 월드 높이 밖 발사체와 최저 높이의 벌집 배치로 발생하던 충돌
    • 월드 생성 heightmap 저장·불러오기 문제와 tick sprint 이후 몹 위치 비동기화
    • Cushion 배치, 색상, 사용자 지정 이름, 연료 시간과 충돌 판정 문제
    • Ender Dragon 피해·비행, 관전자의 포털 사용, /spreadplayers 안전 블록 판정 문제

설치와 테스트 주의사항

  • Snapshot은 Minecraft: Java Edition용이며 Minecraft Launcher의 Installations 탭에서 Snapshot을 활성화해 설치함
  • 테스트 버전은 월드를 손상시킬 수 있으므로 백업하거나 기본 월드와 다른 폴더에서 실행해야 함
  • 크로스 플랫폼용 Minecraft server jar도 제공됨
  • 버그는 Minecraft issue tracker, 의견은 Feedback 사이트에서 제출할 수 있음
Read Entire Article