전체 글 113

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

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

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

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

10. 스트래티지 패턴적용

슬슬 중간 점검과 리팩토링을 고려해볼때가 된거 같다. 물론 지형과 기타 필요한 꾸미기가 들어가지를 않았으나 중요핵심요소를 구현했고 충돌체크까지 체크되었으니 메인뼈대는 완성되었다고 보면 될듯하다. 이 뼈대를 중간점검해서 좀더 튼튼히 만들어야 다음 확장때도 무리가 없을듯 싶다. 일단 첨에 잡은 주요일정을 다시 살펴보면 다음과 같다. 전체목표 - 5월 23일~29일 (2주) : 맵구성, 카메라구성, 리소스다듬기, 라이트처리 - 5월 30일~6월 5일 (3주) : 충돌처리, 효과처리 - 6월 6일~12일 (4주) : 충돌처리, 효과처리 - 6월 13일~19일 (5주) : 프레임별 구성처리 - 6월 20일~26일 (6주) : 사운드작업, - 6월 27일~7월 3일 (7주) : 디버깅작업 - 7월 4일~7월 10일..

9. 문서화 작업도 빼먹으면 안돼지요. - 독시젠작업

논리적 구조화 작업도 테스트까지는 끝냈고 문서화작업도 더이상 늦추면 안될듯 하다. 슬슬 시작해야겠다.. (이미 늦었음) 원칙은 이미 유명한 블로그인 아래의것을 따르기로 했다. http://a.tk.co.kr/130 그중에서 쓰기 쉬운 몇가지만 고르면 - 소스 파일의 최상단에 파일명, 날짜, 제작자, 설명을 명기한다. - 클래스 및 구조체 인터페이스 윗부분에 클래스 명, 날짜, 제작자, 설명 등을 첨부한다. - 클래스 / 구조체 멤버 변수 주석은 공백 1칸을 띄우고 "///

7. 어뢰와 폭뢰 클래스 제작

일단 전반적인 상속상황을 살펴보면 아래와 같다. - src │ ├- GameProc : 실제 게임메인 프레임 │ ├- AirCraft : 비행체관련 클래스들 │ ├- CPlane : 비행체 추상클래스 │ └- CHero : 주인공비행기 클래스 │ ├- System : 게임의 전체적인 영향을주는 클래스들 │ └- CCamera: 각 시점별 카메라 │ ├- Unit : 게임에서 쓰이는 모든 객체의 추상클래스 │ └- CUnit : │ ├- Weapon : │ └- CBullet : │ ├- CRailGun │ │ └- CTornado │ ├- CMissile │ ├- CAntiSubBomb │ └- CTorpedo │ ├- Ships : │ └- CShip : │ ├- CHeroShip : │ └- CSub..

6. 메모리 릭 잡기

문자열쪽에 메모리릭이 발생되는걸로 봐서 문자열에 관여하는 어떤 함수가 생각났다. 바로 와이드ANSI 변환 함수들!! 헤더파일 // 유니코드를 ANSI코드로 char* LPCWSTR2STR(const WCHAR* wstr); void LPCWSTR2STR_Release(char* str); // ANSI코드를 유니코드로 WCHAR* LPCSTR2WSTR(const char* str); void LPCSTR2WSTR_Release(WCHAR* wstr); 본체 //>> 유니코드에서 ANSI 문자열로의 변환 방법 char* LPCWSTR2STR(const WCHAR* wstr) { if ( wstr ) { char* str = NULL; int nLen = WideCharToMultiByte(CP_ACP, 0..

개발 5일차

* 오늘의 목표 - 카메라... 카메라를 위치와 키입력에 맞게 - 무기발사... 미사일클래스를 개조한 어뢰와 폭뢰 클래스제작 - 슬슬 전체적인 메인프레임을 만들준비를... 미니테스트하기(로그인 ... 게임화면 ... 결과) * 작업 기존 미사일 클래스에서 CArrayList 로 되어 있는걸 STL의 List로 바꿔보기 젠장 미사일 클래스를 붙여넣었는데 미사일이 발사되면 없어져버린다. 이유가 멀까? - Plane 클래스의 m_vCurrDirVelo 값이 계산이 안되는 상태였는데 이걸 미사일 클래스에서 갔다쓰니...ㅋㅋ 지금쯤이면 메모리 체크도 슬슬 들어가봐야하는디... - 체크해본 결과 ... 아 미치것따 메모리가 샌다 ㅠㅠ 이것부터 잡고가야 할듯

개발 4일차

머신이 바뀌었다. 그래서 작업은 쉬어가는 타임 델 스튜디오15에서 MSI GE700으로 일단 가격이 착해서 질러버렸다. ㅋㅋ 사양은 CPU i5/4G Ram/1TB HDD/5730 1GB 해서 120만원대 아쉬운점은 OS가 Win7-32bit형이라는거... ㅠㅠ 갖고있는 프로그램들도 대부분 32bit로 맞춰져있으니 일단 작업이 급하므로 먼저 맞춰놓고 나중에 64bit로 갈아타야겠다. 잠깐 써봤는데 확실히 비스타보다는 좀 가벼워진듯한 느낌을 받았다. 반응도 빠른편이고 (이건 머신땜에 그런가?)