중급강의실
2011.02.22 10:18

[RPG2003] 한단계 도약 : 변수 번호의 변수

조회 수 2678 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제

"변수 번호의 스위치"를 안보신 분들은 그 강좌를 먼저 보시기 바랍니다.


초보때도 변수보다 스위치 먼저 배우니까..


변수 번호의 변수는 변수를 효율적으로 사용할 수 있게 하는 기능입니다.


노가다도 상당히 줄일수 있고 버그 같은게 생겨도 쉽게 수정이 가능합니다


노가다가 엄두가 나지 않아 SRPG 같은 걸 만들수 있는 기술이 있어도 못 만드셨던


분들, 편하게 만들 수 있을 겁니다!


비슷한 기능으로는 C++의 포인터 기능을 들 수 있고 넓은 의미에서는 C의 구조체기능도


가집니다.


 


일단 변수 3개를 만들고 초기값을 대입시킵니다.


◆변수의 조작 : 대입, 변수 0001, 3


◆변수의 조작 : 대입, 변수 0002, 7


◆변수의 조작 : 대입, 변수 0003, 4


규칙성따위는 밥말아먹은 세 변수의 값은 순서대로 3,7,4입니다.


자, 일단 변수 번호의 변수는 "읽다"와 "쓰다"의 기능이 있습니다.


무슨말이냐 하면 변수 번호의 변수에서의 호출할 변수의 번호를 가리키는


변수 0004가 있다고 가정합시다.


그러면 당신은 2가지의 일을 할 수 있습니다.


1. 0004의 변수의 값 번호의 변수의 내용을 변수 0005에 대입합니다 ( 읽다 )


2. 0004의 변수의 값 번호의 변수를 조작합니다 ( 쓰다 )


그리고 지금 하는 강좌에서 변수 0004는 "쓰거나 읽을 변수의 번호"로


사용됩니다. 그리고 변수 0005는 "변수 0004에 있는 번호 안에 있는 변수값을


대입한 값"으로 사용됩니다(고로 변수 0005는 읽기에만 사용됩니다).


 


일단 읽기부터 배워봅시다.


그럼 이제 이벤트커맨드 "변수의 조작"으로 들어갑니다.


그러면 "조작하는 변수" 묶음 안에 단독, 일괄, 변수가 있습니다.


여기서 변수를 선택하면 "조작하는 변수"가 변수 번호의 변수가 될거라는 겁니다.


고로 쓰기가 되죠. 읽기와 쓰기를 같이 쓸 수도 있지만 ( 자기 맘이죠 )


여기선 읽기를 배울것이기 때문에 우리가 자주 사용하는 "단독"에서 선택합시다.


변수 0004를 선택합시다. 변수 0004는 변수의 번호이므로 읽을 변수를 선택합니다.


변수 0001을 읽고 싶습니다. 변수 0001을 읽고 싶으니 연산자는 정수 1로 합니다


그러면 이렇게 됩니다.


◆변수의 조작 : 대입, 변수 0004, 1


자, 이제부터가 중요합니다. 또 이벤트 변수의 조작을 합니다. 그리고 조작하는 변수


를 변수 0005로 합니다. 변수 0005는 변수 0004에 있는 번호 안에 있는 변수값을


대입한 값입니다. 연산자 목록에선 변수가 2개 있는데 그중 아래쪽에 있는 변수


(오른쪽에 "번호의 변수"가 붙어있습니다)를 선택하고 변수 0004를 선택합니다.


그러면 다음 이벤트내용이 생기게됩니다.


◆변수의 조작 : 대입, 변수 0005, [V[0004]]


이것을 풀어쓰면 다음과 같습니다.


◆변수의 조작 : 대입, 변수 0005, 변수 0004 번호의 변수 안에 있는 값


이제 이해되셨습니까? 일단 정리하면 우리는 이 이벤트를 만들었습니다.


◆변수의 조작 : 대입, 변수 0001, 3


◆변수의 조작 : 대입, 변수 0002, 7


◆변수의 조작 : 대입, 변수 0003, 4


◆변수의 조작 : 대입, 변수 0004, 1


◆변수의 조작 : 대입, 변수 0005, [V[0004]]


변수 0005엔 무슨 값이 대입되어 있을까요? 생각해보고 확인해봅시다.


3이 나옵니다. 예상하셨습니까? 감 잡지 못하였다면 계속 보십시오.


◆변수의 조작 : 대입, 변수 0001, 3


◆변수의 조작 : 대입, 변수 0002, 7


◆변수의 조작 : 대입, 변수 0003, 4


◆변수의 조작 : 대입, 변수 0004, 2


◆변수의 조작 : 대입, 변수 0005, [V[0004]]


변수 0004의 대입값을 2로 바꾸었습니다. 이상태로 이벤트를 실행해 봅시다.


변수 0005엔 7(변수 0002의 값)이 나옵니다.


◆변수의 조작 : 대입, 변수 0001, 3


◆변수의 조작 : 대입, 변수 0002, 7


◆변수의 조작 : 대입, 변수 0003, 4


◆변수의 조작 : 대입, 변수 0004, 3


◆변수의 조작 : 대입, 변수 0005, [V[0004]]


이번엔 3으로 바꾸었습니다. 이상태에 변수 0005에선 4(변수 0003의 값)가 나옵니다.


직접 실행해서 이벤트를 실행후 F9로 확인해보십시오. 진짜 그렇게 됩니다 ㅡ,.ㅡ;


 


읽기를 배우셨습니다. 하지만 아직 쓰기가 남아있습니다. 쓰기를 배웁시다.


일단 이것을 만듭시다. 초기값 대입이죠


◆변수의 조작 : 대입, 변수 0001, 3


◆변수의 조작 : 대입, 변수 0002, 7


◆변수의 조작 : 대입, 변수 0003, 4


당신은 지금 변수 0001의 값을 100으로 변환시키고 싶습니다.


◆변수의 조작 : 대입, 변수 0004, 1


변수 0004는 변수의 번호이므로 변수 0004의 번호(정수 1)의 변수인 변수 0001의 값을


바꾸고 싶습니다. 


이상태로 이벤트 커맨드 변수의 조작으로 들어갑니다.


이제 당신은 변수 번호의 변수를 조작(쓰기)하려 하므로 조작하는 변수 란을 봅시다.


여기서 아까 "단독, 일괄, 변수"가 있었죠? 변수를 체크합시다!


그리고 변수 0004를 선택하고 대입 100을 시킵니다.


◆변수의 조작 : 대입, [V[0004]], 100


이런 이벤트가 생겼습니다. 이를 풀어서 설명하면 다음과 같습니다.


◆변수의 조작 : 대입, 변수 0004 번호의 변수, 100


그리하여 당신은 이 이벤트를 만들었습니다.


◆변수의 조작 : 대입, 변수 0001, 3


◆변수의 조작 : 대입, 변수 0002, 7


◆변수의 조작 : 대입, 변수 0003, 4


◆변수의 조작 : 대입, 변수 0004, 1


◆변수의 조작 : 대입, [V[0004]], 100


이제 이를 실행하고 이벤트 갱신후 F9를 누릅시다.


변수 0001의 값 : 100, 변수 0002의 값 : 7, 변수 0003의 값 : 4


이렇게 나올겁니다. 변수 0004 번호의 변수는 변수 0001이므로


변수 0001에게 대입, 100을 시킨 겁니다.


읽기 배울때와 마찬가지로 변수 0004에 2,3을 계속 넣어봅시다.


◆변수의 조작 : 대입, 변수 0001, 3


◆변수의 조작 : 대입, 변수 0002, 7


◆변수의 조작 : 대입, 변수 0003, 4


◆변수의 조작 : 대입, 변수 0004, 2


◆변수의 조작 : 대입, [V[0004]], 100


변수 0001의 값 : 3, 변수 0002의 값 : 100, 변수 0003의 값 : 4


◆변수의 조작 : 대입, 변수 0001, 3


◆변수의 조작 : 대입, 변수 0002, 7


◆변수의 조작 : 대입, 변수 0003, 4


◆변수의 조작 : 대입, 변수 0004, 3


◆변수의 조작 : 대입, [V[0004]], 100


변수 0001의 값 : 3, 변수 0002의 값 : 7, 변수 0003의 값 : 100


이제 쓰기도 이해하셨으리라 생각합니다.


 


이제 당신은 변수 번호의 변수를 배웠습니다.


이 변수 번호의 변수는 어디에 쓰일까요? 주로 이렇게 쓰입니다


1. 되풀이 처리와 같이 사용


2. 커먼이벤트를 함수처럼 활용하면서 호출값처럼 이용


* 다른 방법도 꽤 많은 방법으로 사용할 수 있습니다


 


일단 되풀이 처리와 같이 사용해 봅시다.


되풀이 처리는 강좌에서 보셨곘지만 제어문입니다(다른 제어문으로는 조건분기 등이 있음)


while, for문처럼 반복적으로 내용을 실행하며 RPGXP의 loop do와 똑같은 기능이란건


들으셨을 겁니다.


자, 어떻게 이용될까요?


다음은 탐욕스런 제작자 2( 2006년 A.미스릴 제작 )의 적의 공격 내용중 하나입니다.


◆조건분기 : 변수[0042:몹1동작]이 1이상


   ◆변수의 조작 : [0082:적1딜레이]가산, 1


   ◆


 : 분기 종료


◆조건분기 : 변수[0043:몹2동작]이 1이상


   ◆변수의 조작 : [0083:적2딜레이]가산, 1


   ◆


 : 분기 종료


(중략)


◆조건분기 : 변수[0059:몹18동작]이 1이상


   ◆변수의 조작 : [0099:적18딜레이]가산, 1


   ◆


 : 분기 종료


◆조건분기 : 변수[0060:몹18동작]이 1이상


   ◆변수의 조작 : [0100:적18딜레이]가산, 1


   ◆


 : 분기 종료


쓸데없이 길이가 엄청납니다. (내가 그때 왜 이런 개노가다짓을 했을까...ㅡㅡ;;)


이것을 이렇게 만들 수 있습니다.


◆변수의 조작 : [0001:루프 변수]대입, 0


◆변수의 조작 : [0002:루프적동작]대입, 0


◆변수의 조작 : [0003:루프적동작값]대입, 0


◆변수의 조작 : [0004:루프적딜레이]대입, 0


◆반복 처리


   ◆변수의 조작 : [0001:루프 변수]가산, 1


   ◆조건 분기 : 변수[0002:포인터]이 19보다 크다


      ◆되풀이 처리의 중단


    : 분기 종료


   ◆변수의 조작 : [0002:루프적동작]대입, 변수[0001]의 값


   ◆변수의 조작 : [0002:루프적동작]가산, 41


   ◆변수의 조작 : [0003:루프적동작값]대입, 변수[V[0002]]의 값


   ◆변수의 조작 : [0004:루프적딜레이]대입, 변수[0001]의 값


   ◆변수의 조작 : [0004:루프적딜레이]가산, 81


   ◆조건 분기 : 변수[0003:루프적동작값]이 1이상


      ◆변수의 조작 : [V[0004]]가산, 1


      ◆


    : 분기 종료


   ◆


 : 이상 반복


3분의 1 이하로 길이도 줄었습니다. 그리고 수정하기도 편해집니다.


 


자, 그럼 커먼이벤트를 함수처럼 활용하면서 호출값처럼 이용은 뭐하는걸까요?


다음은 괴물이다!!( 2007년 아싸사랑님 제작 )의 내용중 하나입니다


◆조건 분기 : 변수[0841:동료1딜레이]이 0이하


   ◆스위치의 조작 : [0161:동료1 시전중]을 ON한다


   ◆대기 : 0.2초


   ◆스위치의 조작 : [0141:동료1 방향전환리로드]을 ON한다


   ◆대기 : 0.1초


배우겠다는 취지에서 하는 것이므로 저는 생략했습니다만 실제 아싸사랑님의


알고리즘은 대단히 깁니다. 고로 복사하는데 엄청난 근성 노가다가 필요하죠 ㅡㅡ;;


9마리의 슬라임마다 변수를 일일이 바꿔줘야 하니 뭐 아싸사랑님이라면 가능하지만


저같은 양민은 만들다가 쓰러져 죽습니다[..]


일단 하는 순서대로 설명드리곘습니다.


1. 개체 ID 변수를 만들고 숫자 대입


같은 개체를 만들때 "유일하게" 수정합니다.


저기선 슬라임 1~10마리가 있으니 슬라임1엔 변수1을 대입합니다.


슬라임2엔 2, 슬라임3엔 3... 저 변수하나만 쓱쓱 수정하면 슬라임 50마리도


금방 만들어낼 수 있습니다! 이게 바로 변수 번호의 변수의 위력 ㅡ.ㅡ...


 


◆변수의 조작 : [0001:슬라임ID] 대입, 1


 


간단하죠? 더이상의 설명은 필요없습니다.


 


2. ID에 해당하는 개체의 변수 번호들 취득


이 작업은 주로 커먼이벤트에서 이루어지게 하는 게 좋습니다.


변수의 번호와 번호 변수의 값을 구하는것이죠 ㅡ.ㅡ;


즉 재료 준비인 것입니다.


"개체변수취득" 커먼이벤트를 만들었다고 칩시다.


거기 안에 이렇게 만듭시다.


◆변수의 조작 : [0002:동료딜레이]대입, 변수[0001:슬라임ID]의 값


◆변수의 조작 : [0002:동료딜레이]가산, 840


◆변수의 조작 : [0003:동료딜레이값]대입, 변수[V[0002]]의 값


◆변수의 조작 : [0004:동료시전중]대입, 변수[0001:슬라임ID]의 값


◆변수의 조작 : [0004:동료시전중]가산, 160


◆변수의 조작 : [0005:동료방향리로드]대입, 변수[0001:슬라임ID]의 값


◆변수의 조작 : [0005:동료방향리로드]가산, 140


 


3. 그 변수들을 변수 번호의 변수로 조작하기


이게 매인 내용입니다


케릭터의 동작 지정 등을 사용하는 게 아닌 이상 이 역시 커먼이벤트로 조작하길 추천합니다.


그래야 수정이 쉬우므로 ㅡ.ㅡ;(어차피 변수번호의변수 쓰면 쉬워지지만)


 


◆조건 분기 : 변수[0003:동료딜레이값]이 0이하


   ◆스위치의 조작 : [V[0004]]을 ON한다


   ◆대기 : 0.2초


   ◆스위치의 조작 : [V[0005]]을 ON한다


   ◆대기 : 0.1초


 


정말 쉽죠?


이제 당신은 "◆변수의 조작 : [0001:슬라임ID] 대입, 1" 하나만 딱딱 바꾸면서 많은 슬라임들을


만들어낼 수 있습니다!


돌아가는 원리부터 응용까지 설명했습니다.


훗날에 더 쓸만한게 있으면 더 쓰겠습니다만 일단은 이걸로 끝이네요


재밌는 게임 만드시기 바랍니다!

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
공지 초급강의실 게임제작강좌 A-Z 색인 (2016.1.24 ver) 2 file 천무 2016.01.12 7372 1
12 중급강의실 데스티니 패치 연구 1~3 2 1 file 나라뜨 2012.05.05 1137 0
11 중급강의실 찰드 제작강의 "3" -툴의 완벽한 이해를 위한 그날까지 No.1 1 1 file 찰드 2011.09.02 3055 1
» 중급강의실 [RPG2003] 한단계 도약 : 변수 번호의 변수 A. 미스릴 2011.02.22 2678 0
9 중급강의실 [RPG2003] 한단계 도약 : 변수 번호의 스위치 6 A. 미스릴 2011.02.21 2536 0
8 중급강의실 [RPG2003] 한단계 도약 : 되풀이 처리 3 A. 미스릴 2011.02.21 2774 1
7 중급강의실 찰드 도트강의 "1" -케릭터 레이더의 이해 (1/2)- 6 ◈ÐÆЯΚ◈찰드 2009.08.16 6195 4
6 초급강의실 찰드 제작강의 "2" -툴을 처음 접하면- 4 ◈ÐÆЯΚ◈찰드 2008.09.29 5965 7
5 초급강의실 찰드 제작강의 "1" -겜제작을 시작할때- 5 ◈ÐÆЯΚ◈찰드 2008.08.28 6909 5
4 중급강의실 액알강의[1] - 베틀러 비밀소년 2006.08.07 8458 7
3 중급강의실 액알강의[2] - 일어서기위해 비밀소년 2006.07.30 5181 3
2 중급강의실 액알강의[3] - 주석을 통한 설정 1 file 비밀소년 2006.07.21 5329 4
1 중급강의실 캐릭터레이더로 통맵만들기. 3 file 천무 2006.06.05 12282 23
Board Pagination Prev 1 ... 5 6 7 8 9 10 Next
/ 10






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)