포트폴리오 25

17. 포그설정

물속 포그를 설정하려고 버텍스 하나를 생성해보았는데 별안간 제대로 생성이 안되고 자꾸 버텍스 위치가 엉뚱하게 되는것이었다. 아무리 봐도 별이상은 없는데 안되길래 되는 버텍스파트를 갖다고 한줄한줄 비교해보면서 실험해봤다. 아래는 잘못된 코드 m_pDev->SetStreamSource(0, m_pVB_Wall, 0, sizeof(FVF_SURFACE)); m_pDev->SetFVF(FVF_SURFACE); 결국 원인은 스트림쪽에 메시크기를 넣어야 하는데 FVF 크기를 넣어서 그렇게 된것이었다. 이 간단한것이 왜그리 안보이던지 ㅡㅡ; 아무래도 삽질을 좀 더 해봐야 할듯.. 아래는 수정된 코드 m_pDev->SetStreamSource(0, m_pVB_Wall, 0, sizeof(SURFACE_MESH)); m..

16. 화면 꾸미기

현재 적함의 추적과 공격까지는 완성이 되었다. 이제 할일은 보기좋게 꾸미는일이 남았는데 크게는 다음과 같다. - 수면렌더링 - 물속 객체들 배치(물풀, 바위등) - 안될 가능성높음 - 물속 분위기에 맞게 빛조절 - 포그 - 어뢰및 폭뢰발사시 물방울효과 - 배및 잠수함 기동시 물방울효과 - UI갱신 - 어뢰발사후 중간에 정지시 메모리정리 안되는 문제 - 와이어모드일때 각 클래스별로 처리하기 그래서 우선적으로 수면렌더링부터 처리하기로 했다. 사실 첨부터 염두에 두고 있었던 코드가 있었는데 중간에 구현하다 포기했었고(속도가 너무 안나와서) 두번째 방법은 일단 환경맵으로 보기만 좋게 우선 구현하고 버텍스 쉐이더로 버텍스를 움직이는걸 해볼까 한다. 인터넷과 책에 있는 여러 바다렌더링용 쉐이더와 코드를 봤는데 당장..

14. 지면과 수면충돌처리

물속 바닥과 충돌시, 물위로 올라왔을때 수평처리 바닥 충돌시 충격파를 모사하기 위해 여러효과를 구상해 봤는데 아래와 같다. 1. 선체 떨리기 2. 번쩍이는 화면효과 3. 물속 뿌연 먼지나기 4. 데미지 세팅 5. 기체 수평 여기서 일단 1번과 5번만 구현해놓고 다른건 셰이더쪽에서 구현하기로 했다. 또한 물위로 올라왔을때는 바로 수평으로 처리하는것 보다는 위 아래로 피치 운동을 하면서 높이값을 수면과 동일하게 맞춰졌더니 물위로 올라오는 효과가 그럴싸하게 구현되었다.

13. 파도구현 실패

3일동안 파도만 생각했더니 머리가 다 아프네... 4일째까지 구현하다 안되면 걍 환경맵핑처리로만 가야겠다. 오리가 나오는 유명한 파도 데모를 구해서 붙일시도만 4일을 했다. ㅡㅡ;; 그러나 결과는 대 실패!! 실패원인을 분석해보니 소스분석을 얕게하고 무조건 소스를 갖다 붙일생각만 해서 그런거 같다. 카메라쪽파트가 내가 구현하고 있는 소스쪽으로 너무 억지로 이것저것 건드렸더니 프레임도 안나오고 오히려 원본보다 안좋아 졌다. 일단은 이건 패스를 하고 다른 구현이 끝난후 다시 시도를 하던지 다른 소스를 찾아봐야겠다.

12. 약간 개선된 카메라파트

이번에 카메라 클래스를 원래 함께있던 게임씬에서 분리해내면서 예상치 못한 문제들이 발생했다. 기존에는 카메라 포인터를 여기저기서 가져다가 쓰면서도 하나의 테두리 안에 위치해 있어서 카메라변환시 큰 문제가 없었지만 카메라 클래스 자체를 분리를 하자 이 포인터를 게임씬에 어떻게 공급할지가 우선 큰 문제였다. 그래서 해결방법으로는 카메라 클래스들만 관리하는 카메라 관리자 클래스를 하나 생성한뒤 아무 제약이 없는 자유카메라만 우선적으로 만든뒤에 게임씬 생성시 이 포인터를 넘겨주는것으로 일차 마무리는 되었다. 하지만 바로 또 문제가 발생하였는데 스카이 박스의 조종사 카메라 기준으로 처리시에 바뀐 카메라 포인터를 넘겨 주어야 하지만 서로 분리된 클래스에게 포인터를 넘겨줄 방법이 마땅히 떠오르지 않았다. 계속 소스를..

11. 소스정리 작업과 그후 할 작업들

리팩토리작업을 하던중 일차적으로 소스정리까지 겸해서 깨끗하게 정리했다. 기본유닛 클래스인 CPlane, CShip, CSubMarine 클래스들을 CActor 클래스로 합쳤고 CEnemy, CEnemySub, CEnemyShip, CHero, CHeroSub, CHeroShip 클래스들도 싹 정리해서 CHeroEx, CEnemyEx로 정리하고 나니 속이 다 후련하다. 또한 이벤트리시버를 받는 구조도 전에 게임씬과 인트로씬만 작성한거에서 카메라를 따로 분리해서 독립적으로 해놓은거 또한 성과중에 하나일듯 싶다. 아래는 비주얼 스튜디오에서 제공하는 다이어그램으로 작성한 유닛클래스 다이어그램이다. 아래는 이벤트리시버 다이어그램이다. 카메라가 따로 분리되어 나온걸 알수있다. 큰 뼈대는 이제 대충 마무리 된듯싶다...