아방스 칼럼

-. 신규 프로젝트 작성


1.jpg


오오오~ 이 버튼 정말 오랜만에 눌러보네요.

( 설명은 VX ACE 기준으로 하겠습니다.

  스크립트는 거의 안쓸것 같으니, XP 나 VX 제작자 분들이

  보시는 데에도 문제는 없을겁니다. ㅎㅎ )


2.jpg


허...........





I. 장애물 고안


일단 다음과같이 보통 제작자 분들이 제작하시는

방법대로 장애물을 만들어 보았습니다.


3.jpg


돌덩이는 한방향으로 계속 굴러다니며,

플레이어와 접촉했을 시 게임오버가 됩니다.



일반적인 장애물...

혹시 여기에 어떤 문제가 있는지 찾으셨나요~?


제가 생각하는 두가지 문제점을 적어 보겠습니다.



1. 맞으면 게임오버


- '뭐가 문제지?' 하는 분들도 계실지 모르겠지만...

  알만툴에서는, 게임오버되고 게임을 로드해서 다시 시작하는 데까지

  꽤 시간이 걸립니다.



  즉, 만약 저 장애물을 맞아서 게임오버 되면...

  게임 오버가 지나간 다음에 게임을 로드해서 다시 시작하고,


  또 맞게되면???

  게임 오버가 지나간 다음에 게임을 로드해서 다시 시작하고,


  으악!!! 어려워!!!!! 또 맞았어!!!!

  게임 오버가 지나간 다음에 게임을 로드해서 다시 시작하고,


  아... 또!!!

  게임 오버가 지나간 다음에 게임을 로드해서 다시 시작하고,


  ......ㄱ-

  게임 오버가 지나간 다음에 게임을 로드해서 다시 시작하고,


  ...............안해!!!

  게임 오버가 지나간 다음에 게임종료.


  

  이런 상황이 생길 수 있게됩니다.


  그렇다면 이런 상황을 막기 위해서는 어떻게 하는것이 좋을까요?



  (a) 라이프 시스템


       라이프(목숨) 시스템을 만드는 것입니다.

       즉, 장애물에 맞게되면 라이프가 1씩 감소하고

       라이프가 0이 되어야 게임오버가 되는

       시스템을 만드는 것이 큰 도움이 되지 않을까 싶습니다.



  (b) 극악의 난이도는 최대한 자제 / 플레이어가 게임 시작 전 난이도 지정


       "이 게임은 컨트롤이 아주 뛰어나야 하는

       난이도가 높은 게임입니다!" 라고 하며

       게임을 상당히 어렵게 만드시는 분들을 몇분 봤습니다.


       이러한 게임들의 결과는, 제작자의 의도대로...

       컨트롤이 좋으신 몇분을 제외하고는

       다들 씩씩거리며 욕을뱉고 게임을 끝냅니다.


       그리고 이 게임들의 평가는 이렇습니다.


       컨트롤에 약한 플레이어들을 무시하는 게임이다.

       제작자가 플레이어를 생각하지 않고 만들었다.

       제작자가 플레이어를 이기기 위해 만든 게임이다.


       사실 위의 평가들에게 변명하긴 좀 힘듭니다.


       왜냐하면, 높은 난이도의 장애물이 나올것을 예상하고 있었으면,

       다양한 특성의 플레이어들을 만족시키기 위해

       게임 시작 전에 난이도를 플레이어가 직접 선택하는 방식으로도

       게임을 만들 수 있었을 것이기 때문입니다.


       이러면 또 한가지 의문점이 생깁니다.


       "그렇게 만드려면 힘이 좀 들텐데요???"


       네. 힘이 들죠.

       그래도 참아야죠.

       우리는 게임 제작자입니다.

       플레이어의 행복을 위해서라면,

       그런 노가다 한두개 쯤이야... 꾹 참고 견뎌야죠~? ^^



  (c) 쉬운 난이도의 장애물부터... 차례차례로~


      컨트롤도 많이 하다보면 숙달됩니다.

      ( 어떤 일이던간에 노력하면 이루어지듯이! )


      긴장감을 늦추지 않으면서도, 플레이어의 짜증을 최소화하기 위해서는

      쉬운 난이도의 장애물부터 어려운 난이도의 장애물 순으로

      차례차례 배열해야겠죠?




2. 돌은 필요 없습니다.


- 무슨 말일까요~???

  말 그대로, 돌은 필요 없습니다.


  이전 글에서 제가 제작할 게임의

  장애물은 보안장치 ( 레이저, 감시카메라, 함정 등 ) 라고 했었으니...

  당연히, 돌이 있으면 안되죠~


  함정으로 돌을 넣는다고 해도...

  귀족 집 안에 '돌을 굴러다니게 하는 함정'을 설치할리가 없죠??? ㅎㅁㅎ;;




  그럼! 위의 두가지를 고려해서 첫 부분의 장애물을 만들어 봅시다~







II. 라이프 시스템


일단 라이프 시스템을 만드는 방법은 두가지가 있겠죠???

1. 스크립트

2. (커먼) 이벤트


스크립트가 더 안정적이고 좋겠지만...

초보 제작자분들을 위해 커먼 이벤트로 제작하겠습니다.


이벤트로도 충분히 가능하다는 것을 보여드리죠!



일단 라이프 HUD 부터 제작 해야겠죠???


여기서 HUD 는 Head-Up Display 의 약자로,

주인공의 상태 등을 플레이어가 편리하게 볼 수 있게

화면에 간략하게 나타내는 것을 말합니다.



포토샾을 조금 끄적여서 라이프 HUD 픽쳐를 제작해 보았습니다.


Life_0.png Life_1.png Life_2.png Life_3.png Life_4.png Life_5.png Life_6.png  총 7개 입니다.

( 라이프 HUD가 보석과 보석함의 느낌이 나도록 만들어 보았습니다. )


위에 HUD 를 보시면 아시겠지만, 라이프의 최대 수는 6으로 할 생각입니다.



라이프 시스템 이벤트를 제작하기 전에,

몇개의 스크립트를 추가하도록 하겠습니다.

( 대단한건 아니니... 신경 안쓰셔도 돼요~^^;; )


4.jpg


빨간색 박스 안의 스크립트는

VX ACE SP1 스크립트로서, 기존 VX ACE 의 문제점을 수정하는 스크립트입니다.

출처 : http://avangs.info/study_rpg_vx_ace/438717 (허걱님)


파란색 박스의 스크립트는

화면의 크기를 640 X 480 크기로 늘려주는 스크립트입니다.




그럼, 이제 본격적으로 라이프 시스템 이벤트를 제작해보죠!



5.jpg


'라이프 갱신' 이라는 커먼 이벤트를 만들었습니다.

라이프를 '라이프' 라는 이름의 변수로 두었으며,

라이프의 수에 맞도록, HUD를 띄워주는 역할을 합니다.


여기서 의문을 가지시는 분들도 있을것같은데...

병렬처리를 하지 않았을까요???


이렇게 조건분기가 많은 커먼이벤트를

항상 병렬처리로 동작하게 둔다면,

렉이 유발될 가능성이 매우 큽니다.


따라서, 저는 이 커먼 이벤트를 필요할 때만

동작하게 할 생각입니다.



6.jpg


무적시간???

이게 왜 필요하지???

라고 말씀하시는 분들도 있겠지만...


무적시간이 필요한 이유는 간단합니다.


만약 액터가 장애물에 맞아, 라이프가 감소했을 때

장애물과 닿아있는 시간동안 라이프가 계속 감소할 것입니다.


잘못하면 장애물을 맞고 피했는데,

6프레임(1/10초)동안 장애물과 닿아 있었기에

라이프가 0이 되버리는 경우거 생길수도 있는 것입니다.


그것을 막기 위해, 저는 '무적시간' 이라는 개념을 도입했습니다.



'무적시간' 커먼 이벤트는

'무적' 스위치가 ON 일 때, 병렬처리로 동작합니다.


60프레임(VX/VXACE 에서는 1초) 후, '무적' 스위치가 OFF 상태가 되고

그에따라 '무적시간' 커먼 이벤트 역시, 동작이 중지됩니다.



7.jpg


'라이프 감소' 커먼 이벤트입니다.


'무적' 스위치가 OFF 일 때 ( 즉, 무적 상태가 아닐 때 )

라이프를 1만큼 감소시키고,

'무적' 스위치를 ON 으로 하여,무적상태가 되게 합니다.


라이프가 감소했으므로,

'라이프 갱신' 커먼 이벤트를 동작하여

라이프 수에 맞는 HUD 를 띄우도록 합니다.





시스템의 개요가 잡힌것 같으니...

이제 문제점을 수정해 보도록 하겠습니다.


이 글은 제가 게임을 제작한 다음에 쓴 글이 아니라,

게임을 제작하면서 쓰는 글이기 때문에...

문제점이 꽤 많이 보이는군요...ㅠㅁㅠ;;

하나하나씩 고쳐나가 보겠습니다.




1. 언제 쥬금??? ( 라이프가 0이어도 안죽는다?! )


제가 아주 치명적인 실수를 하나 했습니다.

게임오버를 안만들었어요...ㅇㅅㅇ;;


그리하여, 저의 수작 하나를 뿌립니다!


GameOver.png


이, 이상하지만.... 이걸로 게임오버를 만들겠습니다... ㅠㅜ;;

( 제가 포토샵 실력이 별로 안좋다보니;; )



저는 게임오버를 조금 다르게 만들어볼 생각입니다.

위 게임오버 픽쳐(그림)의 문구를 보시면,

B 버튼 : 타이틀로        C 버튼 : 이어하기

라고 적혀 있습니다.


저는 게임오버가 됬을 때,

1. B 버튼을 누르면 타이틀로

2. C 버튼을 누르면 이어하기

위의 두 동작을 하게 되는 게임오버를 만들어보겠습니다.


물론, 커먼 이벤트로 말이죠.




8.jpg


'게임오버' 커먼 이벤트입니다.

'게임오버' 스위치가 ON 일 때 자동실행으로 동작합니다.


먼저, 게임오버 픽쳐(그림)를 띄우고,

조건분기를 통해

1. B 버튼을 누르면 타이틀로

2. C 버튼을 누르면 이어하기

위의 두 동작을 하게 됩니다.



여기서, 한가지 의문점이 생길 수 있습니다.


자동실행으로 동작하게 했는가?

병렬처리면 안되는걸까?


위의 게임오버 이벤트를 병렬처리로 동작시키게 되면

한가지 커다란 문제점이 생깁니다.


게임오버 이벤트가 시작되어, 게임오버 그림이 떴는데도 불구하고

액터(플레이어)를 방향키로 조작할 수 있게 됩니다.


이것을 막기위해, 저는 자동실행으로 동작하게 한 것입니다.



그럼 다음으로 해야 할 일은...


9.jpg


라이프가 0이 될 때, 게임오버가 되야겠죠???

'라이프 갱신' 커먼 이벤트에서, 라이프가 0일 때

'게임오버' 스위치를 ON 으로 동작하게 합니다.





2. 언제 무적? ( 플레이어가 무적 상태인지 아닌지 구별할 수 없다! )


위에서 장애물에 부딪히면 1초간의 무적시간을 주었습니다.

하지만, 위 시스템에서는 언제 무적효과가 풀리는지

플레이어가 알 수 없다는 문제점이 있습니다.


이 문제점은 어떻게 수정해야 될까요?

주변의 RPG 게임을 떠올려 봅시다.


무적상태가 되면, 캐릭터가 깜박이다가

무적상태가 풀리면, 깜박이는 효과가 사라지죠.

이 게임에도 한번 적용해 보겠습니다.



10.jpg


무적 상태일 때, 플레이어에게 표시할 애니메이션을 만듭니다.


흰색 플래시 효과를 3프레임 간격으로

총 15프레임 동안 5번의 효과를 줍니다.

( VX/VXACE 애니메이션 에서는 15프레임이 1초입니다. )



11.jpg


위에서 만든 애니메이션을 무적상태가 시작 될 때,

플레이어에게 표시하도록 설정하였습니다.





3. 라이프 감소시 '윽!' ( 효과음-SE 이 없다! )


라이프가 감소될 때,

액터가 '윽!' 하며 괴로워하는 소리(SE)를 넣는다면

더 실감나겠죠???

한번 넣어 봅시다~~~!


SE 출처 : http://avangs.info/sound_db/130493 (키라링님)


12.jpg


라이프가 감소할 때, 괜찮은 SE를 하나 주워서 넣었습니다.





4. 테스트플레이


굉장히 중요하고도 중요한 부분입니다.

게임은 제작자가 최소한 1번 정도는

플레이하여 버그를 걸러내야 합니다.

위에서 만들었던 라이프 시스템이 제대로 동작 하는지

테스트 해보았습니다.


두가지 문제가 발생하여, 수정했습니다.


1. 무적 상태 애니메이션이 잘 안보여서, 강도를 조금 높였습니다.

2. 무적 상태 애니메이션 앞부분에 타격을 입은듯한 효과를 넣고, 

    고통스러운 소리(SE)도 무적 상태 애니메이션 앞부분에 넣었습니다.



수정한 후, 테스트 플레이 동영상입니다.


Who's 미루

?

< 제작한 게임 >

- 피그렛 (Piglet) [완성] : 링크 내림

- 파라딜루전 (Paradelusion) [미완성] : 링크 내림

- 주인잃은 공책 [완성] : http://avangs.info/1090264


< 연구실 홈페이지 >

http://mirulab.xo.st/


< 아방스 게임 실황 방송국 >

http://afreeca.com/miru3137

Comment '17'
  • profile
    하늘바라KSND 2012.12.19 12:58
    케찹... 컥

    잘못했습니다!


    세심한 병렬피하기..
    저런 방법도 있군요
  • ?
    미루 2012.12.19 16:01
    vx ace 가 나온지 얼마 되지않아...
    병렬처리 이벤트를 어디까지 허용해줄 수 있을지는 모르겠지만 ㅎㅎ;;

    그보다 케찹이라니...! ㅠㅜ
  • ?
    펭블♡ 2013.02.23 21:31

    오~ 무적시스템!! 마침 한번에 피가 좌좌좍 깍여서 문제였는데.

    감사합니다!!


    그리고 문의 감사해요

    다다음버전(0.9)버전에 수정하겠습니다.

  • ?
    미루 2013.02.23 21:39
    헉... 0.8버전에 한꺼번에 안하시고요??? ㅇㅅㅇ;;
  • ?
    펭블♡ 2013.02.23 21:41

    헐 이미 배포 준비완료라서 어쩔수없네요
    ㄷㄷ 빨리 개선해서 얼릉 드리고 싶지만
    재배포는... 귀찮기도하고^^;;; 이게 제작자의 태도는 좀 옳지 않은건 알지만
    귀차니즘

    하지만 지금 0.9버전에다가 그 무적을 15프레임으로 적용해서

    한방에 지옥안가게 만들었습니다(테스트도 해봣어요)

    지금 몬스터 하나하나 에다가 이벤트 넣고잇어요 ㅠㅠ 힘들어

    그런데 15프레임도 길은거같아요

  • ?
    미루 2013.02.23 21:45

    아............................. 노가다의 길.............ㄷㄷ
    저도 그래서, 이벤트 액알 만들때에는...
    몬스터들에게 공통으로, 적절하게 몇 위치에 커먼이벤트 하나씩 넣어 둔답니다. ^^;;
    ( 한꺼번에 고쳐야 하는 경우를 대비해서...<< )

    1/4 초 짧은것 같지만... 액알 하다 보면 꽤나 긴 시간이예요..ㅎㅎ

  • ?
    펭블♡ 2013.02.23 21:52
    아.. 저도 노가다 하는김에 그런거 넣으렵니다.
  • ?
    미루 2013.02.23 21:53

    적시의 조치가 후환을 막는다죠 ㅎㅎ

    쇠뿔도 단김에 빼셔야죠~? ^^

  • ?
    펭블♡ 2013.02.23 21:56
    그렇죠. 그런데 '이 이벤트'이걸 넣어줘야 하기때문에
    공통된거로 만들기는 힘들듯...하네요

    그런데 제게임은 구석에 몰리고 두명이 양쪽에서 길막으면
    못나가던데 이거 어떻하죠.. 님은아시나요?

    옛날에 잠깐 그이벤트를 겹치게 만들어서 해결한적도있었는데 문제가 있어서..
  • ?
    미루 2013.02.23 22:07

    '이 이벤트' 넣으면 커먼이벤트를 불렀던 이벤트가 대상이 됩니다. ^^

    + 저는 이렇게 했습니다. (의사코드입니다.)
    ---------------------------------------------------------------------------------------------(적 이벤트)
    조건, 적 이벤트가 접촉.

    변수1 : 체력 감소 설정 = ( 적의 공격력 계산식 )
    변수2 : 애니메이션 종류 설정 = ( 적의 타격 애니메이션 종류 )

    커먼이벤트 : 액터 공격당함 실행
    ------------------------------------------------------------------------------------------------

    ------------------------------------------------------------------(커먼이벤트 : 액터 공격당함)

    변수2 : 애니메이션 종류 설정 에 따라 애니메이션 표시

    1. 무적상태 진행중일 때
    내용 없음

    2. 무적상태 진행중이 아닐 때
    '변수 1 : 체력 감소 설정' 만큼 체력 감소
    체력 0 이하일 때, 게임오버 발동

    이 이벤트 ( 커먼 이벤트가 발동된 적 이벤트 ) 이동경로로 뒤로 몇칸 물러남
    => 차징 스킬이 있는경우, 더 멀리 밀려나도록 설정한다.

    ------------------------------------------------------------------------------------------------


    즉, 적캐릭터를 밀치는 형식이지요. ㅎㅎ;;
    아니면, 적캐릭터 위로 점프해서 밟는 방법도 있습니다.


    물론, 밀치는거든 밟는것이든 그저 하나의 예입니다.

    무엇을 어떻게 할지는 제작자가 머리를 쥐어짜내며 고민하셔야 될 부분~! ^^;;

  • ?
    펭블♡ 2013.02.23 22:11

    음.. 저랑 비슷한데요? 제게임은 게임오버없이 부활이라서..^

    그런데 커먼이벤트를 부른이벤트가 '이 이벤트'대상이 된다니
    몰랐네요.. 난도 커먼이벤트가 대상되는줄 이때까지 알고있었어요!
    감사합니다~


    아 그리고 궁금한게있는데

    점프하면 벽 뚫고(무시하고) 가잖아요. 그거 어찌 할줄아세요? 점프기술 만들고싶은데

  • ?
    미루 2013.02.23 22:21
    커, 커먼이벤트가 대상이 되면...;;
    실행 항목이 '이동경로' 일 때 어떻게 될지 궁금....<<<
    토큰이벤트처럼 갑자기 이벤트가 나타나서 왔다갔다 하려나?! ㅇㅁㅇ

    점프는 제가 스크립트를 따로 하나 적용시켜서...
    점프 거리가 이동 가능한 타일을 넘어서게 되면,
    자동으로 '이동 가능한 타일의 끝지점'으로 점프되도록 하는 기능이 있었습니다.

    스크립트를 안쓴 경우에는, 적 이벤트와 겹쳐지게 밟은다음(점프),
    그대로 앞으로 이동을 넣는 방법으로..
  • ?
    펭블♡ 2013.02.23 23:00
    그 점프 스크립트 어디서 구하나요
    구해주실수잇나요?!
  • ?
    미루 2013.03.09 18:10
    픽셀무브먼트 스크립트의 애드온 스크립트였기에...
    적용하기가 힘드실지도;;
  • ?
    PengBle 2013.03.09 16:31
    무적타임아이디어는 정말훌륭해요 덕분에 제 게임벨런스에 큰영햐을끼쳤답니다
  • ?
    미루 2013.03.09 18:11
    사실 무적타임은 왠만한 액션 RPG 게임에 다 존재합니다.
    플레이어들이 잘 의식하지 못하고 있을 뿐이죠- ㅎㅎ
  • ?
    PengBle 2013.03.10 14:06
    제가 예전에 만들던 게임에는 있었는데.. 여기선 깜빡하고 생각못했어요.

List of Articles
분류 제목 글쓴이 날짜 조회 수
공   지 칼럼 게시판 이용 안내 6 습작 2012.07.09 13988
게임제작 일기 [피하기 게임] 6. 기타 이벤트 및 시스템 1 file 미루 2013.01.08 4698
게임제작 일기 [피하기 게임] 5. 프롤로그 - 시나리오와 문자열 그림 file 미루 2013.01.01 3368
게임제작 일기 [피하기 게임] 4. 장애물 2 8 file 미루 2012.12.19 3119
게임제작 일기 [피하기 게임] 3. 장애물 1 2 file 미루 2012.12.18 2788
게임제작 일기 [피하기 게임] 2. 시스템 17 file 미루 2012.12.17 2994
게임제작 일기 [피하기 게임] 1. 설정 1 미루 2012.12.16 3042
Board Pagination Prev 1 Next
/ 1