본문 바로가기

PROJECT/포켓몬

[토이/자바] 포켓몬 게임 만들기(2) : 기획

 

이번 프로젝트 썸네일 사진은 내가 좋아하는 이상해씨다.

포켓몬 게임을 만들기로 했으니 이제 뭘 구현해야 할지 구상해보자.

 

우선 필수 기능/구현 항목으로

 

1. 로그인/회원가입 (관리자)

2. 정보 조회 (내 정보 조회, 내 포켓몬 조회, 내 코인 조회)

3. 포켓몬 선택/포획/삭제

4. 포켓몬 배틀 (미리 등록된 데이터와 전투하는 방식)

5. 포켓코인 (배틀을 통해 획득, 게임 내 재화)

6. 포켓몬 능력치

 

정도를 생각하고 시작했다.

이 주제를 토대로 한 부분씩 세부적인 구상을 해보자.

 

 


 

 

1. 로그인/회원가입

 

1) 기존에 등록된 데이터가 있다면 로그인을 할 수 있어야 한다.

2) 신규 데이터일 경우 회원 가입을 할 수 있어야 한다.

3) 관리자 아이디로 로그인 시 관리자 모드를 시작한다. (2순위)

4) 로그인 시 입력한 아이디/비밀번호가 기존에 등록된 데이터와 일치하지 않으면 재입력 받는다.

 

2. 정보 조회  (내 정보 조회, 내 포켓몬 조회, 내 코인 조회)

1) 나의 닉네임, 칭호, 코인을 조회할 수 있어야 한다.

2) 내 포켓몬의 이름, 스킬, 스탯정보(공격력, 방어력, 체력, 스피드), 상태(피로도, 친밀도, 레벨)을 조회할 수 있어야 한다.

3) 내 코인의 갯수를 조회할 수 있어야 한다.

 

3. 포켓몬 선택/포획/삭제

1) 처음 계정을 생성하면 한 마리의 포켓몬을 반드시 지급받는다. 이 포켓몬은 3가지 종류 중 하나를 유저가 선택한다.

2) 추가적인 포켓몬 획득은 탐험을 통해 야생 포켓몬을 만나고, 배틀에서 승리하였을 경우 포획을 통해 이루어진다.

3) 보유하고 있는 포켓몬이 6마리를 초과할 수 없다. 새로운 포켓몬을 등록하기 위해서는 기존 포켓몬을 삭제할 수 있어야 한다. 이때 삭제된 포켓몬은 다시 복구할 수 없다.

 

4. 포켓몬 배틀

1) 유저는 미리 등록된 트레이너 데이터와 두 종류의 배틀을 할 수 있다.

   1-1) AI 훈련봇 배틀 : 반드시 유저보다 약하거나 비등한 능력치를 가지도록 유동적으로 변화하는 스탯을 가진 트레이너를 상대할 수 있다.

   1-2) 체육관 배틀 : 고정된 능력치를 가진 체육관 관장 데이터를 상대하게 된다.

        1-2-1) 풀의 체육관 : 레벨 5 정도의 평균 능력치를 가진다.  고정된 포켓몬 3마리를 보유한다.

        1-2-2) 물의 체육관 : 레벨 15 정도의 평균 능력치를 가진다. 고정된 포켓몬 4마리를 보유한다.

        1-2-3) 불의 체육관 : 레벨 20 정도의 평균 능력치를 가진다. 고정된 포켓몬 5마리를 보유한다.

        1-2-4) 드래곤 체육관 : 레벨 25 정도의 평균 능력치를 가진다. 고정된 포켓몬 6마리를 보유한다.

2) 유저는 모든 종류의 배틀에서 승리할 경우 포켓 코인을 차등 지급받을 수 있다. 체육관 관장 데이터에게 승리하게 된다면 해당하는 체육관의 뱃지와 칭호를 획득하게 된다. 이전 단계의 뱃지를 획득해야 다음 단계의 체육관 배틀에 도전할 수 있다.

3) 한 번의 배틀은 포켓몬 피로도를 5씩 소모시킨다.

4) 모든 스킬은 명중률(50%~100%)이 있으며 빗나갔을 시 아무런 효과를 주지 못한 채 턴을 종료한다.

5) 급소 공격은 두 배의 데미지를 누적시킨다. 모든 스킬은 급소를 공격할 확률(15%+@)이 있으며, 피로도가 높을 시 급소에 공격당할 확률이 추가적으로 증가한다. 친밀도가 높을 시 상대의 급소를 공격할 확률이 추가적으로 증가한다. (6번 목차에서 추가 기술)

6) 배틀 데미지 공식 : {(나의 체력)+(나의 방어력)/2} - (상대의 공격력) = (나의 남은 체력) 이다.

 

5. 포켓 코인

1) 유저는 배틀을 통해 고정적으로, 탐험을 통해 확률적(10%)으로, 포켓몬 아르바이트를 통해 (고정값+확률적인 추가값) 코인을 획득할 수 있다.

   1-1) 배틀 : AI훈련봇 상대로 승리시 100코인을 고정적으로 획득. 체육관봇 상대로 승리시 1000/1500/2000/25000 코인 획득.

   1-2) 탐험 : 탐험 활동을 종료할 때, 10%의 확률로 나의 포켓몬이 100 코인을 습득할 수 있다.

        1-2-1) 서쪽 평야 : 피로도 -2, 풀타입 포켓몬 출현 확률 높음.

        1-2-2) 북쪽 용암 지대 : 피로도 -4, 불타입 포켓몬 출현 확률 높음.

        1-2-3) 남쪽 해안가 : 피로도 -6, 물타입 포켓몬 출현 확률 높음.

   1-3) 아르바이트 : 나의 포켓몬에게 아르바이트를 시킬 수 있다. 절대적인 시간을 사용한다.

        1-3-1) 도서관 : 피로도 -2, 예상 수익 10~15코인, 절대시간 10초 소요.

        1-3-2) 전단지 : 피로도 -4, 예상 수익 15~25코인, 절대시간 20초 소요.

        1-3-3) 커피숍 : 피로도 -6, 예상 수익 30~50코인, 절대시간 40초 소요.

        1-3-4) 상하차 : 피로도 -10, 예상 수익 60~80코인, 절대시간 60초 소요.

2) 유저는 코인을 통해 게임 아이템을 구매할 수 있다.

3) 유저가 코인으로 구매할 수 있는 아이템은 다음과 같다.

   3-1) 기합의 띠 : hp를 0 이하로 만드는 공격을 받을 시, hp를 1 남기고 한 턴을 버티게 해주는 아이템.

   3-2) 날카로운 발톱 : 배틀 상대보다 나의 포켓몬이 속도가 낮을 경우 50% 확률로 선제공격을 할 수 있게 해주는 아이템.

   3-3) 자뭉 열매 : 배틀 도중에 hp를 30 회복 시켜주는 아이템. 한 번의 배틀에 한 번만 사용 가능하다.

   3-4) 피로회복제 : 나의 포켓몬의 피로도를 10 회복시켜준다.

   3-5) 포켓몬 간식 : 나의 포켓몬과 친밀도를 1 상승시켜준다.

 

6. 포켓몬 능력치

1) 기본 능력치 : 공격력, 방어력, 체력, 스피드

   1-1) 공격력 : 상대 포켓몬을 공격할 때 사용되는 능력 수치

   1-2) 방어력 : 상대 포켓몬에게 공격받을 때 사용되는 능력 수치

   1-3) 체력 : 상대 포켓몬에게 공격을 받아 소모되는 값. 배틀시 두 포켓몬 중 체력이 먼저 0이 되는 포켓몬이 발생하면 배틀은 자동으로 종료되고 체력이 남은 포켓몬이 승리하게 된다.

   1-4) 스피드 : 상대 포켓몬보다 스피드가 높을 시 먼저 공격할 수 있는 선공권을 가지게 된다.

2) 추가 능력치 : 피로도, 친밀도

   2-1) 피로도 : 모든 포켓몬은 초기값 0의 피로도를 가진다.

        2-1-1) 피로도 1당 급소에 맞을 확률 0.5% 상승

        2-1-2) 피로도 1당 스킬 명중률 0.5% 하락

        2-1-3) 피로도 1당 아르바이트 해고 확률 2% 상승

   2-2) 친밀도 : 모든 포켓몬은 초기값 0의 친밀도를 가진다.

        2-2-1) 친밀도 1당 급소를 때릴 확률 0.5% 상승

        2-2-2) 친밀도 1당 스킬 명중률 0.5% 상승

        2-2-3) 친밀도 1당 탐험시 코인을 획득할 확률 0.1% 상승

3) 진화 : 모든 포켓몬은 레벨 10때 1차 진화, 레벨 20때 2차 진화를 한다. 진화 상태가 존재하지 않는 포켓몬은 레벨이 증가해도 최종 진화 모습에서 변화가 존재하지 않는다. (2순위)

4) 모든 포켓몬은 불, 물, 풀, 드래곤 네 타입 중 하나로 분류된다.  상성표는 다음과 같다. (2순위)

   1-1) 불<물 : 불타입은 물타입에게 10% 추가 데미지를 입는다.

   1-2) 물<풀 : 물타입은 풀타입에게 10% 추가 데미지를 입는다.

   1-3) 풀<불 : 풀타입은 불타입에게 10% 추가 데미지를 입는다.

   1-4) 드래곤 타입은 상성이 존재하지 않는다.

 

7. 치트키 (우선순위 : 하)

1) 특정 문자열을 입력하면 작동한다. 이 문자열은 유저에게 제공하지 않는 데이터이다.

2) 치트키 종류

   2-1) 포켓코인 1만 추가

   2-2) 피로도 0 고정

   2-3) 친밀도 0 고정

   2-4) 레벨 30 즉시 변경

 

 


 

 

당장 생각나는 틀은 이정도라고 할 수 있겠다. 오늘 막 구상을 해본 터라 변경이 생길 수도 있다. 너무 많은 것을 구상했나 싶기도 하지만 일단 써두고 우선순위가 높은 것들부터 구현을 해보도록 하겠다. 미리 넣어둘 데이터나 클래스 종류들도 구상해야 하는데, 일단은 가장 시급한 User 클래스, Monster 클래스, Menu 클래스를 먼저 만들어보고 거기에서 파생되는 클래스들을 더 생각해봐야 겠다.