폴리곤 수가 왜 이리 많이 나오나 했는데 내부에 정교한 부품들이 들어 있어서 그런 거였다. 근데 지워도 조금 많다. 어차피 그위에 다시 만드는 건 피할 수 없는 건가 싶기도 하다.
엄청 줄였는데 줄인 티가 나지 않아서 만족스럽다.
이 둘이랑 카타나면 충분하려나 모르겠다. 오픈소스 커뮤니티에 큰 빚을 지고 나가는 듯싶다.
지금 이름들을 임시로 클레이 모어의 캐릭터 이름으로 지어 놓고 있다. 대검이 등장하면 보다 클레이 모어 느낌이 나지 않을까 싶다. 클레이 모어라는 작품은 소모품으로 여기는 조직 여성들의 우정 그리고 인간과 각성이라는 경계를 다루고 있는 작품이다. 작품의 큰 주제는 역시 각성자라는 괴물이 될 수 있는 부작용이 있지만 그 힘을 인간의 마음으로 컨트롤해야 한다는 초월이라는 개념이 아닌가 싶다.
그 다음 무얼 해야 할지 몰라서 진도가 잘 안 나간다. 멀 다음에 해야 할까. 칼은 이걸로 됐고 액션 동작은 등록했고. 아. 전투 AI 만들어야겠구나.
아침에 일어나서 생각을 해보니 AI 이전에 만들어야 할게 체력을 표시해주는 UI 시스템이다. 아 그리고 이동 가능 영역이 어디까지 인지 알려주고 이동 가능 영역을 통해서 행동력이 얼마나 남았는지 알려주는 것을 만들 필요가 있다. 이동 가능 영역의 경우에는 간편하게 만들 수 있는 격자 식이 있겠지만 최대한 엑스컴이나 쉐도우 런과 유사하게 만들기 위해서는 테두리식으로 만들어야 한다. 그렇다면 우선 도전해야 할게 테두리 식으로 만드는 거다. 일단 격자식과 달리 어떻게 만들어야 할지 아이디어가 쉽게 떠오르지는 않는다.
컴퓨터 앞에 앉아만 있는다고 아이디어가 생각나는게 아니니 산책이나 좀 다녀와야겠다.
아 나갈라고 사워를 하고 컴퓨터 앞에 앉았는데 문득 4개 면을 따로 만들되 원래 원형 범위보다 살짝 더 적은 원형을 만들고 그 작은 원형에 걸리는 거는 감추는 것도 한 가지 방법이지 않을까 싶다. 아마도 전번에 아이콘 테두리를 만들던 방식에서 아이디어가 나온 듯싶다. 문제는 이게 맨 가장자리 테두리만 잡히고 완전히 이어진 형태가 되지 못할까 걱정이다.
끝에 동그란 것도 잡아야 할꺼같은데 그것까지 생각하면 머리 아프니 일단은 일직선으로 해야겠다. 이게 안쪽 타일의 경우에도 갈 수 없으면 테두리를 만들어 주어야 되는구나. 그러면 그냥 영역이 아니면 일단 고저차의 경우에는 후순위로 미뤄두고 있다. 안 넣을 수도 있다. 일단 체력 UI는 엑스컴 크게 다르지 않게 만들면 될 듯싶다.
생각을 뒤집어서 추가하는 탐지 영역을 살짝 더 좀 더 넓게 만들고 갈 수 없는 타일이면 격자가 쳐지게 하는 방식도 가능할듯싶다. 아니면 그 테두리인 노드에서 사방으로 레이 케스트를 쏴서 이동 가능한 타일이면 테두리를 치고 아니면 테두리를 거두는 방식도 가능할 듯싶다. 이걸로 한번 해봐야겠다. 좀 실마리가 풀리는 기분이다. 역시 든든하게 먹고 운동하다가 퍼자고 일어나면 왠 간한 문제가 해결되는 듯싶다. 일단 이동 불가 영역에 대해서 벽이라고 해야 하나 그걸 표시해주는 걸 만들어 보자.
잠깐 그런데 오리진은 손잡이로 바꾸고 크기도 각 오브젝트가 균일하게 되도록 작업을 좀 해줘야겠다. 이게 표준화 규격화가 되어 있어야 게임 내에서 적용하기가 수월하다. 먼가 작업이 왔다 갔다 하게 되는 듯싶다.
아침에 또다시 자고 일어나니까 아이디어가 떠올랐는데 막힌 벽 노드들을 담는 리스트를 만들고 그 리스트 안에 들어갈 객체를 클래스로 따로 만들어야겠다. 들어갈 내용은 어느 방향에 벽을 띠울까다. 아 그리고 체력바 뜨는 것은 엑스컴 1에 가깝게 하면 될 듯싶다 이 경우 나누기와 나머지를 활용하면 될 듯싶다. 차후에 인공지능을 만들 때 난이도 별로 인공지능이 차등 적용되는 걸 만들어야 한다. 가령 엑스컴의 경우에는 높은 난이도에서는 아슬아슬하게 폭발 범위에는 들어가지 않도록 산개하는데 낮은 난이도에서는 운 좋게 한방에 다 보내버릴 수 있는 경우도 존재한다.
일단 우선 여기다가 살짝 조금 더 큰 원을 만들어야 될듯 싶다. 이 그리고 문득 보다가 생각난 건데 벽 처리 문제 때문에 패스 파인더를 손봐야 할 게 있긴 하다. 지금 급한 건 아니고 혹시나 나중에 까먹고 안 할까 봐 여기다 적어둔다.
엑스컴에서 한 번에 8칸씩 움직일 수 있었던걸 한번에 6칸씩 움직일 수 있는 걸로 바꿨다. 그래야 테두리를 만들기가 좀 더 수월하기 때문이다.
행동력을 둘 모두 소진한 경우에는 12칸 움직일수 있도록 하면 깔끔하게 잘 떨어지는 듯싶다.
6칸과 12칸이면 플레이어도 직관적으로 파악하기가 좀 더 수월할 듯싶다. 만약 이동 반경을 좀 더 넓히는 스킬을 만든다면 좀 더 복잡해질 수도 있을 듯싶기도 하다. 그 문제는 그때 가서 해결을 하도록 해야겠다. 이제 그다음에 해야 할 건은 이들 테두리와 장애물이 있는 타일들을 테두리 전용 리스트에 담는 거다. 이때 새로운 객체를 생성을 하는 쪽으로 가야 할 듯싶다.
이걸 이런 식으로 코딩을 하면 이렇게 뜬다. 문제는 버그가 발생해서 이동이 불가능해진다는 거다. 별도의 타일 검출 시스템을 만들어서 리스트에 담는 식으로 가야 할 듯싶다.
publicenumAreaBoundary
{
Default, OneBlock, TowBlock, NonWalkable,
}
이게 만들어 놓은 코드가 많아지니까 어딜 손봐야 할지 바로 생각이 안 난다. 아 진짜 나중에 스킬 만들면 혼란 먹었을 때 에어리어 좁아지고 이런 거까지 다 만들어야 될 텐데 머리가 빙글빙글 돌아가고 있다. 큰일이다.
아 이게 플레이어가 선택될을때 모든 장애물을 넣는 건 고민이 안되는데 테두리를 더블이랑 베이스 모드 넣어 놓고 검색을 돌려야 하는지 첨에는 더블 베이스 다 넣어 놓고 차후에는 베이스 테두리만 고려해야 하는지 고민이 된다. 일단 분리를 하는 쪽으로 가보자 어차피 커런트 플레이어의 현재 행동력이 얼마 남았는지 확인하는 건 어렵지 않으니 말이다.
일단은 별도 객체를 만들지 않고 타일 리스트를 만들어서 사방이 막힌 벽을 좀 표현해 봐야겠다. 아니다 그냥 타일 노드에 해당 기능을 넣어 놓으면 될 듯싶다. 나갈 때 다시 디폴트로 만들어 주는 작업만 좀 확실하게 해 주면 버그는 발생하지 않을 듯싶다.
이렇게 하면 일단 테두리를 잡아낼 수 있을까 모르겠다. 플레이 시 화면에 뜨도록 해보면 알 수 있을 듯싶다.
publicvoidResetBoard ()
{
MoveAreaOn();
currentAreaObstacles=newList<TileNode>();
currentAreaBaseBlocks=newList<TileNode>();
currentAreaDoubleBlocks=newList<TileNode>();
foreach (var node inNodeList)
{
SetTileStyle (node);
}
foreach (var node incurrentAreaBaseBlocks)
{
var blockNode = Instantiate (testBlock, newVector3 (node.transform.position.x, 0.2f, node.transform.position.z), Quaternion.identity);
blockNode.transform.SetParent (boundary);
}
foreach (var node incurrentAreaDoubleBlocks)
{
var blockNode = Instantiate (testBlock, newVector3 (node.transform.position.x, 0.2f, node.transform.position.z), Quaternion.identity);
blockNode.transform.SetParent (boundary);
}
MoveAreaOff();
}
서서히 목표를 향해 한 걸음씩 다가간다는 느낌이 든다. 이제 그다음 할 일이 장애물도 추가를 하는 거다. 그 다다음 일이 테두리 모드로 바꾸는 거다. 테두리 모드로 바꿀 때는 레이 케스트를 활용하도록 하면 될 듯싶다. 일단 테두리는 큐브로 간편하게 만들고 그다음에 스프라이트를 쓰는 걸 고려해 봐야 할 듯싶다.
이제 날씨가 따뜻해졌으니 밖에 나가서 운동을 꼬박꼬박 해야겠다. 그래야 이 지긋지긋한 두통을 해결할 수가 있을 듯싶다.
흐헉 아직 밖은 춥다. 계획 변경이다. 방 안에서 팔 굽혀 펴기 틈틈이 하는 것으로 바꾼다.
비주얼 스크립트 코드를 업그레이드했는데 먼가 약간 덜 스마트하게 업그레이드된 거 같은 느낌이 드는 건 왜인지 모르겠다. 자동완성이 예전에는 소문자를 치든 대문자를 치든 상관없이 바로 떴는데 이제는 엄격히 구분해줘야 하고 변수 자동완성이 추가 설치한 자동완성보다 후순위로 밀려서 불편하다.
이런 애드온도 생겼다. 에셋 스토어 쇼핑이 훨씬 더 쉬워진 듯싶다. 아 그리고 FX 이펙트 효과 같은 건 워낙 좋은 게 많이 있어서 사서 써도 될 듯싶다. 음악도 마찬가지. 외주로 해결할 수 있는 건 외주로 해결하는 게 속편 한 거 같다. 플밍 하고 모델링 기획에만 역량을 집중해야겠다.
이제 레이 케스트를 투척해서 이동 옆이 이동 가능한 타일인 경우에는 벽을 만들어 주는 작업을 하면 될 듯싶다. 근데 이것만 딱 올리면 유튜브 영상 분량이 안 나올 듯싶다. 최소 15초 분량은 나와야 하는데 말이다.
일단 유니티에 있는 기본 오브젝트를 가지고 만들어야겠다. 예쁘게 만드는 건 좀 천천히 생각을 해봐야겠다. 아 그리고 모든 옵스타클을 담는 게 아니라 베이스에 있는 옵스타클이랑 더블에 있는 옵스타클이랑 따로 담아야 할 듯싶다. 먼가 만만치 않게 복잡하네 그냥 테두리 색은 베이스나 더블이나 같은 색으로 해야겠다. 그럼 그냥 통합 리스트를 만드는 게 좋을 듯싶다.
아까 자동 완성 바뀐 게 불편하다고 했잖아. 그거 해결하는 방법을 알아냈다. 그 변수명을 찾아갈때 가령 currentBoundary면 cb이런식으로 앞자리를 치면 바로 맨 상위에 자동완성이 뜬다. 그 메커니즘이 바뀐 거인데 이런 식으로 바뀐 게 오히려 좋은 변화인 듯싶다. 아까 불편하다고 한건 취소해야겠다.
publicvoidSetTileStyle (TileNode node)
{
if (Physics.CheckBox (node.transform.position, box, Quaternion.identity, LayerMask.GetMask ("Obstacle", "Player", "Enemy")))
{
node.tileStyle=TileStyle.NonWalkable;
if (Physics.CheckBox (node.transform.position, box, Quaternion.identity, LayerMask.GetMask ("MoveDoubleBlock")))
왠지 지금은 의기소침해 있지만 이 기능을 만드는 데 성공하고 나면 역시 난 천재 다며 그러면서 많이 신나 있을 듯싶다. 참 어리석은 중생인 듯싶다.
자동차 오브젝트는 홀수에 놓아두어야 하더라 어떤 건 홀수에 놓아야 하고 어떤건 짝수에 놓아야 하고 정신없다 프리 팹 만들 때 조금 신경을 더 써야겠다. 이걸 깜박한 듯싶다. 레이 케스트 관련된 건 예전에 엄폐 관련된 일지를 참고하면 될 듯싶다. 이미 만들어놓은 코드를 재사용에 용이하게 수정하면 될 듯싶다. 영역에 따라서 색을 바꾸는 건 리턴 값을 만들어 주면 해결이 될 문제 있은 듯싶다.
시도해 봤는데 이상하다. 하하하하하하 쉽지가 안구먼.
쉽지 않아. 쉽지 않아. 쉽지 않아.
점점 먼가 원하는 대로 되어 간다.
지금 문제가 전 방향을 검색 안 하고 한 방향만 하는 건지 잘 모르겠는데 뛰어 뛰 엄이 존재하는 거랑 오브타클의 경우에 반영이 안 되고 있다는 점이다. 레이어 마스크를 에어리어가 아닌 노드로 바꾸면 문제가 해결될 듯싶다.
기존에 선택했을 때 어떤 캐릭터를 선택했는지 알려주는 걸 지우고 새로 그 부분은 따로 만들어 주어야겠다. 그러려면 지금 해놓은 거에 색을 바꿀 수 있도록 해 주어야 한다. 지금 매쉬로 되어 있는걸 스프라이트로 교체해줄 필요가 있다.
소소한 부분까지 해결했다.
그다음으로 만들어야 할게 플레이어의 근접 공격 시스템이다. 근데 그전에 만들어야 할게 체력 표기 UI 시스템인 듯싶다. 이게 UI를 우선적으로 만들면 좋은 게 디버깅이 좀 더 수월해지는 장점이 있다. 그냥 때리면 심심하니까 파티클 시스템을 어떤 걸 사서 넣어야 할지 고민을 해 봐야겠다. 지금 분위기랑 잘 어울리는 것이 필요할 듯싶다. 에셋 스토어 파티클이 마법 파티클이 많아서 그냥 총알이 나가기보다는 레이저 빔 같은 게 나가는 사이버 펑크풍 약간 판타지 느낌을 섞어야 하나 고민이 든다.
플레이어의 공격 모션까지 만들면 그다음으로 유튜브 영상을 올리는데 이번엔 각종 게임 커뮤니티에 한번 올려서 반응을 좀 봐야겠다. 그다음이 AI의 근접 전투 시스템을 만들어야 한다. 그다음은 플레이어의 원거리 공격 시스템을 만들고 마찬가지로 원거리 AI 시스템을 만든다. 그다음이 엄패물을 고려하는 발전된 AI 시스템을 만들어야 할 듯싶다. 거기까지 가면 얼추 게임의 구색은 맞추게 될듯 싶다. 그 이후로는 배경 오브젝트를 만들어야 할듯 싶다.