-. 신규 프로젝트 작성
오오오~ 이 버튼 정말 오랜만에 눌러보네요.
( 설명은 VX ACE 기준으로 하겠습니다.
스크립트는 거의 안쓸것 같으니, XP 나 VX 제작자 분들이
보시는 데에도 문제는 없을겁니다. ㅎㅎ )
허...........
I. 장애물 고안
일단 다음과같이 보통 제작자 분들이 제작하시는
방법대로 장애물을 만들어 보았습니다.
돌덩이는 한방향으로 계속 굴러다니며,
플레이어와 접촉했을 시 게임오버가 됩니다.
일반적인 장애물...
혹시 여기에 어떤 문제가 있는지 찾으셨나요~?
제가 생각하는 두가지 문제점을 적어 보겠습니다.
1. 맞으면 게임오버
- '뭐가 문제지?' 하는 분들도 계실지 모르겠지만...
알만툴에서는, 게임오버되고 게임을 로드해서 다시 시작하는 데까지
꽤 시간이 걸립니다.
즉, 만약 저 장애물을 맞아서 게임오버 되면...
게임 오버가 지나간 다음에 게임을 로드해서 다시 시작하고,
또 맞게되면???
게임 오버가 지나간 다음에 게임을 로드해서 다시 시작하고,
으악!!! 어려워!!!!! 또 맞았어!!!!
게임 오버가 지나간 다음에 게임을 로드해서 다시 시작하고,
아... 또!!!
게임 오버가 지나간 다음에 게임을 로드해서 다시 시작하고,
......ㄱ-
게임 오버가 지나간 다음에 게임을 로드해서 다시 시작하고,
...............안해!!!
게임 오버가 지나간 다음에 게임종료.
이런 상황이 생길 수 있게됩니다.
그렇다면 이런 상황을 막기 위해서는 어떻게 하는것이 좋을까요?
(a) 라이프 시스템
라이프(목숨) 시스템을 만드는 것입니다.
즉, 장애물에 맞게되면 라이프가 1씩 감소하고
라이프가 0이 되어야 게임오버가 되는
시스템을 만드는 것이 큰 도움이 되지 않을까 싶습니다.
(b) 극악의 난이도는 최대한 자제 / 플레이어가 게임 시작 전 난이도 지정
"이 게임은 컨트롤이 아주 뛰어나야 하는
난이도가 높은 게임입니다!" 라고 하며
게임을 상당히 어렵게 만드시는 분들을 몇분 봤습니다.
이러한 게임들의 결과는, 제작자의 의도대로...
컨트롤이 좋으신 몇분을 제외하고는
다들 씩씩거리며 욕을뱉고 게임을 끝냅니다.
그리고 이 게임들의 평가는 이렇습니다.
컨트롤에 약한 플레이어들을 무시하는 게임이다.
제작자가 플레이어를 생각하지 않고 만들었다.
제작자가 플레이어를 이기기 위해 만든 게임이다.
사실 위의 평가들에게 변명하긴 좀 힘듭니다.
왜냐하면, 높은 난이도의 장애물이 나올것을 예상하고 있었으면,
다양한 특성의 플레이어들을 만족시키기 위해
게임 시작 전에 난이도를 플레이어가 직접 선택하는 방식으로도
게임을 만들 수 있었을 것이기 때문입니다.
이러면 또 한가지 의문점이 생깁니다.
"그렇게 만드려면 힘이 좀 들텐데요???"
네. 힘이 들죠.
그래도 참아야죠.
우리는 게임 제작자입니다.
플레이어의 행복을 위해서라면,
그런 노가다 한두개 쯤이야... 꾹 참고 견뎌야죠~? ^^
(c) 쉬운 난이도의 장애물부터... 차례차례로~
컨트롤도 많이 하다보면 숙달됩니다.
( 어떤 일이던간에 노력하면 이루어지듯이! )
긴장감을 늦추지 않으면서도, 플레이어의 짜증을 최소화하기 위해서는
쉬운 난이도의 장애물부터 어려운 난이도의 장애물 순으로
차례차례 배열해야겠죠?
2. 돌은 필요 없습니다.
- 무슨 말일까요~???
말 그대로, 돌은 필요 없습니다.
이전 글에서 제가 제작할 게임의
장애물은 보안장치 ( 레이저, 감시카메라, 함정 등 ) 라고 했었으니...
당연히, 돌이 있으면 안되죠~
함정으로 돌을 넣는다고 해도...
귀족 집 안에 '돌을 굴러다니게 하는 함정'을 설치할리가 없죠??? ㅎㅁㅎ;;
그럼! 위의 두가지를 고려해서 첫 부분의 장애물을 만들어 봅시다~
II. 라이프 시스템
일단 라이프 시스템을 만드는 방법은 두가지가 있겠죠???
1. 스크립트
2. (커먼) 이벤트
스크립트가 더 안정적이고 좋겠지만...
초보 제작자분들을 위해 커먼 이벤트로 제작하겠습니다.
이벤트로도 충분히 가능하다는 것을 보여드리죠!
일단 라이프 HUD 부터 제작 해야겠죠???
여기서 HUD 는 Head-Up Display 의 약자로,
주인공의 상태 등을 플레이어가 편리하게 볼 수 있게
화면에 간략하게 나타내는 것을 말합니다.
포토샾을 조금 끄적여서 라이프 HUD 픽쳐를 제작해 보았습니다.
총 7개 입니다.
( 라이프 HUD가 보석과 보석함의 느낌이 나도록 만들어 보았습니다. )
위에 HUD 를 보시면 아시겠지만, 라이프의 최대 수는 6으로 할 생각입니다.
라이프 시스템 이벤트를 제작하기 전에,
몇개의 스크립트를 추가하도록 하겠습니다.
( 대단한건 아니니... 신경 안쓰셔도 돼요~^^;; )
빨간색 박스 안의 스크립트는
VX ACE SP1 스크립트로서, 기존 VX ACE 의 문제점을 수정하는 스크립트입니다.
출처 : http://avangs.info/study_rpg_vx_ace/438717 (허걱님)
파란색 박스의 스크립트는
화면의 크기를 640 X 480 크기로 늘려주는 스크립트입니다.
그럼, 이제 본격적으로 라이프 시스템 이벤트를 제작해보죠!
'라이프 갱신' 이라는 커먼 이벤트를 만들었습니다.
라이프를 '라이프' 라는 이름의 변수로 두었으며,
라이프의 수에 맞도록, HUD를 띄워주는 역할을 합니다.
여기서 의문을 가지시는 분들도 있을것같은데...
왜 병렬처리를 하지 않았을까요???
이렇게 조건분기가 많은 커먼이벤트를
항상 병렬처리로 동작하게 둔다면,
렉이 유발될 가능성이 매우 큽니다.
따라서, 저는 이 커먼 이벤트를 필요할 때만
동작하게 할 생각입니다.
무적시간???
이게 왜 필요하지???
라고 말씀하시는 분들도 있겠지만...
무적시간이 필요한 이유는 간단합니다.
만약 액터가 장애물에 맞아, 라이프가 감소했을 때
장애물과 닿아있는 시간동안 라이프가 계속 감소할 것입니다.
잘못하면 장애물을 맞고 피했는데,
6프레임(1/10초)동안 장애물과 닿아 있었기에
라이프가 0이 되버리는 경우거 생길수도 있는 것입니다.
그것을 막기 위해, 저는 '무적시간' 이라는 개념을 도입했습니다.
'무적시간' 커먼 이벤트는
'무적' 스위치가 ON 일 때, 병렬처리로 동작합니다.
60프레임(VX/VXACE 에서는 1초) 후, '무적' 스위치가 OFF 상태가 되고
그에따라 '무적시간' 커먼 이벤트 역시, 동작이 중지됩니다.
'라이프 감소' 커먼 이벤트입니다.
'무적' 스위치가 OFF 일 때 ( 즉, 무적 상태가 아닐 때 )
라이프를 1만큼 감소시키고,
'무적' 스위치를 ON 으로 하여,무적상태가 되게 합니다.
라이프가 감소했으므로,
'라이프 갱신' 커먼 이벤트를 동작하여
라이프 수에 맞는 HUD 를 띄우도록 합니다.
시스템의 개요가 잡힌것 같으니...
이제 문제점을 수정해 보도록 하겠습니다.
이 글은 제가 게임을 제작한 다음에 쓴 글이 아니라,
게임을 제작하면서 쓰는 글이기 때문에...
문제점이 꽤 많이 보이는군요...ㅠㅁㅠ;;
하나하나씩 고쳐나가 보겠습니다.
1. 언제 쥬금??? ( 라이프가 0이어도 안죽는다?! )
제가 아주 치명적인 실수를 하나 했습니다.
게임오버를 안만들었어요...ㅇㅅㅇ;;
그리하여, 저의 수작 하나를 뿌립니다!
이, 이상하지만.... 이걸로 게임오버를 만들겠습니다... ㅠㅜ;;
( 제가 포토샵 실력이 별로 안좋다보니;; )
저는 게임오버를 조금 다르게 만들어볼 생각입니다.
위 게임오버 픽쳐(그림)의 문구를 보시면,
B 버튼 : 타이틀로 C 버튼 : 이어하기
라고 적혀 있습니다.
저는 게임오버가 됬을 때,
1. B 버튼을 누르면 타이틀로
2. C 버튼을 누르면 이어하기
위의 두 동작을 하게 되는 게임오버를 만들어보겠습니다.
물론, 커먼 이벤트로 말이죠.
'게임오버' 커먼 이벤트입니다.
'게임오버' 스위치가 ON 일 때 자동실행으로 동작합니다.
먼저, 게임오버 픽쳐(그림)를 띄우고,
조건분기를 통해
1. B 버튼을 누르면 타이틀로
2. C 버튼을 누르면 이어하기
위의 두 동작을 하게 됩니다.
여기서, 한가지 의문점이 생길 수 있습니다.
왜 자동실행으로 동작하게 했는가?
병렬처리면 안되는걸까?
위의 게임오버 이벤트를 병렬처리로 동작시키게 되면
한가지 커다란 문제점이 생깁니다.
게임오버 이벤트가 시작되어, 게임오버 그림이 떴는데도 불구하고
액터(플레이어)를 방향키로 조작할 수 있게 됩니다.
이것을 막기위해, 저는 자동실행으로 동작하게 한 것입니다.
그럼 다음으로 해야 할 일은...
라이프가 0이 될 때, 게임오버가 되야겠죠???
'라이프 갱신' 커먼 이벤트에서, 라이프가 0일 때
'게임오버' 스위치를 ON 으로 동작하게 합니다.
2. 언제 무적? ( 플레이어가 무적 상태인지 아닌지 구별할 수 없다! )
위에서 장애물에 부딪히면 1초간의 무적시간을 주었습니다.
하지만, 위 시스템에서는 언제 무적효과가 풀리는지
플레이어가 알 수 없다는 문제점이 있습니다.
이 문제점은 어떻게 수정해야 될까요?
주변의 RPG 게임을 떠올려 봅시다.
무적상태가 되면, 캐릭터가 깜박이다가
무적상태가 풀리면, 깜박이는 효과가 사라지죠.
이 게임에도 한번 적용해 보겠습니다.
무적 상태일 때, 플레이어에게 표시할 애니메이션을 만듭니다.
흰색 플래시 효과를 3프레임 간격으로
총 15프레임 동안 5번의 효과를 줍니다.
( VX/VXACE 애니메이션 에서는 15프레임이 1초입니다. )
위에서 만든 애니메이션을 무적상태가 시작 될 때,
플레이어에게 표시하도록 설정하였습니다.
3. 라이프 감소시 '윽!' ( 효과음-SE 이 없다! )
라이프가 감소될 때,
액터가 '윽!' 하며 괴로워하는 소리(SE)를 넣는다면
더 실감나겠죠???
한번 넣어 봅시다~~~!
SE 출처 : http://avangs.info/sound_db/130493 (키라링님)
라이프가 감소할 때, 괜찮은 SE를 하나 주워서 넣었습니다.
4. 테스트플레이
굉장히 중요하고도 중요한 부분입니다.
게임은 제작자가 최소한 1번 정도는
플레이하여 버그를 걸러내야 합니다.
위에서 만들었던 라이프 시스템이 제대로 동작 하는지
테스트 해보았습니다.
두가지 문제가 발생하여, 수정했습니다.
1. 무적 상태 애니메이션이 잘 안보여서, 강도를 조금 높였습니다.
2. 무적 상태 애니메이션 앞부분에 타격을 입은듯한 효과를 넣고,
고통스러운 소리(SE)도 무적 상태 애니메이션 앞부분에 넣었습니다.
수정한 후, 테스트 플레이 동영상입니다.