아방스 칼럼

I. 장애물 종류


앞에서 언급했던 설정을 바탕으로,

사용할 장애물의 종류를 생각해 보겠습니다.


귀족 저택의 보안장치... 뭐가있을까요??


감시카메라, 레이저, 바닥에 존재하는 스위치, ...


비록 년도가 1914년 이지만...

귀족집이니, 이정도 설비는 존재할 수 있겠죠???


사실 이정도 설비가 존재하지 않으면,

딱히 장애물로서 생각나는게 없는...ㅠㅜ


그럼 일단, 간단하게 위에 적었던 3가지 보안 장치를 만들어봅시다.




보안장치 캐릭터는 제가 허접한 도트질로 만들어 보았습니다.


$Boan01.png $Boan02.png $Boan03.png 

 - 레이저 -


$Boan04.png $Boan05.png $Boan06.png 

- 감시카메라 -


$Boan07.png

- 바닥 스위치 -



그런데, 여기서!!!

설마 보안장치에 닿는다고 해서

육체적으로 충격을 받고, 라이프가 감소한다는건 조금 이상하죠???


보안장치에 닿게되면, 보안 요원들이 등장해서

액터에게 타격을 주는것이 훨씬 더 자연스럽겠네요~^^


보안 요원도 등장~!


$boanman01.png

- 보안요원 -


출처 : http://www.famitsu.com/freegame/tool/chibi/index1.html

( EB 공식 캐릭터 생성 사이트 )


그럼, 이제 본격적으로 장애물 이벤트를 만들어 보겠습니다~!






II. 장애물 - 바닥스위치


보안장치를 건드리면 일단...

'삐요~~! 삐요~!' 소리가 나면서, 경고음과 함께 빨간색 불빛이

깜박거리는게 보편적인 설정이겠죠?


애니메이션으로 한번 만들어볼게요~!


1.jpg


빨간색 플래시와 함께 경고음 SE를 20프레임 간격으로

총 2번의 효과를 줍니다. ( 총 40프레임 )



그럼, 바닥 스위치를 먼저 만들어볼까요?


2.jpg


플레이어가 바닥스위치를 밟으면,

아까 제작했던 '보안경고' 애니메이션이 표시되고,

보안을 켜기 위해 '보안1' 스위치가 ON 이 됩니다.

셀프스위치 A 가 ON 이 되면서 <2페이지>로 넘어갑니다.


3.jpg


보안이 한번만 작동하도록, <2페이지> 에는 아무것도 넣지 않았습니다. ^^



이제, 보안이 작동 된 후

문이 열리며 보안 요원이 나오는 이벤트를 작성해보겠습니다.


먼저 문이 열리는 이벤트입니다.


4.jpg


평상시의 문 이벤트입니다.


5.jpg


'보안1' 스위치가 ON 이되면, 보안이 작동하면서 문이 열립니다.

문이 열리는 모습은 '이동경로'를 이용했습니다.

문이 열릴만큼 충분한 대기시간을 병렬처리로 준 후에,

셀프스위치 A 를 ON 으로 설정하여 <3페이지>로 넘어갑니다.


6.jpg


문이 완전히 열린 후의 모습입니다.





다음은 보안요원이 등장하는 이벤트입니다.


7.jpg


평상시 보안요원 이벤트입니다. ( 아무것도 없습니다. )

보안요원 이벤트는 문보다 한칸 아래에 위치해 있습니다.


8.jpg


보안이 작동되어 '보안1' 스위치가 ON 이 되었을 때,

이벤트는 한칸 위로 이동한 후, 아래를 본 상태로

보안요원 캐릭터 그래픽으로 바뀝니다.


보안요원 캐릭터는 다시 한칸 아래로 내려가면서,

마치 보안요원이 문을 열고 나오는듯한 효과를 줍니다.


셀프스위치 A 가 ON 이 되면서 <3페이지> 로 넘어갑니다.


9.jpg


보안요원은 플레이어에게 계속 다가가며,

플레이어와 접촉했을 시 '라이프 감소' 커먼 이벤트가 동작합니다.



그럼, 바닥스위치 보안 이벤트를 다 작성했으니...

테스트플레이를 한번 해보겠습니다.


10.jpg


눈앞에 잘 보시면 네개의 바닥스위치가 존재합니다.

네개의 바닥스위치중 어느 하나를 밟게 되면,

바로 위의 문이 열리면서 보안요원 한명이 나옵니다.


11.jpg


이렇게 말입니다.

그런데...


12.jpg


아까 밟았던 타일을 제외한 다른타일을 밟게되면,

'보안경고' 애니메이션이 표시되나,

어디에서도 보안요원은 나타나지 않는 현상이 발생하게됩니다.


이 문제는 '에이~ 괜찮겠지~' 하며 넘어가서는 안되는 상황입니다.

제작자가 의도한 행위라고 하더라도,

보안경보가 울리는 것에 당황한 플레이어들은

보안요원이 어디에서 나타나는지 찾지만 나타나지 않게되죠.


즉, 플레이어를 낚는 현상이 발생하게 됩니다.

플레이어의 짜증이 발생할 수도 있는 상황입니다.

그럼, 한번 이 문제를 해결해보겠습니다.


13.jpg 14.jpg


셀프스위치 A 를 제거하는 대신,

'보안1' 스위치가 ON 이 되었을 때 <2페이지> 로 넘어가게 설정했습니다.

이렇게하면, 네개의 보안중 어느 하나를 건드리게 되면

보안이 작동하면서 '보안1' 스위치가 ON 이 될것이고, 

네개의 보안이 모두 <2페이지>로 넘어가므로

작동시킨 보안장치 외의 다른 보안장치를 작동시켜도

보안경보가 울리지 않을 것입니다.


한번 더 테스트플레이를 한 결과, 이전의 문제가 해결되었습니다.



또한, 하나 더 수정하였습니다.


15.jpg


이전 보안요원 이벤트의 <1페이지>를 삭제했습니다.

이전 보안요원 이벤트의 <1페이지>에는 아무것도 적혀있지 않았으므로,

사실상 필요가 없게되어 삭제하였습니다.


한가지 더 이유를 들자면, 렉을 약간 줄이기 위해서입니다.

한 맵에 이벤트가 많아지면 렉을 유발시키기 마련입니다.

보안이 작동하기 전에는, 보안요원 이벤트가 맵상에 존재하지 않을테니

약간의 렉 발생 가능성을 줄일 수 있게 됩니다.






III. 장애물 - 감시카메라 1


이번엔 감시카메라를 만들어 보겠습니다~


감시카메라 역시, 바닥스위치와 마찬가지로

이벤트를 건드렸을 때, 보안 요원이 출동하는 형식으로 할것입니다.

바닥스위치와 다른점은, 더 넓은 영역에 걸쳐

보안장치를 설치 할 수 있다는 점과, 영역조절이 가능하다는 점입니다!


16.jpg


이렇게요~ ^^



그럼 감시카메라 이벤트를 작성하겠습니다.

상당부분 바닥스위치와 유사하니, 차이점만 설명하겠습니다.


17.jpg


감시카메라 본체입니다.

감시카메라는 당연히 위에 달려있으니,

위치는 '통상 캐릭터 위' 로 설정해야겠죠?


본체 위치에 플레이어가 있을 경우에는 보안이 작동하지 않습니다.


18.jpg


보안이 작동되어 '보안2' 스위치가 ON 이 될 경우

보안장치가 다시 작동되지 않도록, 감시카메라의 전원이 꺼집니다.



19.jpg


감시카메라가 감시하는 영역으로 플레이어가 들어왔을 경우,

보안경보가 울리면서, 보안장치가 작동합니다.

감시하는 영역의 표시가 주인공 위쪽으로 비춰지도록

위치를 감시카메라-본체와 마찬가지로 '통상 캐릭터 위' 로 설정하였습니다.


20.jpg 


보안장치가 작동한 후에는

보안장치가 다시 작동하지 않도록, 감시카메라 전원이 꺼집니다.

따라서, 보안이 작동했을 때 감시카메라의 감시 영역 이벤트는

빈 이벤트가 됩니다.


그런데 신기하게도, 위에는 빈 이벤트가 아닙니다.

병렬처리로 동작하여 '이벤트의 일시삭제' 를 하게 했습니다.

왜 그럴까요?


이전에 보안요원의 빈 페이지를 삭제하셨던것 기억 나십니까?

이것 역시 마찬가지입니다.

빈 이벤트가 있어봤자 렉만 발생시킬 가능성이 커지므로,

삭제하기 위해서입니다.



그럼, 다 작성 했으니 테스트 플레이를 해보겠습니다.


21.jpg


감시카메라가 작동하네요.

한번 가로질러 가보겠습니다.


22.jpg


보안 요원의 등장~~~!!!



네~ 아무런 이상 없는것 같군요~~~

하며 넘어가려던 찰나, 문제점을 하나 발견했습니다.

매우 자그마한 문제점입니다만...


23.jpg


빨간 네모박스를 자세히 보시면,

감시카메라의 감시 영역이 기둥 위로 올라갑니다.


24.jpg


해결은 간단하게, 기둥과 겹쳐진 이벤트의 위치만

'통상 캐릭터 아래' 로 설정했습니다.



한번 더 테스트 플레이를 해본 결과, 문제가 해결되었습니다.






IV. 감시카메라 2


감시카메라에 하나 기능을 더 추가해보려고 합니다.

감시카메라의 전원이 주기적으로 켜졌다/꺼졌다를 반복하는 기능입니다.


이 기능을 추가하게 되면, 타이밍에 맞춰

감시카메라의 전원이 꺼져있을 때 건너편으로 넘어갈 수 있게됩니다.


이 기능을 추가하는 방법은 매우 간단합니다.


25.jpg


드디어, 항시 작동하는 병렬처리 이벤트가 나타났군요...ㄷㅁㄷ;;

구석에다가 만들었습니다.


이 이벤트는 180프레임(VX/VXACE 에서는 3초)마다

'주기1' 이라는 스위치를 ON/OFF 합니다.


그리고, 감시카메라에다가...


26.jpg 27.jpg


<2페이지>를 하나 중간에 만들어서,

'주기1'스위치가 ON일 때, 카메라가 일시적으로 작동 안하도록

빈페이지를 만들고 그래픽을 바꿨습니다. ( 노란색 빛이 사라지도록 )



그럼, 테스트 플레이를 한번 해볼까요?


28.jpg

켜졌다가~~~


29.jpg

꺼졌다가~~~


30.jpg

잘못 건드리면 보안요원 출동~~~!!




네, 잘 작동하는줄 알았습니다.

잘 작동하는줄 알았어요....ㅠㅜ         그 런 데 ~~~!!!!



31.jpg

이렇게, 감시카메라가 작동하기 전,

감시카메라 시야 영역에 가만히 있다가... 감시카메라가 켜지면!!!


32.jpg

에...

에.....?!?!

엣!!!!!!!!!!!!!!!!!!







Oh, My GrandMother !!!!!!!!!!!!!!!!!!






이, 이런 문제가 생길줄은!!! ㅠㅜ

조금 골치아픈 문제가 생겼습니다...;;

일단 해결하기 위해, 온갖 수단을 다 써보죠......


33.jpg 

캔맥주를 두캔 마시고나서, 문제해결을 고민하고 있던 제 눈앞에...

방법 하나가 떠올랐습니다 !


XP 와 VXACE 만이 가지고있는 기능이기에, 조금 망설여졌지만...


"VX 제작자들이 대부분 VXACE 로 옮겨가지 않았을까?"

하는 살짝의 변명을 가지고<<<


지역ID 를 이용해서 문제를 해결해 보겠습니다.




34.1.jpg 34.2.jpg


이렇게, 감시카메라의 시야가 닿는곳에, 지역ID 1번을 깔아놓겠습니다.



그다음, 플레이어가 밟고있는 지역의

'지역ID' 를 변수에 저장하는 커먼 이벤트를 작성해보았습니다.


35.jpg


먼저, 변수를 3개 만들었습니다.

0002: 플레이어 맵 X좌표

0003: 플레이어 맵 Y좌표

0004: 플레이어 지역 ID


커먼이벤트 '플레이어 지역 ID 취득' 에서는

플레이어의 맵 X,Y 좌표를 2,3번 변수에 대입하고,


2,3번 변수에 저장되어있는 맵 X,Y 좌표에 해당하는 지역의

지역ID 를 4번 변수에 대입합니다.


결국, 플레이어가 있는 지역의 지역ID 를 4번 변수에 대입하는

커먼 이벤트가 됩니다.




다음은 감시카메라 본체를 뜯어고쳤습니다.

( 이해하기가 조금 난해할지도 모르겠군요...ㅠㅜ;; )


36.jpg


감시카메라가 작동하기 시작할 때,

방금 만들었던 커먼 이벤트를 실행하여,

플레이어가 있는 지역의 '지역ID' 를 취득합니다.


지역 ID 가 1일경우, 감시카메라의 시야 내이므로 보안이 작동합니다.


1이 아닌경우, 보안은 작동하지 않으며

셀프스위치 A가 ON 이 되어 <2페이지>로 넘어갑니다.


37.jpg


<2페이지>는 비어있습니다.


<1페이지>의 병렬처리를 한번만 실행하여, 렉을 줄이기 위함입니다.


38.jpg


셀프스위치 A가 ON이 되어있고, '주기1'스위치가 ON이 되면

<4페이지>가 실행됩니다.


병렬처리로 셀프스위치 A를 OFF 시킵니다.


39.jpg


셀프스위치 A가 OFF가 되어있고, '주기1'스위치가 ON이 되면

<3페이지>가 실행됩니다.


빈페이지 입니다.


'주기1'스위치가 OFF가 될 때, <1페이지> 이벤트를 실행시키기 위해

셀프스위치 A를 OFF 시킨겁니다.


셀프스위치 A가 ON이 되어있었다면 <2페이지> 이벤트가 실행될겁니다.



이유는 다음과 같습니다.

이벤트는 '출현조건'을 만족하는 페이지 중에서,

페이지 수가 제일 큰 페이지가 실행됩니다.


예를들어, '출현조건'을 만족하는 페이지가

<1페이지>, <2페이지>, <5페이지> 일 때,

이 이벤트는 <5페이지> 가 실행됩니다.



위 감시카메라 이벤트에서 <3페이지>, <4페이지> 가 뒤바뀌게 된다면,

현 <3페이지> ( 뒤바뀌게 될 때 <4페이지> ) 인 빈 페이지가 실행되어

셀프스위치 A가 ON 인 상태로 남게 될겁니다.



40.jpg


보안이 작동하면, 당연히 감시카메라는 꺼집니다.




테스트 플레이결과,

다행히도 문제점이 보이지 않습니다... ( 휴유~~~;; )


그대신, 조금 신경쓰이는 점이 있군요...


41.jpg


보안요원이, 감시카메라 시야 영역을 넘어오질 못하네요...ㅠㅜ;;


만약, 감시카메라 시야 영역에 보안요원이 들어오면,

보안이 울려야 될것이고... 보안요원이 또 나오게 될거고...



보안요원이 많아질테니 난이도가 크게 상향되고,

이벤트로는 구현하기 힘들다는 점에서...

여기서 스톱! 하겠습니다.

( 사실상 이벤트로 구현 가능하나, 병렬처리가 필요할듯 하므로

  렉을 유발시킬 가능성이 크니... ) 







여담으로, 게임을 제작하다 보면 아이디어가 끊임없이 떠오를 때가 있습니다.

위에서는

1. 감시카메라 제작

2. 감시카메라에 새로운 기능 추가

3. 보안요원이 지나갈 때에도 보안이 울리게 하기

...

위에서 그만두지 않았더라면,

더 많은 아이디어가 줄줄이 이어서 떠올랐겠죠?


그럼 이렇게 떠오른 아이디어를 모두 게임에 적용시켜야 하나?


제가 드리고 싶은 대답은, NO 입니다.


더 많은 아이디어가 적용될수록,

게임의 참신성이 높아지고 재미도 또한 높아질 수 있습니다.

하지만, 한계가 있습니다.


이 한계는 여러가지가 될 수 있는데요...



1. 제작자의 기술적인 한계


제작자가 아이디어를 게임에 구현하기에 능력(기술)이 부족한 경우가 있습니다.

스크립트를 다룰줄 모르는데, 스크립트를 사용해야 하는 경우가 대표적인 예가 되겠죠?


이것을 극복하기 위해서는 어떻게 해야 할까요?


단순합니다.

아이디어를 게임에 구현할 수 있을 정도의 능력을 가질때까지,

제작자 자신을 연마하는 수밖에 없습니다.

( 아이디어 구현을 포기하고 게임을 제작하면서,

  게임제작 능력을 기르는것 또한 좋은 방법입니다. )


물론, 다른 게임제작 고수들의 힘을 빌릴수도 있겠죠.

하지만, 어디까지나 한계가 존재한다는 것을 인식하셔야 합니다.

( 스스로가 고수가 되어야지, 고수에게 도움만 받는 사람이 될순 없겠지요??? )



2. 너무 많은 아이디어 또는 시스템


너무 많은 아이디어를 게임에 적용하여, 게임 시스템이 지저분해지거나

플레이어가 '이 게임 어렵다' 라는 첫인상을 가지게 될 수도 있습니다.

뭐든지 적당한게 최고죠??? ^^



3. 렉 유발 가능성 상승


대체적으로 시스템을 추가할때마다 렉이 발생할 가능성이 커집니다.

시스템을 하나하나 추가할 때마다 과 관련해 고민해 보는 자세가 필요합니다.

플레이어들이 다양한 사양의 컴퓨터를 가지고 있다는 점 역시 생각해봐야겠죠?




위의 사항들을 숙지하시고,

'아이디어를 얼마나 게임에 적용시킬까?' 라는 질문에

초보 제작자분들이 자의적으로 답변하실 수 있기를 바랍니다.







다시 게임 제작으로 돌아와서,

렉 유발 가능성을 높이는 요소에는 두가지가 있습니다.


1. 맵상에 이벤트가 다수 존재할 때

2. 병렬처리 이벤트가 여러개 존재할 때



각 경우의 일반적인 해결 방법은 다음과 같습니다.


1. 맵상에 이벤트가 다수 존재할 때 - 안티렉(Anti-Lag) 스크립트 적용

2. 병렬처리 이벤트가 여러개 존재할 때 - 직접 스크립트 제작






저는 현재까지, 병렬처리 이벤트는 거의 피해왔으며

대신 이벤트의 수를 여러개 늘리는 쪽으로 걸어왔습니다.


어째서일까요?

해결 방법 때문입니다.


저는 이 글을 쓰기 전, 서론에서 초보 제작자 분들을 위해

스크립트를 되도록 사용하지 않겠다고 했습니다.

( 스크립트를 직접 제작하는건 더더욱 안할 생각입니다. )




따라서, 해결하기가 더 쉬운 '이벤트 갯수를 늘리는 방법' 을 선택했습니다.

물론, '이벤트를 늘리는 방법' 이 '병렬처리를 사용하는 방법' 보다

렉 유발 가능성이 더 적기 때문이기도 합니다.




말도 나온김에...

안티렉 스크립트를 적용시켜보겠습니다.


42.jpg


출처 : http://victorscripts.wordpress.com/ (Victor님)


Victor 님이 제작하신 안티렉 스크립트를 적용시켰습니다.




현재 작업한 부분까지 테스트플레이한 영상입니다.


Who's 미루

?

< 제작한 게임 >

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

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

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


< 연구실 홈페이지 >

http://mirulab.xo.st/


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

http://afreeca.com/miru3137

Comment '2'
  • profile
    하늘바라KSND 2012.12.19 12:53
    안티렉... 뱀파이어와 충돌해서 그냥 렉걸리는 맵처럼 꾸민적이 있었죠.ㅋㅋ
  • ?
    미루 2012.12.19 16:03
    Aㅏ...
    벰파이어에는 XAS처럼 안티렉이 내장되어있지는 않죠...ㅠㅜ

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