네코랜드 기초(2021년)

[기초강좌] 18. 아이템강화

ChaYong 2021. 2. 8. 12:39

안녕하세요. 차용입니다^^

 

티스토리 첫 광고수익이 터졌네요 ㅎㅎ

 

일주일 동안 3원....ㅎㅎ

 

그래도 좋습니다.

 

그 과정이 너무 재미있었거든요. ㅎㅎ

 

티스토리에 대해 대략적인 공부 좀 하고

 

광고 붙이는 법하고 등등등

 

이거저것 알아보느라 꾀 재미있었어요 ㅎㅎ

 

천리길도 한걸음부터라고

 

글을 열심히 게제하면 십년 이십년 뒤에는

 

좀 달라지....지 않을가요? ㅎㅎ (그대로려나~)

 

여러분도

 

게임을 만드실 때

 

그 과정에서 재미를 느끼시길바래요.

 

조급하게 완성만을 바래고

 

진행하면 금방 질려버리고

 

스트레스만 받을 수가 있어요 ㅜ

 

즐겁게, 즐겁게

 

게임만들기를 게임하듯 즐기면서 하시길 바랍니다^^

 

자~~~~오늘 해볼 것은요.

 

바로 아이템을 강화하는 방법이에요.

 

조금 헷갈리실 수도 있으니

 

천천히 따라와 주세요^^


우선 저희가 만들어왔던 HelloWorld프로젝트를 열겠습니다.

 

하나씩 만들어지는 모습을 보니 왠지 뿌듯하네요 ㅎㅎ

 

우선 아이템강화를 하기 위해서는

 

강화아이템을 만들어야겠죠?

 

강화주문서 같은 거요 ㅎㅎ

 

우선 리소스는...

 

이걸로 하겠습니다. ㅎㅎ

 

전에 제가 연습용으로 만들었던 게임에

 

무공서로 썼던 아이콘인데,

 

이걸 여기서 [일반]강화서 아이콘으로 사용하겠습니다 ㅎㅎ

 

이걸 이용해서 아래와 같이 아이템을 만들게요.

 

 

간단하게 요렇게만 우선 만들게요.

 

이제 공용이벤트를 하나 만들어 줄건데요

 

후에 이 아이템 사용시 해당 공용이벤트와

 

연동을 해줄거에요.

 

그런데 여기서 궁금하신점이 있으실거에요.

 

왜 소모되는 아이템으로 안하고

 

소모 안되는 아이템으로 한 것일가?

 

이유는 단순합니다.

 

스크립트가 아닌 이벤트로 강화를 하는데 있어서

 

아이템 선택 이벤트를 반드시 사용하게 되있는데요,

 

이 때

 

아이템 강화를 하려고 아이템은 사용을 하고,

 

갑자기 취소하고 싶어서 선택 취소하였는데

 

이때 강화도 안했는데도 아이템이 사라집니다.

 

이를 방지하기 위함입니다.

 

(물론 스크립트로 모든 걸 다만드셔서

 

이용하신다면 상관없습니다)

 

강화서 사용이라는 공용이벤트를 만들었구요

 

유저가 아이템을 선택하는 작업을 해주어야합니다.

 

이를 위해 '아이템선택'이라는 이벤트를 넣어줄게요.

 

이런 창이 하나 뜰거에요.

 

이 기능은 유저가 아이템을 선택하는 창을 띄워주고

 

특정한 아이템을 선택해줄시

 

그 아이템 번호를 특정 변수에 담아주는 기능입니다.

 

(여기서 가져온 아이템 번호는 고유id고 데이타베이스id가 아닙니다.)

 

이 아이템번호가 담긴 변수를 이용해 

 

강화이벤트랑 연결해 줄거에요.

 

우선 +버튼을 눌러 

 

위와 같이 선택아이템이라는 변수를 만들어주시구요.

 

'대상 아이템 타입'은

 

모자, 갑옷, 방패, 신발로 제한할게요.

 

이렇게 제한을 걸면

 

아이템 선택목록에서 위 타입의 아이템만 보여집니다.

 

'선택되었을때' 하위에

 

이렇게 아이템 레벨을 올릴 수 있는 이벤트를 넣어줍니다.

 

이런 창이 하나떠요.

 

여기에 아까 저희가 아이템 정보를 담은 변수를 선택해주시고

 

업그레이드에 체크,

 

레벨을 1만 올려주도록 합니다.

 

그리고 아이템을 사용했으니

 

갯수를 하나 줄여줄게요.

 

그럼 이런 모양이 될거에요.

 

그런데 이렇게만 하면 100% 성공이 되버리죠?

 

확률로 되게끔 해볼게요.

 

지난번 화면효과 할 때 랜덤변수 다뤄봤죠?

 

다시 랜덤변수를 사용하겠습니다.

 

우선 변수 이벤트를 넣으신 후에,

 

+버튼을 눌러 '강화주사위'라는 이름의 변수를 만들어주시구요.

 

대입값으로 랜덤범위를 1에서 100으로 지정해줍니다.

 

그 다음 조건분기 이벤트를 넣어줍니다.

 

이렇게 설정해주시면 됩니다.

 

다 되고 나면 아래와 같은 형태로 만들어주세요.

 

위치가 좀 다른 거 같으시면

 

이벤트를 마우스 우클릭이나 Ctrl+X를 눌러 잘라내기 후

 

특정이벤트의 윗 부분에 넣고싶다~하시면

 

그 특정이벤트를 선택 후 붙여넣기하시면 됩니다.

 

그럼 잘라내기했던 이벤트가 그 특정이벤트 위로 붙여집니다.

 

이제 강화아이템 사용하면

 

이 공용이벤트를 사용하도록 연동해 줄게요

 

이러면 강화는 끝납니다.

 

몇가지 더 수정을 봐야되지만 일단 이대로도

 

강화이벤트는 작동되니

 

한번 테스트를 해보도록 할게요^^

 

어떤 방식으로 강화가 작동되는지 보여드릴게요.

 

잘 됩니다 ㅎㅎ

 

그런데 많이 허전하죠?

 

우선 강화 성공과 실패 메세지가 필요합니다.

 

그리고 한가지 문제가 더 있습니다.

 

바로 강화아이템 사용 후 아이템을 버리면

 

강화아이템 소모 없이 강화작업이 가능합니다.

 

때문에 강화아이템이 인벤토리 내에 있는지 여부도

 

따로 체크를 해주어야 겠네요 ㅎㅎ

 

강화메세지는 알림표시 이벤트로 사용할게요.

 

여기서 알림표시 이벤트는 

 

이걸 넣어주시면 되구요.

이런식으로 타겟을 플레이어,

 

텍스트를 넣어주시면 됩니다.

 

물론 여기도 html컬러코드를 저런 식으로 넣으실 수 있어요 ㅎㅎ

 

이제 적절히 배치를 해주면,

 

이렇게 됩니다.

 

그리고 아까 말한 무한강화버그를 해결할게요.

 

변수와 조건분기를 사용해주시면 됩니다.

 

이렇게 현재 소지한 강화서 갯수를 체크하는 변수이벤트를 생성

 

강화서 갯수 변수에 들어있는 수량이 0 이하인지 검사

 

만약에 강화서 아이템이 0이하면

 

"강화서 아이템이 없습니다." 알림표시 이벤트를

 

하나 넣어주고

 

이벤트 중단을 넣어주시면 바로 이벤트가 종료됩니다.

 

즉 그 아래 이벤트들은 실행이 안되요.

 

이벤트 중단 이벤트는

 

여기 있습니다. ㅎㅎ

 

이제 다됬습니다.

 

테스트 플레이 해볼게요.

 

그런데 아이템을 보시면

 

레벨이 올라가도 데미지가 그대로내요 ㅎ

 

이걸 바꾸시려면 데이터베이스에서 아이템 특성란을

 

만저주셔야 합니다^^

 

데이터베이스 > 아이템에서

 

저희가 만든 신성한갑옷으로 들어가주세요.

 

우측 특성란에 스텟을 추가설정해줄 것인데요

 

특성하단 공란을 더블클릭하셔서

 

특성추가창을 열어주시고

 

아이템레벨 1일 때 방어를 10정도 늘려주도록 할게요.

 

설정하시면 위와 같이 뜨는데요

 

이러면 아이템 레벨1일 때

 

저희가 설정한 기본능력치(def+100, mgicDef+100)에

 

def가 +10 이 됩니다.

 

그럼 아이템 레벨2일 때는 어떻게 될가요?

 

따로 설정을 안해줘서 

 

기본능력치 (def+100, mgicDef+100)만

 

적용이됩니다.

 

이렇게 아이템 레벨마다 특성을 설정해주셔야합니다.

 

저는 이렇게 몇개만 예시로 설정을 하였습니다.

 

테스트플레이를 해볼가요?

 

아이템 레벨에 맞춰서

 

능력치가 올라가는 모습이 보이시죠?

 

문제는

 

저희가 설정하지 않은 아이템레벨로 강화 시

 

발생합니다.

 

이때는 기본능력치 값만 적용이 되버립니다.

 

그럼 이를 어떻게 해야 할 것인가 고민이 되실거에요.

 

강화레벨이 올라갈 수록 강화율을

 

점점 극악으로 떨어뜨리는 것도 방법이구요.

 

아니면 아예 특정레벨 이상은

 

강화를 못하게 막아놓을 수도 있습니다.

 

저는 강화를 못하게 막아볼게요.

 

이것도 변수와 조건분기를 이용하시면 됩니다.

 

저는 이렇게 추가를 하였습니다.

 

강화서 아이템을 체크하는 로직과 비슷합니다.

 

우선 변수설정을 해주셔야합니다.

 

변수 이벤트를 만들어주세요.

 

그리고 +버튼을 눌러 아이템레벨이라는 새로운 변수를 정의해주시구요

 

특정아이템에 체크하시고

 

가운데 칸에는

 

'선택아이템 고유id를 저장한 변수'를 설정해주시고

 

오른쪽 칸에는 레벨을 설정해줍니다.

 

이려면 '아이템레벨' 변수에 선택한 아이템의 레벨값을 담습니다.

 

이제 조건분기로 검사를 하면 되겠네요.

 

저는 최대강화 수치가 3이니 이렇게 설정을 했습니다.

 

'아이템레벨' 변수의 값이 '3'과 '=(같음)' 일 때를

 

조건으로 잡으시고

 

조건이 참일 때 '알림표시' 이벤트와 '이벤트중단' 이벤트를

 

실행하도록 해줍니다.

 

그럼 최종적으로 위에서 보여드렸던,

 

이런 형태가 됩니다. ㅎㅎ

 

이제 테스트 플레이를 해서

 

제한이 걸렸나볼게요.

 

제한이 잘 걸렸습니다.

 

자, 오늘은 여기까지입니다.

 

보기만 해서는 조금 헷갈리는 부분이 많으실거요

 

제일 처음엔 아주 똑같이 만들 생각으로

 

따라해주시면서 이게 제대로 작동이 되는지부터 확인해주시고,

 

그 이후 하나씩 수정을 해보시면서

 

기능을 음미하신 후에

 

자신만의 방식으로 만드시길 바랍니다.^^

 

처음부터 제 유투브 영상이나 티스토리를 보면서

 

자신의 게임에 적용하며 공부하시는 것도 좋지만,

 

사실 그것은 생각보다 어려운 작업이에요 ㅎㅎ

 

기능 자체를 모르니 작업도중 미스가 나면

 

어디서 미스가 났는지 조차 파악이 어렵습니다.

 

때문에 제가 알려드린 순서로 학습을 해나가실 바랄게요^^

 

너무 글이 길었네요.

 

오늘도 따라오시느라 정말 고생 많으셨습니다.

 

이상, 차용이었습니다. 감사합니다!^^