Palworld 우분투로 4인 이상 서버 만들기

Palworld 우분투로 4인 이상 서버 만들기를 소개합니다.


  사용 OS 및 서버 요구사항

 

OS: Ubuntu 22.04.3 LTS

CPU: 4 Core

Memory: 16 GB / 32GB

Network: 8211 (UDP)


Steam CMD 설치

 

sudo apt update
sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd

Palworld 서버 설치

 

steamcmd +login anonymous +app_update 2394010 validate +quit

 

이 명령어는 추후 서버 버전 업데이트 할때 동일하게 입력하여 업데이트 하시면 됩니다.


SKD64 설치

 

mkdir -p ~/.steam/sdk64/
steamcmd +login anonymous +app_update 1007 +quit
cp ~/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/

방화벽 개방

 

sudo iptables -I INPUT -p tcp --dport 27015 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 27016 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 25575 -j ACCEPT
sudo iptables -I INPUT -p udp --dport 27015 -j ACCEPT
sudo iptables -I INPUT -p udp --dport 27016 -j ACCEPT
sudo iptables -I INPUT -p udp --dport 25575 -j ACCEPT
sudo iptables -I INPUT -p udp --dport 8211 -j ACCEPT

sudo iptables -S

서버 실행

 

# 서버 디렉토리 이동 #
cd ~/Steam/steamapps/common/PalServer

# 서버 구동기 실행 #
./PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
Shutdown handler: initalize.
Increasing per-process limit of core file size to infinity.
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Loaded '/home/ubuntu/.steam/sdk64/steamclient.so' OK.  (First tried local 'steamclient.so')

 

이런식으로 with error라고 뜨지만 정상적으로 구동 된겁니다.


서버 설정 방법

 

nano ~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

 

주의: 서버를 최초 1회 실행 시켜야지만 설정 파일이 생깁니다!

.

[/Script/Pal.PalGameWorldSettings]
OptionSettings=(Difficulty=Casual,DayTimeSpeedRate=1.000000,NightTimeSpeedRate=1.000000,ExpRate=1.000000,PalCaptureRate=1.000000,PalSpawnNumRate=1.000000,PalDamageRateAttack=1.000000,PalDamageRateDefense=1.000000,PlayerDamageRateAttack=1.000000,PlayerDamageRateDefense=1.000000,PlayerStomachDecreaceRate=1.000000,PlayerStaminaDecreaceRate=1.000000,PlayerAutoHPRegeneRate=1.000000,PlayerAutoHpRegeneRateInSleep=1.000000,PalStomachDecreaceRate=1.000000,PalStaminaDecreaceRate=1.000000,PalAutoHPRegeneRate=1.000000,PalAutoHpRegeneRateInSleep=1.000000,BuildObjectDamageRate=1.000000,BuildObjectDeteriorationDamageRate=1.000000,CollectionDropRate=1.000000,CollectionObjectHpRate=1.000000,CollectionObjectRespawnSpeedRate=1.000000,EnemyDropItemRate=1.000000,DeathPenalty=None,bEnablePlayerToPlayerDamage=False,bEnableFriendlyFire=False,bEnableInvaderEnemy=True,bActiveUNKO=False,bEnableAimAssistPad=True,bEnableAimAssistKeyboard=False,DropItemMaxNum=3000,DropItemMaxNum_UNKO=100,BaseCampMaxNum=128,BaseCampWorkerMaxNum=15,DropItemAliveMaxHours=1.000000,bAutoResetGuildNoOnlinePlayers=False,AutoResetGuildTimeNoOnlinePlayers=72.000000,GuildPlayerMaxNum=20,PalEggDefaultHatchingTime=72.000000,WorkSpeedRate=1.000000,bIsMultiplay=False,bIsPvP=False,bCanPickupOtherGuildDeathPenaltyDrop=False,bEnableNonLoginPenalty=True,bEnableFastTravel=True,bIsStartLocationSelectByMap=True,bExistPlayerAfterLogout=False,bEnableDefenseOtherGuildPlayer=False,CoopPlayerMaxNum=4,ServerPlayerMaxNum=32,ServerName="Default Palworld Server",ServerDescription="",AdminPassword="",ServerPassword="",PublicPort=8211,PublicIP="",RCONEnabled=False,RCONPort=25575,Region="",bUseAuth=True,BanListURL="https://api.palworldgame.com/api/banlist.txt")

 

설정값을 변경하였 으면 ctrl + x 누르고 다음 y 누른뒤 엔터 저장을 해줍니다. 

 

[Palworld] 팰월드 서버 설정 변경하기

 

[Palworld] 팰월드 서버 설정 변경하기

Palworld 서버 설정하기 서버 설정 방법 Ubuntu Linux nano ~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini [/Script/Pal.PalGameWorldSettings] OptionSettings=(Difficulty=Casual,DayTimeSpeedRate=1.000000,NightTim

rurustory.com

 

 

설정 목록은 위 페이지에서 좀 더 상세하게 확인 가능합니다!


마무리

 

https://tech.palworldgame.com/dedicated-server-guide

 

https://tech.palworldgame.com/dedicated-server-guide/

 

tech.palworldgame.com

위 사이트를 참고하여 작성하였습니다.

잘못된 점이 있거나 궁금한 점이 있다면 언제든지 문의해주시기 바랍니다!

728x90
반응형

 

Palworld 서버 설정 변경하기

간단한 서버 설정 방법과 설정 목록에 대해 알아봅시다.

 


서버 설정 방법

 

Ubuntu Linux

nano ~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
[/Script/Pal.PalGameWorldSettings]
OptionSettings=(Difficulty=Casual,DayTimeSpeedRate=1.000000,NightTimeSpeedRate=1.000000,ExpRate=1.000000,PalCaptureRate=1.000000,PalSpawnNumRate=1.000000,PalDamageRateAttack=1.000000,PalDamageRateDefense=1.000000,PlayerDamageRateAttack=1.000000,PlayerDamageRateDefense=1.000000,PlayerStomachDecreaceRate=1.000000,PlayerStaminaDecreaceRate=1.000000,PlayerAutoHPRegeneRate=1.000000,PlayerAutoHpRegeneRateInSleep=1.000000,PalStomachDecreaceRate=1.000000,PalStaminaDecreaceRate=1.000000,PalAutoHPRegeneRate=1.000000,PalAutoHpRegeneRateInSleep=1.000000,BuildObjectDamageRate=1.000000,BuildObjectDeteriorationDamageRate=1.000000,CollectionDropRate=1.000000,CollectionObjectHpRate=1.000000,CollectionObjectRespawnSpeedRate=1.000000,EnemyDropItemRate=1.000000,DeathPenalty=None,bEnablePlayerToPlayerDamage=False,bEnableFriendlyFire=False,bEnableInvaderEnemy=True,bActiveUNKO=False,bEnableAimAssistPad=True,bEnableAimAssistKeyboard=False,DropItemMaxNum=3000,DropItemMaxNum_UNKO=100,BaseCampMaxNum=128,BaseCampWorkerMaxNum=15,DropItemAliveMaxHours=1.000000,bAutoResetGuildNoOnlinePlayers=False,AutoResetGuildTimeNoOnlinePlayers=72.000000,GuildPlayerMaxNum=20,PalEggDefaultHatchingTime=72.000000,WorkSpeedRate=1.000000,bIsMultiplay=False,bIsPvP=False,bCanPickupOtherGuildDeathPenaltyDrop=False,bEnableNonLoginPenalty=True,bEnableFastTravel=True,bIsStartLocationSelectByMap=True,bExistPlayerAfterLogout=False,bEnableDefenseOtherGuildPlayer=False,CoopPlayerMaxNum=4,ServerPlayerMaxNum=32,ServerName="Default Palworld Server",ServerDescription="",AdminPassword="",ServerPassword="",PublicPort=8211,PublicIP="",RCONEnabled=False,RCONPort=25575,Region="",bUseAuth=True,BanListURL="https://api.palworldgame.com/api/banlist.txt")

 

설정값을 변경하였 으면 ctrl + x 누르고 다음 y 누른뒤 엔터 저장을 해줍니다. 

 

Windows 

스팀 설치 폴더\steamapps\common\PalServer\Pal\Saved\Config\WindowsServer\PalWorldSettings.ini
[/Script/Pal.PalGameWorldSettings]
OptionSettings=(Difficulty=Casual,DayTimeSpeedRate=1.000000,NightTimeSpeedRate=1.000000,ExpRate=1.000000,PalCaptureRate=1.000000,PalSpawnNumRate=1.000000,PalDamageRateAttack=1.000000,PalDamageRateDefense=1.000000,PlayerDamageRateAttack=1.000000,PlayerDamageRateDefense=1.000000,PlayerStomachDecreaceRate=1.000000,PlayerStaminaDecreaceRate=1.000000,PlayerAutoHPRegeneRate=1.000000,PlayerAutoHpRegeneRateInSleep=1.000000,PalStomachDecreaceRate=1.000000,PalStaminaDecreaceRate=1.000000,PalAutoHPRegeneRate=1.000000,PalAutoHpRegeneRateInSleep=1.000000,BuildObjectDamageRate=1.000000,BuildObjectDeteriorationDamageRate=1.000000,CollectionDropRate=1.000000,CollectionObjectHpRate=1.000000,CollectionObjectRespawnSpeedRate=1.000000,EnemyDropItemRate=1.000000,DeathPenalty=None,bEnablePlayerToPlayerDamage=False,bEnableFriendlyFire=False,bEnableInvaderEnemy=True,bActiveUNKO=False,bEnableAimAssistPad=True,bEnableAimAssistKeyboard=False,DropItemMaxNum=3000,DropItemMaxNum_UNKO=100,BaseCampMaxNum=128,BaseCampWorkerMaxNum=15,DropItemAliveMaxHours=1.000000,bAutoResetGuildNoOnlinePlayers=False,AutoResetGuildTimeNoOnlinePlayers=72.000000,GuildPlayerMaxNum=20,PalEggDefaultHatchingTime=72.000000,WorkSpeedRate=1.000000,bIsMultiplay=False,bIsPvP=False,bCanPickupOtherGuildDeathPenaltyDrop=False,bEnableNonLoginPenalty=True,bEnableFastTravel=True,bIsStartLocationSelectByMap=True,bExistPlayerAfterLogout=False,bEnableDefenseOtherGuildPlayer=False,CoopPlayerMaxNum=4,ServerPlayerMaxNum=32,ServerName="Default Palworld Server",ServerDescription="",AdminPassword="",ServerPassword="",PublicPort=8211,PublicIP="",RCONEnabled=False,RCONPort=25575,Region="",bUseAuth=True,BanListURL="https://api.palworldgame.com/api/banlist.txt")

설정목록

Difficulty 팰월드 전체 난이도 (None, Casual, Normal, Hard)
DayTimeSpeedRate 낮의 지속시간 (0.1 ~ 5.0)
NightTimeSpeedRate 밤의 지속시간 (0.1 ~ 5.0)
ExpRate 경험치 배율 (0.1 ~ 20.0)
PalCaptureRate 팰 포획 가능성 (0.5 ~ 2.0)
PalSpawnNumRate 팰 리젠 배율 (0.5 ~ 3.0)
PalDamageRateAttack 팰이 주는 데미지 배율  (0.1 ~ 5.0)
PalDamageRateDefense 팰이 받는 데미지 배율  (0.1 ~ 5.0)
PalStomachDecreaceRate 팰의 포만도 감소 배율  (0.1 ~ 5.0)
PalStaminaDecreaceRate 팰의 기력 감소 배율  (0.1 ~ 5.0)
PalAutoHPRegeneRate 팰의 HP 회복 배율  (0.1 ~ 5.0)
PalAutoHPRegeneRateInSleep 팰의 수면시 HP 회복 배율  (0.1 ~ 5.0)
PlayerDamageRateAttack 플레이어가 주는 데미지 배율  (0.1 ~ 5.0)
PlayerDamageRateDefense 플레이어가 받는 데미지 배율  (0.1 ~ 5.0)
PlayerStomachDecreaceRate 플레이어의 포만도 감소 배율  (0.1 ~ 5.0)
PlayerStaminaDecreaceRate 플레이어의 기력 감소 배율  (0.1 ~ 5.0)
PlayerAutoHPRegeneRate 플레이어의 HP 회복 배율  (0.1 ~ 5.0)
PlayerAutoHpRegeneRateInSleep 플레이어의 수면시 HP 회복 배율  (0.1 ~ 5.0)
BuildObjectDamageRate 건축물에 주는 데미지 배율 (0.5 ~ 3.0)
BuildObjectDeteriorationDamageRate 건축물의 노화 데미지 배율 (0 ~ 10)
DropItemMaxNum 월드에 드롭 가능한 아이템의 최대수 (0 ~ 3000)
CollectionDropRate 채집 아이템 드랍 배율 (0.5 ~ 3.0)
CollectionObjectHpRate 채집 오브젝트의 HP 배율 (0.5 ~ 3.0)
CollectionObjectRespawnSpeedRate 채집 오브젝트의 재생성 배율 (0.5 ~ 3.0)
EnemyDropItemRate 적이 드랍하는 아이템의 배율 (0.5 ~ 3.0)
PalEggDefaultHatchingTime 알 부화에 걸리는 시간 (0 ~ 240)
EnableInvaderEnemy 습격 이벤트 발생 여부 (True / False)
DeathPenalty 사망 패널티 (None, Item, ItemAndEquipment, ALL)
GuildPlayerMaxNum 길드 가입 가능한 최대 플레이어 수 (1 ~ 100)
EnablePlayerToPlayerDamange 플레이어끼리 데미지 줄 수 있는지 여부 (True / False)
EnableFriendlyFire 길드원끼리 데미지 줄 수 있는지 여부 (True / False)
BaseCampWorkerMaxNum 거점에서 작업하는 팰의 최대 수 (1 ~ 20)
BaseCampMaxNum 건설가능한 거점의 최대 수
WorkSpeedRate 작업속도 배율
blsPvP PVP 활성화 여부 (True / False)
CoopPlayerMaxNum 파티 최대 가능 인원
ServerPlayerMaxNum 서버 최대 인원 (1 ~ 32)
ServerName 서버 명
ServerDescription 서버 설명
AdminPassword 관리자 비밀번호
ServerPassword 서버 비밀번호
PublicPort 공용 포트 (기본값 : 8211)
PublicIP 공용 IP
RCONEnabled RCON 활성화
RCONPort RCON 포트

마무리

 

https://tech.palworldgame.com/settings-and-operation/configuration

 

Configuration file | Palworld tech guide

On this page, you can learn about server settings, game balance settings, and other items that can be set with ini files.

tech.palworldgame.com

위 링크 페이지를 참고하여 작성하였습니다.

잘못된 점이 있거나 궁금한 점이 있다면 언제든지 문의해주시기 바랍니다!

 

 

728x90
반응형

extern "C"와 네임 맹글링

 

오픈소스같은 곳에 보면 extern "C"라는 문법이 종종 보이는데 처음에 보면 이게 뭐하는거지 C로 컴파일 해준다는건가? 아니면 C문법으로 바꾸어 쓰라는건가? 라고 의문이 생길겁니다. 이번엔 extern "C"가 뭐하는 녀석인지 알아봅시다. 


네임 맹글링

 

extern "C"를 알아보기 전에 네임 맹글링에 대해서 먼저 알아봅시다.

 

컴파일러들은 컴파일을 할때 다른곳에서 접근할수 있도록 심볼을 만드는 작업을 합니다. 
여기서 함수를 심볼로 만들때 심볼이름을 함수이름 그대로 생성하는 C컴파일러와 달리 C++컴파일러들은 각각 정해진 규칙에 따라 심볼이름을 변경하여 생성합니다. 
이러한 작업을 네임 맹글링이라고 하며 C와 달리 C++에서는 함수 오버로딩 같은 다형성을 지원할 수 있는 이유이기도 합니다. 

 

그러면 이제 실제로 네임 맹글링이 되고있는지 확인해봅시다.

 

test_c.c

/* C 코드 */
#include <stdio.h> 

void test()
{
	printf("extern c test!!\n");
}

int main()
{
	test();
	return 0;
}

 

test_cpp.cpp

/* C++ 코드 */
#include <iostream>
using std::cout;
using std::endl;

void test()
{
	cout << "extern c test!!" << endl;
}

int main()
{
	test();
	return 0;
}

 

컴파일

# C 컴파일 #
gcc -c test_c.c
gcc -o test_c test_c.o

# C++ 컴파일 #
g++ -c test_cpp.cpp
g++ -o test_cpp test_cpp.o

 

결과

 

readelf 명령어를 사용하여 확인해보면 실제로 C로 컴파일한 파일은 test 라는 이름으로 심볼이 생성되었고 C++로 컴파일한 파일은 _Z4testv 라는 이름으로 심볼이 생성된걸 확인할 수 있습니다.


extern "C"

 

자 그러면 이미 눈치채신 분들도 있을겁니다. 

extern "C"는 네임 맹글링을 사용하지 않는다. 라는 의미로 extern "C"를 선언하면 그 안에 모든 코드들은 네임 맹글링을 하지 않습니다.

 

그럼 실제로 네임 맹글링 작업을 안하는지 알아봅시다.

 

test_cpp_extern_c.cpp

/* C++ 코드 */
#include <iostream>
using std::cout;
using std::endl;

extern "C" 
{
	void test()
	{
		cout << "extern c test!!" << endl;
	}
}

int main()
{
	test();
	return 0;
}

 

컴파일

# C++ extern "C" 컴파일 # 
g++ -c test_cpp_extern_c.cpp
g++ -o test_cpp_extern_c.o

 

결과

 

extern "C"를 적용안한 파일에서는 _Z4testv 로 심볼이 생성되었고 extern "C"를 적용한 파일에는 C코드와 마찬가지로 test라는 이름으로 심볼이 생성된걸 확인할 수 있습니다.


마무리

 

지금까지 extern "C"와 네임 맹글링에 대해서 알아보았습니다.

잘못된 점이 있거나 궁금한 점이 있다면 언제든지 문의해주시기 바랍니다!

728x90
반응형

+ Recent posts