게임 엔진 2차 발표 문서 - LOM(Legend Of Mars) - 학과 : 게임공학과 학번 : 2006182049 성명 : 박정현
- 목차 - 1. 게임 컨셉………..………......….….…(03) 2. 개발 범위..….…..…………..….…..…(05) 3. 게임 설계..………..…………….….….(06) 4. 게임 플레이 State 설계…..…..…...(11) 5. 게임 특징………….….……………….(20) 6. 프로젝트 일정……..…..…....…….…(23) 7. 예산 및 Profit & Loss…..……...…(24) 8. 발표 완료 및 Q&A….……………...(25)
< 게임 컨셉 > 제목 : LOM(Legend Of Mars) 장르 : Single-Play FPS 모드 게임 플랫폼 : 일반 PC환경에 Windows XP에서 작동 Target 대상 : 연령(15세 이용가), 성별(남성) 세계관 : 공간적 배경: 태양계 화성의 딴나라 사막 시간적 배경: AC 25C경 세계 인구의 포화 상태 및 자원 고갈 심화 한국의 광속 엔진 개발 성공 광속 우주선 LOM(Legend Of Mars) 개발 행성 탐사 및 개척 프로젝트 진행
< 게임 컨셉 > 시나리오 : 세계 최초 유인 광속 우주선 LOM을 이용해 한국은 고도의 훈련을 마친 요원들을 화성에 탐사 및 개척 목적으로 파견한다. 지구를 출발한 LOM은 무사히 화성에 도착했고, 요원들은 임시 거주용으로 화성의 딴나라 사막에 일정 구역에 지구화 시스템 기지를 구축한다. 딴나라 사막의 해당 구역에 지구화 시스템 기지 구축이 완료되고 파견된 요원 중 일부만 기지에 남고 나머지 요원들은 화성의 각 구역에 조를 나눠 탐사를 떠난다. 순조롭게 탐사가 진행되던 중, 탐사를 나간 요원들 간에 통신이 두절되고 급기야는 기지와 모든 탐사조 간에 통신이 끊겨버리는 사건이 발생한다. 사태를 파악하기 위해 탐사를 나간 조원들이 마지막으로 기지에 통신으로 전한 내용은 바로 괴생물체의 발견과 교전중, 그리고 지원 요청이었다.
< 개발 범위 > 플레이어 입력 이벤트 처리(키, 마우스) NPC(공격몹) AI 구현(케릭터 찾기, 공격) ORGE 엔진을 이용한 각종 특수 효과 구현 Installer 형태로 최종 마무리
< 게임 설계 > 게임을 각 State 별로 분류하여 설계한다.
< 게임 플레이 State 설계 > (1) 데이터 Load 및 환경 설정 ① 데이터 Load (“../../media/packs/defaultData.txt” 파일에서 얻기) - 카메라 설정 값 Load -> 기본, 캐릭터1에 1인칭, 캐릭터1에 3인칭, 캐릭터2에 1인칭, 캐릭터2에 3인칭 -> 각 카메라 별로 이름, 위치, lookAt, 근/원거리 클리핑 거리 값 Load - 장면 관리자 타입과 지형 데이터 이름 Load -> 장면 관리자를 지형 관리자로 설정(ST_EXTERIOR_CLOSE) -> 지형 데이터 이름 Load(“terrain.cfg”): 화성 사막 맵
< 게임 플레이 State 설계 > - Sky 이미지와 설정 값 Load(“../../media/packs/marsSky”) -> 평면 하늘로 구성 -> 원점과의 거리 값은 1500 -> 평면의 법선 벡터는 y축 음의 방향으로 Vector3::NAGATIVE_UNIT_Y -> material 이름은 “marsSky” -> scale는 1500, tiling은 50, drawFirst는 true, 곡률은 2.0 -> x와 y으로 각각 150등분한 사각형으로 구성 - 그림자 설정 값 Load (SHADOWTYPE_STENCIL_MODULATIVE)
< 게임 플레이 State 설계 > - 각 엔터티 이름과 메쉬 파일 이름 로드 -> 엔터티 이름: “character1”, “character2”, “noBrain”, “noBreak” -> 메쉬 파일 이름: “crt1.mesh”, “crt2.mesh”, “noBrain.mesh”, “noBreak.mesh” - 캐릭터 데이터 로드 -> 캐릭터(타입, Life, HP, 공격력, 방어력, 총알개수, 이동 속도, 위치, 몹 킬수) - 몹 데이터 로드 -> 몹 개체 수, 각 몹 데이터(타입, HP, 공격력, 방어력, 이동 속도, 위치)
< 게임 플레이 State 설계 > - 카메라 생성 및 설정 -> 카메라 5개 생성 -> 기본 카메라 필요 -> 캐릭터 선택 모드에서 캐릭터1용, 캐릭터2용 카메라 필요(3인칭 시점) -> 게임 플레이 모드에서 각 캐릭터 별로 1인칭 시점 카메라 필요 -> 게임 플레이 모드에서 각 캐릭터 3인칭 시점 카메라 값 변경 -> 각 캐릭터 Scene 노드 생성 후, 캐릭터 1인칭, 3인칭 시점용 카메라를 붙임
< 게임 플레이 State 설계 > - 뷰포트 생성 및 설정 -> 캐릭터 선택 모드에서는 뷰포트를 두 개 생성하여 각 캐릭터를 출력한다. -> 게임 플레이 모드에서는 PIP를 적용하여 미니맵 효과를 적용한다. - Sky 설정 -> 평면 하늘로 설정, 화성 사막에 대낮 하늘 이미지로 구현
< 게임 플레이 State 설계 > - 그림자 생성 및 설정 -> 지형 자체의 그림자는 생성하지 않는다. -> 엔터티의 그림자 생성을 위해 SHADOWTYPE_STENCIL_MODULATIVE 사용 - 리소스 위치 지정 -> "../../media/packs/myPack.zip”로 지정 - 광원 설정 -> 캐릭터 선택 모드에서는 화려한 분위기 연출 -> 게임 플레이 모드는 사막 분위기 연출
< 게임 플레이 State 설계 > - 엔터티 생성 -> 언제 게임이 Load될지 모르므로, 캐릭터1, 2 별로 각 엔터티를 생성한다. -> 언제 게임이 Load될지 모르므로, 현재 엔터티를 생성 -> 몹 엔터티는 타겟몹, 공격몹 각각 5개씩 총 10개 생성 - Scene 노드 생성 각 Scene 노드를 생성한다. -> 언제 게임이 Load될지 모르므로, 현재 노드를 생성한다. -> 몹 노드는 타겟몹, 공격몹 각각 5개씩 총 10개 생성
< 게임 플레이 State 설계 > - 캐릭터 및 몹 생성 -> 캐릭터는 Singleton으로 구성 -> 각 몹은 Singleton으로 구성한다. -> 몹들은 STL에 vector로 관리
< 게임 플레이 State 설계 > (2) 입력 대기 ① 키보드 입력 - ‘W’, ‘S’, ‘A’, ‘D’ 키 입력 -> 카메라 전, 후, 좌, 우 이동 입력 - ‘Space’키 입력 -> 카메라 점프 - ‘P’ 키 입력 -> Save 게임 State로 잠시 이동 입력 - ‘O’키 입력 -> Load 게임 State로 잠시 이동 입력 - ‘ESC’키 입력 -> 메인 메뉴 State로 전환 입력 - ‘F’키 입력 -> 카메라를 1인칭 시점으로 전환 입력(default) - ‘T’키 입력 -> 카메라를 3인칭 시점으로 전환 입력
< 게임 플레이 State 설계 > ② 마우스 입력 - mousePressed 입력 -> 왼쪽 마우스 클릭: 총알 발사 입력 -> 오른쪽 마우스 클릭: 바운딩 박스 출력 요구 입력 - mouseMoved 입력 -> 카메라 회전
< 게임 플레이 State 설계 > (3) I/O 처리 ① 입/출력 처리 - 키보드 또는 마우스 입력 처리 - 카메라와 지형 충돌 처리 - 캐릭터와 몹 충돌 처리 -> 캐릭터와 몹 간에 공격 성공 판단 -> 이를 통한 캐릭터 HP 감소, 사망 여부 처리로 이어짐
< 게임 플레이 State 설계 > - 총알과 몹 충돌 처리 -> 캐릭터가 몹에 공격 성공 판단 -> 이를 통한 몹 HP 감소, 사망 여부 처리로 이어짐 - 공격몹에 캐릭터 찾기 및 추적하기 처리 -> 표적몹은 이동 안 하며, 공격도 안 한다. -> 공격몹은 자신 주위로 일정 반지름 거리 안에 캐릭터가 있는지 체크한다. -> 이때, 캐릭터가 공격 범위 안에 있으면 공격몹은 해당 캐릭터 위치로 이동한다. -> AI 강의 때 배운 찾기, 추적하기 알고리즘을 이용한다.
< 게임 플레이 State 설계 > - 게임 경과 시간 체크 -> 게임 시간 10분 경과 시 캐릭터는 사망하고 게임은 종료 - 캐릭터 HP 및 Life 체크(기본 HP는 100, Lift는 3) -> 캐릭터 HP가 0보다 작으면 Life를 1 감소시키고, 사망 모션을 보여준다. -> Life가 1보다 작으면 게임은 종료된다. - NPC 개수 체크(기본 표적몹 5마리, 공격몹 5마리) -> NPC 개수가 1보다 작으면 게임 클리어 메시지가 뜨고 게임은 종료된다.
< 게임 특징> ① 캐릭터 소개(테스트 해보며 밸런스 조절 요망) - 오직 하나의 캐릭터로만 게임 플레이 가능하다. 케릭터 생명력 무기 공격력 방어력 Life 이동 속도 총알 개수 철이(돌격수) 100 돌격총 50 3 1 120 미애(돌격수) “ 40 1.5
< 게임 특징 > ② NPC 소개 NPC는 공격몹만 캐릭터를 공격한다. 표적몹은 가만히 서 있는다. NPC 생명력 무기 공격력 방어력 이동 속도 공격 속도 noBrain(표적몹) 50 X 1 noBreak(공격몹) “ 신체 5
< 게임 특징 > ③ 맵: 화성 딴나라 사막 맵 상에는 캐릭터 1명과 표적몹 5마리, 공격몹 5마리가 존재한다.
< 프로젝트 일정 > 총 개발 기간: 11주 개발 시작 및 종료 시기: 09. 3. 18 ~ 09. 5. 28 예상 개발 기간 작업내용/주 1 2 3 4 5 6 7 8 9 10 11 게임 설계 Media Contents 확보 ORGE 소스 분석 게임 State Frame 구현 게임 플레이 State 구현 Media Contents 적용 UI 작업 및 Installer 준비
< 예산 및 Profit & Loss > - 학생 신분이므로 저작권을 지불하고 media Contents를 구입할 형편이 못 된다. - 저작권을 중시하여 공개된 media Contents를 확보해야 한다. - 게임 엔진 프로젝트 개발을 위한 시간 확보를 예산으로 정의하며, 예산은 주당 14시간으로 책정한다. Profit & Loss - 과제용 프로젝트이므로 금전적 이익이나 손실을 보기 어렵다. - 이익: ORGE 엔진을 이용한 게임 개발 경험 및 자신감을 얻을 수 있다. - 손실: 프로젝트 결과에 따라 낮은 학점을 받을 수 있다.
< 발표 완료 > 발표를 완료했습니다. 들어주셔서 감사합니다. Q & A