본문 바로가기
영상

나루토 시노비 스트라이커 모작

by 오늘의논리 2024. 10. 31.
728x90

 

 

제작기간 2024.09.06 ~ 2024.10.25

제작 환경: Visual Studio 2022, DirectX11, Google Protobuf 패킷

 

내가 한것.

전체

 

제작중 어려웠던것.
1. 지형타기
2. 그림자 및 빛처리
3. 네비메쉬를 통해 서버에서 어색하지 않게 몬스터들이 길을 찾게 하는것
4. 렌더타겟을 이용한 후처리 쉐이더

5. 애니메이션 보간

6. 커스터마이징때 메쉬 교체

7. 서버



해결

1. 지형타기는 하늘위에서 맵 전체를 보는 렌더타겟을 만들어서 플레이어의 위치값으로 만든 렌더타겟의 픽셀의 깊이를 가져와 높이를 타게 하여 지형을 탔는데 처음에는 엄청 부들부들거리고 떨려서 내 위치 앞뒤좌우 픽셀을 가져와 보간해줬더니 부드럽게 높이를 탔다.

 

2. 그림자는 그림자 기준 뷰 프러스텀에 들어오지 않을 경우 내 그림자가 안보이고 그림자가 이상한 범위에 보이거나 하는 경우가 있어 일단 빛의 위치와 프러스텀이 무조건 플레이어를 비추게 동적으로 조절하여 컨트롤 했다. 그리고 이상한 곳에 나오는 이슈는 스크린 좌표계와 한번 더 비교해서 그 안에 들어오는 것들만 그리도록 했다.

 

3. 일단 몬스터가 서버에서 로직이 돌아서 서버에서 길찾기를 구현해야 했고 네비메쉬를 이용했지만 네비메쉬를 서버에서 어떻게 읽어야 할지 부터가 고민이었다. 서버에서 네비메쉬를 읽는것은 어찌저찌 해결했고

인접 네비메쉬가 네비메쉬 생성시 등록되어 있기때문에 길찾기를 만드는건 어렵지 않았지만 네비메쉬의 셀의 중앙을 타고 갈경우 너무 지그재그로 가던가 어색한 움직임이 생겼다. 그래서 길을 찾은 후 해당 길들의 인덱스 셀들을 직선으로 갈수 있으면 직선으로 가고 아닐경우 꺾이는 부분까지만 직선으로 가게 했더니 어색하지 않게 잘 갔다.

 

4. 렌더 타겟에 대한 개념을 잘 익히지 못하다보니 어려움을 겪었지만 많이 써보니 익숙했고 렌더타겟을 바인딩 하거나 가져오거나 하는 부분이 프로젝트 제작 기간 후반부에는 익숙해져서 여러가지 쉐이더를 넣었다.(안개, 디스토션, 레디얼블러 등)

 

5. 애니메이션간의 보간을 처음에는 채널들을 찾아서 보간했으나 어차피 모든 뼈가 보간되어야 될것 같아서 모든 다음 행동 예정의 뼈위치와 현재 뼈위치와 보간을 해서 애니메이션 변경간의 보간을 부드럽게 해결했다.

 

6. 메쉬가 영향을 받는 뼈 인덱스가 뼈 갯수가 다를 경우 이상해지는 경우가 있어서 그냥 기본적인 뼈대 하나를 두고 거기다가 메시만 붙였다 땠다 하는식으로 작업했다.

 

7. 그냥 모든게 다 처음이라 어려웠지만 헤딩하면서 해결했다..


후기: 서버를 붙여서 만들어보고 3D게임을 혼자 만들어 봤다는것 자체에 만족감을 느끼고 많이 발전했다는 걸 느껴서 좋았다. 다만 혼자 만들다 보니 코드정리나 구조, 가독성 부분에서는 좀 아쉬운 부분이 많아서 다음 팀포트폴리오때는 그런부분도 고려해서 만들어야겠다고 생각했다.

 

728x90

댓글