Unity 개인 프로젝트 (1) - 게임 기획
이하의 내용은 작성자의 포트폴리오로 사용 될 예정입니다. 참고해주시길 바라겠습니다.
어느정도의 기초를 닦았으니 프로젝트를 구현해보며 실전에 발을 들여봐야겠다는 생각이 들게 되었다.
요즘은 찾아보고 싶은 정보들은 검색하면 다 나오기 때문에, 규모만 잘 조율한다면 분명히 혼자서도 게임을 구현 할 수 있을 것이라 믿는다.
프로젝트에 들어가기 전에 가장 중요한 것은 기획이다.
나는 오래전부터 만들어보고 싶었던 류의 게임이 있었고, 프로그래밍 공부를 할 때에도 이를 대입해서 쉽게 공부를 했었던 것 같다. 공부를 하면서 계속 게임 기획을 했다고 해도 무방할... 것이다.
내가 만들고 싶은 게임은 1vs1 턴제 전략 게임이다. 처음에는 하스스톤과 같은 카드게임을 만들고싶었으나 캐릭터의 애정도를 강조하고 싶어서 조금 더 틀어보기로 했다.
각 플레이어는 3명의 캐릭터를 조종하고, 캐릭터는 각 5개의 스킬을 가지고 있다.
플레이어는 각 턴마다 고유의 스킬, 레벨 업, 이동 등등 다양한 전략을 니3가지를 고르고 완료 버튼을 누르면 서로의 전략이 공개되며 행동을 수행한다.
모든 적의 캐릭터가 행동 불능이 되면 승리한다.
물론 자세한 내용은 훨씬 많지만, 개요를 설명하기엔 이정도면 충분 한 것 같다.
그렇다면 다이어그램 구상도를 짜보도록 하겠다. (당연하게도 수정사항이 있을 수 있다.)
캐릭터를 주축으로 짜보도록 하겠다.
캐릭터는 정보를 가지고 있을 것이다.
1. 번호
2. 이름
3. 캐릭터 간단한 설명
4. 초상화 이미지
5. 캐릭터 이미지
6. 스킬 (클래스)
7. 추가 예정
인게임 캐릭터는 위 정보들을 이어받은 다음 더 다양한 정보가 있을 것이다.
1. HP
2. Level
3. Shield
4. 상태 (Idle, 공격, 기절, 사망 등) (유한 상태 머신)
5. 상태이상(버프, 디버프)
6. 위치 (3개의 캐릭터는 전, 중, 후방 3개의 위치에 있을 수 있다.)
7. 추가 예정
+ 인게임 캐릭터들은 행동 결정을 하지 않으면 되돌아 가야하므로 temp 정보들을 가지고 있어야 한다.
스킬은 다음과 같은 정보를 가지고 있을 것이다. (캐릭터와 비슷할 것 이다.)
1. 번호
2. 이름
3. 스킬 설명
4. 스킬 이미지
5. 스킬 효과
6. 스킬 쿨타임
7. 스킬 사거리
8. 스킬 마나 코스트
9. 추가 예정
인게임 스킬은 위 정보들을 이어받은 다음 다음과 같은 정보를 가지고 있을 것이다.
1. 스킬 사용 가능 여부
2. 스킬 남은 쿨타임
3. 스킬 변경된 설명
4. 스킬 변경된 효과
5. 스킬 변경된 사거리
6. 스킬 변경된 마나 코스트
7. 스킬 시전자
8. 스킬 타겟
9. 추가 예정
상태이상 (버프, 디버프)은 다음과 같은 정보를 가지고 있을 것이다. (스킬과 비슷할 것이다.)
1. 번호
2. 이름
3. 상태이상 설명
4. 상태이상 이미지
5. 상태이상 효과
6. 상태이상 이벤트 처리 (매 페이즈, 턴 마다 계산 후 이벤트 처리, 지속시간이 지나면 삭제 등)
7. 추가 예정
인게임 상태이상은 다음과 같은 정보를 가지고 있을 것이다.
1. 상태이상 남은 지속 턴
2. 상태이상 남은 지속 페이즈
3. 상태이상 변경된 이벤트 처리
4. 상태이상 변경된 효과
5. 추가 예정
이러한 구상을 게임을 제작하며 지속적으로 해야 한다.
이제 변수명으로 지어주도록 하자. 이 역시도 게임 기획의 일부이다.
캐릭터의 관련 변수들은 앞에 character을 붙일 것이고 스킬은 skill, 상태이상은 statusEffect 로 제작 할 예정이다.
인게임은 앞에 IG (InGame)를 붙이도록 하겠다.
참고로 플레이어는 작가 (Writer)라고 부를 예정이다.
캐릭터 (Character) 변수
1. 번호 -
int character_number
2. 이름 -
string character_name
3. 캐릭터 간단한 설명 -
character_disc
4. 초상화 이미지 -
Sprite character_portrait
5. 캐릭터 이미지 -
Sprite character_image
6. 스킬 (클래스) -
Skill[] character_skills
7. 추가 예정
인게임 캐릭터 (IGCharacter) 변수
1. HP -
int igCharacter_hp
2. Level-
int igCharacter_level
3. Shield -
int igCharacter_shield
4. 상태 (Idle, 공격, 기절, 사망 등) (유한 상태 머신) -
IgCharacterState igCharacter_State
5. 상태이상(버프, 디버프) -
List<StatusEffect> igCharacter_StatusEffects
6. 위치 (3개의 캐릭터는 전, 중, 후방 3개의 위치에 있을 수 있다.) -
int igCharacterPosition
bool igCharacter teamRed
7. 추가 예정
스킬 (Skill) 변수
1. 번호 -
int skill_number
2. 이름 -
String skill_name
3. 스킬 설명 -
String skill_disc
4. 스킬 이미지 -
Image skill_image
5. 스킬 효과 -
<> skill_func
6. 스킬 쿨타임 -
int skill_cooltimeMax
7. 스킬 사거리 -
int skill_distance
8. 스킬 마나 코스트 -
int skill_cost
9. 추가 예정
인게임 스킬 (IGSkill) 변수
1. 스킬 사용 가능 여부 -
bool igSkill_ableFunc
2. 스킬 남은 쿨타임 -
int igSkill_coolTime
3. 스킬 변경된 설명 -
string igSkill_disc
4. 스킬 변경된 효과
<> igSkill_func
5. 스킬 변경된 사거리
int igSkill_distance
6. 스킬 변경된 마나 코스트
int igSkill_cost
7. 스킬 시전자
IGCharacter igSkill_caster
8. 스킬 타겟
IGCharacter igSkill_target
9. 추가 예정
상태이상 (StatusEffect) 변수
1. 번호 -
int statusEffect_number
2. 이름 -
string statusEffect_name
3. 상태이상 설명 -
string statusEffect_disc
4. 상태이상 이미지 -
Image statusEffect_image
5. 상태이상 효과 -
<> statusEffect_func
6. 상태이상 이벤트 처리 (매 페이즈, 턴 마다 계산 후 이벤트 처리, 지속시간이 지나면 삭제 등) -
<> statusEffect_event
7. 추가 예정
인게임 상태이상(IGStatusEffect) 변수
1. 상태이상 남은 지속 턴 -
int igStatusEffect_turn
2. 상태이상 남은 지속 페이즈
int igStatusEffect_phase
3. 상태이상 변경된 이벤트 처리
<> igStatusEffect_event
4. 상태이상 변경된 효과
<> igStatusEffect_func
5. 추가 예정
다이어그램은 다음과 같다.