마인크래프트 베드락 서버가 설치되었고 실행이 가능한 상태가 되었다면, 이젠 세부적인 설정을 건드려볼 차례다.

게임의 모드, 난이도 같은 것들은 게임내에서 커맨드 명령을 통해 실행할 수도 있지만, 서버의 실행환경의 설정은 게임내에서 할 순 없고 서버의 환경설정 파일을 뜯어고쳐줘야 한다.

예를 들면, 서버의 월드를 교체 한다던가, 서버가 통신하는 포트값을 바꾼다던가 하는 것들 말이다.

참고로 마인크래트에서는 게임을 하는 공간을 월드라고 한다(WORLD) , 흔히 말하는 맵(MAP)이라고 하면 안된다.
이 월드 안에 지형지물이 있고, 그안에서 건물도 짖고 농사도 짖고 생활하는 것이다.

환경 설정파일은 압축을 풀면 생기는 server.properties 이다.
대부분 주석이고, 설정 변수는 총 26가지이다. 이를 정리해 보면 아래와 같다.

변수명 변수 값
server-name= 클라이언트 상에서 보여줄 서버의 이름이다. 띄어쓰기도 되고, 한글로 해도 된다. 세미콜로만 쓰지말자
gamemode= survival , creative , adventure 3가지 값중 하나를 쓴다. 각 게임모드는 굳이 설명이 없어도 아실듯
force-gamemode=false 서버상의 gamemode를 클라이언트들에게 강제적으로 적용할 것이면 true, 아니면 false
difficulty=easy peaceful , easy , normal , hard 4가지 값중에 하나다. 몹들의 체력과 공격성등에 영향을 준다.
allow-cheats=false true , false 2가지 중 하나, 게임상에서 커맨드 명령을 쓸지 말지 결정한다.
max-players=10 서버내 최대 플레이어 숫자를 결정한다. 딱히 최대값은 없는 것 같다. 서버의 성능이 받쳐 준다면 말이다.
online-mode=true 서버에 입장하기 위해 XBOX 계정 로그인을 요구할지를 정한다. false로 하더라도 외부 서버 접속하기 위해선 사용자는 XBOX계정 로그인을 해야 한다.
white-list=false White List라는 파일에 기록된 플레이어만 접속하게 할지를 정한다.
server-port=19132 서버의 포트이다. TCP인지 UDP인지 안적혀 있으나 공유기에서 TCP/UDP 포트 그냥 2개다 포트포워딩으로 열어놓자
server-portv6=19133 IPv6 일때의 포트번호이다.
view-distance=32 각 사용자에게 보여질 청크의 최대 갯수이다. 청크란 아래에 설명하겠지만 이 값은 높을수록 더 멀리 오브젝트가 보인다. 높을수록 좋은데 그만큼 높은 CPU연산과 메모리가 요구될 것이다.
tick-distance=4 매 틱당 로딩될 청크의 갯수이다. 값은 4~12사이의 정수이다. 높을 수록 더 많은 오브젝트가 업데이트 되어 보여지겠지만, 그만큼 높은 성능을 요구하게 될 것 이다.
player-idle-timeout=30 사용자의 입력이 없을때 강제퇴장할 시간이다. 단위는 분이다. 0으로 입력하면 사용자 무응답에 따른 강제퇴장은 없다.
max-threads=8 서버가 사용할 쓰레드의 갯수이다. 값은 0~8사이의 정수. 0 또는 값을 정하지 않으면 최대 쓰레드를 사용한다. 병행연산 개념이기 때문에 당연히 높을수록 좋을 것이다.
level-name=Bedrock level 불러올 월드의 이름이다. 한글도 상관없다. 이를 이용해 기존의 다른 월드를 가져올 수 있다. 추후에 이 부분은 포스팅을 따로 할 것 이다.
level-seed= 기존의 월드가 없다면 이 값에 따라 또는 무작위 지형의 월드를 서버가 새로이 생성한다.
default-player-permission-level=member visitor, member, operator 값 중하나로 플레이어의 권한에 대한 기본값이다. 물론 게임내에서 커맨드 명령어로 변경할 수 도 있다.
texturepack-required=false 서버내 텍스쳐팩이 있다면 이를 클라이언트에 강제할 것인지를 정한다. 이부분 도 역시 추후에 따로 포스팅할 것 이다.
content-log-file-enabled=false 에러들을 별도의 로그파일로 저장할지를 결정한다.
compression-threshold=1 모르겠다(죄송합니다 -0-; )기본 값
server-authoritative-movement=server-auth 모르겠다(죄송합니다 -0-; )기본 값
player-movement-score-threshold=20 모르겠다(죄송합니다 -0-; )기본 값
player-movement-distance-threshold=0.3 모르겠다(죄송합니다 -0-; )기본 값
player-movement-duration-threshold-in-ms=500 모르겠다(죄송합니다 -0-; )기본 값
correct-player-movement=false 모르겠다(죄송합니다 -0-; )기본 값
server-authoritative-block-breaking=false 모르겠다(죄송합니다 -0-; )기본 값

위에 본인이 설명해 놓은 값들만 적당히 수정해서 서버를 돌리면 된다.

설정에 그리 어려운 점은 없을 것 이다.

위에서 틱과 청크라는 개념이 나왔는데……혹시 마인크래프트를 하게 되면 알면 좋은 개념이니 간략히 설명한다.

틱 : TICK… 시간 개념이다. 1/20초. 즉 0.05초 가 1 틱이다.

이것이 왜 중요하냐면 마인크래프트 월드는 나름의 프로그래밍으로 구성된 하나의 세계이고 사용자의 입력이 없이도 생기는 세계내 자연현상 들이 있다. 예를 들면 물이 흐른다던가 불이 번진다던가 , 새싹이 자란다던가, 해가 뜨고지고 달이 뜬다던가하는 현상들 말이다.

이런 현상들을 처리하는 단위가 바로 틱이라는 개념이다. 컴퓨터의 CPU 입장에서는 1틱이 0.05초가 아니고 0.005초라면 같은 시간동안 10번의 일을 더 해야 한다는 의미이다.

그 다음은 청크라는 개념이다.

생긴건 대충 이렇다. 16x16x256 블록의 모음을 청크라 한다.

청크의 블록은 일반적인 하늘과 달라서 블록의 재질, 블록의 채취를 통한 아이템의 추출 등 여러가지 정보를 담고 있다. 이런 청크가 플레이어의 주변으로 얼마나 빨리 연산되어 표현되는지가 성능에 큰 영향을 미친다. 하나의 블록이 몇 bit의 데이터를 차지하는지 모르지만, 하나의 블록을 1 bit라 가정시 1 청크는 무려 6,400bit이다. 블록하나가 8 bit라면 1 청크는 무려 6.4Kbyte 이다. 마인크래프트의 블록은 당연히 8bit일리는 없다. 종류가 많아서 훨씬 더 될 것이다.

이런 청크가 플레이어의 주변과 시야 범위안에 수십수백개씩은 인식될터이니 그게 다 모두 컴퓨터 메모리인 셈이다.

플레이어가 이동이라도 한다면 컴퓨터 CPU는 재빨리 연산하고 메모리에 새로운 청크를 불러와 로딩하고의 반복이다. 그래서 마인크래프트가 절대 저사양 게임이 아니라고 1부에서 애기한바가 있다.

서버 설정이 끝났다면, 3부에서는 기존에 사용하고 있던 월드(World)를 서버로 끌고와 보겠다. 서버상에서 씨드를 넣어 만든 월드는 그냥 새로만들어진 쌩야생 그자체 일뿐인데 기존에 이미 플레이하고 있던 월드가 있다면 그것을 서버로 가져올 수 도 있다.  그럼 다음 포스트에서…