[졸업작품] 턴제 게임을 만들자 #2 플레이어 설계
유니티로 필드를 만들고, 간단하게 플레이어를 만들어보는 글을 천천히 써내려가는 동안 주말이 두 번 정도 지났다.
그런데, 이제와서 생각해보니, 간단하게나마 플레이어를 설계하고 가는 것이 낫겠다고 생각이 들었다.
그야 지난 글에 구상해둔 시스템은.. 그저 어떤 시스템을 가진 게임으로 만들 것인지 그 골을 정한것 뿐이지, 제대로 된 설계는 아니였으니 말이다.
그럼 간단하게 플레이어 부터 설계해보자.
글로 설계한 뒤 코딩으로 구현해내는 것이 맞는 거 겠지만, 나는 그런건 못하겠다.
그냥 유니티로 직접 코딩해가며 필요한 것들을 집어넣는 식으로 플레이어를 설계해 나갈 것이다.
우선 플레이어 클래스에는 플레이어의 스탯과 스킬 정보만 담는다. 합 기능이 여기서 들어갈 필요는 없다. 그저 공격을 주고 받는 기본적인 기능만 만들어둔다. 합 판정은 플레이어가 아니라, 합 판정을 관리하는 매니저가 따로 처리한다.
공격은 단계를 4개로 나누었다.
- Attack Start :
플레이어가 지정한 스킬이 현재 사용 가능한지 검사한다.
[현재 플레이어가 가진 속성 주사위 수가 스킬 요구 속성 주사위 수 이상
&&
현재 플레이어가 가진 스킬 포인트 수치가 요구 스킬 포인트 이상]이 그 조건이다. - 합 진행 :
이 단계는 플레이어가 아닌, 합 매니저 클래스에서 진행한다. 플레이어가 스킬을 지정한 대상이 합 지정 조건( = (플레이어 캐릭터의 속도가 스킬 지정 대상보다 빠름 && 상대가 공격스킬을 지정중임) || 상대가 공격스킬을 지정중이고, 그 대상이 플레이어 캐릭터 본인임)에 만족한다면 Attack Compare 단계로 넘어간다.
합 지정 조건을 만족하지 않는다면, Attack Compare 단계를 건너뛰고, 일방공격으로 넘어간다. - Attack Compare :
합 대상과 스킬 위력 비교를 진행한다(합 보너스 적용 / 일방공격 보너스 적용 안됨). 합에서 승리할 때 마다 패배한 측의 속성 주사위 하나가 파괴된다. 이렇게 플레이어와 합 대상 중 어느 한 쪽의 스킬 내 속성주사위가 모두 파괴될 때 까지 위력 비교를 진행한다. 위력 비교 종료 후, 스킬 내 속성주사위가 모두 파괴된 쪽은 합 패배로, 공격이 취소된다.
스킬 내 속성주사위가 하나라도 남아있는 쪽은 합 승리로, 남은 속성주사위를 가지고 Attack 단계로 넘어간다. - Attack :
합 진행 후 남은 스킬 내 속성주사위의 수 만큼 상대에게 일방공격을 가한다.
합 판정을 하지 않았다면 모든 속성주사위를 온전히 사용하여 일방공격을 가한다.
(합 보너스 적용 안됨 / 일방공격 보너스 적용)
스킬 : 스킬은 내부 클래스로 만들어 관리한다.
Attack Start 단계에 rollST가 호출되고,
Attack Compare 단계에 rollCOMP가,
마지막으로 Attack 단계에 roll이 호출된다.
이렇게 만든 skill 클래스로 스킬들을 선언한다.
궁극기를 제외한 공격 스킬은 배열로 관리하려고 한다. 일단 이렇게 해두고 해금된 스킬에 제한을 두려고 한다.
아님 나중에 오모리의 방식대로 해금된 스킬들 중에 전투에서 사용할 소수의 스킬을 골라, 다른 배열에 옮길 수 있도록 할지도 모른다. 하지만 일단은 이런 식으로 만들어두자.
여기까지 해서 플레이어 설계는 어느정도 끝난거 같다.
이제 중요한 합 시스템, 그 시스템을 관리할 매니저를 다음 파트에서 만들어보도록 할 것이다.