개인 자료란 (JE)

  서버 커뮤니티

Profile 프란델 대표칭호 없음

Peurandel 3d3d482e35a54679a3c22d0f505dc661

Profile

강좌 자바 에디션(JE) 커맨드 기초

아이디 시스템 (중요, 커맨드에 관심이 있으면 필독)

2024.03.08 조회 수 274 추천 수 0
게임버전 1.13.x, 1.14.x, 1.15.x, 1.16.x, 1.17.x, 1.18.x, 1.19.x, 1.20.x 

여러 커맨드 하는 사람들을 봐왔는데, 대부분은 웅장한 연출, 기발한 게임 등은 잘 만들었지만

하나 같이 멀티플레이에서도 버그 없이 유연하게 작동하는 코드를 작성하는 능력은 대체로 부족한 경향을 보인다.


플레이어와 상호작용하는 개체와의 일대일 대응 방식에 문제가 있는 것이며 

쉬운 예시로, 커맨드된 발사체 (총,레이저 등)를 사용할 때 발사체의 주인을 인식 못해 발사체가 주인을 맞추는 경우를 들 수 있겠다.

또 다른 예시로는 플레이어를 무한히 따라다니는 Marker가 있다고 가정할때, 두 플레이어가 완전히 동일한 좌표를 공유하고 있을때 생기는 버그 등이 있다.


이런 버그를 어떻게 해결할 수 있을까?

만약 모든 플레이어가 서로 다른 스코어가 있고 위의 발사체나 Marker가 해당 플레이어와 동일한 스코어값을 가진다면 해결할 수 있을 것이다.

그렇다면 어떻게 모든 플레이어가 서로 다른 스코어를 가지게 할 수 있을까?


아이디 시스템

우리는 이런 것을 통틀어 아이디 시스템이라고 부른다.

아이디 시스템은 위와같은 문제들뿐만 아닌, 정말 많은 것들을 해결해주는 좋은 시스템이다.

커맨드 디버깅때도 이 시스템만한 것이 없다.

바로 가보자


execute as A unless score @s id = @s id store result score @s id run scoreboard players add #max_id id 1


이거 한줄이면 구축된다. 정말 쉽다.


해석

unless score @s id = @s id는 개체의 id 스코어값이 0도 아닌 None일때 감지된다.

이것으로 id가 지정되지 않은 개체들을 선택할 수 있다.


store result score @s 말할 것도 없다. 개체에게 이 커맨드의 결과값을 id 스코어에 입력받는 인자이다.


scoreboard players add #max_id id 1 여기에선 할말이 많은데, as의 동작 방식을 우리는 정확히 이해하고 가야한다.


세계에는 A라는 개체가 5마리 있다고 가정하자.

execute as A run say hi라는 커맨드를 쳤을때

이들은 동시에 say hi를 입력하는 것이 아닌, 첫번째 A가 커맨드를 모두 마친 뒤, 두번째 A가 커맨드를 모두 마치는 식으로

순서대로 진행된다.

즉, execute as A unless score @s id = @s id store result score @s id run scoreboard players add #max_id id 1

에선 첫번째 A가 #max_id의 id 스코어를 1 올린 뒤 그 최종 값을 자신의 id 스코어로 입력받고

두번째 A가 해당 과정을 반복하는 식으로 가는 것이다.






Warning
댓글이 없습니다.

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

뉴스 및 창작물
/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 4

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3

/files/thumbnails/839/895/003/262x150.crop.jpg?20241006021227

SRV레코드는 보안도메인이 아닙니다. [서버오픈시 필독]

물귀신

2024-10-05

4