[GameShell] 설계

지난 개발일지 이후 가족들의 코로나 감염, 그리고 간만의 몸살(코로나는 걸리지도 않고..), 그 직후 10여일간의 부활절 가족 여행, 부모님 방문까지 연이은 이벤트로 모든 개인프로젝트가 중단되었었다.

nocnoc 서비스 아이디어를 조금 더 구체적으로 정리하는 동안 유니티로 게임 프레임워크를 만들기로 했다. 사실 지금 하는 프로젝트의 프레임워크를 조금 더 모듈화 되고 범용적으로 만드는게 목표인데, 연초에 이미 2주정도 시간을 들여 정리한 바 있다. 그 프로젝트를 이어서 진행할까 생각했는데 당시 UI 와 테스트 모듈까지 다루려던 욕심에 코드가 명확히 분리 되지 못했던 기존의 문제를 그대로 가지고 있었기에 다시 처음부터 만들기로 했다.

먼저 모든것을 잊고 모바일 게임의 기본 로직을 구성하는 프레임워크와 지원 라이브러리를 구성하는 것을 목표로 했다. 범용성 있게 설계하지만 너무 이 주제에 집착해서 개발 속도가 느려지는 일이 없도록 주의했다. 기본 구성은 현재 진행하는 프로젝트와 마찬가지로 JSON 기반의 자료 정적/동적 자료 저장과 로컬 액션 기반의 사용자 액션 히스토리 구성을 통해 클라이언트에서의 독립성과 서버 검증을 함께 처리하려고 한다.

사용되는 SDK들은 동적으로 이용할 수 있도록 인터페이스를 설계하고 최대한 실 사용자가 자동화된 방식으로 사용할 수 있도록 했다. 결과적으로 사용자는 자신이 사용하고자 하는 자료구조와 로컬 액션을 처리하는 클라이언트/백엔드 페어 로직을 작성하면 나머지 부분은 프레임워크가 알아서 처리해 주는 식이다.

이번 프로젝트에서 가장 의미없이 많은 시간을 투자해야 했던 백엔드 부분의 버그처리나 테스트가 모듈화 되어 이루어질 수 있는 기반이 만들어 지는 것이다. 클라이언트에서도 훨씬 간결해진 프로세스를 통해 실제 유저가 Crash 나 ANR을 경험할 경우 쉽게 재현이나 문제가 되는 포인트를 리포트하고 디버깅 할 수 있을 것이다.

1차적으로 구현할 기능은 다음과 같다. 샘플 사용 백엔드는 Firebase 로..

  • Authentication
  • Local action process
  • Dynamic data
  • Static data
  • Local data
  • Shortened key
  • External asset

1차 기능 구현이 완료되면 기본 UI Framework 을 만들어 볼 생각이다. 이 역시 코드와 UI 가 분리되고 모듈로 동작할 수 있도록 구현 예정.

그 외 기본 구현 예정 기능들

  • Force update
  • Force kick-out
  • Dynamic data sync
  • Push notification
  • IAP
  • Subscription
  • Reward Video
  • Google/Apple/Facebook login
  • Switch account
  • Sound/Haptic control
  • Localisation

이미 구현해 본 기능들이고 개선 방향을 알고 있으므로 구현에 문제는 없어보이지만 어떤 방식으로 모듈화 할 지가 고민이다. 물론 고민에 시간이 너무 걸린다면 일단 구현해 놓고 볼 문제… 1차 구현 목표는 이번 주말 전 까지.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.