Juwan Park :: RPG 2000/2003으로 간단한 액알 만들기 강좌 -2-

RPG 2000/2003으로 간단한 액알 만들기 강좌 -2-

◆게임 창작 관련/게임 창작 강좌 :: 2016. 1. 1. 00:16

RPG 2000/2003으로 간단한 액알 만들기 강좌 1편([바로가기])에 이은 2편입니다.

1편에는 주인공과 몬스터가 공격을 주고 받을 때 대미지가 고정이었지만, 여기서는 주인공의 능력치에 따라 대미지가 유동적으로 변하도록 구현해 보겠습니다.


1편에서 만들었던 몬스터 이벤트를 보면 이렇게 되어 있었을 겁니다. 이렇게 되면 언제나 슬라임에게 10만큼의 대미지가 고정적으로 주어집니다. 이를 주인공의 공격력에 따라 대미지가 달라지도록 해 보겠습니다.

이 예제에서는 주인공의 공격력과 대미지의 비율을 1:1로 하겠습니다. 즉, 공격력이 10이면 대미지도 10이 들어가도록 설정합니다.

앞의 그림에서 화살표 친 부분을 위와 같이 수정합니다. 이는 아렉스의 공격력만큼 몬스터에게 대미지를 누적함을 의미합니다. 즉, 아렉스의 공격력이 10이면 한 번 공격할 때마다 몬스터에게 10씩 누적되고 20이면 한 번 공격할 때마다 몬스터에게 20씩 누적되는 그런 방식입니다.

이렇게 바꾸고 난 후 시작해 봅시다.

이는 실행한 후 메뉴에서 장비로 들어간 화면입니다. 아렉스의 기본 공격력은 17이고 롱스워드를 장비하면 26이 됩니다. 몬스터의 체력이 100이라고 한다면, 검을 장비하지 않아 공격력이 17이라면 6대 때려야 몬스터가 죽고(17×6=102), 검을 장비해 공격력이 26이라면 4대 때려야 몬스터가 죽는(26×4=104) 것이 됩니다. (스크린샷으로는 표현이 어렵기 때문에 동영상으로 첨부합니다.)

그러면 이번에는 몬스터에게 피격되었을 때 방어력에 따라 대미지가 변하도록 만들어 봅시다.

일단 'HP의 증감'을 삭제하고 '대미지의 처리'로 변경해 보겠습니다.

이렇게 공격력은 10으로, 방어력 유효율은 100으로, 나머지 값은 0으로 설정합니다.
(※ '대미지의 처리' 공식에 대해서는 이 포스트의 끝에 따로 첨부합니다.)

피격 커맨드를 대미지의 처리로 바꾸면 이와 같이 됩니다.

실행한 후 다시 장비로 들어가면 기본 방어력은 17, 크로스아머를 장비했을 때의 방어력은 21이 됩니다. 만약 저 앞의 그림처럼 몬스터의 기본 공격력을 10으로 놓고 방어력 유효율을 100으로 설정했다면 방어력이 21일 경우 피격 대미지는 5, 방어력이 17일 경우 피격 대미지는 6이 됩니다. 그 이유에 대해서는 대미지의 처리 공식에 서술합니다.

아렉스의 체력이 48이네요. 방어력이 17이라 피격 대미지가 6이면 8대 맞아야 게임오버(6×8=48), 방어력이 21이라 피격 대미지가 5이면 10대 맞아야 게임오버(5×10=50)가 됩니다. (이 역시 동영상으로 첨부합니다.)


동영상을 통해 전투시 능력치 변화에 따른 차이를 비교해 보세요.


만약 피격을 '대미지의 처리'가 아니라 'HP의 증감'으로 처리하고 싶다면,

이렇게 하는 것도 가능합니다. 설명하자면 피격 대미지에서 뺄 값을 저장할 변수에 주인공 아렉스의 방어력을 대입한 후 4로 나누고, 몬스터의 공격력에 10을 대입한 후 피격 대미지에서 뺄 값을 저장한 변수의 값만큼 뺀 뒤 몬스터의 공격력 변수만큼 HP를 줄이는 처리입니다.

중요한 건 몬스터의 공격력이 0보다 큰 경우에만 유효하도록 조건분기를 설정해야 한다는 점입니다. 왜냐하면, 주인공의 방어력이 매우 높아 몬스터의 공격력보다 대미지에서 공제할 수치가 더 큰 경우가 발생할 수 있기 때문입니다. 예를 들어, 몬스터의 공격력이 10이고 주인공의 방어력이 80이라면, 이 예제처럼 방어력에서 4를 나눈다 해도 20으로 몬스터의 공격력 10보다 더 큽니다. 이렇게 되면 몬스터에게 공격당할 때마다 도리어 체력이 10씩 회복되는 모순적인 상황이 발생하게 됩니다. 이러한 상황을 방지하기 위하여 몬스터의 공격력에서 대미지 공제치를 뺀 값이 플러스인 경우에만 대미지가 유효하도록 설정하는 것입니다.


여기서 RPG 2000/2003으로 간단한 액알 만들기 강좌 2편을 마칩니다.

3편에서는 이를 좀 더 응용해 보도록 하겠습니다.


[첨부] '대미지의 처리' 커맨드 공식

각 수치의 값은 다음과 같은 의미가 있습니다.
- 공격력: 주인공이 받을 대미지의 기본치입니다.
- 방어력 유효율: 대미지의 기본치에서 공제할 방어력의 유효율입니다. 최대치인 100으로 설정하면 방어력에서 4를 나눈 값(소수점 이하는 버림)만큼 공격력에서 공제합니다.
- 정신력 유효율: 대미지의 기본치에서 공제할 정신력의 유효율입니다. 최대치인 100으로 설정하면 정신력에서 8을 나눈 값(소수점 이하는 버림)만큼 공격력에서 공제합니다.
- 수치 분산도: 대미지 기준치(기본치 - 공제치)에서 분산될 비율입니다. 0으로 설정하면 수치 분산 없이 규칙적으로 대미지가 들어가고 최대치인 10으로 설정하면 기준치의 반에서 1.5배 사이의 범위 내에서 불규칙하게 분산됩니다. 대미지 기준치를 수치 분산도로 곱한 값에서 20을 나눈 값을 a라고 한다면, a에서 소수점 이하를 버린 값을 기준치에서 뺀 값이 대미지 최소치가 되고 a에서 소수점 이하를 반올림한 값을 기준치에 더한 값이 대미지 최대치가 됩니다. (다른 곳에서는 소수점 이하를 버리면서 왜 최대치 계산할 때는 반올림하는지 의문...--;)

대미지의 처리 공식을 수학식으로 표현하면 이와 같습니다. 만약 다음과 같다고 가정해 봅시다.
* 공격력: 200
* 방어력 유효율: 100 (주인공 방어력 120)
* 정신력 유효율: 50 (주인공 정신력 160)
* 수치 분산도: 3

이렇게 된다면
200-(120×(100/400))-(160×(50/800)) = 200-30-10 = 160이므로 대미지 기준치는 160입니다.
160-(160×(3/20)) = 160-24 = 136이므로 대미지 최소치는 136입니다.
160+(160×(3/20)) = 160+24 = 184이므로 대미지 최대치는 184입니다.

결국은 이 설정대로라면 136에서 184까지의 범위 중 랜덤한 값으로 대미지가 들어가는 것입니다.

Today    Yday    Tot
Juwan Park
Juwan Park's blog is powered by Daum and .
Contemporary Blue for .
Designed by Juwan Park. Creative Commons License
▲ TOP