최근 수정 시각 : 2025-01-28 07:49:46

마인크래프트/명령어/최적화


1. 개요2. 프로파일링
2.1. /debug2.2. /perf 또는 F3+L
3. 최적화
3.1. 대상 선택 인자
3.1.1. [nbt={}]
3.2. function(함수) 사용
4. 기타5. 출처 및 참고자료

1. 개요

커스텀 맵을 제작하다보면 명령어를 쓰이게 될것이다. 유튜브 보고 배우거나 커뮤니티 질문에서 정보를 얻어오기도 한다. 하지만 대부분 최적화가 안되어있거나, (작동하지만) 더 나은 방법이 있는 명령어가 있다.

2. 프로파일링

프로파일링란 속도를 개선하기 위해 실행되는 동안 특정 함수의 실행 시간 등을 추적하는 것을 말한다. 마인크래프트는 여러 가지 프로파일링 도구를 지원하며 일부 프로파일링 도구는 모드에 속한다.

2.1. /debug

환경: 바닐라, 난이도: 쉬움, 중요도: 선택

2.2. /perf 또는 F3+L

환경: 바닐라, 난이도: 보통, 중요도: 필수

https://misode.github.io/report/ 이 사이트 권장.

3. 최적화

3.1. 대상 선택 인자

3.1.1. [nbt={}]

다른 선택자와 달리 심각한 성능 저하가 발생한다.

execute if entity @s[scores={...}]를 매 틱마다 10000번 실행하면 mspt가 꽤 상승했지만 게임이 지장을 줄 정도의 렉은 없다. 반면 execute if entity @s[nbt={...}]를 매 틱마다 1000번 실행하면 TPS가 20에서 10으로 떨어진다.

따라서 [nbt={}] 대체 문법을 사용하거나, 불가피하게 사용하더라도 한번 감지하고 해당 개체에 tag를 추가하는 등으로 최적화 할 수 있다.

3.2. function(함수) 사용

데이터 팩 사용함으로서 대상 선택자를 줄여 최적화가 가능하다.

명령 블록이라면 @e[tag=namu]가 여러 개라 성능 저하가 발생하게 된다.
effect give @e[tag=namu] nausea
execute at @e[tag=namu] run setblock ~ ~1 ~ stone
execute at @e[tag=namu] run setblock ~ ~2 ~ grass
tp @e[tag=namu] ~ ~5 ~
...
반면 함수에 넣는다면 한 번만 검사하기에 성능이 엄청나게 향상된다.
execute as @e[tag=namu] at @s run function ...
{{{#!wiki
effect give @s nausea
setblock ~ ~1 ~ stone
setblock ~ ~2 ~ grass
tp @s ~ ~5 ~
...
}}}

4. 기타


5. 출처 및 참고자료