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 안전 블록 판정 문제
설치와 테스트 주의사항
-
Homepage
-
Tech blog
- Minecraft: Java Edition, 창·입력 백엔드를 SDL3로 전환