아마 대부분 사람들이 SRPG에서 힘들어 하는 부분은
1. 적 인공지능
2. 장해물(이동가능판단하기)
3. 전투씬
일듯 합니다.
저는 얼마전까지 SRPG킷을 만들고 있었고, [3 vs 4 인공지능]이 정상실행 되는 것을 확인했습니다.
그 후 2003에서 오류가 발생해서 지금은 2003을 만질수 없는 상황입니다. ;ㅅ;
그래서! 2003유저분들께 제가 위의 세가지 어려운점을 해결한 방법을 알려드리려고 해여!
저는 2차원배열에서 힌트를 얻었습니다.(힌트랄까. 널리 알려진 방법을 사용했을 뿐.)
2차원배열을 모르셔도 상관없습니다.
안다면 글을 좀 더 빨리 읽을수 있을듯여.
------------------------------------------------
맵에 장해물이 있을수도 있고 아군이나 적군이 있을수도 있는데, 그럴땐 그쪽으로 이동을 못해야 하겠져.
이걸 다 확인하는것도 엄청난 노가다일듯 합니다.
하지만 노가다를 최소화 하는 방법이 있는데, 우선은 아래의 그림을 봐 주세여!
맵이 있다면 좌표는 이런식이죠.
실제 2003은 최소크기가 20*15이지만 그림은 6*7로 그렸습니다. ㅎㅎ
생각해봅시닷! 맵 한칸당 변수를 한개씩 사용한다면?
0,0은 변수0001
1,0은 변수0002
...
0,1은 변수0008
1,1은 변수0009
...
이런식이 된다면요?
이렇게 되면 맵좌표에 해당하는 변수의 번호는
x + 7y + 1 = 해당되는 변수의 번호
이렇게 됩니다.(맞죠? ㅎㅎ 틀리면 저 글 다시써야할듯 ㄷㄷ)
이 공식과 [해당좌표의 지형변수취득?]기능과, 이벤트반복처리 기능을 사용해서
간단하게 0,0부터 끝좌표까지의 지형정보를 각각 해당하는 변수에 대입할 수 있습니다! 쉽져?
맵좌표에 해당되는 변수라는 것은 아래의 그림을 참고해 주세요.
자, 그럼 이 방법을 입구가 없는 방 맵에 사용해 볼까여?
이동가능 지역은 0
이동 불가능 지역은 1
라고 설정합시다.
(****데이터베이스에서 칩셋의 지형설정 사용하는데, 사실 2003의 지형엔 0번이 없습니다.
일단 지금은 0과 1로 설명을 하겟습니다.****)
그리고 이동불가칩셋을 통행불가(X표시)로 하지 말아요.
그럼 커서가 이동못하잖아여 ㅎㅎ
방을 만들고, 위의 방법대로 변수를 저장하면 각 변수에는 다음과 같은 식으로 저장되겠죠.
아까 봤던 해당위치의 변수그림을 참고해서 보세요.
변수0001 = 1
변수0002 = 1
변수0003 = 1
...
변수0009 = 0
...
이런 식이 되겠죠?
이제 절반은 끝났네요! ㅎㅎ
이렇게 맵의 지형을 변수에 저장하는 이벤트를 만들고 이름을 [맵지형얻기]라고 합시다.
하지만 아직 한가지 더 필요한 이벤트가 있어요.
그 이벤트는 이름을 [맵캐릭터덮어쓰기]라고 할거에여!
이 이벤트가 필요한 이유는 한가지입니다.
맵디자인상 이동이 불가능한 지역만 이동이 불가능한게 아니고,
적이나 아군이 있는 지역도 이동이 불가능한 지역이기 때문입니다!
이동가능지역은 0, 불가지역은 1
아군은 3
적군은 4
로 설정합니다.
그리고 공식을 사용해서 캐릭터의 좌표에 해당하는 변수에 아군이면 3을, 적군이면 4를 대입합니다.
자~ 이렇게 [맵지형얻기]이벤트와 [맵캐릭터덮어쓰기]이벤트가 완성되었습니다!!
이 두개의 이벤트는 필요할 때 '이벤트불러오기'로 불러오는것이 효율적이겠지요?
불러오는 순서는 [맵지형얻기]부터 먼저 해야합니다.
왜 [맵지형얻기]를 먼저 불러야 할까요?
간단합니다.
그 반대의 순서로 불렀을 때 변수값이 어떻게 대입되는지를 생각해 보면 알 수 있습니다.
*****여기까지가 대부분의 사람들이 SRPG에서 힘들어하는 장해물판단부분입니다!*****
적의 AI는 오직 2003에서만 가능한 방법을 하나 소개해 드리겠습니다.(vx나 xp도 가능하긴 할듯?)
제가 실제로 3대4 SRPG에서 써 본 AI방식이구요, 매우 간단했습니다!
조금 손보면 금방 15대15 인공지능도 완성할 수 있었죠 ㅎㅎ
툴이 오류나는 바람에...ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
암튼 AI랑 전투씬은 다음에 쓸게여! ㅂㅂ
전투씬은 진짜 짧게 쓸 수 있습니닷!