prologue
도커로 구동시킨 팰월드 서버.. 난이도, 죽음패널티 변경이 될까요?
> (팰월드 저장경로)palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini 내용을 변경하면 됩니다.
Difficulty, DeathPenalty 값을 변경하고 재기동하면 되겠군요. 이쯤이야..
(잠시 후)변경한거 맞나요?
> 아니 이게 왜 다시 돌아갔지??
개발용(?)으로 사용중인 미니PC를 이용해서 팰월드 서버로 잠시 활용하기로 했습니다.
몇몇 분들과 같이(4-5인) 즐기고 있습니다.
처음 서버를 세팅할 때는 생각 하지 않던 옵션을 변경하게 되더군요.
팰월드 서버 컨테이너 생성시 세팅
팰월드 서버 이미지는 여러가지가 있는데
thijsvanloef/palworld-server-docker
위 이미지를 사용했습니다.
컨테이너 생성시 팰월드 시스템에서 사용하는
udp 포트
8211(:팰월드 기본포트)
27015(:스팀 게임용 포트)
를 포워딩하도록 설정하는 것만 잊지 않으면 됩니다.
저는 보안상의 이유로 알려진 포트 대신에 약간 변조해서 쓰는걸 좋아합니다.
내부적으로는 기본적인 포트를 사용하고 포트포워딩으로 외부 포트를 변경해서 쓰기로 했습니다. :)
docker run -d \
--name palworld-server \
-p 8211:8211/udp \
-p 27015:27015/udp \
-v ./palworld/parts:/palworld/ \
--env-file ./palworld/.env \
--restart unless-stopped \
--stop-timeout 30 \
thijsvanloef/palworld-server-docker:latest
env-file에 팰월드 서버 설정을 담아서 넣으면 초기 세팅은 완성입니다.
아래 내용은 참고용입니다.
팰월드 변수 설정
변수 | 설명 | 기본값 | 허용값 |
DIFFICULTY | 게임 난이도 | None | None,Normal,Difficult |
DAYTIME_SPEEDRATE | 낮 시간 속도 - 숫자가 작을수록 낮이 짧아짐 | 1.000000 | Float |
NIGHTTIME_SPEEDRATE | 밤 시간 속도 - 숫자가 작을수록 밤이 짧아짐 | 1.000000 | Float |
EXP_RATE | 경험치 획득 비율 | 1.000000 | Float |
PAL_CAPTURE_RATE | PAL 포획률 | 1.000000 | Float |
PAL_SPAWN_NUM_RATE | PAL 출현 비율 | 1.000000 | Float |
PAL_DAMAGE_RATE_ATTACK | PAL이 주는 데미지 배수 | 1.000000 | Float |
PAL_DAMAGE_RATE_DEFENSE | PAL이 받는 데미지 배수 | 1.000000 | Float |
PLAYER_DAMAGE_RATE_ATTACK | 플레이어가 주는 데미지 배수 | 1.000000 | Float |
PLAYER_DAMAGE_RATE_DEFENSE | 플레이어가 받는 데미지 배수 | 1.000000 | Float |
PLAYER_STOMACH_DECREASE_RATE | 플레이어 포만도 감소율 | 1.000000 | Float |
PLAYER_STAMINA_DECREASE_RATE | 플레이어 기력 감소율 | 1.000000 | Float |
PLAYER_AUTO_HP_REGEN_RATE | 플레이어 HP 자연 회복률 | 1.000000 | Float |
PLAYER_AUTO_HP_REGEN_RATE_IN_SLEEP | 플레이어 수면 시 HP 회복률 | 1.000000 | Float |
PAL_STOMACH_DECREASE_RATE | PAL 포만도 감소율 | 1.000000 | Float |
PAL_STAMINA_DECREASE_RATE | PAL 기력 감소율 | 1.000000 | Float |
PAL_AUTO_HP_REGEN_RATE | PAL HP 자연 회복률 | 1.000000 | Float |
PAL_AUTO_HP_REGEN_RATE_IN_SLEEP | PAL 수면 시 HP 회복률 (PLA상자 내 HP 회복률) | 1.000000 | Float |
BUILD_OBJECT_DAMAGE_RATE | 구조물 피해 배수 | 1.000000 | Float |
BUILD_OBJECT_DETERIORATION_DAMAGE_RATE | 구조물 노화 속도 배수 | 1.000000 | Float |
COLLECTION_DROP_RATE | 채집 아이템 획득량 배수 | 1.000000 | Float |
COLLECTION_OBJECT_HP_RATE | 채집 오브젝트 HP 배수 | 1.000000 | Float |
COLLECTION_OBJECT_RESPAWN_SPEED_RATE | 채집 오브젝트 생성 간격 - 숫자가 작을수록 재 생성이 빨라짐 | 1.000000 | Float |
ENEMY_DROP_ITEM_RATE | 드롭 아이템 양 배수 | 1.000000 | Float |
DEATH_PENALTY | 사망 패널티, None: 사망 패널티 없음, Item: 장비 이외의 아이템 드롭, ItemAndEquipment: 모든 아이템 드롭, All: 모든 PAL과 모든 아이템 드롭 | All | None,Item,ItemAndEquipment,All |
ENABLE_PLAYER_TO_PLAYER_DAMAGE | 플레이어간 데미지 여부 | False | Boolean |
ENABLE_FRIENDLY_FIRE | 아군간 데미지 여부 | False | Boolean |
ENABLE_INVADER_ENEMY | 습격 이벤트 발생 여부 | True | Boolean |
ACTIVE_UNKO | UNKO 활성화 여부(?) | False | Boolean |
ENABLE_AIM_ASSIST_PAD | 컨트롤러 조준 보조 활성화 | True | Boolean |
ENABLE_AIM_ASSIST_KEYBOARD | 키보드 조준 보조 활성화 | False | Boolean |
DROP_ITEM_MAX_NUM | 월드 내의 드롭 아이템 최대 수 | 3000 | Integer |
DROP_ITEM_MAX_NUM_UNKO | 월드 내의 UNKO 드롭 최대 수 | 100 | Integer |
BASE_CAMP_MAX_NUM | 거점 최대 수량 | 128 | Integer |
BASE_CAMP_WORKER_MAX_NUM | 거점 작업 PAL 최대 수 | 15 | Integer |
DROP_ITEM_ALIVE_MAX_HOURS | 드롭 아이템이 사라지기까지 걸리는 시간 | 1.000000 | Float |
AUTO_RESET_GUILD_NO_ONLINE_PLAYERS | 온라인 플레이어가 없을 때 길드 자동 리셋 여부 | False | Bool |
AUTO_RESET_GUILD_TIME_NO_ONLINE_PLAYERS | 온라인 플레이어가 없을 때 길드를 자동 리셋 시간(h) | 72.000000 | Float |
GUILD_PLAYER_MAX_NUM | 길드 내 최대 인원 수 | 20 | Integer |
PAL_EGG_DEFAULT_HATCHING_TIME | 거대알 부화에 걸리는 시간(h) | 72.000000 | Float |
WORK_SPEED_RATE | 작업 속도 배수 | 1.000000 | Float |
IS_MULTIPLAY | 멀티플레이 활성화 여부 | False | Boolean |
IS_PVP | PVP 활성화 여부 | False | Boolean |
CAN_PICKUP_OTHER_GUILD_DEATH_PENALTY_DROP | 다른 길드 플레이어의 데스 페널티 드롭 아이템 획득 가능 여부 | False | Boolean |
ENABLE_NON_LOGIN_PENALTY | 비 로그인 패널티 활성화 여부 | True | Boolean |
ENABLE_FAST_TRAVEL | 빠른 이동 활성화 여부 | True | Boolean |
IS_START_LOCATION_SELECT_BY_MAP | 시작 위치를 지도로 선택할 수 있는지 여부 | True | Boolean |
EXIST_PLAYER_AFTER_LOGOUT | 로그오프 후 플레이어 삭제 여부 | False | Boolean |
ENABLE_DEFENSE_OTHER_GUILD_PLAYER | 다른 길드 플레이어에 대한 방어 허용 여부 | False | Boolean |
COOP_PLAYER_MAX_NUM | 협동던전 최대인원 | 4 | Integer |
REGION | Region | String | |
USEAUTH | 인증 사용 여부 | True | Boolean |
BAN_LIST_URL | 사용할 BAN 목록 | https://api.palworldgame.com/api/banlist.txt | string |
SHOW_PLAYER_LIST | ESC시 사용자 리스트 | True | Boolean |
TARGET_MANIFEST_ID | 게임의 버젼을 스팀 다운로드 디포의 해당 Manifest ID로 고정. | [Manifest ID Table](#버전별Manifest ID표) 보기 | |
ENABLE_PLAYER_LOGGING | 플레이어가 접속 또는 종료시 로깅과 공지를 활성화 | true | true/false |
PLAYER_LOGGING_POLL_PERIOD | 플레이어의 접속과 종료를 확인하기위한 폴링시간(초) 설정 | 5 | !0 |
출처 : https://palworld-server-docker.loef.dev/ko/getting-started/configuration/game-settings
주요 변수는 DIFFICULTY, NIGHTTIME_SPEEDRATE, DEATH_PENALTY, BASE_CAMP_MAX_NUM, BASE_CAMP_WORKER_MAX_NUM, IS_MULTIPLAY 정도..?
거점 수와 거점 팰 수를 적당히 조절하는게 서버 리소스에 도움이 됩니다.
게임 변수 변경하기
컨테이너 생성 후에는 env-file을 변경하거나 컨테이너 내부에
<mount_folder>/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini 를 변경한다 해도 재기동하면 ini파일이 원래대로 돌아가는 현상을 발견하게 됩니다.
이유는 compile-settings.sh가 실행되면서 환경변수가 세팅되는 것으로 확인했습니다.
일반적으로 도커 이미지는
세팅파일 변경으로 인해 기동문제를 최소화하기 위해 재생성 방식으로 만들어진것 같군요.
이런경우 어떻게 해야 할까요?
기존에 도커 컨테이너의 환경변수 설정을 변경했던 적이 있었습니다.
과연 config.v2.json 는 어떻게 설정 되어있는지 확인했습니다.
도커 서비스를 정지시킨 후
관리자 권한을 얻고
cd /var/lib/docker/container/{container-id}
vi config.v2.json #에디터로 열기
를 한다면..?
중간에 json의 중간에 "Env"의 내용에 내가 설정하지 않았던 게임 변수들이 들어가있는걸 확인 할 수 있습니다.
"Env":["TZ=Asia/Seoul","PLAYERS=8","PORT=8211",(...생략),"DIFFICULTY=Normal","RANDOMIZER_TYPE=","RANDOMIZER_SEED=none","DAYTIME_SPEEDRATE=1.000000","NIGHTTIME_SPEEDRATE=1.250000",(...생략)]
여기서 JSON 형태의 구조를 정확히 유지시키고 내용을 변경시켜야 합니다. 만일 JSON구조가 깨질 시 컨테이너 구동에 문제가 생길 수 있으니 파일을 백업 후에 수정하는 것이 안전합니다.
epilogue
서버 난이도가 easy로 설정되서 다시 만들어야 하나 싶었지만 Normal로 안전(?)하게 변경했습니다.
최근 몇 년내에 가장 몰입도 높은상태로 즐겼던 게임이라 기억에 오래 남겠습니다.
개발하면서 터득한 내용이 게임서버 운영하는데 쓰이니 뿌듯하군요.
관련 글 : [IT-개발] - docker - Edit Container Environment Variables
docker - Edit Container Environment Variables
생성된 컨테이너 환경변수 변경하기, 컨테이너 시스템 시간대 변경prologue(OracleDB로 테스트 중) 이건 시간대가 왜 안 맞는 걸까? > TZ가 GMT로 되어있나 본데? 쿼리로 변경하면 해당 세션만 적용되는
lodean9.tistory.com
'IT-개발 > 뻘짓연구소' 카테고리의 다른 글
linux - symbolic link (0) | 2024.05.12 |
---|