원래 계획은 다음 배경에 등장하는 엑스트라들을 그리는 것이었다. 하지만 네트워크 코드작업이 일단락되었고 테스트가 필요하다. 테스트는 빠를수록 좋으므로 이 버전을 먼저 만들기로 하자. 내부 테스트가 끝난 후엔 배포버전을 만들어야 한다. 이는 모든 캐릭터가 등장하는 마지막 테스트 버전이 될 것이다.
배포를 고려한다면 해야 할 일이 꽤 있다.
멜라의 스킬 추가
다국어 지원 시스템 구축
네트워크 UI
멜라는 명색이 끝판왕인데 죽음의 키스가 1회용이다보니 스킬이 1개 줄어드는 효과가 있다. 때문에 실제로 게임을 좀 하다보면, 사용할 스킬이 마땅치가 않다. 액티브 스킬이 하나 더 필요하다.
대공기 비슷한 걸 하나 추가하도록 하자.
1.31
이펙트까지 올리고 완료.
작업보드에 있는 버그들도 처리하고 가자.
2.1
코드를 GGPO용으로 바꾸면서 여러가지 작고 사소한 문제들이 생긴다. 이런 작업들이 코드내에서만 해결되면 별 상관이 없으나, 에셋의 정보를 바꿔야 하는 경우 모든 에셋을 순회하며 이을 체크해야 하는 골치아픈 상황이 생긴다. 프로그래머라면 이를 자동화해서 처리할 수 있겠지만 이를 위해 툴을 만드는 것도 쉬운 일은 아니다.
그래서 이런 툴은 AI에게 맡기면 편하다. 빠르게 만들어줄뿐만 아니라 거의 완벽하다. 좋은 시대다.
지금까지는, 캐릭터들의 엉덩이가 흔들리지 않았다. 그 이유는 티도 안나는데 속도를 희생해가면서까지 왜 굳이 물리 적용을 해야 할까? 라는 이유였다. 하지만 유튜브의 댓글중 하나가 인상깊었다.
“티도 안나는데 굳이 해야 합니까?”
“우리가 알아볼 것입니다.”
그래서 적용하고 있다(…) 사실, 별로 성능에 부담을 주지는 않는다.
버그는 다 잡았다. 이제 다국어 지원을 위한 밑바탕 작업을 해보자.
일단 공부가 필요하다. 이 영상에서 잘 설명을 해준다. 열심히 따라해보자.
2.2
일단 3개국어로 진행한다. 일본어는 원래 예정엔 없었으나 폰트가 다를 경우의 테스트를 위해 필요하다. 깨지는 언어를 어떻게 처리할 것인가? 적어도 폴백이 나와야 한다.
엑스트라들의 모션은 단순할 것이다. 그래봐야 팔을 흔든다던가, 몸을 흔드는 반복동작이다. 이를 위해 스파인을 배워야 할까? 가격은 둘째치고 배우기가 몹시 귀찮다. 블렌더로 대충 떼워도 되지 않을까?
GhatGPT가 알려준바로는 이런 애드온이 내장되어 있다. 내장되었으나 비활성화 상태인 애드온은 대체로 안정성에 문제가 있거나, 주력으로 사용되지 않는 기능들이다. 이것이 실마리가 될 지 모른다.
예상보다 잘 가져오네?! 옵션을 몇개 잘 맞추기만 하면 관절들을 플랜으로 가져오는 건 쉽다.
하지만… 자동으로 짤라주는 기능이 어렵다. 지오메트리 노드를 이용해 Convex Hull로 짤라봤는데, 정확도가 매우 떨어진다. 더불어 관절을 제 자리에 위치시키는 것도 수동으로 해야 한다. 흐음. 뭐, 이 정도는 어렵지 않으니, 진행하기로 하고…
이제 아틀라스 문제. 모든 관절텍스처는 개별처리되고 있으니 베이킹해야 한다. 먼저 원본 메쉬를 복사하고, UV를 Pack, 그 다음 Extrusion을 1cm정도 준다음 베이킹하면 될 것 같다.
일단 메뉴부터 만들고… 개인툴에 애드온 기능 추가하는 게 참 오랫만.
…을 하려다가 생각해보니 어차피 굽는 건 한번에 할텐데 뭣하러 자동화까지..란 생각에 그만 둠
기술적인 문제는 해결이 된 것 같으니… 분절부터 시작해 보자.
1.23
Image as Plane의 옵션표 저장
Material Type : Emit
Shadow Mode : None
BackfaceCulling : True
Align: Y-
Plane dimension : Dpi, 50
엑스트라의 애니메이션은 이게 끝이다. 기술적인 문제는 없을 것으로 사료되지만, 그래도 잘 나오는지 테스트는 필요해 보인다.
UVPackMaster로 UV를 배치한 후, 베이킹한다. 이는 텍스처를 한장으로 만들어 최적화를 하는 데 사용된다. 물론 관리도 쉽다.
잘 나오긴 하는디.. 왤케 타지.. 뭐, 나중에 확인할 일이다.
1.24
2번도 분절, 애니메이션 완료
3번 분절. 여기서 폴리곤을 최적화해주고 배치를 해야 한다. 스파인2D는 이 과정이 자동이라 편하다. 2D애니메이션을 주력으로 한다면 여전히 스파인만한 툴이 없을 것이다. 하지만 애니메이션이 익숙치 않으니까 이번 프로젝트는 블렌더를 쓰자.
3번도 완료
4번도 완료
비틀비틀 5번도 완료
1.25
뒤뚱뒤뚱 6번도 완료
감자 깎는 7번을 지나
1.26
고기도 먹고
가장 힘들 것으로 예상했던 점프캐릭터, 예상대로 가장 어려웠다.
1.29
10번. 앞으로 2개.
벌써 무료기간이 끝났다. 그런데 무료체험을 하니 3개월 더 준다! 어차피 그림이란 것이 호흡을 길게 봐야 하는 소재라 서두르지 않는다. 돈독만 오른 어도비는 좀 배워라.
11번도 완료. 얘는 움직임 폭은 적은데 레이어구조가 복잡해서 시간이 오래 걸렸다.
12번까지 완료. 이제 관절별로 쪼개져 있는 텍스처를 베이킹해야 한다.
인스턴싱이 아니니 텍스처를 합친다고 드로우콜이 줄어들지는 않을 것이다. 다만 UV의 덩어리(블렌더에선 이를 Island라고 한다.)가 캐릭터를 개별로 다룰때보다 작아지니, UV상의 로스는 줄어든다. 이것만으로도 베이킹을 할만한 이유는 충분하다.
그림자를 2번째 패스로 처리. 2패스는 이럴 때 쓰라고 있는 것이다.
하지만 2번째 태그를 처리할 땐 UniversalForward가 아닌 SRPDefaultUnlit태그를 사용해야 한다. 라이트를 받지 않는 보조태그로 이와같은 그림자를 처리하기엔 딱이다. 이렇게 해도 되는 지는 모르겠으니.. 일단 빌드를 해볼까.
…를 시도했으니 실패. 이건 로딘에게 물어보자.
일단 몽땅 불러오자. 잘 불러진다.
최종적으로 배치하고, 애니메이션 속도가 느린 친구들은 게임과 어울리도록 속도를 높여준다. 처음 작업한 색감 그대로 게임에 넣으니 엑스트라들이 너무 생생한 색감을 가져 메인 캐릭터와 구분되지 않았다. 이것도 캐릭터가 부각되도록 색을 조금 눌러줄 필요가 있어 셰이더를 수정한다.
늘 그렇듯 처음이 힘들다. 두번째부터는 좀 수월해질 것이다. 다음은 숲의 나무꾼을 그려보자.
이번 작업 목표엔 그림뿐 아니라 스파인 학습이 포함된다. 배울 게 참 많다. 일단 그림을 그려보자.
최근엔 옷을 입히기 전에 누드크로키를 한 번 거치고 있다. 처음엔 연습삼아 했던 것이지만, 정작 이를 진행하니 전체적인 비율이나 동세를 교정하는데 상당한 도움이 된다.
이제 디자인을 하고…채색에 들어가자
1.9
색칠을 어디까지 할 것인가…? 기준을 정하는 건 늘 어렵다. 너무 빡빡하면 추후 작업이 어렵고, 너무 느슨하면 퀄리티가 떨어진다.
타임오버
1.11
이번 주는 이벤트가 많아 생각보다 그림을 그릴 시간이 많지 않았다. 진행시간이 절대적으로 적은 것도 있었지만, 사실 망설임이 더 컸다. 이 방법은 옳은가? 에 대한 의심. 시간이 지나 다시 마음을 잡고 하려 보니, 현재 진행하고 있는 스트로크 기반 채색법이 다소 어렵다는 인상을 받았다.
전통적인 방법을 사용해보도록 하자.
내가 선따기를 기피했던 이유는 두가지 이유가 있다. 첫번째로 귀찮았고, 두번째로 선화에 자신이 없었기 때문이다. 그런데 클립스튜디오의 선은 포토샵과는 다른 맛을 준다. 무슨 이유에선지 모르겠는데 꽤 예쁘게 그려진다. 손떨림 보정기능인가…? 벡터레이어 때문인가? 어쨌거나 이걸 사용해서 다시 그려보도록 하자. 3번째 도전이다.
이렇게도 그어보고, 저렇게도 그어보다가 결국 에어브러시 스타일로 회귀했다. 선을 그어두니 잔주름엔 칠을 하지 않아도 디테일이 살아있어 노력이 덜 든다. 그나저나 클튜의 마법봉이 포토샵보다 좋은 느낌이다. 원하는 영역을 딱딱 잘 선택해 준다. 쓸수록 마음에 드는걸!?
세부 디테일을 선에 맡기니 일이 꽤 쉬워진다. 1번 엑스트라 완료. 이대로 연습을 반복해 보자.
M3까지의 일은 단순했다. 핵심컨텐츠를 개발하고자 했던만큼, 주력이 되는 캐릭터를 만들고 그와 매칭이 되는 배경을 만드는 일이다. 이제는 모든 캐릭터는 플레이가능한 상태. 여기까지 개발하면, 어쩐지 다 된 것처럼 보인다. 하지만 게임을 런칭해본 사람이라면 알고 있다. 진짜 일은 이제부터 시작이다. 먼저 남은 일을 정리해보자. 빠진 게 있으면 생각날 때마다 추가한다.
M4
네트워크 대전
다국어 지원시스템 구축
CPU대전 – AI준비
캐릭터 시나리오/대사 확정
시나리오 모드, 다이얼로그 시스템
일러스트레이션
스테이지 배경인물들 제작
스팀페이지 개설
도발 및 승리포즈2
M5
캐릭터 인트로/엔딩 웹툰
사운드(음성, bgm포함)
온라인 매칭
PV제작
미니게임(무한대전, 통깨기)
의상파괴 모델링
추가복장 모델링
코드는 GGPO를 사용한 네트워크 플레이를 위해 로딘의 손에 넘어가 있는 상태이다. 안정화 기간동안 그림을 그리자. 일단 손을 풀어야 한다. 컴퓨터로 그림을 그린 지 너무 오래 됐다. 난 AI이미지를 좋아하지만, 캐릭터 이미지엔 AI를 쓰지 않을 것이다. 그림을 그리는 게 이 프로젝트 최대의 즐거움인데 이걸 기계에게 넘겨줄 이유가 없다. 작업하기 귀찮은 배경에는 종종 사용할테지만, 이것도 에셋을 더 많이 쓰지 않을까 싶긴 하다.
연말동안은 그림만 그려보도록 하자. 일단 밥을 먹고…
시작
12.25
색칠 공부 중. 때늦은 케데헌 루미
12.26
그리다가 질린 루미와 (그리고 올리고 나서 발견한 요즘은 AI도 실수하지 않는다는 손가락 6개와)
토머먼트는 Parsec을 통해 진행이 됐지만, 아무래도 외부 프로그램을 사용한 네트워크 대전이라 그렇게 핑이 좋지 못했을 걸로 예상이 됩니다. 어려운 환경(?)속에도 토너먼트를 진행하느라 고생한 참여자분 모두에게 감사하다는 말을 전합니다.더불어 최종 승자이신 Elis01님께 큰 박수를 보냅니다. 아래는 경기 영상입니다!
현재 배틀퀸은 GGPO를 통한 자체 네트워크 통신을 개발 중에 있습니다. 전 네트워크 코딩을 못해서 지인의 도움을 받고 있어요. 다음 번이 있다면 조금이나마 나은 환경으로 게임을 할 수 있다면 좋겠네요!
비네트의 설정은 고민이 많다. 처음엔 숲속의 카페로 설정을 했다가, 그 다음엔 해변가로 바꿨다가… 결국 호수가 정도가 적절하다. 싶어서 그 정도에서 타협을 보려다가…카페란 설정이 적절한가? 싶다가… 고민이 많다. 캐릭터 자체가 인스타감성 충만한 백치이기 때문에 이렇게 설정하긴 했는데, 또 너무 현대적이면 안될 것 같고…
일단 제미니에게 물어서 이미지를 뽑아보았다.
괜찮기는 한데, 음.. 뭐 좋아. 하지만 게임에 사용하려면 나무를 하나하나 떼어서 리소스화 해야 한다. 쓸만할까. 나무를 하나만 그려줘.
아 옘ㅂ.. 이모지 만들고 싶은 게 아니고 리소스만들거야. 그리고 배경 투명도 아니잖아!
몇 번 리젝을 한 끝에 얻어낸 결과
쓸만은 한데, 원하는 나무 질감이 아니다. 이걸로 삽질할 바엔 그냥 그리는 게 속시원할 것 같다.
그런데 이런 재미니에게 의외의 재능이 있었는데
뜻밖에 텍스처를 되게 잘그려준다. 바닥 칠할 때 쓸만할 것 같다. 어쨌거나 AI는 재밌는 건 다 지가 해서 별로다. 텍스처나 원경같은 재미없는 것만 시켜야지…
이런 건 에셋써서 뽑으면 되는데, 너무 디테일하다… 제미니야. 이걸 좀 단순화시켜줄래?
옘ㅂ..ㅇㄴ롱ㄶㄹㅇㄴㅁ GPT야! 도와줘!
더 이상 진행했다간 홧병이 날 것 같으니 그만하자.
일단 호수가 카페설정은 유지하자. 건물이 한채 있지만 화려하면 안된다. 마침 에이콘에서 적당한 걸 발견했다.
재야의 고수가 살 것만 같은 집이다!
집을 기준으로 일단 러프 스케치
그리고 에셋스케치
오브젝트를 대충 배치하고 또 에셋스케치
12.11
제미니를 잘 쓰려면 어떻게 해야 할까? 를 고민… 전체씬을 렌더하는 건 예쁘긴 해도, 이미지를 조각을 내야 하는 입장에선 게임에 사용할 수가 없다. 여러모로 써본 결과로는 나노바나나가 아무리 좋다해도 결국 기존의 이미지 확산형 AI(스테이블 디퓨전)방식에서 크게 벗어나지 못했다는 느낌이 든다. 그냥 뎁스, 케니등의 스크립트가 일반인도 배우지 않고 사용할 수 있도록 쉽게 적용될 뿐. 이게 뭐가 문제냐면 게임 리소스로 사용하기 위해선 현실에 없는 것처럼 원근이 먹지 않거나 거의 없도록 렌더링해야 한다. 또한 스크롤과 애니를 위해 ‘부분’만 떼어야 하고, 완전한 사이드뷰 렌더링이 되어야 한다.
하지만 그 어떤 것도 알아먹지 못했다.
그렇다면 이 이미지를 로뎅에게 부탁해 3D로 만든 다음 사이드뷰로 캡처하는 방법을 생각해볼 수 있겠다. 하지만 로뎅은 지점토처럼 모델링을 해준다…그리고 그걸 수정할 바에야 손수 처음부터 만드는 편이 낫다.
결국 기존의 방식보다 나은 대안을 찾지 못했다. 하지만 하나 건진 건 있다. 원근을 피할 수 없다면 모든 사물을 탁자 위에 올려놓고 생성해달라고 부탁하면 된다.
이러면 이미지를 비교적 눈높이에 맞춰준다. 하지만 여전히 원근이 적용된 상태이기 때문에, 화분이나 풀같은 작은 소품만 가능하다. 소품을 모델링하거나 찾는 수고를 생각하면 상당히 쓸만할 지도 모른다.
제미니로 이것저것 시도하다가 도무지 견적이 안나와서 이것저것 찾아보다가 괜찮아 보이는 걸 발견했다.