사용자 도구

사이트 도구


team_rrgames

Team RRGames

소프트웨어 마에스트로 1단계 프로젝트였던 RRGames에 대해 서술하는 항목.

Team RRGames
실질적 주제 실시간 랭킹게임 시스템 개발1)
사용 플랫폼 Ruby On Rails2) → FastCGI + C++3), MySQL, REDIS,MongoDB, Unity4), JavaScript, HTML5/CSS5)
참여 인원 멘토 오우택, 이민혁, 변성환, 정주영, 배현승
마에스트로에서 수행한 프로젝트
Team RRGames Ump-Hire

마에스트로 1단계 프로젝트

마에스트로 선발 이후 처음으로 진행하는 프로젝트.

소프트웨어 마에스트로에서 진행하는 첫 프로젝트는 '멘토'단이 먼저 수행하고자 하는 프로젝트들을 멘티들에게 브리핑 하고, 멘티들은 희망하는 프로젝트의 우선순위를 제출한 다음, 프로젝트 담당멘토들이 지원자중 멘티를 선택하여 프로젝트 팀을 구성하도록 되어있었다. 이때 이민혁은 1차 지망에 지원자가 과잉함에 따라 단계가 밀려나게 되었고, 이 프로젝트에 당첨되었다. 그리고 마에스트로 생활이 시작됐다.

첫 만남과 프로젝트의 시작

팀에서는 이민혁을 제외하고 모두 게임 개발을 해본 경력이 있었고, 각자 경험해본 게임개발 영역이 달랐다. 변성환은 Cocos2d-x, Unity 기반으로 게임을 개발한 경력이 있는, 게임 개발자. 배현승은 C#기반의 게임서버를 구현한 적있는 고딩. 정주영은 플래시와 액션스크립트를 활용해 정보올림피아드에 입상하기도 한 고딩이었다. 멘토님은 각자 개성 강한 팀원들의 시야와 의견을 조율하며 같이 게임을 기획할 수 있도록 도움을 주셨다. 프로젝트 시작 후, 팀원 모두 IT에 대한 시야와 깊이를 멘토님의 도움으로 늘려나가며 프로젝트를 진행하였고, 초기 프로젝트를 점수 지표를 '랭킹화'할 수 있는 '팡류'게임을 기획했다6).

세개의 서브프로젝트 : 두개의 게임과 하나의 백엔드

최초에는 기획 회의 끝에 Poosha Poosha라는 아이템이 나오게 되었으나 랭킹 기반의 게임이라는 주제를 강화하기 위해 세가지 프로젝트로 분화되었다.

Poosha Poosha

태초에 기획했던 퍼즐 기반의 게임. 플래시 개발 실력이 탁월한 정주영과 Unity 개발 경험이 있는 변성환의 주도로 게임 클라이언트 개발이 진행되었고, 이민혁배현승은 서버 백엔드 개발을 진행. 최초에 백엔드는 서버 아키텍쳐의 학습을 겸하고자 Ruby on Rails로 구현하였으나 이후 성능 문제를 개선하기 위해 C++기반의 플랫폼으로 전환하였다.

게임 화면

랭킹 도출의 포인트는 '스테이지'로 구분된 지역 랭킹.

스테이지 디자인 목록. 스테이지별 통과율에 따른 피드백.

Rankaas.io

Poosha Poosha에서 만들어진 백엔드를 변형하여 일반화 시킨 랭킹게임용 백엔드 서비스.

  • 주의 : 이 프로젝트는 존속하는 팀에 의해 진행중이기 때문에 팀의 지속성을 저해할 수 있는 내용은 서술하지 않습니다.
서비스의 구조도 프론트 엔드 화면

사실 이 서비스는 배현승이 제일 고생한 부분. Ruby On Rails에 Bootstrap을 Frontend로 활용했다.

랭킹 도출에 특화된 게임 백엔드 시스템

최초에는 MySQL의 SQL 문법을 활용한 순위 도출 기법을 사용하였으나, 이를 활용해서 점수에 기반한 순위를 도출하면, 레코드 수에 따른 성능저하가 발생한다. 이에 대한 서술은 추후 추가예정.

Based on Linux n' C++

빠른 성능을 보장하기 위해 C++ 프레임워크를 적극적으로 도입하고, FastCGI라이브러리를 활용했다. 호스팅은 Lighttpd를 이용해서 병목 현상을 최소화 하도록 도모했다. 이 둘은 웹 프레임워크 성능 지표에서 상위권의 속도를 가지고 있다. 다만 이를 선택하기 위해 리눅스를 활용한 유지보수 기법, C++ 코딩 테크닉등이 다수 활용될 여지가 있었고, 이를 학습하는데 상당량의 시간을 할애했다.

KKuTu

Rankaas.io를 활용한 구현사례로 만들 겸, 개발의욕이 저하되어 있던 정주영의 아이디어를 적극차용하여 개발된 끝말잇기 게임. 이름의 유래는 끝말잇기 + 한자어 '싸울 투', '끝 두글자 잇기'라는 중의적인 표현. Ruby 위에서 개발된 웹 게임이었고 개발 기간이 길지 않았기 때문에 안정화된 모습은 아니지만, 게임의 아이디어 자체가 참신했기 때문에 평가와 대중의 반응 모두 호평이었던 게임.

가장 특색있는 끝말잇기 모드인 'KKuTu'모드의 규칙

게임 자체는 이해하기 쉬운 끝말잇기 지만, 영어의 경우 '끝 두글자'를 잇는 것이 이 게임의 특징이자 정체성.

게임 로비 화면 게임 종료후 랭킹 표시

실제 클로즈드 베타 수행할때도 다수의 버그리포트를 제외하면 반응이 좋았다. 참여자들이 음란마귀 쓰인 단어들을 많이 써서 베타기간 동안 웃음꽃이 떠나지 않았다(…)고추 라던가 임신이라던가…

랭킹 구현의 포인트는 전역랭킹과 ELO 시스템.

최종 발표

최종 발표는 이민혁 단독으로 발표를 진행했다. 팀 내에서 가장 나은 발표를 할수 있다는 내부적인 판단. 하지만, 전달해야 할 정보의 밀도대비 PPT구성의 빈약함, 말더듬 등 여러가지 문제가 생겨서 실제로 준비하는데 매우 오랜 시간이 걸렸고, 멘토님 밑에서 혹독하게 연습하였다.

최종 발표는 2014년 11월 21일에 진행했다. 발표시간은 20분. 전달해야 할 정보가 지나치게 많아서 거의 '랩'에 가까운 발표를 진행했다. 발표의 완급조절이 약했던 점이 아쉬웠으나 다행히 말은 더듬지 않았다. 발표 분위기는 큰 태클 없이 긍정적으로 넘어갔으나 발표가 늦은 시간에 진행된 탓에 심사위원단도 약간 지쳐있는 느낌.

아래는 멘토단의 평가.

  • Rankaas.io : 랭킹 도출에 대한 성능문제를 제시한것은 긍정적이고 순위를 도출하는데 일반적인 RDBMS를 활용하지 않고 REDIS등을 도입해 해결한 점은 '나름 공부해봤다' 해볼만한 내용이지만 프론트엔드가 덜 정돈되어있고 너무 핵심적인 기능7)만 구현되어 있는점이 아쉬운 느낌.
  • PooshaPoosha : 게임성은 별로 참신하지 않음. 다만 사용자경험을 로그로 획득하고 스테이지 디자인을 재 정돈하여 개선한 점은 앞으로도 활용할 여지가 높은 기법이며 굉장히 긍정적이다.
  • KKuTu : 대체로 참신한 게임성. 웹 만을 이용하여 이러한 형태의 게임을 만든점이 대단히 신기함. 다만 PC에 국한될 지도 모른다는점은 아쉬움.
  • 기타 : 전체적으로 세 프로젝트가 유기적인 연결되어 있는 느낌은 주지 못했다. 실제로 대외에 서비스를 수행해봤다는 점은 좋다.

최종발표 이후

프로젝트 종료 후 멘토님과 함께 양고기를 먹으며 회포를 풀었다. 아주 맛있었지. 프로젝트에 참여한 4인중 3인이 2단계 과정에 진출하였다. 탈락한 1인도 병역특례를 위한 취직을 하였으므로 나름 해피엔딩. 하지만, 2단계과정에서 팀은 뿔뿔이 흩어졌으며 멘토님 또한 프로젝트 멘토로 참여하지 못하시게 되었다. 허나 팀원 '배현승'이 3단계에 진출하게 됨에 따라 Rankaas.io의 명맥이 이어질 여지가 생겼다.

이후의 2단계 프로젝트의 전개는 Project SuperReady으로.

가장 중요한 요소 - '로그를 통한 지속적인 사용자 경험 개선'

교훈점

'출시'와 '피드백'관점에서의 게임개발

퍼즐게임 Poosha Poosha와 타이핑게임 KKuTu의 방문자 통계, 플레이 패턴을 파악하기 위해 백엔드에 로그 시스템을 부착하고 웹 프론트엔드에 Google Analytics를 적극적으로 활용하였다. 특히 Poosha Poosha에서의 로그 기록과 피드백 활용은 개인적으로도 인상적이었는데,사용자 접속 분포와 스테이지별 클리어율을 로그화 한 다음, 스테이지 디자인을 클리어 율에 따라 재조정하여 사용자 경험을 개선하는 모습을 보여주었다. 이때 리눅스 시스템 명령어들을 활용하여 로그 분석/ 관리를 시도하였다.

프로젝트 기간동안 멘토님은 적극적인 개발 진도, 그리고 출시를 항상 강조하셨는데, 프로젝트 종료 후에야 그 말씀의 의미를 실감할 수 있어서 스스로의 어리석음을 한탄했다. 서비스 가능한 형태로의 빠른 개발과 출시가 곧 피드백 수집과 아이템의 개선으로 이어지기 때문. 그리고 이는 후에 '린 스타트업'식의 사업운영과 '스크럼'개발 방법론을 도입하고 더욱 고도화되었다.

최초의 협업과 협업도구 사용

팀 구성원 4명중 2명이 고등학생이었기 때문에, 9월부터 시작되는 정규학기에는 오프라인 회의를 개최하기 어려웠고, 화상회의를 위해 Google Hangout을 활용했다. 생각보다 좋은 음/화질 환경을 제공해줘서 다소 까다로운 면은 있었지만 회의/멘토링을 잘 해낼 수 있었다. 본격적인 스크럼 개발 방법론을 도입한 것은 아니지만, 매일매일 약 20분간 자신의 할일을 해내고 이야기를 나누는 스크럼 회의를 도입해서 프로젝트의 긴장감을 높였다. 9월 이후 정체되었던 프로젝트 진척을 높일 수 있었던 좋은 도구였지만, 하루하루를 '껀바이껀'으로 보내는 경향이 가끔 보였던것은 역시 생각해봐야 할 부분.

협업을 위해 Git을 활용해서 소스코드를 관리했지만 아직 사용하게 능숙하지는 못했고 브랜치가 꼬이는등 문제도 많았다. 수동으로 소스코드를 Merge하는 등 당시엔 불편한 모습.

소스코드 관리는 Atlassian의 Bitbucket을 썼다. 4인 팀 구성까지 Private Repository 구성이 가능했기 때문.

최초의 리눅스 기반 개발

OS 라이센스 비를 내지 않고 활용할 수 있는 방안은 역시 Linux OS를 쓰는 것이었고, 리눅스를 활용한 서버비용이 저렴했기 때문에 불가피 했던 상황. 멘토님은 vi 에디터 활용과 리눅스 명령어 활용법을 멘토링 때마다 알려주셨기 때문에 자연스럽게 리눅스 사용에 익숙해 질 수 있었다. 서버 구축은 Olleh U cloud Biz의 Reseller 인 csb.io의 도움을 받았다. 포인트 제도를 통한 선불결제가 가능했기 때문.

팀의 역할론과 내적 갈등

팀 내에서 가장 연장자였으며, 팀원들과 나이 격차가 있었던 것에 비해 자신은 프로그래밍 집중력이 다소 아쉬웠다. 팀에서 게임 개발을 경험하지 못한것도 약점이었다. 이후 프로그래밍 실력적인 면에서는 부족함을 깨닫고 팀에서 서포터역할을 수행하기 위해 노력했다. 팀원들 개개인이 개발에 몰입하면 높은 생산성을 보여주는 점, 행정적인 부분에서 팀원들보다 나은점이 있었기 때문에, 집중 가능한 환경을 만들고 방해 요소를 없애주는 역할8)을 도맡아 수행했다. 팀원들이 어린시절부터 프로그래밍을 접한 가운데 각자 학습한 분야가 달랐으므로, 이민혁은 팀 리더로써 대화의 접점이 되기 위한 시도를 했고 이것은 나름 효과가 있었다. 다만, 프로그래밍과 IT지식에 대해 나름 가지고 있었던 자존감은 이번 프로젝트를 통해 박살났다.9) 팀 분위기를 긍정적으로 끌고는 갔으나 이로 인해 마나소모가 극심했는데 이것을 제대로 회복하지 못한채 2단계 프로젝트를 수행했고, 이는 그대로 이 되었다. 다만 이것은 필요이상의 마나를 소모했다는 점에서 많이 고민해봐야 하는 부분.

1)
이후 KKutu/Rankaas.io/PooshaPoosha로 분화.
2)
백엔드 아닌 프론트엔드에서는 지속적 사용
3)
lighttpd 웹 서버 사용
4)
게임 Poosha Poosha 개발
5)
게임 KKuTu 개발
6)
캔디크러시로 대표되는
7)
유저이름에 따른 점수 저장, 랭킹 도출 등.
8)
주로 행정처리 등
9)
사실 마에스트로 생활 이전부터도 기술이 부족하다는 생각으로 갈등 중이었다.
team_rrgames.txt · 마지막으로 수정됨: 2017/08/19 22:13 (바깥 편집)