Monster Killer
안녕하세요. 오늘도 버그를 살펴보는 날입니다. 이번엔 좀 큼지막한 놈인데, 해결과정이 결코 쉽지 않았기 때문입니다. 그럼 바로 살펴보겠습니다.
버그수정 - 공격속도 복사
자 일단 제목만 들어도 상당히 치명적인 버그라는 것을 한눈에 알 수 있습니다. 이 버그는 겉으로만 보면 공격속도가 복사되는 버그처럼 보이기 때문에 이처럼 이름을 붙였습니다.
버그에 대해서 자세하게 알아보겠습니다. 이 버그가 생긴 이유는 Z스킬 때문입니다. Z스킬은 무기를 변경하는 스킬인데 이 스킬을 사용할 때, 플레이어가 들고 있는 무기의 판정처리가 상당히 어려웠습니다. 짧게 설명하자면, 플레이어가 기본적으로 들고 있는 폭탄 무기의 경우 프리팹으로 만들어져 있는 무기를 플레이어에 할당하여 그것을 CurrentWeapon에 넣어주고, CurrentWeapon에 있는 무기를 일정 간격으로 소환시키는 동작을 합니다. 당연히 무기를 던졌을 때 소환을 해줘야 하기 때문에 던져서 현재 무기에 있는지 없는지에 대한 판정도 같이 진행됩니다. 이것이 기본적인 무기의 매커니즘 입니다.
이제 Z스킬에 대해 알아보겠습니다. Z스킬 자체에는 문제가 없습니다. 단순히 무기를 바꿔주면 되는 거라서 폭탄이 들어가는 위치에 변경될 무기를 넣어주면 됩니다. 그런데 문제는 변경된 무기를 소환하는 과정에서 발생했습니다. Z키를 누르면 무기가 변경되는데 처음으로 발생한 문제는 변경되는 무기도 프리팹으로 설정되어 있고, 플레이어의 공격력을 무기에 저장하여 공격하는 방식으로 만들어졌기 때문에 폭탄 무기와 변경되는 무기(표창)의 공격력이 동기화가 이루어지지 않았습니다. 그래서 무기가 변경될 때, 폭탄과 표창의 공격력이 동기화 되도록 만들어 주었습니다.
두번째로 발생한 문제는 무기가 소환될 때, 방식이 두가지가 있었습니다. Z키를 누른 즉시 현재 무기를 바꾸고 소환되는 방식과 Z키를 누르고 현재 무기를 사용한 뒤부터 변경된 무기가 등장하는 방식, 저는 당연히 첫번째 방식을 사용하고 싶었습니다. 그런데 즉시 현재 무기를 교체시켜 주려면 소환을 진행하게 됩니다. 이 부분에서 문제가 발생하기 시작합니다.
무기 소환 버그
자 이제 공격속도가 복사되는 현상은 무기 소환에서 문제가 발생한다는 것을 알게 되었습니다. 이제 이 문제를 해결하기 위해서 다양한 방법을 시도하게 됩니다. 처음에는 플래그를 사용하여 Z스킬을 사용 중이라면 한쪽의 무기 소환을 막고 스킬에서 소환을 실행하려 했으나, 생각대로 소환이 막히지 않았습니다. 실패한 이유는 코루틴으로 스킬 지속시간동안 무기 소환이 진행되었기 때문에 도중에 막는 것이 제대로 작동하지 않았던 것 같습니다.
다음에는 즉시 소환을 할게 아니라 CurrentWeapon에 넣어주어 스킬 사용 타이밍에 바뀌도록 하려 했으나, 역시 실시간 업데이트를 시켜주지 않으면 제대로 작동하지 않았습니다.
<NEXT>
오늘은 큼지막한 버그 중 하나였던, Z 스킬 버그에 대해서 이야기를 시작했습니다. 이 내용은 워낙 복잡하고 많아서 끊어서 이야기 해보려고 합니다. 오늘 말씀드린 내용은 어떤 버그이고, 어떻게 발생하게 된 것인지 알게 되어 고치기 위해 여러 시도를 거치게 되었습니다. 다음에 이어서 어떤 시도를 통해서 어떤 것을 새롭게 알게 되었는지 이야기 해보겠습니다. 감사합니다.
'게임 프로그래밍 > 게임개발 중급' 카테고리의 다른 글
게임개발 중급(107) - Monster Killer(69) (4) | 2024.11.16 |
---|---|
게임개발 중급(106) - Monster Killer(68) (2) | 2024.11.12 |
게임개발 중급(104) - Monster Killer(66) (4) | 2024.11.10 |
게임개발 중급(103) - Monster Killer(65) (2) | 2024.11.09 |
게임개발 중급(102) - Monster Killer(64) (4) | 2024.11.08 |