구글 클라우드로 팩토리오 24시간 서버 만들기 (1)편

https://gall.dcinside.com/mgallery/board/view/?id=factorio&no=15767&page=1




이제 파일질라를 실행하고 편집-설정 창에 들어가라



SFTP항목으로 들어가서 키 파일 추가 버튼을 누르고 아까 저장한 ppk파일을 등록해준다.



그리고 다시 메인으로 나와서 호스트에 sftp://외부 ip주소

사용자명에 키 파일 이름을 입력하고 빠른 연결을 눌러라.



연결이 제대로 됬다면 위처럼 뜨고 우측 윈도우에 서버의 내용물이 보일거다.



이제 아까 말한 server-settings 파일을 수정해야 되는데,

경로는 네 gcp계정명/factorio/data에 있을거임. 파일을 찾았다면 우클릭해서 다운로드를 누른다.

저장 위치는 아래 전송 성공 눌러보면 확인할 수 있음.

먼저 좌측 창에서 파일 이름을 server-settings.json으로 바꾸고 우클릭해서 수정한다.



파일 내용을 해석하면 위와 같다. 입력하고 저장하면 됨.

참고로 토큰 같은 경우



AppDataRoamingFactorio 로 가서 player-data 파일을 열어보면 위처럼 확인할 수 있다.



저장하고 닫으면 파일을 서버에 업로드 할거냐고 묻는데

아직 우리는 서버의 디렉토리를 수정할 권한이 없어서 그대로 업로드 하면 전송실패하니, 일단 아니요를 누름.




수정권한을 주기 위해선 다시 SSH창으로 이동한 후 sudo su 를 입력해서 관리자 모드로 이동함.

그리고 factorio 상위 폴더에서 chmod 777 factorio/ 를 입력해서 factorio 폴더에 수정 권한을 부여한다.

다음 cd factorio 로 factorio 폴더로 이동 후 마찬가지로 chmod 777 data/ 를 입력해서 data폴더에 수정권한을 부여하면 됨.

마지막으로 exit를 입력하면 관리자 모드에서 빠져나올 수 있다.




이제 다시 파일질라로 돌아와 수정한 서버세팅 파일을 서버로 업로드한다. 아래 전송 성공에 제대로 뜬다면 된 것.

다 됐으면 상단에 서버-연결종료한 후 닫는다.




다시 SSH로 돌아와 apt-get install-y screen 을 입력해서 screen기능을 설치한다.

screen은 이 SSH를 닫아도 서버가 계속 작동하게 하는 역할을 함.


설치가 끝나면 cd factorio로 factorio 폴더로 이동한 후

./bin/x64/factorio --create ./saves/game.zip

을 입력한다.

팩토리오를 실행 후 해당 경로에 game.zip이라는 세이브 파일을 생성하라는 말임.


뭔가 좌르륵 뜰텐데 완료되면 다음을 입력한다.

screen ./bin/x64/factorio --start-setver ./saves/game.zip --server-settings data/server-settings.json

팩토리오를 실행하고 game.zip 파일로 서버를 시작하며, 그 서버는 아까 저장한 server-settings.json으로 설정하라는 말ㅇㅇ



그러면 새로운 세션이 열리면서 위처럼 내용이 좌르륵 뜨게 된다. 이상태서 아무거나 입력해보면 서버에 채팅이 나가게 됨.

이제 ctrl+a하고 d를 누르면 세션을 나올 수 있음.


참고로 간단히 screen 명령어를 살펴보면

screen -r 을 누르면 아까 세션으로 다시 진입할 수 있고. screen -l로 현재 실행중인 screen 세션의 목록을 볼 수 있다.

screen을 종료하려면 세션 내에서 ctrl+a하고 k를 눌러서 할 수 있다.


이제 exit로 SSH를 종료하면 24시간 멈추지 않고 돌아가는 서버가 완성된 것.

마지막으로 팩토리오에서 사용하는 포트 34197를 서버에서 허용해주면 서버에 접속할 수 있다.



구글 클라우드 VM인스턴스 대쉬보드 아래 관련작업 보면 방화벽 규칙 설정이 있는데 누른다.



위에 방화벽 규칙 만들기 누름ㅇㅇ



방화벽 이름 입력하고(ex. factoriofirewall) 소스 IP 범위에 0.0.0.0/0
맨 아래 프로토콜 및 포트에서 udp체크 후 34197을 입력 후 만들기를 눌러라.

팩토리오는 tcp는 허용하지 않으므로 반드시 udp로 해야 한다.



이제 모든 과정이 끝난것.

팩토리오 실행 후 공개 게임에서 server-settings.json에서 입력한 방이름을 검색해서 제대로 뜬다면 성공한거임ㅇㅇ



ps.1

이렇게 만들어진 맵은 data폴더의 map-setting.example.json의 내용에 의해 만들어진것인데,

맵을 수정하고 싶다면 똑같이 저 파일을 수정후 업로드 해서 다시 game.zip 세이브 파일을 생성후 screen 명령어로 서버를 시작하면 된다.

하지만 더 쉬운 방법은 그냥 팩토리오 게임 내에서 새 게임 만들기로 맵을 만든 후 저장한 세이브 파일을 서버의 saves폴더에 넣고

screen ./bin/x64/factorio --start-setver ./saves/game.zip --server-settings data/server-settings.json 에서

game.zip 대신 새로 만든 세이브 파일 이름을 집어 넣고 시작하면 됨.


ps.2 screen을 실행했는데 [screen is terminating] 뜨면서 깨져버리는 때가 있다. 그럴땐 VM인스턴스에서 서버를 껏다 다시 키면 해결됨.

근데 해결 안되면 나도 왜그런지 모름ㅇㅇ


ps3.모드를 넣고 싶다면 마찬가지로 서버의 모드 폴더에 수정권한을 부여하고 업로드하면 됨

ps4.팩토리오 버전 업데이트는 일단 screen 끄고 똑같이 wget 으로 다운받아 그대로 압축풀어서 덮어버리면 된다.
자동업데이트하는 스크립트도 있는데, 말했다싶이 프로그램 알못이라 어떻게 하는지 모르겠음. 잘 아는 팩붕이가 나중에 잘 설명해줄거라 믿는다.