Blogs

illustrations illustrations illustrations illustrations illustrations illustrations

GhostNet Road Map

Published on Sep 24, 2022 by Ghost on

GhostNet Road Map

GhostNet App은 첫 단계로 3가지 Part로 확장합니다.

  • Grand Master Server 개발 (Golang)
  • Master Server 개발 (WPF)
  • Ghost Open Api 개발 및 배포 (C#)

현재 Xamarin App을 포기하는 것은 아닙니다. 개발과 배포를 해본 결과 Play Store나 Window Store등에 배포하는 것은 리스크가 있음을 알게 되었습니다. 플랫폼 운영사의 정책에 따라 앱이 사라질 수도 있으며 리뷰어를 잘못 만나면 앱 업로드 승인도 실패할 수 있음을 알게되었습니다. 리뷰어는 우리나라 사람이 아니기 때문에 설득하기도 어렵고 그 과정도 오래걸립니다. 따라서 최대한 Store에서 독립할 필요성을 느끼게 되었습니다.

특히 업데이트가 지속적으로 발생할 수 있는 Server가 Store를 통해 배포되는 것은 개발 효율을 떨어뜨리는 일인 것 같습니다.


Ghost Open Api 개발

Api를 개발하는 것은 쉬운 일이 아닙니다. 어떤 App도 개발하는데 불편함이 없어야 합니다. 다양한 표준 Api를 제공하면서 의존성도 낮아야합니다. 그리고 잦은 변경은 호환성을 떨어뜨리죠. 따라서 완성도를 높이기 위해 자체 Sample 게임이나 앱을 개발 및 테스트를 완료하고 공개할 계획입니다. https://ghostnetgames.github.io/ 을 통해 개발 문서를 공유하고 있습니다.
정리할 건 많은데 시간이 없어 많이 비어 있습니다. ㅜㅜ

구현요구사항

  • 멀티 네트워크 게임을 지원하기 위한 로비 기능 지원
  • 로비 참여자 정보 관리를 위한 Api


Master Server

Master Server는 WPF를 기반으로 Multiple Window 프로그램으로 개발하고 배포할 예정입니다. 흔히 사용하는 Visual Studio이나 Adobe Tool 풍으로 개발하려다보니 조금 복잡하여 공부를 많이 하고 있습니다. 복잡할 수록 설계하는데 시간이 오래걸립니다. 현재 Release 된 앱보다 좀 더 서버 관련 정보를 모니터링 할 수 있는 기능을 제공할 계획입니다.
서버쪽 코드는 분리하기 쉽게 만들었으나 Ui가 시간이 걸릴 것 같네요…

구현요구사항

  • 트래픽 모니터
  • 접속자 리스트
  • 멀티 윈도우 프로그램


Grand Master Server

GhostNet 합의 알고리즘에는 PoW와 같은 증명과정이 존재하지 않습니다. 블록생성에는 보상이 주어지지 않기 때문에 블록 생성을 전담할 인증된 참여자가 필요합니다. 그리고 블록 생성을 담당하기 때문에 고속으로 동작해야합니다. 서버나 네트워크 프로그램에 특화된 Golang을 기반으로 리눅스 서버 시스템에(물론 플랫폼 Dependency는 유지할 계획) 구축할 계획입니다. Genesis Block에 기본 계정 정보가 있으며 그 계정은 기본 Grand Master 계정으로 활용됩니다. (Adam, Eve, Alice, Bob)


Django

Django를 유지할지 고민입니다. Golang으로 웹서버를 구현할까 고민중입니다. GhostNet 커뮤니티를 담당해줄 사이트이지만 SNS기능이 매우 제한적으로만 구현되어 있어 활용하기 불편합니다. 트위터와 유사한 시스템으로 구현할까 생각중입니다.

구현요구사항

  • SNS 기능 강화
  • 삭제 기능 구현
  • NFT를 프사라든지 리트윗을 할 수 있는 시스템 구축


앞으로 작업을 진행할 우선 순위

역량 확보 Item

  • Multiple Window 프로그램 코드 확보
  • Golang 역량 확보
  • Unity 게임 개발 역량 확보

그냥 하면 되는 Item

  • GhostOpenApi 고도화

역량을 확보해야하는 Item이 많으나 재미나 바로 할 수 있는 것은 GhostOpenApi와 Unity 샘플 게임 확보이다. Multiple Window는 확보된 코드를 분석하면된다. 상당히 어렵기 때문에 시간을 투자할 필요가 있다. Golang은 Web Server 개발로 역량을 확보한 후 Conversion을 진행한다.

그리고 Github상의 CI/CD를 경험해보고 내부적으로도 CI/CD를 구축해보자. 일단 Window상에 jenkins 셋업이 쉽지 않다…

Similar Stories

GhostNet 초기 Architecture

GhostNet 초기 Architecture

GhostNet App은 Xamarin 기반으로 개발되었으나 Core는 분리되어 있다. 위 그림은 GhostNet의 Architecture를 보여준다. Layer 구조를 채택하였으며 철저히 단방향 의존성을 기준으로 구현되었다.

Read More