그레텔의 애니메이션 #3

11.23

그레텔의 스킬은 과거 닐리의 스킬을 구상할 때 정해둔 것이 하나 있었는데, 바로 순간이동이다. 닐리의 스킬을 구상할 때 마법사니까 워프를 주려고 마음을 먹었다가, 그건 암살자에게 주는 것이 맞지 않을까? 싶어서 아껴뒀던 것이다. 게다가 닐리는 대기군인형 모으기 캐릭터라 빠른 조작을 해야 하는 워프는 어울리지 않는 감이 있다.

그럼 일단 순간이동은 확정. 두번째로 구상해두었던 것은 공중에서 내리꽂는 공격이다. ↓+조작을 통해 아래로 빠르게 내리꽂는 공격이 어울리지 않을까?

세번째는 기본 조작과 관련된 것인데, 아직 벽점프 캐릭터가 개발되지 않았다. 날렵한 캐릭터에겐 대체로 들어가긴 하지만, 이것에 대해선 조금 고민이 있다. 벽점프의 단점은 공중으로 너무 높이 올라간다는 것이고, 춘리의 공중밟기 같은 기술을 넣을 것도 아니라 수직 공격이 용이한 캐릭터로 만들 생각도 없다. 차라리 길티기어처럼 공중 대시형태가 더 쓸모있지 않을까? 좀 더 고민을 해보자.

그래서 리스트를 정리해보자. 괄호는 개발 코드이다. 그대로 기술명이 될 수도 있겠지만, 그보단 파일 이름이나 코드를 짤 때 기준으로 사용할 이름들이다.

  • 순간 이동(Warp) →A or B
    • A는 적의 앞, B는 적의 뒤
  • 공중으로 순간 이동(WarpAir) ↑ A or B
    • A는 적의 앞, B는 적의 뒤
  • 내리꽂는 공격(FallingThrust) 공중에서 ↓A or B
  • 공중대시잡기(SkySnatch) 공중에서 →A or B
  • 굴러서 띄우기(RisingKick) → K
  • 2단 차기(SpinnigKick) ↑ K
    • 굴러 띄우기 연계나, 마무리 콤보용으로 사용할 2히트 공격
  • 그림자 환영(ShadowMirage) 공중에서 ↓→ B 초필.

정리하며 느낀 건데, 벽점프가 있는 편이 좋겠다. 공중 기술이 많아서 공중 조작(대시든, 2단점프든)이 상대쪽으로 향할 경우 너무 유리하게 작용할 가능성이 높다. 게다가 평타 후나 약손상태에서 추가조작을 허용할 것인가?에 대한 조건도 다소 애매해진다. 시스템을 짤 땐 단순하게, 그리고 여러 요소와 충돌하지 않는 편이 좋다.

이제 제작해 보자.

순간 이동해서 치기. 실제로 구현하고 나면 KOF 야시로의 ‘이얏!’같은 느낌이지 않을까.

공중잡기. 이대로 낙하.

11.25

그리고 쿵! 엔진 미리보기도 안하고 만들었는데 한 방에 잘됐으면 좋겠다.

11.26

오늘의 깨달음. 회전키를 반대쪽에 붙일 때 오일러 모드가 다르면 Mirror가 되지 않는다. 하지만 상단 툴바의 나비버튼 모양의 Mirror는 오일러 모드와 상관없이 잘 작동한다.

굴러서 올려차기. 장풍도 피해지면 좋겠는데… 충돌박스가 자동생성이라 잘 되려나 모르겠다.

2단 돌려차기.

11.27

구현의 시간이다. 일단 순간이동A

순간이동B

11.28

공중순간이동. 이펙트가 들어가면 좀 순간이동처럼 보이려나.

하강공격구현. 공중기는 전혀 구현이 안된 상태라 구현과 함께 진행하느라 진행이 더디다.

11.29

모든 것이 예외 투성이었던 공중잡기. 힘들었다.

11.30

공중잡기에서 이어지는 코드 수정 중 이전스테이트를 처리하는 부분에서 버그를 발견했다. 그런데 이게 왜 지금까진 제대로 돌아갔지..?!

유니티가 간헐적으로 멈춤 현상이 있긴 한데, 오늘따라 자주 멈춘다… 왜지

그레텔이 스킬이 좀 많다. 초필을 제외한 나머지 스킬을 제작 완료. 초필 구상이 빡센데.. 이 작업도 오래걸릴 것 같다.

그레텔의 애니메이션 #2

11.15

데미지 모션 시즌. 아무리 냉혹한 암살자라도 때리면 맞아야지?

방어모션은 보간 애니메이션이 있을 뿐, 숨쉬기 애니메이션은 없다. 처음엔 숨쉬기를 넣었었는데, 방어는 완전히 동작이 굳어야 잘 어울린다.

11.17

토요일에는 밀린 웹툰을 보며 놀았다. 요새 게을러져서 노는 시간이 많아졌다. 아이에게 해야할 일을 다 하고 놀라고 나무라는데, 난 그럴만한 자격이 있는가?

일어서기. GIF애니로 만드니 프레임이 짤려서 잘 보이지는 않지만, 90년대 홍콩 액션 영화에서 많이 보이던 튕겨오르며 일어서기이다. 시간이 제법 오래 걸렸는데, 사실 일어나기 모션은 그리 중요한 모션은 아니니 그냥 대충 만들어도 게임하는데 지장은 없다. 하지만 보다 날렵한 느낌을 주고 싶었고, 시간을 좀 더 투자했고, 보다 만족스러운 결과를 얻었다.

스턴을 제작하려는데.. 아차… 얼굴의 그늘표현이 lerp인가보다. 내가 이거 파라메터로 빼놨던가…

없넹…

유니티에서 빼기로 하자. 그나저나 이마의 저… 다이아몬드가 성분이 Body라서 같이 어두워지지 않는 문제가 있다. 이걸 고치려면… 셰이더 계산식을 뜯어고쳐야 하는데 일이 너무 커진다. 그냥 넘어가기로 하자.(시간을 투자해서 … 어쩌고 한지 1시간도 되지 않은 시점이었다.)

스턴도 완료. 이제 게임에 넣어보자

가시 테스트. 통과.

…뭐지? 왜 유니티 셰이더는 멀쩡히 잘 나오지…?

11.18

각 캐릭터에게 잡히기 포즈, 패배포즈… 원래 잡기 들어가려 했는데, 이것만으로도 타임오버.

내일은 이마의 다이아몬드를 얼굴로 옮겨보자.

11.19

// color = lerp(color, _FaceDarkColor, faceDarkMask);  
color *= saturate(_FaceDarkColor + faceDarkMask);

유니티의 얼굴 셰이더에선 어두워진 얼굴을 처리하기 위해 컬러마스크를 곱해주고 있었는데, 블렌더에서 사용했던 방식을 주석처리한 흔적이 있다. 과거에도 뭔가 문제가 있었나..? 아…기억이 안난다.

뭐, 어쨌거나 유니티에선 제대로 나오니 그냥 이대로 하기로 하자.

패배 포즈도 제작

잡기를 만드는 중 타임오버.

11.20

B잡기 마무리. 그레텔의 이 등찌르기는 원래 뒤에서 목을 긋는 컨셉이었다. (뱀파이어 세이버의 바레타가 그랬듯) 그런데 이 표현이 너무 잔인하게 느껴져서 노선을 변경했다. 파괴력이야 장검이 더 좋을텐데, 이상하게 단검의 모션들은 어딘가 좀 더 잔인하게 느껴진다.

K잡기 마무리. 오늘은 여기까지. 게임에 적용하는 것은 내일 해보자.

11.21

오늘의 삽질. 모든 데이터를 넣었는데도 Grappling이 왜 작동이 안되는가?! 를 한참 헤맨 결과 애니메이션 이벤트를 빼먹었었다. 개발한 지 오래되니 별 게 다 기억이 안나네!

등찌르기의 경우 처음으로 타격자가 이동한다. 지금까지는 피격자가 던져지거나 제자리에 있거나.. 어쨌거나 가해자가 이동하는 경우는 없었다. 원래는 프리오리의 백드롭이 이렇게 이동을 할 예정이었는데 처리가 귀찮아서 제자리로 돌아갔더랬다. 그런데 그레텔은 피할 수가 없다. 원래 있던 자리엔 상대가 누워있어야 하기 때문에. 그래서 잡기 후 위치보정을 해줬더니 충돌문제가 발생한다. 이를 어떻게 처리하지…?

11.22

하루종일 지속되던 고민은 코드한줄로 싱겁게 끝났다. 생각의 꼬리 끝엔 결국 원점이 있었다.

음. 이제 기본 애니메이션은 다 한 것 같으니까, 스킬로 넘어가자. 그레텔의 스킬은 잔상때문에 기존의 셰이더를 좀 손봐야 한다.

그레텔의 애니메이션 #1

11.9

공부를 핑계로 잘 쉬었다. 이제 다시 시작해 보자.

그레텔은 앞서 제작한 2개의 캐릭터보단 전투적인 캐릭터이다.때문에 전투 동작은 떠오르는 것이 많다. (지금 생각해봐도 프리오리가 정말 어려웠다!) 레퍼런스가 풍부하다는 것은 좋은 것이지만, 그만큼 식상하기도 쉽다. 천천히 차근차근 진행해보자.

블렌더 4.0에서 포즈 어셋을 만들 때 가끔 에러가 난다. 이 에러는 0프레임에 로테이션 모드 키를 줬을 때 생긴다.

바로 이런 경우다. 로테이션 모드키를 조금 1프레임 뒤로 옮겨주면 해결된다.

Idle포즈는 많이 쓰이기 때문에 등록해 놓고 사용하면 편하다.

11.10

그레텔의 기본 이동 애니메이션. 셰이더와 다이나믹본을 붙이는 데도 시간이 꽤 걸린다. 생각보다 이미지가 안나와서 고민이 많은 캐릭터가 될 것 같다. 쉬운 게 없네!

11.11

공격을 만들자.

11.12

앉아서 강펀치

근접킥. 니킥 2번인데 너무 빨라서 안보인다. 실제 게임에서는 히트스탑이 들어갈 것이므로 잘 보일 것이다.

11.13

앉아서 킥. 원래 도레미에게 주려던 것이지만 아무래도 망치 때문에 각이 안나올 것 같아서 그레텔에게 할당. 그런데 이 모션이 정말 손이 많이 갔다. 난이도가 상당했던 작업

점프공격도 만들고…

생활리듬이 한 번 흐트러지니 제자리로 돌리기가 꽤 힘들다. 다시 마음을 잡아야 할 때

11.14

기본공격의 완료. 아.. 짧다. 예상했던대로 공격이 다 짧아..!

이제 다음은 데미지 모션들을 제작해야 한다.

벨의 이펙트

10.30

작업 프로세스는 러프->디테일->SDF생성인데, SDF가 없으면 결과물이 예측이 안된다. 때문에 러프를 SDF로 만들어 테스트를 하는데, 텍스처가 싱글채널상태라면 생성할 수 없다. 이것이 좀 불편하지만, 그 외엔 빠르고 정확하니까 용서하기로 하자.

요로케 생성해서

..그른데 영..

아주 마음에 드는 건 아니지만, 적당히 마음에 드니 여기까지 하도록 하자. 오늘은 타임오버

10.31

어제 작업물이 역시 마음에 안들어서 처음엔 볼 형태로 바꿨다가 결국 그냥 이미지로 수정. 이게 더 마음에 든다.

맞을 때의 이펙트를 만들던 도중 타임 오버. 결과물은 별 게 없었지만, 방향성을 잡아서 의미가 있던 시간이었다.

11.1

찌르기 검기는 원래 이펙트로 처리할 예정이었으나 블렌더 제어가 더 쉬울 것 같아서 그냥 메쉬를 새로 만들었다. 프리오리에 비하면, 벨은 새로운 요소가 꽤 많다. 초반4캐릭터 제작할 때도 두번째 캐릭터인 닐리가 그리 고생을 시키더니, 중반4캐릭터 제작할 때도 두번째 캐릭터인 벨이 고생을 시키는구나.

전기만 빼면 나머지는 그냥 먼지 붙이는 거라 어렵지 않다. 전에 제작했던 툴까지 있어서 더 쉽다. 역시 툴은 중요해.

벨 완료. 이제 그레텔로 넘어가자!

벨의 애니메이션 #3

10.26

벨의 애니메이션은 초필하나를 남겨두고 있긴 한데, 이게 할 일이 정말 많다. 먼저 전에 데미지 코드 리팩토링을 하며 콤보데미지 시 밀어내기 코드가 제대로 작동하지 않고 있었다. 콤보때는 기본적으로 밀어내지 않는 것이 맞지만, 연출을 위해 Push이벤트로 호출한 공격에 대해서는 예외를 허용하고 있는데, 이게 빠진 것이다. 달래의 마지막 킥 전에 밀어내는 코드가 빠진 채로 적용되고 있었다.

그래서 이를 적용한 현재까지의 진행상황. 찌르기 전에 밀어내기가 필요하다. 아이고, 손 많이 간다.

10.27

세컨더리를 자동화했다고 해도 크게 뚫리는 건 막을 수가 없다. 그리고 벨은 움직여줄 것이 참 많다. 머리카락, 숄, 치마…그래도 다행인 것은 이런 요소들이 몸에 착 달라붙어 있는 형태가 아니라는 것이다.

숄의 본을 보정.

10.28

벨의 모든 애니메이션 완료. 아직 좀 더 다듬을 것이 남았으나 오늘은 타임 오버. 폴리싱을 그렇게 빡세게 하는 것이 아님에도 모션이 워낙 많아 오래 걸린다. 특히나 잡기는 캐릭터마다 모든 경우의 수를 예상해서 만들고 있기 때문에 각 캐릭터마다 추가해야 하는 모션의 수가 배수로 늘어난다는 단점이 있다. 이렇게 무식하게 처리하는 방법 외에 달리 수가 없다. 공격자와 피격자간의 키가 다르고, 본도 같지가 않다. 처음부터 이를 고려하고 디자인을 했다면 편했겠지만, 그럼 디자인에 제약이 엄청 많아진다. 캐릭터 게임인데 몰개성하면 안되므로 고생을 해보자

10.29

다른 캐릭터에게 제대로 잡히는 지도 테스트.

2P컬러도 지정.

벨의 애니메이션 #2

10.17

술 마신 다음 날.

기본 애니메이션이 많이 끝났다. 차근차근 진행해 보자.

다음은 잡기관련 애니메이션을 해보자.

10.18

모욕1

10.19

모욕1 마무리

모욕2도 완료. 프리오리에 비하면 벨은 캐릭터가 확실하다보니 애니메이션이 좀 수월했다. 다음은 캐릭터 선택, 인트로, 승리/패배, 스킬… 아휴, 아직 많다.

10.21

패배 모션. “뭐…? 아..ㅆ… 왜!!” 하지만 아쉽게도 패배 애니메이션엔 대사가 없다.승자의 대사와 겹치기 때문에

게임에 적용. (사실 앨리스는 갑옷때문에 벨의 손이 더 아플텐데..!)

캐릭터 선택화면도 만들고.. 시간이 다 됐으니 내일 좀 더 다듬어 보자.

10.22

이제 스킬을 만들 차례. 벨의 레이피어는 전격계 레어템으로 설정했다. 처음부터 벨은 아도겐, 어류겐을 갖고 있는 표준형 캐릭터로 만드려 했기 때문에 장풍이 필요한데, 불은 닐리가 쓰고 얼음 주려니 캐릭터가 내정되어 있어서 전기로 결정했다. 금발은 원래 전기를 쓰지 않는가!

  • 전기장풍(→ A or B) – LightningArrow
  • 어류겐 (↑ A or B) – RisingAttack
  • 뒤로 뺐다가 치기 (←A or B) – BackThrust
  • 달려가 잡기 – 미정

뭘 했길래 이런 신나는 자세가 나왔을까?!

벨의 영상은 올리는 족족 노딱이 붙는데, 정작 검토요청하면 통과된다. 기계놈들이 PC에 물들어 있어서 매우 성가시다!

10.23

스킬을 만들고, 다듬자.

어류겐. 막히면 처맞는다. 앨리스와 다른 점은 2타이고, 맞아도 넉백되지 않는다.

회피 후 치기. 원래 앨리스에게 주려던 스킬인데 앨리스가 무게감이 있는 캐릭터라 폴짝 뛰는 모션이 너무 가벼워 보였기에 슈퍼아머로 바꿨었더랬다. 벨은 잘 어울리는 것 같다.

벨의 장풍은 전격계. 이를 위해 셰이더에 Flow속도를 제어할 수 있도록 수정을 했다. 그리고 이와 관련된 여러가지 코드들을 고치고… 나중에 또 번개 이펙트를 달고… 코드작업은 진행이 더뎌도 확실히 하는 것이 중요하다.

10.25

벨의 마지막스킬은 좀 복잡했다. 기본 컨셉은 KOF-쿄의 돌진기. 돌진해서 맞으면 추가타를 넣을 수 있는 기술인데, 돌진을 위해선 적에게 충돌하거나 위치가 바뀌는 타이밍을 얻어와 적용해주어야 했다. 이 과정에서 이틀간(출근을 하니 작업시간이 적어졌기 때문에!) 삽질을 했다.

커맨드 →K 후, K를 누르면 칼을 내밀고, 한 번 더 누르면 감전이다. 이 과정에서 감전타이밍을 정할 수 있다.

히트 시엔 이렇게 빨리 발동시키고

방어시엔 훼이크를 줄 수 있다.

이제 초필 하나 남았다.

벨의 애니메이션 #1

10.11

대기 자세가 특히 어려운 벨. 여전히 그렇게 마음에 들지 않는다.

10,12

대기자세를 좀 더 발랄한 느낌을 주는 형태로 변경

벨의 대기자세를 등록하려는데 문제가 발생했다. 오류메세지는 많은 정보를 주는 것 같지만 실제로는 큰 도움이 안된다. 원인을 추적해보니 상체의 회전방식 변경 키가 오류를 일으키고 있었다. Euler회전은 사용자가 축별 제어를 하기는 편하지만 짐벌락이 발생하고, Quaternion은 짐벌락은 없지만 축별 제어가 불가능하다. 둘 다 장단점이 있다. 때문에 혼용을 하기 위해 회전방식 변경에도 키를 넣어두는데, 이것이 오류를 일으키는 것이다. 블렌더의 버그인데, 일단 포즈어셋을 만들면 그 안에서는 또 회전키가 잘만 생성된다. 때문에 일단은 키가 없는 상태로 포즈어셋을 만들고 해당 포즈의 편집모드에서 회전키 변경 관련키를 넣어주어야 한다. 조금 번거롭다. 버전업되며 수정되었을까?

자가 충돌 문제는 면이 뒤틀리거나 꼬였을 때 발생한다. 대체로 3각이 아닌 면에서 발생하므로 이를 해결해 주면 된다. 문제는 몇 번 인덱스인지 알려주지 않는다는 사실이다. 메쉬를 차례차례 쪼개보며 소거법으로 알아내는 수밖에 없다.

문제는 어깨끈 메쉬에 있었다. 팽팽한 끈과 피부사이에 있는 평평한 면의 폴리곤을 사각이하로 정리해주지 않아 발생했다.

이제 메쉬엔 아무런 문제가 없다. 셰이더를 지정해보자.

여차저차 게임에는 띄웠다. 자세한 건 내일 다듬어 보자.

10.14

다이나믹본의 Inert는 물리 계산 기준 좌표계의 월드:로컬 비율인 것 같다. 1로 갈수록 로컬비율이 커진다. 이 값은 지금까진 뭔지 몰라 신경쓰지 않고 있었는데, 캐릭터의 움직임이 빠를 경우 지나치게 본이 깨지는 현상을 막아준다.

다이나믹 본도 설정 완료. 이동애니메이션도 완료.

이제 공격을 만들자.근접 2타.

기본 애니메이션 제작. 항상 영상을 올리고 보면 수정할 부분이 군데군데 보인다. 빌드만 프리징하면 버그가 나오는 것과 같은 이치

10.15

원래 앨리스에게 주려던 근접 발차기. 이유는 “류가 사용한다. = 1번캐릭터가 사용한다.” 라는 단순한 이유였는데, 당시로는 2타 예측이 안돼서 관두었었다. 애니메이션을 만들 땐 타격 지점을 어느 정도 예상해서 만들어야 하기 때문에 당시로선 난이도가 좀 있는 작업이었기 때문.

하단 발차기를 처음엔 이렇게 체조선수 컨셉으로 제작했으나, 정작 적용을 해보니 벨에게는 그닥 어울리지 않았다. 도레미가 어울릴 것 같은데, 망치를 든 채로 가능할까?

그래서 이렇게 수정. 하단 발차기는 만들 때마다 항상 어려운데 결과물은 대체로 마음에 들게 나온다.

방어모션.

벨의 키는 표준인데, 오로라가 참 작구나.

선 상태와 앉은 상태의 공격일 경우, 웬만하면 130cm이상을 타격하지 않도록 해야 한다. 도무지 각이 나오지 않는 경우라도 최대 140cm를 넘으면 안된다. 이것은 여러 삽질을 통해 얻은 교훈인데, 그 이상이 될 경우 대공에 너무 강해지고, 두번째로 키가 작은 오로라가 공격을 피할 수 있다. (실제로 초기의 앨리스의 발차기는 타점이 꽤 높은 편이어서 오로라에게 맞지 않았다.)

프리오리의 애니메이션 #3

9.29

얘는 벌려놓고 보니 스킬이 좀 많다. 때문에 공중잡기는 삭제하도록 하자.

9.30

초필 대회전차. 모티브는 사쇼2의 탐탐. 이 스킬은 같은 모션이 반복되는데, 지금까지는 (놀랍게도) 일반 모션엔 스테이트 루프 설정이 없었다. 닐리나 오로라의 잡기처리를 위한 잡기용 루핑처리를 bool값으로 처리하고 있었을 뿐이었는데, 일반공격 설정이 아무래도 번거로워 새로 리팩토링했다. 이 과정에서 잡기 처리도 stateLoop값으로 설정하도록 바꿨는데, 버그가 없다… 이상하다…(더 불안해)

일단은 스킬 애니메이션까지는 완료. 잡기 애니메이션이 아직 제작되지 않아 잡아 넘길 수는 없다. stateLoop에 약간의 버그가 있어서(없을 리가 없지!) 그걸 잡고 다음 애니메이션 작업을 진행하도록 하자.

승리/패배 모션

10.1

베이스 애니메이션은 끝났으니, 캐릭터를 선택할 수 있도록 추가하자.

얼핏 보면 다 된 것처럼 보인다. 하지만 아직 다음어야 할 작업들이 많이 남아있다. 실무에선 이를 폴리싱(Polishing)이라고 부른다. 들이는 시간에 비해 별로 티가 안나기 때문에 규모가 작은 회사에서 빠른 업데이트를 위해 생략을 하는 곳도 많다.

  • 표정 애니메이션
  • 세부 다이나믹 본 설정
  • 치마가 뚫리지 않도록 본을 조절
  • 각 캐릭터 잡기 애니메이션 확인
  • 루프 튐 현상 확인
  • 2P컬러 설정

10.2

가족 여행으로 인해 4일동안 부재.

10.6

돌아왔다! 작업재개!

미니스커트일 때 치마본을 수동으로 설정하는 것이 생각보다 불편하지 않다. 자동화에 목숨을 걸었던 지난 날의 시간이 아깝게 느껴진다.

10.8

자잘한 작업들 중. 치마가 안뚫리는지, 다른 캐릭터에게 잘 잡히는 지, 혹은 반복 모션이 튀거나 빠진 동작이 없는 지 확인한다.

10.9

애니메이션과 2P컬러설정도 완료. 이제 이펙트로 넘어가자.