본문 바로가기
IT-개발/뻘짓연구소

docker - Change Palworld Server Variables (팰월드 서버 변수 변경하기)

by 로데안 2025. 5. 18.
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