GCP를 활용한 Palworld 데디케이트 서버 운영

사연있는사람·2024년 2월 1일
0
post-thumbnail
post-custom-banner

왜 GCP인가?

신규 사용자 대상으로 약 3달동안 300$의 이용료를 제공해준다!


서버요구사항

  • CPU : 4 Core (권고)
  • Memory : 16GB (최소) / 32GB(권고)
  • 방화벽 (필수) : 27015~27016 (TCP/UDP), 8211 (UDP)
  • 방화벽 (권고) : 25575 (TCP/UDP) ⇒ RCON

구글 클라우드 VM 배포

시작전

💡 Tips :
1. 구글 클라우드에 회원가입하면 3달간 300$가 충전됩니다.
2. 충전된 금액을 모두 소진하거나, 3달이 지나면 유료 회원 전환 여부를 물어 봅니다.
3. 유료 회원으로 전환하지 않으면 모든 자원은 구글에서 회수하고, 비용이 청구되지 않습니다.
4. 클라우드 구축은 포트포워딩이 필요 없으며, 종료하지 않는이상 IP가 바뀌지 않습니다.

1. VM 인스턴스 생성

먼저 서버를 구동시킬 VM 인스턴스를 생성해보자.

리전과 영역

리전과 영역은 사용자의 목적에 따라 설정하시면되는데
대부분 한국에서 사용할것이니 리전은 서울로 영역은 본인의 취향에 맞게 추가하면됩니다.

머신구성

권장사항을 충족하기 위해 N2 시리즈 중 standard-4 이상을 선택하시면됩니다.
(N2는 Intel, N2D는 AMD 입니다)

부팅 디스크

운영체제 -> Ubuntu
버전 -> 22.04 LTS x86 (AMD는 ARM64)
크기 -> 15GB (추후 업데이트 대비)

그 외에 옵션은 기본으로 두고 인스턴스 생성하시면 됩니다.


VPC 설정

Default VPC 방화벽 설정

아래의 포트를 허용시켜줍시다.

tcp:27015
tcp:27016
tcp:25575
udp:27015
udp:27016
udp:25575
udp:8211

이후 콘솔에서 SSH 접속을 통해 OS 설정을 진행하자

OS 방화벽 개방

  • 진행전 OS Update를 하자

    apt update

  • 방화벽 개방 명령어 실행
    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         <- 설정 저장
  • 방화벽 개방 확인

    sudo iptables -nL
    
    ### 방화벽 개방 확인 ###
    
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:8211
    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:25575
    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:27016
    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:27015
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:25575
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:27016
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:27015

게임 엔진 설치

  • Steam 설치

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

  • GameEngine 설치
    steamcmd +login anonymous +app_update 2394010 validate +quit
  • SDK64 설치
    mkdir -p ~/.steam/sdk64/
    steamcmd +login anonymous +app_update 1007 +quit
    cp ~/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/
  • Initial 실행 (최초 1회 실행)
    ## 게임 설치 디렉토리로 이동 ##
    cd ~/Steam/steamapps/common/PalServer
    
    ## 구동기 실행 ##
    ./PalServer.sh
  • 서버 설정 파일 수정 (커스터마이징)

  • 상세한 서버 옵션 설정은 개발사 홈페이지 참조 : 클릭링크이동

    vi ~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini 
    **## 아래 부분을 사용자의 환경에 맞추어 수정후 PalWorldSetting.ini 파일에 적용합니다 ##**
    
    [/Script/Pal.PalGameWorldSettings]
    OptionSettings=(Difficulty=None,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=All,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="**12341234**",ServerPassword="",PublicPort=8211,PublicIP="",RCONEnabled=False,RCONPort=25575,Region="",bUseAuth=True,BanListURL="https://api.palworldgame.com/api/banlist.txt")
  • 설정파일 적용 확인
    cat ~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini 

서버 최종 구동

  • 게임 실행 : Screen Utility 실행
    screen
  • 게임실행 : PALWORLD 실행
    ## 게임 디렉토리로 이동 ##
    cd ~/Steam/steamapps/common/PalServer
    
    ## 게임 구동기 실행 ##
    ./PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
  • screen 유틸리티 백그라운드로 돌려 놓고 나가기
    ctrl + a + d 

번외 사항 :

  • 나중에 다시 Screen 화면으로 돌아가고 싶을때
    screen -r 
  • 추후 Trial이 만료되면 데이터 마이그레이션을 통해 동일하게 진행하시면됩니다.

참고자료

제작에 참고한 자료들

post-custom-banner

0개의 댓글