kyuseo의 게임 프로그래밍

싱글게임 보상금 시스템 구현을 통한 개발자와 팀장의 마인드 본문

스마트폰 게임 개발

싱글게임 보상금 시스템 구현을 통한 개발자와 팀장의 마인드

kyuseo 2010. 3. 9. 13:37

싱글게임 보상금 시스템 구현을 통한 프로그램 개발자와 팀장의 마인드

 

작성일 : 2010-03-09, 작성자 : 채경석, http://a.tk.co.kr

 

개요..

 

저희 아이폰 클럽맞고 온라인 게임에는 오프라인에서도 실행이 가능한 혼자 하기가 존재합니다.

 

혼자 하는 싱글게임의 목적성을 올리기 위하여 보상금 시스템과 싱글 온라인 랭킹시스템이 존재합니다.

 

보상금은 게임 승리금액 1점당 1원이 증가되고 온라인게임 아이디로 리워드할 수 있습니다.

 

 

이러한 시스템 개발의 가장 큰 노하우는

 

- 게임 서버와 접속하지 않는 클라이언트와 데이터 베이스의 연동 기술

- 클라이언트 및 웹 주소 조작 및 크래킹 방지에 관한 방법론

 

으로 간단하지만 자칫 초보 개발자가 심각한 고민 없이 개발을 한다면 무한한 머니 증식 등 게임 서비스를 중단 할 만큼의 치명적인 버그를 만들게 됩니다.

 

 

구현의 핵심내용

 

- 클라이언트 조작 방지

- 무한 충전 금지

- 클라이언트는 믿지 않는다.

- 모든 데이터는 조작이 가능하다.

 

라는 개념에서 시작을 하여 많은 예외상황을 생각하고, 테스트하고 구현해야 합니다.

 

 

하지만

이러한 시스템들이 게임의 핵심 중요사항이 아니라면 100% 완벽을 취하다가 배보다 배꼽이 커지는 문제점을 발생하게 되지요.

기능은 80점의 가치가 있는데 90%의 완벽을 취하려면 5일이 걸리지만 100%의 완벽을 기하려면 10일 이상의 작업 소요시간이 됩니다.

 

따라서

80점의 가치5일에 해당될 정도의 중요도를 가지고 있는지, 10일에 해당하는 중요도를 가지고 있는지 정확한 판단을 해야 하고, 또한 구현하지 않은 10%의 내용이 전체 게임 시스템을 저해시키거나, 치명적인 약점이 되지는 않는지를 심각하게 고민하고 판단해야 합니다.

 

 

예외 처리는 어떻게

 

예외처리 결정 사항

- 서버 측에서 1일 1회만 지급이 가능하도록 데이터베이스를 구성하고, 오늘 지급 여부를 검사합니다.

- 클라이언트에서 프로그램 실행 1회당 1회만 지급 버튼 사용이 가능하도록 처리합니다.

- 100만원 이상 모여야 지급이 가능하도록 설정합니다.

- 웹 온라인을 활용하여 보안 통신을 합니다.

- 클라이언트에서 사용 가능한 아이디인지를 검사하고 서버 측에서 등록된 아이디인지 검사한다.

- 서버 측에서 최대 보상금 금액 초과 여부를 검사한다.

- 기타 등등

 

예외처리 포기 사항

- 클라이언트에서 날짜별 지급 처리여부를 관리를 한다.

(모바일 기기의 특성상 실행과 재실행, 아이디 등록의 번거로운 과정이 있기 때문에 포기하였다.)

 

- 클라이언트에서 점수 조작을 막기 위하여 Password Int 를 사용한다.

(모바일 기기의 특성상 조작이 어렵기 때문에 포기하였다. 단 1000만원 제한을 걸려있다.)

 

 

결론

 

이와 같이 작은 시스템 개발이지만 자신의 능력과 기술, 노하우를 최대한 이용하여 많은 생각을 통한 예외를 분석해내는 능력을 가져야 비로소 문제가 없는 프로그램을 개발할 수 있습니다.

 

물론 실력 경험이 중요하지만 대충 대충 만들어보자 라는 프로그램에 대한 무성의한 태도는 결국 자신의 한계와 능력 개발에 선을 그어 한 단계 더 뛰어난 개발자가 될 기회를 포기하는 행동임을 항상 염두 하여 더 좋은 프로그램과 코드를 만들기 위해 노력해야 합니다.

 

 

별첨) 싱글게임 기획안

 

아래와 같은 시스템 기능 기획이 먼저 수반되어야 합니다.

 

 

 

구현된 모습

 

사용자가 보상금을 획득하고 보상금 받기를 클릭합니다.

 

 

보상 받을 온라인 게임 아이디를 입력합니다.

 

 

서버와 접속하여 보상금을 지급합니다.

핵심은 변경 전 후 금액을 표현하는 것이고, 서버 측에서는 보안에 최대한 유의하는 것입니다.

변경 전, 후 금액을 표시하여 센스 높은 정보를 제공하였습니다.

 

 

오늘 이미 지급된 경우에는 추가지급을 하지 않습니다. (서버 측)

 

 

프로그램 실행 1회당 1회만 사용이 가능합니다. (클라이언트 측)

 

 

100만원 이하는 지급하지 않습니다.