불안함

안정적이지 않은 마음 상태를 불안하다고 한다. 마음이 불안하게 되면 이성적인 판단보다 감성적인 판단에 의지하게 되고, 결과적으로 장기적인 해결책을 통한 문제의 근원을 해결하기보다는 단기적인 해결책을 통해 눈앞의 문제를 해결하는데 집중하게 되고, 이로 인해 장기적인 이익이 감소하거나 손해를 보는 일이 많아지며, 이는 또 다른 불안을 불러오는 악순환에 빠지게 한다. 이런 악순환의 고리가 중첩되면 무엇이 어디에서부터 잘못되었는지 모르는 상황에 빠지게 되고, 평소의 자신이 생각해도 하지 않았을 결정이나 행동을 하게 되는 경우도 부지기수다.

짧게 말하자면, 삶에서 발생하는 많은 이벤트에 대응할 계획을 세워놓지 않았다면 패닉에 빠지게 된다는 말이다. 물론 모든 이벤트를 다 상상하고 대비할 수는 없으니 최대한 안정적이고 규칙적인 삶을 유지하려고 애쓰게 된다. 하지만 여기서 자신의 욕구를 필요 이상으로 누르는 경우가 많아, 안정적인 삶을 구축했다고 생각하지만 다시 스스로 그 삶을 허물게 되는 경우가 많다.

회사를 그만두고 6개월, 이런 저런 일들이 많아 실제로 뭔가 집중해서 한 것은 두어달 남짓이었는데, 회사를 그만두지 않고도 낼 수 있는 결과물이라는 생각이 나를 많이 괴롭혔다. 로이와 함께 이 프로젝트를 계속 끌고 갈 것인가, 다른 코어에 도전할 것인가에 대한 질문 이전에, 회사를 그만두지 않고 준비할 수 있는 부분들에 더 많이 고민했어야 한다는 것에 동의했다. 물론 회사를 그만 둘 때에 받았던 스트래스들도 있었지만 조금은 바보같이 먼저 나가버렸던건 감정적인 선택이었음을 부정할 수 없다.

나 또한 로이와 무언가를 시작하기 전에, 나 스스로 홀로서기의 가능성을 최대한 많이 발견하고 준비해 놓아야 했다. 물론 퇴사 후 게임 프레임워크를 만들게 되었다는 성과는 있었지만 회사를 다니며 실행하도록 노력했어야 하지 않았을까?

지나간 이야기는 뒤로 하고, 하여간 나는 조금의 준비가 더 필요하고 마음의 불안요소를 지울 필요가 있기에 약간의 계획을 수정하기로 했다. 내 스스로 만족할 만큼의 가능성을 확인하기 전 까지 다시 회사로 돌아가기로… 너무 빨리 실패를 인정하는것 같아 속상했지만 여전히 마케팅의 관문에 막혀 실제 내가 만든 게임을 보여주지도 못하는 상황과 그 문제를 해결할 명확한 솔루션이 없는 내 자신을 보면 아직은 시기상조라는 생각이다.

투자나 공동개발을 위해 접촉하던 몇몇 회사들에 로이와 같이 팀으로 들어가고 싶다는 연락을 했고, 동시에 로이에게 소개받은 회사와 인터뷰를 하기로 했다. 매일 한 사람씩 4명과의 인터뷰가 끝나고 바로 오퍼를 받았지만 지난번 받았던 연봉과 비슷한 조건에 게임을 새로 만드는 프로젝트라 시간적으로 조금 부담되는 회사였다. 돈도 많고 앞으로 나나 회사나 성장할 가능성이 커 보였지만 이 곳에 뼈를 묻을 각오로 들어가는게 아니라면 이걸 장점이라고 생각할 수 있을까.. 고민하던 와중에 다른 회사에서 연락이 왔다. 로이와 같이 들어가는 조건으로 연봉도 올리고 보너스 프랜도 있는 회사에서. 새로운 게임을 만드는 것도 아니고, 성공이 어느정도 보장된 게임을 개선하고 돈을 더 벌 수 있게 운영하는 스튜디오를 만드는 것인데 운영이나 개발에서 스튜디오의 독립성도 보장되고 모네타이제이션에 대해 배우고 경험하는 부분이 중심이라 오퍼를 받아들이기로 했다.

또 다시 새로운 팀을 꾸리고 프로젝트를 진행해야 하지만 머릿속에 이 직업 자체가 사이드 프로젝트라 생각하고 나만의 비지니스를 만드는 노력을 게을리 하지 않아야 겠다고 다짐해 본다.

이렇게 일단 나의 6개월 백수 경험이 일단락되고 독일에서 6번째 직장 생활을 시작하게 되었다.

고연봉에 성과에 따른 보너스 플랜, 집에서 일하고, 다른 리모트 포지션과 다르게 독일에 법인이 있어 종신 고용, 그리고 여러 복지 혜택과 무제한 휴가 제도까지.. 회사가 망하지만 않는다면 좋은 조건이다.

내가 꿈꾸는 어느 날은, 내가 개인적으로 진행하던 프로젝트의 가능성을 확인하고 이런 좋은 조건보다 더 좋은 결과를 만들 수 있다고 확신하며 이 회사를 떠나는 것이다. 그리고 그 날은 내 생각보다 빨리 올 것이라 확신한다!

[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차 구현 목표는 이번 주말 전 까지.