전략게시판

전략게시판 [스튜디오]
[루아스크립트] #4 game.lua 에서 게임 로직 구현하기
2023.01.26 15:58 조회 : 2710
Lv. 493토게피 CosyClimbing 작성자 게시물 더보기
3편 : https://csonline.nexon.com/Community/Strategy/View/5487?

루아스크립트를 공부하는 가장 빠른 방법은
뭐든지 잡히는대로 한번 만들어보는 것입니다.

막연하게 API만 들여다보고 문법책만 들여다보면은
자기가 뭘 모르는지 알기 어렵고,
문헌에서 나오지 않는 상황은 대처를 할 수 없습니다.

이번 편에서는 간단하게 좀비를 잡아서 돈을 벌고,
번 돈으로 무기를 업그레이드해서 더 큰 돈을 버는
간단한 형식의 클리커 게임을 만들어보도록 합시다.

이번 프로젝트는 는 총 2편으로 작성될 것이며, 이번 1편에서는
기본적인 기능구현을 하는 과정을 적어보고자 합니다.


#0 무엇을 어떻게 만들고 싶은가?

무언가를 만들기 전에 계획을 짜고 시작하면
코딩의 효율이 오르고 목적이 분명해집니다.
코딩하면서 얻어지는 보람도 덤으로 나오죠.

이번 프로젝트로 만들고자 하는 것을
다음과 같이 정리해 보았습니다.

좀비 타격/킬으로 돈을 번다
좀비는 처치할수록 보상과 체력이 증가

번 돈을 사용하여 업그레이드를 한다
업그레이드 비용 역시 레벨에 따라 증가

스크립트를 짜기 전 간단하게
월드 규칙을 설정하겠습니다.


#1 좀비 구현하기

그림과 같이 좀비 영역을 세워놓고
게임이 시작되면 좀비가 생성되게 합시다.


좀비를 생성하고 싶은 위치의 좌표를 확인한 다음,
다음과 같이 스크립트를 작성합니다.


Game.Rule:OnRoundStartFinished() 는
게임 시작 준비를 모두 마치고 게임이 시작될 때 호출되는 이벤트 콜백입니다.
제대로 따라오셨다면, 원하는 좌표에 좀비가 소환되는 것을 확인 할 수 있을 겁니다.

이제 좀비를 타격을 하거나 죽이면 플레이어한테 코인을 지급하고,
좀비가 사망하면 좀비를 다시 부활시키고, 조건에 맞으면 좀비가 강해지도록 합니다.

다음과 같이 코드를 작성합시다.


Game.Rule:OnTakeDamage (victim, attacker, damage, weapontype, hitbox)
는 플레이어 혹은 몬스터가 피해를 입을 때 호출되는 이벤트 콜백이며,
Game.Rule:OnKilled (victim, killer)
는 플레이어 혹은 몬스터가 사망할 때 호출되는 이벤트 콜백입니다.

이 프로젝트에서는 따로 DB를 사용하지 않고 일정한 비율로 곱하여
좀비를 강화하도록 하겠습니다. (37번 줄)

여러 가지 예외 사항을 조건문을 사용하여 흘려 버리는 것과,
위 함수들이 플레이어의 피해 또는 죽음에도 호출되는 콜백이기 때문에 이를 구별하기 위해
IsMonster () 메소드를 확용해 몬스터의 피해 및 죽음에만 동작할 수 있게 한 것을 주목하세요.


제대로 따라오셨다면 좀비를 때리고 잡으면
플레이어 인벤토리에 코인이 늘어나는 것을 확인할 수 있습니다.

#2 업그레이드 구현하기

코인의 수급처를 확인하였으니, 이제 얻은 코인을 사용할 수 있는
업그레이드를 구현해보겠습니다.

이 프로젝트에서는 장치블럭 버튼을 누르면 가격에 맞는 코인을 가지고 있는지 체크하고,
충분한 코인을 가지고 있다면 업그레이드를 진행하도록 만들겠습니다.


원하는 버튼을 설치하고 좌표를 얻어내세요.
좌표를 기억한 다음 다음과 같이 스크립트를 작성합니다.


Game.EntityBlock:OnUse (player) 콜백은
지정한 장치블록을 플레이어가 사용(E) 하였을 때 호출되는 이벤트 콜백입니다.

마찬가지로 레벨이 올라갈수록
업그레이드에 필요한 코인도 지수적으로 늘어나게끔 하였습니다. (48, 65번째 줄)

또한 POWERUPLEVEL 업그레이드를 적용하기 위해
Game.Rule:OnTakeDamage (victim, attacker, damage, weapontype, hitbox)에서
return 줄을 아래처럼 수정합니다. (21번째 줄)


제대로 따라오셨다면, 무기를 강화함에 따라 데미지가 강력해지고,
요구하는 코인의 양 또한 많아지는 것을 확인하였습니다!


이로써 간단한 기능구현을 완료하였습니다.
2편에서는 UI를 사용해서 프로젝트의 완성도를 높여보도록 하겠습니다.

현재까지 작성한 스크립트의 상태입니다.


제작되고 있는 스크립트는
스튜디오맵 '루아작업준' 에서 확인 및 복사가 가능합니다.


추천 : 2
댓글을 남기시려면 로그인 해주세요
댓글 : 2
  • 감사합니다! Lv. 886전갈 2023.01.27
  • 너무어려워요선생님 Lv. 536익스트림버니합 2023.01.26