구글 클라우드로 팩토리오 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인스턴스에서 서버를 껏다 다시 키면 해결됨.
근데 해결 안되면 나도 왜그런지 모름ㅇㅇ
정보+정성 추
퍄퍄퍄굳굳
공개된 게임에 뜨기까지 했는데 접속이 안됨 ㅠㅠ
핑 알수없음뜨고 접속하면 연결할 수 없다칸다..
서버는 잘 열린거 같은데 방화벽 문젠가? 미안. 나도 잘 모르겠다ㅠㅠ
혹시 서버 세팅에 입력했던 팩토리오 계정이랑 스팀에 연동된 팩토리오 계정 다른걸로 써야됨??
난 같은걸로 썼는데, 계정 쓰는 이유가 정품인증 용도니까 상관 없다고 생각해.
처음 서버 지역 고를 때 예시의 서울과 다르게 난 도쿄로 만들었는데, 이게 상관 있을지는 모르겠네.
오오 감사감사 이런거 해보고싶었는데
server-settings이 파일 vi같은거로는 수정 못함?
잘됨 vi 사용법이 다른 사람들한텐 쓰기 어려워서 이렇게 쓴듯
중간에 screen ./bin/x64/factorio --start-setver ./saves/game.zip --server-settings data/server-settings.json 이거 명령어 오류
중간의 --start-setver를 --start-server로 변경
screen ./bin/x64/factorio --start-server ./saves/game.zip --server-settings data/server-settings.json
server-settings.json 없다고 서버 안켜지는데 머냐