아이언클래드 Ironclad

개  요

아이런클래드는 '제 2 회 동국대학교 정보산업대 학생 소프트웨어 공모전'에서 은상을 수상한 게임입니다.
  • 게임명 : 아이런클래드
  • 목 적 : 지구정화
  • 장르 : 액션
  • 특 징 : 
    1. 기계학습 능력을 가진 인공지능 NPC 등장
    2. 3인칭 모드, 자동 조준 시스템 채용, 롤플레잉적 요소 강화
    3. 카툰렌더링을 이용한 부드러운 디스플레이
  • 적용 기술 : Toon Shading, Particle System, Level Editor, Quadtree, Machine Learning

팀 소개

팀 명 : X3
팀 원 :
  이헌우(팀장, heonoo@hanmail.net)
  임선원(디자인, lsw0135@hotmail.com)
  박지은(디자인, pje0316@hotmail.com)
  장형석(프로그래밍, zanghs@hotmail.com)
  변정완(프로그래밍, jungwan82@naver.com)


시 나 리 오

A.D. 2353년, 하늘에서 미확인 비행물체가 지구로 추락한다. 비행물체가 추락한 지점으로부터 지구는 급속도로 오염되기 시작하고 그 오염지역에 있던 생물들은 변이하여 추악하고 공격적인 돌연변이가 된다. 2378년, 오염되지 않은 지역에 있던 인류는 지상의 오염을 피해 지하세계로 대피하여 지상과의 접촉을 차단한다. 2383년, 마침내 지구는 검붉은 독성을 띤 죽음의 행성으로 변했고 지상의 생명체는 지하세계의 인류에게 크나큰 위협이 되는 존재가 되었다. 지하세계 건설의 주역이 되었던 '메탈기어社'의 회장은 실질적인 권력을 거머쥐었고 기존의 국가개념은 사라졌다. 사람들은 속히 지구가 정상으로 복원되어 다시 한번 푸른 하늘과 신선한 공기를 마시기를 열망하였고 그에 따라 회장은 아이런클래드 프로젝트를 진행한다.

기 술  설 명

GoCap Machine Learning

GoCap(Game Observation Capture) Machine Learning은 NPC 동료가 주인공을 따라오면서 주인공의 행위를 관찰하여 자신의 지능 수치를 높혀가는 기능에 적용시키기 위해 도입되었다. 캐릭터의 행동은 캐릭터가 처한 상황에 의해 결정된다. 적이 가까이에 있으면 적을 공격할 것이고 앞에 장애물이 있다면 방향을 틀어서 그것을 피해갈 것이다. GoCap 시스템은 이러한 캐릭터의 행동과 캐릭터가 처한 상황 사이에 관계를 강화시켜 기계가 학습을 하도록 해 준다.


[그림 1] GoCap. 캐릭터는 미리 학습된 지능을 이용하여 장애물을 피해 나간다.
캐릭터 앞에 보이는 부채꼴은 장애물 검출을 위한 센서이다.

Toon Shading



[그림 2] 위부터 '일반 렌더링', '윤곽선 추출', '툰 쉐이딩'.

Toon Shading은 게임의 분위기를 부드럽게 하기 위해 아이런클래드에 적용된 기술이다. 일반적으로 3D Rendering은 될 수 있는한 실사와 흡사한 모습을 연출하기 위해 연구되어진다. 하지만 그 실사와는 다른 분위기를 연출하기 위한 연구도 있는데 그런 연구분야를 비실사렌더링이라고 한다. Toon Shading은 비실사 렌더링의 한 종류로 조명 공식을 단순화하여 결과물에서 만화적인 느낌이 나오도록 한다.
Toon Shading이라고 불리기 위해서는 두 가지 요소가 필요하다. 첫째는 조명 단순화이고 둘째는 윤곽선 추출이다. 조명단순화는 렌더링 결과물의 명암을 계단 형식으로 만들어 준다. 그리고 윤곽선은 배경과 물체를 분리하여 더욱 만화적인 느낌을 연출한다.


아이런클래드는 Vertex Shader 1.1과 Pixel Shader 1.1이 쓰였다. 이 셰이더들은 그래픽 카드의 렌더링 방식에 직접적인 조작을 가할 수 있는 일종의 언어이다. 셰이더는 DirectX v9.0에 들어와서 어셈블리어를 탈피하고 High Level Shader Language라는 고수준 프로그래밍 언어를 사용하게 되었다.
Vertex Shader는 그래픽 카드에서 정점들이 렌더링 되는 방식을 조작하며 Pixel Shader는 렌더링 된 후 평면에 투영된 픽셀값들을 조작하는데 사용된다. 아이런클래드에서 Vertex Shader는 조명 계산을 단순화 하고 픽셀들 마다의 법선 벡터를 계산하여 Pixel Shader에서의 윤곽선 추출을 돕는다.


[그림 3] 툰 쉐이딩이 적용된 모습

파티클 시스템

파티클 시스템은 게임 내에서 피탄 효과, 파괴 효과를 연출하기 위해 사용된다. 파티클 시스템을 구성하는 클래스는 다음과 같다.
  • CParticle : CParticle 클래스는 파티클 입자 하나를 의미한다. 이 클래스에는 입자의 크기, 생존시간, 살아온 시간, 날아갈 방향, 속도가 정의되어 있다.
  • CParticleEmitter : CParticleEmitter는 CParticle를 여러개 가진다. 파티클 입자들을 생성하고 그려주는 역할을 담당한다.

레벨 에디터

레벨 에디터는 해당 레벨에 등장하는 오브젝트(건물, 장애물 등…)와 적들의 위치와 방향을 지정하기 위해 사용된다.

[그림 4] 레벨 에디터 파일 구조.


[그림 5] 레벨 에디터 스크린샷

안  개

Direct3D에서 안개를 구현하는 방법으로 가장 흔한 것이 픽셀 포그와 정점 포그이다. 픽셀 포그는 그래픽 카드내에서 구현되며 정점 포그는 Direct3D의 Lighting Engine에서 구현된다. 아이런클래드에서는 픽셀 포그가 사용되었으므로 픽셀 포그에 대해서 언급한다.
픽셀 포그라는 이름은 그래픽 카드가 픽셀 단위로 최종 색깔 값을 결정하는 것에서 유래했다. 정점 포그는 변환 및 조명의 계산시에 파이프라인에서 계산되는 것과는 다르다. 픽셀포그는 혼합 계산에 적용하기 위한 계수를 결정하기도 하는데 그래픽 카드에 따라서는 이 값을 사전에 계산된 테이블에서 참조하기도 하는데 그렇기 때문에 픽셀 포그를 테이블 포그라고 부르기도 한다. 결과는 아래와 같다.

[그림 6] 안개를 적용한 모습

카메라뷰

다음과 같은 3가지 카메라 모드가 존재한다.



[그림 7] 3가지 카메라뷰

댓글

이 블로그의 인기 게시물