본문 바로가기
게임 기획/마이너리티 아레나

시스템 기획서 작성 ─ 기본 전투 시스템 기획서 ③

by NAWE 2023. 4. 14.
반응형

안녕하세요. 나위입니다.

마이너리티 아레나의 시스템 기획서 작성! 계속 이어해 보겠습니다.

벌써 세번째 글이니만큼, 앞선 두 포스팅의 링크를 아래에 남겨뒀습니다.

 


시스템 기획서 작성 ─ 기본 전투 시스템 기획서 ①

시스템 기획서 작성 ─ 기본 전투 시스템 기획서 ②

 


처음엔 전투 시스템을 다뤄볼까 했는데, 어쩌다 보니 흘러흘러 '기본 전투 시스템'이라는 식으로 변경되어버렸죠.

그 과정을 앞선 두 포스팅을 통해 확인해보실 수 있을 겁니다.

돌이켜보면 줄기찬 자기 변명과 내면의 합의가 이뤄지는 과정일 듯 하네요.

시무룩

어쨌거나, 사내가 칼을 뽑았으면 무라도 썰어야 하는 법!

시작을 했으니 책임감을 가지고 달려보겠습니다.

 


자, 지난 포스팅에서 우리는 '기본 전투 시스템'에 대한 정의를 내리고, 기능 정의 페이지를 작성했었습니다.

그리고 말했었죠. 문서의 나머지 부분은 이후부터는 앞서서 선언한 각종 기능들을 구현해내기 위한 설명들로 채워질 것이라고요.

 

하나하나씩 페이지를 만들어 봅시다.

우선, 기본적인 전투 환경을 구성하는 내용부터 시작할게요.

 

전투 환경 구성 툴에 대한 설명입니다.

기능 정의 페이지에서 '기본 전투는 모험모드 스테이지 1로 한정하여 진행한다.'라고 정의내렸었죠.

하지만 원활한 테스트를 위해서는 테스트용 전투 씬이 따로 구성되는 것이 여러모로 편리한 일일 것입니다.

매번 전투 테스트를 할 때마다 게임 구동 → 모험모드 진입 → 스테이지 1 진입 → 게임 플레이 하는 과정을 따르는 것은 꽤 번거로울 것이라 생각되니까요.

 

그래서, 첫 페이지는 테스트에 용이하도록 별도의 전투 환경을 구성하는 툴(Tool)에 대한 설명으로 만들어 보았습니다.

화면의 우측 하단에는 이 툴을 제작하는 목적에 대해서 따로 명시하기도 했죠.

필요한 데이터도 복잡하지 않고 단순해서, 임시로 제작될 테이블 (지역 테이블 / 캐릭터 테이블 / 패밀리어 테이블)에서 ID를 가져와서 사용한다는 식으로 간단하게 구성해봤습니다.

 

물론, 이 문서의 마지막에 각 테이블을 어떻게 구성할 지에 대한 내용도 충실히 다룰 예정이에요!

 

전투 필드에 대한 설명

다음은 전투의 배경이 되는 필드에 대한 설명입니다.

앞서 전투 환경을 어떻게 구성할지에 대한 설명을 했으니 그 내용에 이어서 전투 필드의 슬롯이나 필드 자체의 제작을 어떻게 진행할 지에 대한 내용이에요.

참고로 저는 이 게임을 Unity 3D를 사용해서 제작한다는 설정으로 본 문서를 작성하고 있습니다.

그렇기에, 전투 필드 자체를 Unity 3D에서 사용하는 프리팹 (Prefab)으로 제작하여 활용하겠다는 내용을 담았어요.

또한, 아군 진영과 적군 진영의 캐릭터 및 패밀리어를 어디에 배치할 지에 대한 내용까지 이미지로 첨부해봤네요.

 

전투 기본 조건 설명

계속 이어서 전투의 기본 조건을 설명해보았습니다.

전투가 시작되는 조건, 그리고 전투의 종료 조건이 전투와 관련된 가장 기본적인 조건일 거라 생각했기 때문에 다른 내용들보다 앞서 설명해 보았네요.

 

내용의 아래에는 순서도를 활용하여 전투의 시작부터 종료가 어떻게 진행되는지를 간략하게 표현해 보았습니다.

개인적인 생각이겠지만, 저는 텍스트로만 내용을 전달하기보다 저런 식으로 도식을 적절히 활용해주면 전달력이 더욱 좋아질 거라 기대하기에 가능한 한 시각적인 표현을 많이 쓰려는 편이에요!

 

마이너리티 아레나의 캐릭터 기본 정보

다음은 캐릭터의 기본 정보입니다.

더 디테일한 내용들이 많을 것이지만, 생각나는대로 게임 내에서 캐릭터가 가져야 할 정보들을 나열해 봤어요.

어떤 형태이든 '전투'를 하려면 전투 객체. 즉 캐릭터는 반드시 필요할 것이기에 우리가 다루게 될 캐릭터의 정보에 대한 언급도 필요해 보였거든요.

물론, 캐릭터 말고도 우리에겐 '패밀리어'라는 전투 객체가 하나 더 있죠.

후에 그것에 대해서도 따로 정리해 볼 생각이랍니다.

 

일단, 여기서도 아직은 존재하지 않지만 만들어야 할 가상의 테이블 이름이 나타나고 있어요.

캐릭터 아이템 셋 테이블과 스텟 테이블, 스킬 테이블, 그리고 캐릭터 사운드 테이블이 바로 그것이죠.

사실 그것 외에도 더 많은 테이블들이 필요하겠지만... 일단은 그 정도면 괜찮지 않을까? 하는 생각이 듭니다.

그럼, 계속 이어가 봅시다!

 

능력치 정보

다음은 캐릭터나 패밀리어가 보유하게 되는 능력치 정보입니다.

기본 전투이니만큼 다양한 능력치를 다루지 않고, 가장 기본적인 요소만 다루기로 지난 포스팅에서 이야기를 했었죠.

그래서 딱 4개! 공격력 / 방어력 / 생명력 / 민첩 수치로만 능력치를 구성했어요.

사실 능력치라는 것은 게임에 따라 아~~주 다양하기도 하지만! 저는 우선적으로 저 4개의 능력치만 가지고 전투를 구성해 볼 계획입니다.

 

그래서 능력치의 종류와, 능력치를 얻는 요소들(위치)를 함께 정의해 두었어요.

저렇게 능력치 획득 위치를 고정시켜 두면, 저 이외의 방식으로 능력치를 얻는 것은 모두 버그이거나 오류로 치부할 수도 있을 거란 생각이 드네요.

이 페이지에서 능력치에 대한 설명을 했으니, 다음 페이지는 자연스럽게 능력치를 계산하는 것에 대한 내용이 따라와야 할 것 같습니다.

 

바로 이렇게요!

 

능력치 계산과 관련된 내용입니다.

계산되어야 할 능력치는 최종 피해량과 적중 (또는 회피) 확률. 그리고 쿨타임에 대한 부분일 것입니다.

우선 최종 피해량의 경우에는 단순하게 공격자 공격력 - 피해자의 방어력으로 계산했어요.

사실대로 말하자면 너무 단순하게 짠 공식이긴 합니다. 대부분의 게임에서는 최소한 저것보다는 더 복잡한 공식을 사용하죠. 그리고 더 많은 스텟이 존재하고요. (최소 공격력, 최대 공격력, 물리 / 마법 / 속성 공격력 등등...)

 

하지만 지금 만드는 전투는 어디까지나 기본 전투!

캐릭터의 속성과 전투 스타일에 따른 보정치가 존재해야겠지만, 그런 것들까지 싹 제외했고 스텟 자체도 단순화했으니, 공식도 단순해질 수 밖에 없습니다.

다만, 저렇게 단순하게 계산한다 해도 -(마이너스)값에 대한 처리는 필요하죠. 만일 공격자의 공격력이 1인데 반해 피해자의 방어력이 10이면, 공격할 때마다 피해량은 -9일테니 도리어 상대방의 체력을 채워주는 결과가 나타날 것입니다.

그래서 붉은 색 폰트로 '단, 최종 피해량은 1보다 작을 수 없다.'라는 말을 집어넣은 것이죠!

 

그리고 적중 (회피) 확률과 쿨타임에 대한 내용은 별도 테이블을 제작하여 참고하기로 했습니다.

사실 개발을 편하게 하기 위해서는 공식 하나를 짜서 집어넣는것이 여러모로 효율적일수는 있겠습니다만, 공식이라는 것은 세부적인 밸런스를 하기 어려운 환경을 탄생시키는 법이죠.

때문에, 저는 밸런스의 편의를 위해 굳이 별도 테이블을 만들어 활용해보려 합니다.

무슨 테이블이냐고요?

 

능력치 계산을 위한 테이블 2종

바로 이렇게! 능력치 참조 테이블에 대한 내용을 집어넣었답니다.

구성은 단순해요. 적중률 테이블의 경우에는 공격자 민첩 - 방어자 민첩 값을 기준으로 확률값들을 쭉- 나열해 놓은 것이고, 쿨타임 테이블의 경우에는 민첩 값에 따라 다음 공격까지 쿨타임이 몇 ms(밀리세컨드) 걸리는 지에 대한 값을 나열한 것입니다.

 

하지만 저 테이블은 어디까지나 임시 테이블입니다. 왜냐하니, 스텟의 최대값을 20으로 간주하고 작성한 테이블이거든요.

그래서 최대 스텟이 더 높아질 환경에 처하게 된다면 저 두 테이블의 값 또한 확장될 필요가 있습니다. 저대로 쓰기에는 여러모로 유지보수가 필요한 테이블이라는 의미이죠.

그러나... 지금은 일단 저렇게 가보려구요. 어디까지나 기본 전투만 돌아가면 된다는 주의니까요!

 


내용이 너무 길어지고 있으니 여기서 한번 끊어가겠습니다.

기본 전투라고 하지만 내용 자체가 단순하지만은 않다보니, 문서의 길이도 점점 길어지는 것.. 같네요.

이후에는 패밀리어에 대한 내용과 스킬, 아이템. 그리고 게임 화면(UI)에 대한 내용들과 마지막에는 개발에 필요한 테이블 데이터에 대한 내용들이 이어질 거라 생각됩니다. 마지막까지 힘내보겠어요!

할 수 있다!

 

그럼, 다음 포스팅도 기대해주시길 바랍니다.

감사합니다 :)

반응형

댓글