저번 포스팅과 마찬가지로 이번 포스팅도 추가적인 진행 사항을 내 진행사항 위주로 정리해보려고 한다. 원래 포스팅을 더 자주했었어야 했는데 최근 빅데이터 캠프를 다녀오느라 늦어졌다. 저번 포스팅 이후로 2주의 시간이 있었던 만큼 많은 진행사항이 있었고 최대한 압축해서 작성해 보겠다.
우선 앞서 포스팅했을 시점에 서버 인프라는 거의 세팅이 완료 되었다. DB서버,게임서버,백업,보안등세팅이 모두 완료되었으며 자세한 내용은 너무나도 많으니 팀원 블로그 https://velog.io/@toothlessjw/%EA%B2%8C%EC%9E%84-%EC%84%9C%EB%B2%84-%EA%B5%AC%ED%98%84-13 외 다른 글들을 참고하면 된다.
따라서 , 이제는 본격적으로 서버 운영을 해보기 위한 게임 내부 플러그인,맵들을 우리 서버에 맞게 설정하고 , 웹서버를 구축하고 , 유저들과 소통 커뮤니티로 discord 환경을 개발했다.
이번 포스팅은 게임 내부 , 게임 외부로 나눠서 포스팅할 예정이다. 나는 주로 외부를 맡았으니 외부를 더 집중적으로 포스팅해보겠다.
게임 내부 환경은 바뀐게 너무나도 많다. 우리 서버에 사용한 플러그인은
위와 같이 엄청나게 많다. 이 플러그인 하나하나 우리 서버에 맞게 바꿔야하며 , java기반 코드에 모듈이 매우 많이 나눠져있기 때문에 호환성도 생각해야한다. 이 부분은 팀원 두명이 집중해서 맡아주고있다. 지금도 끊임없이 수정중이며 완전히 완성되면 포스팅에 정리하겠다.
위 사진은 유저가 현재 위치를 3D맵으로 볼 수 있도록 구현한 것이며 우리서버가 정한 컨셉을 볼 수 있다. 사진과 같이 4개의 다른 느낌의 지형으로 맵이 나눠져있으며 스폰맵에서 텔레포트를 타고 각 맵으로 이동이 가능하다. 다양한 환경의 맵에서 경제생활,마을생활등 일종의 '동물의숲'느낌의 마인크래프트를 연출해보고 싶었다. 참고로 위 맵을 웹사이트 도메인과 연결도 마무리 했다.
내가 맡은 게임 외부는 크게 웹 환경구축과 discord개발로 나뉜다.
저번 포스팅에 이어 메인 서버가 작동하는 sentos 환경에서 웹 서버가 작동하는것을 먼저 목표로했다.
먼저 putty를 ip주소와 port를 입력하고 미리 설정해 놓은 아이디 비밀번호 , OTP인증까지 진행하면 sentos에 있는 웹 서버에 원격으로 접근할 수 있다. 파일 구조를 보면 dbjs.py는 웹 서버가 작동하기 위한 fast api기반 실행파일이고 , myenv는 웹서버가 작동하는데 필요한 패키지들이 모인 가상환경이다. 따라서 가상환경을 키고 실행파일을 실행해 웹 서버를 키는 과정을 systemd를 활용해 자동으로 할 수 있게 구현하려고 했다.
위 과정은 ubuntu 20.04.6 LTS에서 구현했을때와 똑같이 진행하면 된다. etc/systemd/system 경로에 접근해서 .service 파일을 만들어 코드를 넣고 , daemon-reload로 저장 , enable로 서버에 접속할시 service파일이 자동으로 실행되게 한다. 위와같이 웹 서버가 잘 켜진것을 확인 할 수 있다.
이후 본격적으로 웹 디자인을 수정하는 작업을 진행했다.
편하게 코드를 수정하기 위해 위와같이 vs code에서 SSH extension을 설치했다.
이후 위와같이 connect to host를 클릭하고
config 파일에 host주소 , id , 비밀번호를 등록해 원하는 host에 접속했다. 이후 경로에 있는 파일을 자유롭게 수정이 가능했으며 , 수정한 사항 파일을 저장하면 웹에 바로 반영이된다. 위 과정으로 웹 수정 작업을 편하게 할 수 있었다.
많은 scripts와 CSS를 수정해 전보다 좀 나은 웹사이트 UI를 만들었다. 맵 바로가기 버튼을 클릭하면 위쪽에서 보여준 3D맵이 있는 웹사이트 도메인으로 이동된다. 유저는 3D맵을 보면서 현재 자신의 위치가 어디인지 쉽게 파악이 가능하다. 또한 , 실시간 시각화 보기를 클릭하면 아래와 같이 시각화로 스크롤이 내려간다.
웹 구성은 우선 이정도로 마무리 하기로 했다. 내부 서버가 완성되고 , 다양한 규칙들이 정해진다면 그때 추가 수정을 진행할 예정이다.
우선 현재 잘 운영되고 있는 상위 10개 서버 discord, 신생 서버 10개 discord들을 직접 다 들어가보면서 아이디어 영감을 얻었다. 구성은 일반적인 구성으로 필요할 것 같은 채널들만 만들었고 추후 추가예정이다. 또한 , 다른 서버들처럼 메뉴얼 사이트로 gitbook을 활용했다.
gitbook 주소 : https://minecraft-11.gitbook.io/minecraft-forecity/undefined-1/undefined
유저들과 소통 창구인 discord 서버를 하나 만들어서 개발을 맡았다. UI는 크게 위 사진과 같다. 채널을 구성하고 각 채널마다 사용 메뉴얼을 구성하였고 채널 컨셉에 맞게 메뉴얼은 모두 다르다.
우선 디스코드 서버는 다음과 같이 권한 설정이 중요하다. 서버를 만든 관리자 권한을 가지고 있는 내가 다양한 역할을 만들 수 있고 역할에 따라 특정 권한들을 부여할 수 있다. 이 권한은 채널 각각마다도 있으며 , 채널에 따라 권한을 제한하거나 부여 할수있다.
따라서 처음 유저가 디스코드 초대장을 받고 디스코드서버에 들어오면 위와같이 인증채널,신규환영,질문방 3개만 보이게 된다. 이후 , Zira 봇을 활용해 인증 시스템을 만들었는데 https://www.youtube.com/watch?v=P1n8jQZ2lyc 해당 영상을 적극 참고했다.
또한 인증봇 아래처럼 Forecity라는 minecraft 연동 봇을 만들어 discord에서 온 dm인증번호를 minecraft 내에서 입력하면 연동이 된다. 연동이 되면 discord정보 db 테이블에 저장되게 된다. 이 db 테이블은 추후 실제 유저들이 들어왔을때 자세히 다뤄보도록 하겠다.
유저는 디스코드 채널에 들어와 이모티콘을 누르게 되면 모든 채널이 보임과 동시에 '인증역할'이 부여되고 '인증역할'에 설정된 권한을 가지는 사용자가 된다. 따라서 관리자가 설정한 권한에 맞게 인증채널은 더이상 보이지 않게됨과 동시에 다른채널이 모두 보이게 된다. 신규환영 채널에도 환영메세지가 잘 뜨는것을 확인 할 수 있다.
MEE6 Bot을 활용해 사용자에게 특정 멘트를 보내고 싶었다. 하지만 mee6 bot에 위 기능이 유료로 전환된것 같아 하지 못했다.
따라서 위와 같이 MEE6봇을 초대해 간단한 메세지를 만들고 고정시켰다.
우선 https://discord.com/developers/docs/intro 여기 사이트에서 봇 어플리케이션을 새로 만들고 내 채널에 초대한다.
이후 봇 token값을 복사한 후 python코드로 봇에 역할을 부여해준다. 이 python 파일을 실행시키면 봇이 활성화가 되며 날짜와 멘트가 적힌 공지를 띄워준다. 또한 DB서버와 연동해 유저가 DM으로 질문을 하면 질문을 내가 만든 데이터베이스 테이블에 저장이 되도록 설계했다. 덕분에 질문 내용들을 쉽게 확인 할 수 있다. 이 부분은 gpt에 도움을 조금 받았다.
mysql workbench를 활용해 테이블을 조회해보면 다음과 같이 잘 접수된것을 확인 할 수 있다.
위와같이 공지가 잘 나오는것을 볼 수 있고 , DM을 통해 원하는 내용을 질문을 할 수 있다. 건의사항 채널에 편지봇이 채팅을 칠 수 있도록 권한도 설정해주었다.
우선 python 파일이 실행 되어야만 편지봇이 활성화되기 때문에 웹 실행 python 파일과 같이 systemd로 자동화가 필요하다. 그래서 service파일을 만들고 discord봇이 실행되도록 하려고 테스트 했지만
계속 모듈이 없다고 나온다..
이렇게 pip list를 보면 분명 깔려있는데 말이다 .. 가상환경을 새로 만들어서 패키지를 깔고 해봐도 역시 마찬가지라 우선 이 문제를 해결해야 할 것 같다.
이후 게임 내부 개발이 거의 완성이 된다면 각종 테스트 작업을 진행하고 gitbook , discord메뉴얼 및 권한들을 더 정교하게 수정할 예정이다. 이 부분은 혼자하는게 아닌 팀원들과 회의를 진행하면서 해야한다. 우리팀은 2월 전까지 서버 오픈을 목표로 하고있다. 거의 2달 가까이 모두 열심히 달려왔고 드디어 오픈이 머지않았다 !! 파이팅 ~~!