이전 글: 나의 개발 커리어 요약: 두번째 회사 웹 보드 게임에서 모바일게임 팀
온라인게임팀이 개발하던 제품은 캐주얼 게임이라고 불리는 웹 기반 보드 게임 같은 것들로 고스톱, 포커, 테트리스 같은 것들이 주류를 이루었고, 이 시장의 최고 강자는 NHN 한게임 이었다. 후발 주자로 진입했던 시장이었지만 자바 애플릿 기반으로 ActiveX 설치 없이 온라인게임을 즐길 수 있다는 점을 강조했지만, Java 기반의 툴킷의 한계가 있어 제품 퀄리티를 높이기 쉽지 않은 상황이었다.
게임 클라이언트를 C++ 기반으로 새롭게 개발하는 걸 목표로 리뉴얼 작업을 진행하려 했었고, 나는 게임 서버 개발자로 일을 하게 되었다. 나름 SI 회사를 다니며 곁눈질로 보아둔 중계 서버 코드들 덕분에 크게 어렵지 않게 적응할 수 있었다.
포커 게임의 경우 한 방에 들어갈 수 있는 최대 인원은 5명으로 제한되어 있었다. 이런 방이 한 서버에 200 개 정도 있었고, 이런 서버가 수십대 있어서 사용자가 원하는 서버를 선택해서 접속할 수 있도록 된 구조였다. 게임 서버라고 하지만 본질적으로는 채팅 서버였고, 최종 플레이어들이 게임 메시지를 주고 받을 수 있도록 하는 채팅서버와 이 서버에 접속하기 전 사전 대기실 역할을 하는 로비 서버로 구성되어 있었다.
포커 게임 서버의 경우 당연히 패를 섞거나 돌리는 등의 로직은 모두 서버에서 처리하고 있었고, 클라이언트는 데이터를 사용자에게 표시하는 용도로만 구성했다. 그렇지 않으면 클라이언트를 해킹해서 발생할 수 있는 문제들이 있었기 때문이다. 나름 괜찮은 셔플링 알고리즘을 구현했다고 생각했는데, 패가 조작되는 것 같다는 고객 민원이 종종 나왔다. 게임을 많이 하는 사람들 입장에서 낮은 우연이 연속되는 경우를 목격하는 일들이 생겼을 테니, 사실 뭘 어떻게 셔플했어도 고객 민원을 없애진 못했을 것이다.
개발은 재밌고 즐거웠던 기억이 있다. 게임 서버 하나만 동작이 멈추거나 문제가 생기면 바로 회사 고객 대응팀 전화가 울려대었기 때문에, 서버들의 현재 상태를 확인하고 각 서버 인스턴스를 리부팅하는 작업이 필요했다. 지금이야 웹 기반 콘솔에서 쉽게 작업할 수 있지만 당시엔 그런 게 없었기 때문에 간단한 쉘스크립트를 활용해서 직접 만든 도구로 처리를 했다. CLI 환경에서 조금 더 사용하기 편한 인터사용자 인터페이스를 만들어 보려고, ncurses 라이브러리 찾게 되었는데, 문서를 읽는 김에 번역도 해서 커뮤니티에 공개도 해봤던 기억이 있다.
그러다 시간이 흘러 2년 정도 지나 병역특례 기간이 끝나고, 일을 더해보고 싶은 마음도 없진 않았지만 미뤄둔 졸업도 해야해서 일단 퇴사하고 복학하게 되었다. 어느 정도 경력이 쌓이며 신입 딱지를 뗄 정도가 되자 개발 공부하는 것도 재밌었고, 서버 개발을 하며 익숙해진 C 언어도 더욱 손에 붙었었다. 자신감이 붙어가던 시절이었다. 하지만 개인의 발전과는 별개로 온라인게임은 매출과 수익 나지 않아 퇴사할 즘엔 온라인게임 사업은 접기로 결정이 났다. 앞서 글에서 말한대로 모바일 게임 개발은 내 성향과 맞지 않으니 회사에 남아있을 이유가 그다지 없었다.