지도교수 확인 Planetarium 2010181006 김종우 2010181007 김정민 2010181024 이정훈
목 차 개요 게임 조작 기술요소와 중점 연구 분야 구성원 역할 분담 개발 내용 6.개발 과정 중 겪었던 애로사항 목 차 개요 게임 조작 기술요소와 중점 연구 분야 구성원 역할 분담 개발 내용 6.개발 과정 중 겪었던 애로사항 7.문제점 및 보완책 8.향후 개발 일정 9.데모 시연
1. 개요 - 프로젝트의 목적 ‘Planetary Annihilation’라는 RTS 게임의 핵심 소재인 행성 형태의 Terrain을 차용하여서 태양계를 무대로 한 RTS를 만들어 보되 기존의 다른 게임들에서는 볼 수 없었던 독특한 요소들도 몇 개 보여주는 것이다. ( ▼ Planetary Annihilation 스크린 샷 )
1. 개요 ▲ 이대현 교수님 홈페이지에 매주 작업일지와 동영상을 올리면서 졸업작품을 진행시켰다.
1. 개요 IDE ☞ VS2012 Drawing Texture Tool ☞ZBrush Rendering Engine ☞ Ogre1.9 UI Engine ☞CEGUI 0.8.4 3D Modeling Tool ☞3Ds Max 2015 Server OS Ubuntu 14.04.2LTS By Telnet Client OS Windows Sound Engine ☞irrKlang1.5
2. 게임 조작 1. 좌 클릭 유닛 1기 선택 2. 좌 드래그 - 다수의 유닛 선택 1. 우 클릭 - 유닛 이동/공격 - 다수의 유닛 선택 1. 우 클릭 - 유닛 이동/공격 1. 휠 롤링 - 줌 인/아웃 2. 휠 드래그 - 카메라 공전
3. 기술적 요소와 중점 연구분야 A* : 구현 완료 Octree : 범위 탐색 제외 구현 완료 3. 기술적 요소와 중점 연구분야 A* : 구현 완료 Octree : 범위 탐색 제외 구현 완료 구면 보간을 활용한 구면 위에서의 이동 : 극지점 문제로 인해 선형보간으로 대체 (4) State Pattern : 프레임 워크의 뼈대로 구현 완료 (5) IOCP : 소수 클라이언트 처리시 속도 향상을 위해 Linux 의 Select 서버로 구현.
4. 구성원 역할 분담 김종우 : 메인 서버 이정훈 : 클라이언트 및 서브 서버 김정민 : 그래픽
5. 주요 개발 내용 ( 서버 ) UDP 기반 IOCP 로 구현 ☞ 패킷 손실 문제 미해결 따라서, Linux 의 Select 기반 TCP 서버를 제작함. ☞ 소수 클라이언트에서의 처리 능력이 빠름
5. 개발 내용 ( 그래픽 ) ◀ 맵핑&리깅&스키닝&애니메이션 완료된 방패병
5. 개발 내용 ( 그래픽 ) ◀ 맵핑과 리깅&스키닝&애니멩시ㅕㄴ이 완료된 보병
5. 개발 내용 ( 그래픽 ) ◀ 잠수함 ▼ 탱크
5. 개발 내용 ( 그래픽 ) ◀ 육군 본부 ▼ 식량 창고 ▼ 피난민 본부
5. 개발 내용 ( 그래픽 ) ◀ 인공 위성 ▲ 해병대원 총기 ▶우주 왕복선 ◀탄도 미사일
5. 개발 내용 ( 그래픽 ) ▶이지스함 ◀수송기 ◀우주 정거장
5. 개발 내용 ( 그래픽 ) ◀ 광견 ▶ 무뇌충 ▼ 점퍼
5. 주요 개발 내용 ( 클라이언트 ) Sphere Ico-Sphere - 행성 형 Terrain 구현 위도와 경도로 구획되는 구 ☞ 맵 타일로 쓰기 어려움
5. 주요 개발 내용 ( 클라이언트 ) 삼각형 타일들의 중심을 팔각형으로 연결한 노드들의 그래프로 A*알고리즘 구현
5. 주요 개발 내용 ( 클라이언트 ) Ogre & MDI를 이용한 맵 에디터 구현 에디터에서 행성 정점과 노드의 연결관계&위치를 계산 결과를 파일에 저장 게임은 파일만을 읽음 ☞ 로딩 시간이 단축
6. 개발 과정 중 겪었던 애로사항 Quaternion + 구면 보간 활용한 이동 ☞ 극점 부근에서 최단 거리로 이동하지 않음 unit 선형 보간 활용한 이동 ☞ 보간된 지점을 행성 표면에 투사
6. 개발 과정 중 겪었던 애로사항 유니트가 이동하면서 전방을 주시하게 만드는 것도 문제였다. 클릭 미친듯이 회전 이동방향 주시방향 atan2()와 acos()의 반환값이 자동적으로 0 to pi에 한정되게 되기 때문이었다. 그래서 벡터 삼중적을 이용하여 이를 해결하였다. 캐릭터가 진행 방향과 특정 각도를 이루도록 경로 변경을 하였을 때, 캐릭터가 미친듯이 자전했었다.
6. 개발 과정 중 겪었던 애로사항 ↑ 유닛 이동 문제를 발생시키는 경우 ☞ 유닛이 장애물을 관통하는 문제 발생 (2) A* 알고리즘을 삼각형 타일 기반 구형 Terrain에 적용 ↑ 유닛 이동 문제를 발생시키는 경우 ☞ 유닛이 장애물을 관통하는 문제 발생
6. 개발 과정 중 겪었던 애로사항 (3) 3Ds Max, Mirror 사용시 ☞ 미러를 사용한 메쉬 일부분의 와인딩 오더가 뒤집힘 ◎해결법 ( 3Ds Max에서 Mapping이전에 ) ☞ Pivot 의 Transform, Scale 리셋 ☞ ResetXForm 적용 ☞ 모든 Mesh 뭉친다.
6. 개발 과정 중 겪었던 애로사항 문제점 : Ogre Max가 바이패드를 인식 못함 (4) 바이패드 기반의 애니메이션 문제 문제점 : Ogre Max가 바이패드를 인식 못함 바이패드가 아닌 Born 은 문제없이 작동 해결 방법 : FBX 파일로 포팅 -> 바이패드가 본으로 바뀜 -> Ogre Max가 인식함
7. 문제점 및 보완책 게임 특성 상 개발 분량 -> 그래픽 >>>>>>>>>>>>>> 서버 -> 서버가 그래픽을 지원하기로 결정 2. 애니메이션 문제에 많은 시간 소요 -> 효과적인 의사소통과 빠른 개발 방향 제시가 필요 -> 방학기간 합숙
8.향후 개발 일정 클라이언트 5월 6월 7월 8월 9월 복수 개의 행성 구현 만유인력 구현 유니트&건물 구현 다층 행성 구현 마무리 서버 5월 6월 7월 8월 9월 유니트&건물 구현 동기화 작업 마무리
8.향후 개발 일정 그래픽 5월 6월 7월 8월 9월 모델링 맵핑 리깅 스키닝 애니메이션
데모시연