그래픽
프로그래밍
GameTool : 3DMax에서 만든 FBX파일을 Mesh파일로 변환하고, 변환한 Object들을 큰 맵에 배치함에 효율을 높이기 위해 DirectX를 이용해서 프로젝트 기간 초기에는 툴 제작에 비중을 높였다.
로그인 : 로그인 버튼은 IME UI를 이용하여 만들었고, 이미지 처리는 모두 Sprite를 이용하였다. ID와 Password는 IME UI를 쓰지 않고 직접 BoundingBox( 충돌체크 박스 )처리하여 클릭 시 입력 할 수 있게 만들었고, 문자는 모두 string형식으로 받아와 서버로 넘겨주도록 했다. 클라이언트에서 입력받은 ID와 Password를 서버에서 확인하고, 서버에 미리 저장되어있는 ID와 Password와 비교 후 로그인 처리를 하도록 구현 하였다.
로비 : 이미지 처리는 로그인과 마찬가지로 레디 버튼과 채팅 창은 IME UI로 구현 하였고, 나머지는 Sprite를 이용하였다. 캐릭터 선택은 BoundingBox처리하였고, 적 인원수와 로비 대기시간 출력, 캐릭터 위에 나타나는 각각의 ID는 Font로 나타냈다.
충돌체크 : 캐릭터와 캐릭터 끼리는 Sphere VS Sphere( 구와 구 )충돌체크를 하였고,미끄러짐 벡터를 적용시켜 서로 부딫히면 미끄러지게 구현하였다. 캐릭터와 건물 끼리는 Sphere VS BoundingBox ( 구와 충돌박스 )충돌체크를 하였다. 맵 안의 건물 BoundingBox는 Tool에서 좌표값을 입력하여 직접 씌웠다. 캐릭터의 위치가 배경 오브젝트에 겹쳐지는 상황이 발생해서는 안되므로 OBB(Oriented Object Box : 물체를 감싸는 방향성 있는 박스를 사용) 로 배경 메시에 박스를 씌운 다음 그 OBB좌표에 맞춰서 평면을 만들어서 OBB 상자에 붙여 점과 평면 사이의 충돌판정으로 기본적인 충돌을 처리 하였다.
인공지능 : 몬스터가 위치한 곳에 큰 Sphere를 씌워 캐릭터가 그 Sphere 안으로 들어오면 몬스터는 제일 먼저 들어온 캐릭터의 좌표를 따라가도록 구현하였다.
스킬 : 각각 캐릭터 타입마다 세 개씩 스킬 함수를 만들었으며, 스킬 1,2,3키를 누르면 해당 스킬 함수를 호출하게 된다. 모든 스킬은 Player클래스에서 플레이어 캐릭터 타입에 따라 항상 스킬 사용을 체크하는 함수를 구현하여 각 스킬의 지속시간과 사용시간을 확인하도록 하였다. 또한 각 스킬에 해당하는 충돌 처리 부분은 충돌 처리하는 클래스인 GameCollision를 구현하여 이 클래스 에서 처리한다.
버프 : 보스 몬스터를 죽였을 시에 거점지가 해당 팀의 점령지가 되며 팀 내의 거점지 점령 수에 따라서 버프가 최대 3개가 생성된다. 거점지의 수에 따라 Player 클래스 에서 버프를 체크하여 버프 이펙트와 능력치가 적용되도록 하였다.
사운드 : FMOD 라이브러리를 사용해서 SoundMgr(사운드 관리 클래스)를 만들어 사운드를 구현하였다. 플레이어가 위치한 곳에서 멀어질수록 소리가 작아지도록 구현하였다. 미리 사운드파일 목록을 작성하여 초기화 과정에서 사운드를 저장시킨 다음 사운드가 필요할 때마다 사운드 매니저의 Play()함수를 호출하여 해당 사운드의 enum값을 입력해 사운드를 출력하는 방식이다. 전체 배경음악 같은 경우엔 계속 반복재생이 이루어져야 하기 때문에FMOD_LOOP_NORMAL 옵션을 설정하였다.
이펙트 : 이펙트 Mesh를 가져와서 DirectX 디바이스에 SetRenderState 의 그리기 옵션을설정하여 해당위치에 적용하여 나타내었으며, 이미지를 이용하여 만든 이펙트는 빌보드를 사용하여 항상 유저의 화면에 정면에서 보이도록 구현하였다.
셰이더, 그림자 : 3D 게임프로그래밍, Directx9를 이용한 3D GAME 프로그래밍 입문, 셰이더 프로그래밍 입문, 책들을 참조하여 캐릭터의 라이팅과 실시간 그림자를 그림자는 케릭터와 건물등 오브젝트를 그리기전에 그림자가 그려질 오브젝트들을 텍스쳐에 그린후 모두 같이 그려지도록 구현 하였다.
'이전글 > 게임아카데미' 카테고리의 다른 글
대구게임아카데미 12기 프로젝트 C조 CubeIsland (0) | 2015.02.26 |
---|---|
대구게임아카데미 12기 프로젝트 B조 LostSeason (0) | 2015.02.26 |
대구게임아카데미 12기 프로젝트 A조 Messiah (0) | 2015.02.26 |
대구게임아카데미 10기 프로젝트 C조 (0) | 2014.02.17 |
대구게임아카데미 10기 프로젝트 A조 (0) | 2014.02.17 |