[CoronaSDK] 블록 어태커 개발 일지
시작 글
뭐, 예상했던 바이지만, 이번에도 이렇게 새벽이 되어서야 컴퓨터를 켜게 되었다. 이 프로젝트와 관계 없는 이야기들은 구구절절 일기장에 쓰도록 하고, 아무튼 바로 개발기에 대해 끄적여 보도록 하자.
이번에는 히스토리가 생각보다 꽤 긴데, 한 일이 많았다기보단 폴리싱에 힘을 썼기 때문일 것이다. 뭐, 저번주 보다는 조금 더 의욕적이었던 것 같기도 하지만.
어디 보자. 어떤 일들을 했더라?
이번주는 대대적으로 전투 관련해서 폴리싱을 거쳤는데, 이전보다는 확실히 동기가 확실한 전투가 되었다. 아, 노답이다. 어떻게 고치지? 했던 전투가 그래도 그나마 굴러가게는 되니 그게 바로 의욕의 원동력이었던 모양이다. 확실히 고양되었었구나, 나.
작업
이번주 작업 분량
1. 전투 중 QTE 기능
저번주에 이야기했던 대로 조금의 기능을 첨가했다. QTE 타입 중 적을 스턴시키는 타입의 QTE가 바로 그것이다.
공격 QTE를 모두 달성하고 이어서 달성할 수 있는 QTE의 형태로 넣었는데, 뭐. 넣고 보니 방어의 이미지를 좀 지우긴 하지만 그래도 방어나 공격 중 하나를 택하는 방식으로 적의 공격을 상쇄할 수 있다는 점에서 다양성과 전략성을 높이는 것 같아서 유지시키기로 했다.
이미지도 수정하고, 뭐. 나름대로 이뻐 보이도록 노력해 보았으나 3프레임으로 이뻐봤자 얼마나 이쁘겠어.
고치는 김에 모든 QTE의 애니메이션 중에 Scale 애니메이션도 넣어서 조금 더 눈에 띄도록 해보았다. 이것도 괜찮아서 그냥 넣어두기로 결정.
2. 전체 QTE 달성 시 x2 데미지
방어 QTE의 존재의의가 아무래도 희미해지는 것이 걱정되서 넣은 기능. 뿌요뿌요의 싹쓸이! 같은 느낌이 되었으면 했지만, 연출까지 넣어보았으나 그렇게 확실히 임펙트 있다는 느낌은 안 드는데 무엇이 문제일까.
그래도 방어 QTE의 존재의의를 보강시켜준다는 면에서 게임의 완성도에는 충분히 좋은 영향을 미치는 것 같다.
역시 연출이 문제겠지..?
3. 피격 시 Shake 양을 데미지에 따라 다르게 조절
이건 사실 원래 있던 기능이었는데 너무 조잡해 보여서 모든 공격을 같은 Shake 연출로 통일했었다. 이번에 데미지가 너무 가변적이 되니 좀 더 직관적인 공격 연출을 위해 다시 이전으로 롤백해 보고자 하는 생각이 들어서 다시 적용했다.
다시 적용했다는 말은 사실 좀 어폐가 있는데, 이전 코드를 보니 공격 데미지에 Shake의 흔들림 세기 뿐 아미라 흔들리는 양까지 늘어나고 있었다. 그러니까 큰 공격을 받으면 더 오래 흔들렸던 것. 의도한 것이었던 것도 아닌 거 같은 것이, 이름은 Amount로 해놓고 세기에도 그 값을 적용하고 있었다. 귀찮아서 대충 짰던 것이 분명한데.. 과거의 나를 추궁하고 싶었네.
아무튼 그래서 Amount는 고정시켜 버리고, 공격 세기를 데미지에 따라 조절하는 식으로 적용해 보니 나름 만족스럽게 결과가 나왔다.
저주스러운 귀차니즘 과거의 나.
4. 공격 연출 중 블록들 Dimmed 처리
공격할 때는 블록들과 Interaction이 불가능한데 전혀 Dimmed 처리가 되지 않고 있던 게 오히려 이치에 맞지 않는 일이었다. 연출을 손보는 김에 수정했다. 당연히 이게 직관적이고 진작에 넣었어야 하는 연출인데.
5. nightLight 쉐이더 수정
이전에 만들었던 nightLight 쉐이더가 문제를 일으켰다. 모바일에서의 UV 정밀도가 낮아서 생긴 문제이다. 이전에는 커다란 Rect에 반투명 검정을 덮어씌우고 특정 위치에서 동그렇게, 그리고 서서히 흐리게 빛을 적용시켰었는데.. 커다란 Rect가 문제였던 것이지.
모바일에서는 완전 깨져서 전혀 원으로 보이지 않는 빛이 생겨났고, 사실상 구조상의 결함이기 때문에 그냥 이 코드를 일단 포기하고 이전에 가산 블랜드로 빛을 추가하는 방식을 다시 고려하기로 했다.
이전에 이 방법 대신 지금의 방식을 사용한 이유는 이 방식보다 조금 덜 자연스러워서.. 였는데, 뭐 입을 뗄 만큼 그렇게 부자연스러운 건 아니었기 때문에..
nightLight 타입 오브젝트는 결국 화면을 가리는 검정 반투명(밤) + normalLight(빛의 원) 형태로 치홛하도록 코드도 보완했다.
그래도 이렇게 손을 대는 김에 쉐이더 코드도 정리할 수 있었다. 깔끔해졌으니 나름 만족.
6. 화면 페이드 중에는 준비 이벤트만 실행하도록 함
처음에는 화면 페이드 중에는 모든 이벤트 큐를 중단시키도록 고려했었다. 실제로 그렇게 만들기도 했고.. 물론 실패. 입장 시 쌓인 이벤트 큐 중에는 각종 초기화를 위한 이벤트(캐릭터가 어떤 애니를 취하고 있다거나)도 포함되어 있는데, 그걸 페이드가 끝날 때까지 지연시키니 부자연스럽기 그지 없었다.
그래서 결과적으로는 preRunning 태그가 true인 이벤트들만 페이드 중에 미리 진행시킬 수 있도록 정리했다.
맺음 글
어라. 생각보다 많이 했네. 폴리싱이 많았다는 것은 나의 착각이었던 것으로..
그렇다고 해서 뭐 가시적인 진전이 확실하게 보인 것도 아니니 어깨를 치켜 올리지도 말도록.
계속해서 열심히 해야 할 것이다. 아니, 그것보다 빨리 시나리오를 진행하라고.. 지지부진 하지 말고..