close
게임 시스템 개발 일지 - 1 - 속성과 상태 헨젤 12-08 조회 18,521 공감 1 1

게임에 들어가는 모든 시스템은 누가 개발할까?

 

프로그래머?

 

맞다 하지만 프로그래머만이 모든 시스템을 설계 하는 것이 아니다.

 

게임 시스템을 만들기 위해선

 

어떤 게임 시스템이 들어가고

어떻게 게임 시스템이 적용이 될것이며

어디에 쓰이는 시스템인지 알아야 된다.

 

구현을 프로그래머가 전담으로 하지만.

 

게임 시스템 설계는 게임 기획자가 주로 한다.

 

처음 여는 게임 시스템 개발 일지로 스텟 공식에 대해서 얘기를 해보겠다.

 

우리가 흔히 알고 있는 스텟이란 것은 무엇인가?

 

네이버 에서 정의된 스텟의 뜻은 몇몇 RPG 게임에서 레벨업 등으로 주는 특정한 보너스 수치 라고 정의가 되어있다.

 

Stat 이란?

원래는 STATE 라는 말이 변형이 되어 Stat 이라고 바뀌어져 있다.

게임에서 State 란 [상태] 라는 말로 쓰인다.

 

하지만 이 스텟 도 속성이 없다면 그저 무용지물에 불과하다

 

그렇다면 또 속성이란 것은 무엇인가?

 

개발쪽에서 말하는 속성이란 것은 한 객체가 가지고 있는 정보를 얘기를 한다.

 

필자는 예로 할 객체를 RPG 게임의 전사를 예로 들겠다.

예이니 만큼 수치 편성에 관해선 밸런스 등은 따지지 않았으면 한다.

 

객체정의 - 전사 -

 

개요

전사는 근접 에 특화된 캐릭터 이다. 칼과 방패를 쓰며 다른 직업군과는 다르게 중갑옷을 착용 할 수가 있다 하지만 마력 이나 민첩이 많이 딸리는 편이다.

 

전사(캐릭터) 의 속성은 무엇일까?

 

 

잠깐 생각 해보자는 의미에서 공백을 두겠다.

 

 

 

 

 

 

 

 

 

구분을 나눠 보자면

 

 

 

 

 

 

 

 

 

 

 

 

 

캐릭터 착용 유무에 관해선

방패를 사용 할 수 있는 부분도 전사만이 가지는 속성이고

갑주 중 중갑옷을 착용 할 수 있다는 것만도 전사만이 가지고 있는 속성이다.

하지만 이부분은 우리가 다루고자 하는 부분이 아니기 때문에 넘어가겠다.

 

내가 말하고자 하는 속성은

 

체력

지구력

마력

민첩


등 캐릭터의 상태를 나타내는 속성을 얘기를 한다.

다른 예를 들어볼까?

레이싱 게임으로 따지자면

최대속력 , 최저속력 , 가속력 , 코너링 , 공기저항력 , 내구력 이 될수도 있다.

이와 같이 속성과 상태의 관계에 대해서 최종 정리를 하자면


속성은 각 개체의 상태 정보를 나타내는 범주 이고

상태속성의 높낮이를 나타내는 정보이다.

레이싱 게임 A 와 B 차의 속성의 높낮이를 비교를 한다면

                   A               B
최대속력     100km        90km
최저속력     15km          10km
가속력        30km          50km
코너링        30도            32도
공기저항력  30              40
내구력        1300           1000

으로 가정 하고 설명을 하자면

A 와 B의 속성은 최대속력,최저속력 ,가속력 , 코너링 , 공기저항력 , 내구력이 있다.
속성에 따른 상태로 A 와 B 자동차를 평가를 하자면
A 차는 성능은 힘이 좋은 엔진과 높은 내구력 가지고 있지만 가속력이 느리고 코너링이 나쁘며
B 차는 엔진과 내구력은 낮지만 가속도와 코너링이 좋다는 것으로 평가를 할 수가 있다.

자 그럼 속성과 상태에 대해서 어떤 식으로 게임 개발을 하는지 본문으로 들어가겠다.

내가 한창 게임시스템 개발을 위해서 배우고 있을때 가장 중요 한 것은 이 상태와 속성을 수치화 시키고 수식화 시키는 일이었다.

내가 가지고 있던 속성에 관해서 정리를 하고 간략화 시켜서 얘기를 하자면

RPG 게임을 베이스로 캐릭터 속성을 정의를 하였다.
속성의 종류는
힘 , 내구력 , 속도 , 지능 , 의지력 , 강타률 , 피로도를 가지고 있었다.

위 나열 된 속성들의 스텟을 올려주기 위한 속성으로는 
레벨 과 CP 와 경험치가 있다

경험치를 올려 레벨업을 하면 CP를 할당을 받는데 1렙업 당 CP 를 50Point를 지급을 받고 이 것으로 캐릭터 속성을 업그레이드 할 수 있었다.

위 스텟들의 정의로 그렇다면 속성과 스텟간 관계를 정리 하겠다.

캐릭터에게는
1. 레벨이라는 속성이 있다.
2. 레벨 속성은 경험치 라는 속성에 영향을 받는다.
3. 경험치의 상태는 최저치와 최대치가 있으며
4. 경험치가 최대치가 되거나 최대치를 넘어서게 된다면
5. 레벨은 +1이 되며 경험치는 다시 최저치로 돌아가게 된다.
6. 레벨이 +1되면 CP 라는 속성의 상태가 +50이 되며

7.스텟(상태)가 50이 있는 CP로
힘 
내구력  
속도  
지능 
의지력 
강타률  
피로도
 캐릭터의 각 속성에 상태값(스텟치)를 올릴 수 있다.

8.각 캐릭터 속성 치에는 스텟 최대치가 있는데

각 속성 최대치 값의 CP를 투자를 하면 각 속성 상태값이 1씩 오르게 된다.

위 정리는 알아보기 쉽게 축약을 했기에 자세한 속성에 관한 설정 등은 빠져 있는 상태이다.



그 당시 내가 엑셀로 만들었던 자료의 일부이다.

왼쪽 표가 가감법을 이용을 하여 만든 캐릭터 스텟 시뮬레이터이다.



자 그렇다면 속성과 상태는 그저 캐릭터의 능력에 관해서만 존재 하는 것인가? 아니다.
HP.ST 등 캐릭터와 직접적으로 연결되는 속성들은 정적 속성 즉 변화가 없는 것을 말한다.
상태가 변하면 속성이 변하는 것이 아닌가?
아니다
HP 가 0이던 ST 가 0이던 HP 와 ST는 그대로 존재를 하기 때문에 속성이 변화한 것은 아니다 속성의 상태 값만이 변화한다는 것이다.

자 그렇다면 속성이 변화하는 것을 동적 속성이라고 하는데 이것에 관해서 간략하게 설명을 하겠다.
동적 속성이란 즉 변화가 있는 속성을 얘기 하는 것이다.


자 그렇다면 정적 속성을 알고 있는 게임을 가지고 얘기를 해보겠다.
슈퍼 마리오를 아는가?

슈퍼 마리오의 버섯 괴물의 속성은 공격이지만 윗부분은 방어 속성을 가지고 있다.

                                                           방어속성
                                          공격속성 /  오브젝트 /  공격속성
                                                           공격속성

슈퍼마리오의 버섯 괴물의 마리오 플레이에 따라서 공방으로 나뉘어 지는 것이 아니라 공격 과 방어 속성을 다 가지고 있고
머리를 밟게 되면 방어속성이 공격을 당하며
버섯 괴물 오브젝트는 사라진다.

위 설명한 그림이 가지고 있는 공격과 방어 속성이 정해져 있고 그것이 변화하지 않는 것이 정적 속성이며
방어속성이 공격 당해 생존에서 사망으로 바뀌는 것이 캐릭터 구동에 관한 속성의 변화가 동적변화이다.

동적 속성을 가지고 있는 게임을
우리에게 익숙한 [PacMan]을 예로 들자면
적 오브젝트를 피해야 되는 플레이어가 어떤 아이템을 먹으면 적 오브젝트가 피해야 되고 플레이어가 속성을 바뀌는 것처럼
공격 과 방어 속성 자체가 뒤 바뀌게 된다.
이는 속성을 바꿔주는 오브젝트를 먹어야 발동을 하는 것이다.



팩맨     방어
몬스터  공격

속성을 가지고 있고
팩맨이 구슬을 먹게 되면

팩맨    공격
몬스터 방어

속성으로 뒤 바뀌게 된다.

그리고 접촉을 하면 오브젝트가 생존 에서 사망을 하게 된다.

이렇게 속성의 상태와 상관 없이 속성 자체가 뒤 바뀌어 버리는 것이 동적 속성인 것이다.

자 그럼 여기서 한가지 의문이 나올 것이다.


위 공격 과 방어 자체가 속성의 상태값이 아니냐 라고 의문을 던질 것이다.

공격과 방어 라는 것 자체가 상태가 될 수 있는가? 공격과 방어 라는 것으로 위 아래를 판별 할 수 있는 가?

공격과 방어라는 것은 속성의 상태 값이 높낮이를 젤 수가 없다.

그 이유는 위 공격과 방어 라는 것은 팩맨과 몬스터 마리오와 버섯괴물이 똑같이 가지고 있는 객체 행동 양식이기 때문이다.

하지만 위 게임에도 플레이어 캐릭터만이 가지고 있는 속성의 상태값이 있다.
생각해보기 바란다.

밑에 정답이 있으니 생각을 해보고 싶은 사람은 스크롤을 내리지 말고 힌트로 올린 팩맨 사진을 보고 찾아보고 생각해보기 싫다면 바로 스크롤을 내려라.




















위게임에서 플레이어만이 가지고 있는 속성의 상태값은
몫이 라는 것이다



팩맨 사진을 보면 플레이어는 몫이라는 것을 가지고 있다.
여기서 또 질문이 나올 것이다.

그렇다면 실제로 따지자면 팩맨은 현재 플레이 중인 캐릭터의 몫을 포함하여 방어 라는 속성에 3이라는 상태값이 있는 것이 아니냐 라고 반문을 할것이다.

아니다.

만약 그렇다면 팩맨은 공격을 당하고 죽으면 처음 시작지점부터 시작을 하는 것이 아니고 그 자리에서 플레이를 해야되는 것이 맞다.
생각을 해보아라 공격을 당해 방어를 하였다는 것을 몫의 정의로 한다면
몫이 줄어드는데 캐릭터가 방어를 하고 리스폰 지점에서 재시작한다는 것은 억지에 불과하다.

그렇다면 그 자리에서 시작을 하고 근접한 몬스터에게 또 다시 쫓기거나 공격을 당하는 상태가 될 것이다.
이는 팩맨의 밸런스를 붕괴 시키는 행위 중 하나에 해당한다.

하지만 마리오는 작은 마리오에게 물음표 박스를 깨고 나온 버섯을 먹으면 마리오가 커지며 한번 방어를 할 기회를 할당 받게 된다.
쉽게 얘기에 죽는 것이 0 이고 작은 마리오가 1이라고 칭한다면

1인 마리오가 1인 버섯을 먹어 2가 됐다면 적에게 한번 공격 당하면 1의 공격을 당하니 2 에서 1이 된다.
하지만 구덩이에 떨어져 죽으면 2 에서 단숨에 0으로 떨어진다.




이 처럼 높낮이 없이 포지션 자체가 바뀌는 것은 정적 속성이 아닌 동적 속성에 가깝게 된다.

조금 자세하게 동적 속성에 관해서 심도있게 파고 들어갔다.자 본론으로 들어가겠다.



이것은 내가 만든 전투 시뮬레이터 중 하나이다.

보면 HP 와 공격력 방어력이라는 속성이 있다.
각각 상태 값이 변화하기 위해선 밑에 무기와 방어구를 착용을 해야된다.

무기와 방어구 쪽을 보면 착용 부위에 관한 속성이 있다

무착용 속성을 가지고 있는 착용구 속성이 변화를 하려면 아이템을 착용을 해야된다.
그렇다면  착용무기에 검을 낀다면 맨손에서 검이라는 속성을 가진 객체를 장착을 함으로써 검이라는 속성이 가지고 있는 상태값 만큼 공격력이 +가 된다.



검이라는 속성을 가지고 검 속성의 상태 값만큼 공격력이 올라간 상태

즉 검이라는 속성에는 공격력 이라는 상태값을 가지고 있다고 풀이를 할 수가 있다.
자 그렇다면  또 의문이 나올 것이다.

착용무기 라는 속성이 있고 맨손이라는 상태가 있는 것이 아니냐 라고 말 할수도 있다.
아니다.


맨손 과 검 이라는 상태값을 가지고 위 아래를 나뉠 수 있는가? 맨손이 아래이고 검이 위 라고 나뉠 수 있을까?

주관적으로 보자면 위 아래를 나뉠 수 있지만
객관적으로 보자면 위 아래를 나뉠 근거가 없다.

왜냐하면 공격이라는 속성은 기본적으로 모든 플레이어가 가지고 있는 공통행동양식이고  공격이라는 속성에 맨손도 들어가 있기 때문이다.

쉽게 말해 저 상태에선 어떤 플레이어든 똑같은 검 과 창과 방패 그리고 방어구를 가지고 게임을 하기 때문이다.

즉 행동양식 측면에서는 착용구에 관한 속성들은 동적 속성에 속하게 된다.

아직도 이해하기 힘든가?? 쉽게 말하자면 동적 속성과 정적 속성은 동사와 형용사와 같은 의미가 되기도 한다.

정적 속성을 쉽게 예로 하자면

형용사 들이 나열 되어 있고 이 형용사를 비교 할 수 있는 기준 (상태)가 있는 것이 정적 속성이고

동적 속성에 관해서 예를 들자면

동적 속성 자체가 어떠한 목적을 띄고 그것이 조건에 따라 변화하는 것이 동적 속성이라고 할 수 있다.

예를 들어 상태이상 중에 독 , 마비 , 공포 가 있다면

상태이상 속성은 적에 공격에 대해서 상태 이상에 빠지는 동적 의미를 가지고 있는 속성을 가지게 된다.


정적 과 동적 속성은 이처럼 속성 자체가 형용사로만 위치를 하느냐 아니면 동사로써 계속 속성의 의미자체가 달라지느냐에 따라서 달라진다.

여기서 정적 과 동적 속성에 관해서 설명을 마치고
다음 연제는 위에 나열된 속성과 상태를 가지고 게임 시스템으로 어떻게 기획을 하고 설계를 하는지에 다루어 보겠습니다.

부족한 글 봐주셔서 감사합니다.































COOL: 1 BAD: 0
  • 페이스북 공유
  • 트위터 공유
헨젤 | Lv. 13
포인트: 4,617
T-Coin: 89
댓글 0
에러
시간
[비밀글] 누구누구님께 삭제된 글입니다 블라인드된 게시물입니다 내용 보기 댓글을 로딩중이거나 로딩에 실패하였습니다.
등록된 댓글이 없습니다.
댓글 쓰기

전체 목록