앙 가르드!는 UE4로 개발한 칼싸움 액션 게임 프로토타입입니다. 플레이어는 17세기를 배경으로 한 판타지 세상 속에서 가족의 명예를 지키기 위해 싸워야 하는 급한 성격의 여검사인 아달리아 데 볼라도르(Adalia de Volador)를 조종하게 됩니다.
이 게임을 다운로드하여 더 자세히 알아보려면 https://engarde-game.com/을 방문해 주세요!
프로젝트를 시작한 계기
앙 가르드!는 저희가 졸업 프로젝트로 제출하여 최종 선택된 게임 콘셉트입니다.게임 개발 초기 단계에서 의도한 것은 "칼싸움 비디오 게임"을 만드는 것이었습니다. 저희는 문학 작품에서 영화에 이르는 다양한 작품들로부터 얻은 아이디어를 게임 형태로 재해석하고 싶었습니다. 아이디어를 얻은 작품으로는 조로(Zorro), 삼총사(The Three Musketeers), 에롤 플린(Errol Flynn) 등 헐리우드 전성기 시절의 영화부터 심지어 현대 작품인 캐리비안의 해적(Pirates of the Caribbean)까지 있습니다. 처음 프로젝트를 시작할 때만 해도 이 장르를 잘 몰랐죠. 하지만 여러 사람의 상상 속에 깊숙이 자리 잡은 칼싸움 장르의 정수를 빠르게 습득했습니다. 이 장르는 특히 프랑스에서 역사가 오래됐죠.
시중에는 해적 게임이 많지만 칼싸움 액션이라 할 만한 게임이 없다는 사실을 깨달았습니다. 칼싸움 자체가 없는 건 아닐지라도 아주 고전적인 "삼총사" 류의 세계에서 벌어지는 칼싸움은 없었죠. 무슨 이유인지 모르겠지만 이 장르는 비디오 게임 업계에서 충분한 대접을 받지 못해왔고, 그래서 저희는 이 분야에 잠재성이 있다고 느꼈습니다.

디자인
앙 가르드!는 플레이어의 판타지 개념을 중심으로 디자인하였습니다. 저희는 플레이어가 영웅적이면서 다재다능한 검술가를 구현하기를 바랐습니다. 진짜 칼싸움 꾼이 된 것처럼 느낄 수 있도록 말이죠. 개발 단계에서 이 정신에 충실하기 위해선 몇 가지 지침이 필요했습니다. 이를 위해, 게임 개발의 비전을 몇 개의 단어로 집약했습니다. 검술, 즉흥성, 위풍당당함을 게임 개발의 세 가지 중심축으로 삼았습니다."검술"은 말 그대로를 뜻합니다. 저희 게임이 검술에 많은 무게를 둬야 한다는 아이디어죠. 저희 게임에 비전과 분위기는 있었지만, 단지 고전적인 칼싸움 게임을 만드는 것만으로는 안 된다는 사실은 알고 있었습니다. 실제 펜싱의 복잡한 요소를 무시하고 멋진 동작, 회피 그리고 곡예를 많이 집어넣어 훨씬 직접적이고 화려한 것을 만들고자 했죠.
검술에선 함께 겨룰 상대방도 중요합니다. 저희 게임에는 수많은 기본 경비대가 등장하죠. 하지만 그들은 실력이 형편없고 주인공의 뛰어난 솜씨에 제압당하기 위한 존재들이에요. 그와 달리 대장은 모두가 각각 다른 전투 방법을 선보이는 고유한 적이죠. 용맹한 자는 플레이어에게 1:1 대결을 신청하고, 배신자는 증원군을 요청하며, 겁쟁이는 도망가면서 플레이어에게 숨바꼭질과 비슷한 추격전을 유도합니다.

게임의 두 번째 중심축인 즉흥성은 주인공의 다재다능함을 보여주는 장치입니다. 환경을 발견하고 새로운 전투 환경에 계속해서 적응할 필요성을 제시하죠. 게임 내에서 플레이어가 환경과 상호작용하면서 실험할 수 있는 요소이기도 합니다. 즉흥성은 예측 불가능성과도 연결되는데요. 저희는 체계적인 게임을 좋아하기 때문에 서로 결합해서 놀라운 결과를 일으키고 새로운 상황을 조성하는 체계적 요소를 만들고자 했습니다. 일부 영화에서 나오는 전투 장면 속의 무한한 상상력을 상호작용 가능한 형태로 바꾸는 것이 최선의 방식이라는 느낌이 들었죠.
세 번째 중심축인 위풍당당함은 쉽고 재미있는 방식으로 멋지고 당당하며 매너 있게 싸우는 장면을 구현하는 것입니다. 싸움이 보다 스펙터클하게 느껴지도록 말이에요. 위풍당당함은 대부분 게임 속 분위기에 반영됐지만, 저희는 주인공 아달리아의 지혜가 조롱과 도발을 통해 게임 중에 드러나기를 원했습니다. 그래서 "말재주" 메카닉을 구현했죠.
저희가 게임에 대해 생각하는 아이디어는 모두 이 비전을 염두에 두고 만들어졌습니다. 저희의 판타지를 강화하거나 새로운 방식으로 확장하는 아이디어에 우선순위를 부여했죠.
앙 가르드!의 디자인과 크리에이티브 디렉션에 대한 내용은 가마수트라(Gamasutra) 인터뷰에서 더욱 자세히 확인하실 수 있습니다.

아트 및 스타일 디렉션
아트 디렉션은 모험 정신과 스펙터클한 감각을 가벼운 톤의 고전적 칼싸움 이야기에 담아내야 했습니다.스페인 황금기는 풍부한 캐릭터와 음모, 칼싸움을 담기에 아주 훌륭한 시대처럼 보였습니다. 이 시대는 부와 사치의 시기이자 불평등과 부패의 시기였죠. 귀족 여성이 명예와 정의의 이름으로 악당들과 싸우기에 더없이 좋은 배경입니다. 환경 디자인은 무어인의 영향을 받은 유럽 르네상스의 고유한 혼합 양식으로, 안달루시아 지방에서 볼 수 있는 무데하르(Mudejar) 스타일에서 영감을 얻었습니다.
하지만, 저희가 제작한 게임은 역사물이 아니라 칼싸움 모험물이죠. 역사적 배경을 탄탄한 기초로 삼기는 했지만, 저희가 만든 것은 문학, 영화, 극작품의 낭만적 시각으로 들여다 본 세계였습니다. 이를 반영하기 위해 저희는 극적인 조명과 꿈을 연상케 하는 색상을 선택했습니다. N.C.와이어스(N.C. Wyeth) 같은 예술가와 일러스트레이션의 황금기, 드림웍스(Dreamworks)의 리처드 대스커스(Richard Daskas) 같은 현대 창작자로부터 영감을 받았죠.

저희는 풍부한 전통 무데하르 건축과 장식을 간결한 형태로 만들기로 했습니다. 환경과 소품은 눈에 잘 띄는 모양새를 갖추기 위해 아주 미세하게 양식화했고요. 질감도 저희 세계를 뒷받침하고 서로 다른 재질을 알아볼 수 있을 정도로만 구현했습니다. 환경은 분위기를 전달하면서도 혼란스러운 전투 도중에 파악 가능할 수 있어야 하기 때문입니다.

단순화 절차와 약간의 캐리커처는 캐릭터에게도 적용됐습니다. 저희는 기본 형태를 최소한으로 단순화한 다음 다시 쌓아 올렸습니다. 얼굴은 개성을 찾기 위해 극도로 만화풍의 캐리커처로 구현됐다가 이후에 우리가 추구하던 준 사실주의 수준으로 되돌렸습니다.

특히 아달리아는 칼 싸움꾼의 전형을 인격화해야 했기 때문에 그보다 더 공을 들였습니다. 아달리아에게 강하고 일관성 있는 성격을 부여하는 것은 그녀의 의상 디자인, 애니메이션 및 캐치프레이즈를 정하는 중요한 포인트였습니다. 또한 저희는 아달리아가 모험가로서의 삶을 살았다는 것을 보여주고 싶었기 때문에 남성과 여성의 역사적 의상에서 영감을 받은 실용적 의상을 만들어 주고자 했습니다.
테크 아트
저희 팀에는 아티스트가 세 명뿐이었고 환경 아트 전담이 없었습니다. 시간을 절약하고 빠르게 그래픽 처리를 할 수 있는 작업 흐름을 찾아야 했죠. 저희 게임은 학생 프로젝트였기 때문에 교사, 테스터, 다른 학생의 피드백에 따라 계속해서 변화했습니다.머티리얼 레이어링
각 환경 머티리얼에 대해선 머티리얼 레이어링 시스템을 쓰기로 결정했습니다. 저희는 파라곤(Paragon)에서 만들어진 것에 크게 고무되었습니다. 머티리얼 함수 라이브러리를 만들고, 각 함수에 일반적인 머리티얼(돌, 대리석, 목재)과 아주 기본적인 옵션(기울기, 색조)를 부여했습니다. 이 머티리얼은 저해상도 마스크 텍스처(일반적으로 128*128 또는 64*64) 속에 혼합됐습니다.
또한, 하나의 텍스처에 스크래치, 얼룩, AO 마스크를 사용하여 일부 소품에 날씨에 의한 풍화작용 효과를 추가했습니다. 다시 말씀드리지만 파라곤에서 만들어진 것과 매우 유사합니다. 먼지, 작은 위치 변화 등 애셋 별로 특화된 효과를 위해서는 버텍스 페인트를 사용해 반복성을 깨뜨렸습니다. 누수, 균열 등 보다 구체적인 효과에는 데칼을 사용했습니다.

이 작업 흐름은 저희가 그래픽 처리 시간을 향상시키는 데도 도움이 됐습니다. 이 시스템 덕분에 게임 전체에서 머티리얼 하나를 단지 클릭 한 번으로 바꿀 수 있었습니다. 프로젝트는 시간이 지날수록 점점 진화했고, 저희는 일부 초기 애셋을 다시 만들어야 했습니다.
캐릭터의 경우 저희는 커스텀 셰이더를 쓰기로 결정했습니다. 캐릭터에게는 하이라이트, 머리카락, 의상 셰이더 등 게임 플레이와 관련된 여러 특수 기능이 필요하기 때문입니다.
대중
스펙터클이라는 게임 테마를 살리기 위해 저희는 게임 속에 대중을 구현하고자 했습니다. 모든 방에서 일부 손님이 발코니에 나와 싸움을 보고 플레이어의 액션에 반응하는 거죠.처음에는 단순한 형태의 스켈레탈 메시를 사용했지만, 성능에 너무 많은 영향을 미쳤습니다. 대중은 플레이어로부터 멀리 떨어져 있으니 애니메이티드 플립북을 써보기로 했죠. 여기에 3D 느낌을 주기 위해 저희는 배틀필드 1 에서 사용했던 기술에서 아이디어를 얻었습니다. 보는 각도에 따라 다른 3D 모델 각도에서 포착된 다른 행의 플립북을 보여주는 기술입니다.

인터폴레이션을 향상하기 위해 모션 벡터를 일부 사용하였고, 전체 프레임 수와 텍스처 크기를 줄일 수 있었습니다. 결국 셰이더 비용은 조금 높았지만 대중은 단지 인스턴트화된 쿼드여서 전체 비용은 수많은 캐릭터치고는 최소 수준이었습니다. 저희는 애니메이션이 하나뿐인 동일한 캐릭터 모델을 가지고 있었기 때문에 이 솔루션은 저희에게 적합했습니다. 보다 복잡한 군중을 표현하려면 3D 셰이더 애니메이션이나 스켈레탈 메시를 사용했겠죠.
라이팅
라이팅도 아주 어려운 과제였습니다. 저희는 모험 동화에 어울리는 스페인 남부 지방의 따스한 분위기를 연출하고 싶었습니다.환경을 이용하는 것은 전투에서 아주 중요한 요소입니다. 소품 대부분이 움직이므로 조명도 대부분 움직일 수 있어야 했습니다. 물론 성능상의 이유로 풀 다이나믹 라이팅은 고려 대상이 아니었습니다. 몇 가지 조정을 거친 뒤에 디스턴스 필드와 인다이렉트 섀도가 훌륭하게 제 몫을 해줬습니다. 이로 인해 환경에 부드러운 그림자 효과를 입힐 수 있었습니다. 부드러운 라이팅과 꿈 같은 분위기를 연출하려는 저희의 의도와 맞아떨어진 거죠.
예상치 못한 어려움 중 하나는 야외 라이팅과 실내 라이팅을 하나의 레벨에서 혼합해야 한다는 것이었습니다. 어디서든 만족스러운 결과를 보여주는 라이팅 설정을 찾기란 아주 어려웠습니다. 원하는 결과를 얻기 위해 저희는 직접 조명과 스카이라이트를 야외 라이팅에 사용했고, 후처리에 크게 의존하여 모든 방을 고유하게 보이도록 만들었습니다. 시각 순응 및 주변 폐쇄 설정은 저희가 장대한 본당과 우울한 도서관 사이의 분위기를 정의하는 데 도움이 됐습니다.

저희는 라이팅 작업을 하면서 많은 조정을 거쳐야 했습니다. 저희가 배운 중요한 교훈 하나는 "가짜를 만드는 데 주저하지 말라."는 것입니다. 많은 빛이 광원 없이 발생하거나 플레이어를 주요 요소로 이끌기 위해 과장된 산란을 일으키도록 만들어졌습니다. 예를 들어, 햇빛 축은 게임 내의 일부 방이나 훈련 구역의 핵심 요소(천장의 그림자)의 모든 방향에서 발산되지만, 실제 3D 모델의 그림자와는 일치하지 않습니다.

애니메이션
애니메이션은 쉽지 않은 도전이었습니다. 불과 몇 달 만에 등반과 점프 시스템을 갖춘 전투 게임을 만들어야 했기 때문입니다. 처음에 저희는 게임 플레이와 관련된 모든 기본 기능을 갖춘 애니메이션 블루프린트를 만들었습니다. 아주 초기에는 캐릭터가 할 수 있는 모든 움직임에 대해 플레이스 홀더 애니메이션이 있었습니다. 이후에는 점진적으로 정제된 애니메이션과 기울기나 가속같은 절차적 애니메이션을 필요할 때마다 추가했습니다.초기에 모든 작업을 해놓자 어떤 기능을 우선시해야 할지 알 수 있었죠. 디자이너는 몽타주에서 플레이스 홀더 애니메이션을 사용하여 타이밍을 조정할 수 있었습니다. 디자이너는 만족스러운 결과가 나오면 최종 애니메이션을 만드는 애니메이터에게 정확한 타이밍을 전달합니다.
각 캐릭터에 대한 애니메이션을 만들 시간이 없었기 때문에 모든 캐릭터는 동일한 비율의 스켈레톤을 공유합니다. 애니메이터는 일반 캐릭터로 애니메이션 작업을 하고 있었는데 언리얼에 머리카락이나 의상 같은 캐릭터의 구체적 요소에 대한 절차적 애니메이션이 추가됐죠. 예를 들어 아달리아의 머리카락은 포니테일에 3개의 뼈대가 포함되어 글로벌 구조를 만들고, 블루프린트로 커스텀 디스플레이스먼트 머티리얼을 부여해 머리카락이 통통 튀는 느낌을 주게 했죠. 또한 머리카락에 일부 의상 시뮬레이션을 적용해 보다 자연스럽고 예측 불가능한 외형을 만들었습니다.

블루프린트, 도전 과제와 문제 해결
저희 게임은 거의 모든 것이 블루프린트에서 제작되었습니다. 루트 모션을 더 많이 통제하고자 한 캐릭터의 움직임 요소가 유일한 예외였죠. 블루프린트로 스크립트를 제작하면 놀랍도록 많은 것을 이룰 수 있습니다. 저희가 겪은 유일한 문제는 코드 두 개를 합치듯이 블루프린트들을 결합할 수 없었다는 거였죠. 동시 작업이 가능하도록 만들기 위해 저희는 상속에 의존하고, 구성 요소나 함수 라이브러리 내부에 게임플레이 로직을 많이 삽입했습니다. 이런 방식으로 쉽게 여러 작업을 동시에 실현할 수 있었죠.
파쿠르 시스템
플레이어가 일련의 곡예 기술을 쉽게 해내도록 저희는 자동 파쿠르 시스템을 만들었습니다. 달리고 있을 때 캐릭터는 자동으로 장애물을 뛰어넘고 좁은 틀 사이를 뛰어다닐 수 있죠. 저희는 간격에 따른 적응형 점프 애니메이션을 만들기 위해 블렌드 스페이스를, 연속으로 점프할 때 다른 발을 내밀도록 만들기 위해 애니메이션 노티파이를 사용했습니다.

인공지능 캐릭터도 파쿠르 시스템을 이용합니다. 인공지능 캐릭터가 파쿠르를 하면서 어느 길로 갈 수 있는지 이해하게 만드는 일은 조금 까다로웠습니다. 이를 위해 저희는 내비메시 생성 설정에서 에이전트 맥스 스텝 헤이트(Agent Max Step Height)를 1m 이상으로 높였습니다. 아래 스크린샷에서 테이블이 내비메시를 자르지 않는 것은 바로 그 때문입니다. 다시 말해 인공지능은 마치 아무런 장애물이 없는 것처럼 경로를 계산한다는 거죠.

이 해결책의 유일한 문제는 적들이 테이블을 절대 돌아가지 않고 그 위에 올라탄다는 것입니다. 이는 비효율적일 뿐만 아니라 적들을 필요 이상으로 멍청해 보이도록 만들기 때문에 저희는 올라갈 수 있는 오브젝트에 내비모디파이어(NavModifier)를 추가했습니다. 이는 위 스크린샷에 오렌지색 내비메시로 나타납니다. 이런 식으로 이 볼륨 내에 들어오는 것은 거리상 더 큰 비용이 든다고 인공지능에게 알리는 것이죠. 따라서 AI는 내비모디파이어가 있으면 테이블 위로 올라가는 것이 실제로 돌아가는 것보다 더 효율적일 때에만 위로 올라가게 됩니다.
마지막으로, 저희는 지도 곳곳에 내비링크를 직접 배치해 적들이 내비메시의 서로 다른 부분 중 어느 지점에서 긴 점프를 뛸 수 있는지 알게 했습니다.
런타임에서 내비메시를 재연산하는 언리얼 엔진의 기능은 저희에겐 축복과도 같았습니다. 저희 게임에는 플레이어가 움직일 수 있는 오브젝트가 아주 많았기 때문이죠.
캐릭터가 움직이고 싸우는 동안 피직스를 시뮬레이트하고 움직이는 오브젝트를 만드는 일도 만만치 않은 과제였습니다. 피직스를 만져본 사람이라면 시뮬레이트되는 오브젝트 위를 걷는 일이 곧 지도 곳곳에 캐릭터를 포함한 물건들을 엄청나게 빠른 속도로 던져대는 것과 마찬가지임을 알 겁니다.
이 문제를 해결하기 위해 저희는 시뮬레이트된 오브젝트의 모든 충돌을 두 배로 늘리고, 하나를 다른 하나의 하위 오브젝트로 만들었습니다. 상위 충돌이 피직스를 시뮬레이트하지만 하위 오브젝트와는 충돌하지 않죠. 반면 하위 충돌은 하위 오브젝트하고만 충돌하지만 피직스를 시뮬레이트하지 않고 단지 상위 충돌을 따르기만 하기 때문에 저희가 원하는 결과를 얻어낼 수 있었습니다.
캐릭터 관점에서 보면 이는 여느 움직이는 플랫폼과 다를 바 없지만, 저희 관점에서는 피직스 시뮬레이션의 결과로 발생하는 복잡한 움직임과 흔들림을 볼 수 있죠.
카메라, 캐릭터, 조작
조작을 가능한 한 사용자 친화적이고 쉽게 습득할 수 있도록 다양한 시스템을 만들었습니다. 한 예로 저희는 플레이어의 입력을 재조정하여 캐릭터가 자동으로 장애물을 피하게 만드는 시스템을 도입했습니다. 다음 GIF에서 L스틱은 계속해서 앞을 향해 있습니다. 플레이어의 입력이 벽을 피해가도록 재조정되며, 그러면서도 실수로 틈새로 떨어지는 것도 방지합니다.

게임을 확장하면서 추적해야 할 캐릭터 상태가 많아졌습니다. 작업을 편하게 하기 위해 저희는 아래와 같은 함수를 만들었습니다. 이 함수는 새 상태에 대한 요청을 뭐든지 처리합니다. 우선 이 함수는 캐릭터가 그 상태로 들어가도 되는지를 확인합니다. 그렇지 않을 경우 버립니다. 그런 다음, 이 함수는 그 상태가 여러 조건에 따라 다른 상태로 덮어씌워 져야 하는지 확인합니다. 이는 재귀 함수라 스스로 여러 번 덮어쓸 수 있습니다.

이 함수를 사용한 예시 하나는 모든 공격의 마지막에서 볼 수 있습니다. 다른 코드에서 저희는 별도로 체크할 것 없이 가만히 있는 가드 상태로 돌아가도록 요청합니다. 이 함수 덕분에 주변에 남은 적이 없을 경우 가드 상태는 자동으로 조깅 상태로 덮어씌워 집니다. 만약 플레이어가 달리기 키를 누르고 있다면 조깅은 달리기로 덮어씌워 집니다. 마지막으로, 달리기를 하면 파쿠르가 가능하기 때문에 만약 달리는 도중 기어오를 수 있는 장애물이 감지되면 달리기는 기어오르기로 덮어씌워 집니다. 이 모든 일은 1프레임 내에 일어나며, 저희는 가드나 조깅 같은 기본 상태를 스크립트 어디에서나 언제든 불러올 수 있습니다. 이 함수는 요청된 상태를 보다 적절한 상태로 바꿔줍니다.
인공지능 행동
인공지능 스크립트를 쓸 때 저희는 자연스럽게 UE4 비헤이비어 트리 비헤이비어 트리 시스템을 사용했습니다. 만족스러운 전투 경험을 만들기 위해 저희는 그룹으로서 경비의 전투 비헤이비어에 많은 신경을 기울였는데요. 플레이어가 레벨 내의 모든 경비와 싸우는 일이 없도록 아달리아가 동시에 싸울 수 있는 적의 수에는 제한이 걸려 있습니다.플레이어와 싸우는 적들은 역할을 역동적으로 전환합니다. 능동적인 적들은 아달리아에게 다가와서 공격하지만 수동적인 적들은 멀리서 전투를 지켜봅니다. 적들의 공격 결정은 플레이어가 불공평하다고 느끼지 않도록 조정됩니다. 적들은 후열보다 전열에 있을 경우 아달리아를 공격할 가능성이 높기 때문에 전투가 보다 공정하게 느껴지고 예측 가능해집니다.
적들은 플레이어 주변의 가상 원에서 한 지점에 도달하려고 하는 데 그 유명한 "쿵푸 원" 원칙을 따릅니다. 적들의 이런 행태가 다른 게임에서는 유치해 보일 수 있지만, 저희는 유치하고 화려한 칼싸움 액션 장면을 강화하고자 이런 연출을 일부러 택했습니다.

저희는 UE4의 실험적 기능 중 하나인 인바이런먼트 쿼리 시스템을 이용해 적들에게 전투 도중 어디에 위치해야 할지 알려줬습니다. 잠재적인 위치 가운데 아달리아의 앞과 옆에 좀 더 가중치가 있고, 뒤는 가중치가 적습니다. 적들이 이상해 보일 수 있는 위치에는 가지 않도록 조정하고자 했습니다. 예를 들면 위 이미지에서 경비들이 발코니 레일 위에 기술적으로 올라갈 수 있지만, 이런 상황에서는 그 자리를 피해달라고 그들에게 요청했죠. 마지막으로, 상호작용형 오브젝트와 가까운 위치에 더 많은 가중치를 부여했습니다. 적들이 환경 함정에 더 쉽게 당하도록 만들기 위해서죠.
게임플레이 요소
싸우는 동안 플레이어는 주변의 많은 오브젝트를 즉흥적으로 사용할 수 있습니다. 저희의 초기 목표는 환경 속의 모든 오브젝트가 직관적이면서도 유기적인 방식으로 상호작용하도록 만드는 것이었죠. 이를 염두에 두고 저희는 오브젝트에 대한 모양과 크기 템플릿을 만들어 전반적인 일성을 만들어냈습니다. 저희 오브젝트는 모두 소수의 일반 블루프린트 클래스를 상속했습니다. 예를 들어, "넘어뜨릴 수 있음" 클래스의 오브젝트는 모두 키가 크고 넘어뜨릴 수 있는 것들입니다. 다음으로 이 클래스는 얇음과 큼이라는 두 가지 범주로 나뉩니다. 개별 오브젝트에 대해서는 더 작은 조정과 변형이 가해지고요.
또한, 저희는 이런 요소가 체계적으로 반응하면서 연쇄적인 반응과 긴급한 상황을 만들어내도록 했습니다. 이는 예상치 못한 결과를 발생시키며 전투의 긴장감을 높입니다. 저희는 인터페이스를 통해 트리거 이벤트를 표준화했습니다. 예를 들면 장애물을 걷어 차고 피하는 것은 항상 밀기 이벤트를 발생시키지만, 저희는 각 상황에 맞는 결과를 많이 만들었습니다. 테이블이 밀려나고 적들이 비틀거리는 식이죠. 일부 상호작용은 잘 보이지 않기도 합니다. 예를 들어, 플레이어가 적을 발로 차서 난간 밖으로 떨어뜨리거나, 계단을 오르는 적을 피하도록 만들어 넘어뜨릴 수도 있습니다.


이 상호작용이 복잡한 조준 메카닉에 얽히지 않도록 하고 싶어 던지는 오브젝트는 유도형 발사체로 만들었습니다. 칼싸움 영웅이라면 이 정도쯤은 식은 죽 먹기일 겁니다.
여기에서 관건은 멋진 커브 궤적을 그리면서 적이 움직이고 있더라도 항상 머리에 떨어지는 발사체를 쉽게 만드는 방법이었습니다. 저희가 블루프린트에서 타임라인과 커브로 이 목적을 어떻게 달성했는지는 아래에서 확인하실 수 있습니다.

음향
저희는 게임의 체계적이면서도 비선형적인 특성을 지원하는 다양한 음향 시스템을 구축했습니다.적이 없을 때는 평온한 분위기의 음악이 나오다가 1~4명의 적과 싸울 때는 일반 전투 음악이 나오고, 적이 더 많을 때는 "서사시" 전투 음악으로 바뀌는 "다이나믹 뮤직"을 마련했죠. 음악은 리듬을 깨지 않으면서 다른 음악으로 부드럽게 전환되도록 하기 위해 특정 타임코드에서만 전환되도록 설계되었습니다. 이를 위해 시간을 매우 정확하게 측정하는 블루프린트 타임라인을 사용했습니다. 이 타임라인은 어느 시점에 다른 음악으로 전환이 허용됐는지를 알기 위해 여러 가지 이벤트 키를 담고서 음향 파일과 함께 재생됩니다. 궁금하시다면 앙 가르드!’의 오리지널 사운드 트랙을 여기에서 들어보실 수 있습니다
캐릭터들은 게임 내에서 말을 많이 하기 때문에 저희는 한 캐릭터가 동시에 여러 가지 말을 하지 못하도록 보이스 매니저를 구축했습니다. 한 캐릭터에게 말을 시킬 때는 보이스 매니저에 요청을 보냅니다. 매니저는 캐릭터가 이미 말을 하는 중인지 검토하고, 우선도에 따라 현재 하고 있는 말을 멈추게 하거나 새로운 음성 재생을 방지합니다. 물론 스토리 관련 대화가 가장 우선도가 높으므로 캐릭터가 중요한 말을 하다가 방해를 받는 일은 없죠. 반면에 그보다 덜 중요한 적들의 의견은 플레이어가 적들을 때릴 때 나는 "으악" 소리에 끊길 수 있습니다!
마지막으로, 저희는 보이스 매니저와 함께 게임 내 다이얼로그와 시네마틱 영상에서 모두 사용되는 다이얼로그 시스템을 만들었습니다. 저희 다이얼로그는 다양한 파라미터를 포함하는 커스텀 "다이얼로그 라인" 구조를 사용합니다. 재생할 음성, 자막 텍스트, 다이얼로그 우선순위, 음성을 공간화하기 위해 말하는 캐릭터, 심지어는 다이얼로그 라인에 한숨이나 환호 등 다양한 형태로 나타낼 수 있는 "대중 반응"까지 다양한 파라미터가 있습니다.

UE4로 작업의 이점?
UE4 작업은 정말 엄청났습니다. 협력 작업이 아주 훌륭했는데요. 덕분에 저희 버전 컨트롤 솔루션(SVN)을 바로 엔진과 통합할 수 있었습니다. 또한 레벨 레이어링 기능을 사용해 저희 주요 지도의 여러 측면이 동시에 작동하도록 만들었습니다.
앙 가르드! 작업은 즐거웠습니다. 저희 대부분에게 이번 프로젝트는 생애 가장 야심찬 것이었어요. 비록 게임의 일부분밖에 만들지 않았지만, 그 과정을 통해 많이 배웠습니다. 개선할 사항도 많죠. 다시 일할 기회가 생긴다면 아마 최소한 프로그래밍 부분이라도 0부터 다시 시작해서 더 깔끔하고 나은 결과물을 만들 겁니다. 하지만, UE4는 틀림없이 다시 사용할 것 같습니다!!
팀 크레딧

engarde-game.com
앙드리엥 퐁세(Adrien Poncet) - 게임 디렉터, 프로듀서 겸 사운드 디자이너
발렌틴 카페텐(Valentin Capitaine) - 게임 디자이너 겸 인공지능 디자이너
코랑탱 망주(Corentin Mangé) - 레벨 디자이너 겸 레벨 빌더
실비안 시뮈크(Sylvain Schmück) - 테크니컬 디자이너 겸 3C 디자이너
피에르 샤플레(Pierre Chapelet) - 게임 플레이 및 인공지능 프로그래머
팀 구스만(Tim Guthmann)- 애니메이터, 테크니컬 아티스트 겸 레벨 아티스트
아나이스 시모네(Anaïs Simonnet) - 캐릭터 아티스트 겸 레벨 아티스트
줄리앙 페노글리오(Julien Fenoglio) - 아트 디렉터, 컨셉 아티스트 겸 레벨 아티스트
루드비히 우(Ludwig Wu) - 음악 작곡가(MAAAV Lyon 2 출신)
일세 자마리파(Ilse Zamarripa) - 아달리아의 목소리 및 연기
애셋과 관련해 추가적인 도움을 주신 일세 자마리파(Ilse Zamarripa), 조단 자미네(Jordan Jaminet), 발렌틴 피카드(Valentin Picard), 막심 콩키(Maxime Conquy), 티보 무아텔(Thibaut Moitel), 루 드루에(Loup Druet), 기욤 파게(Guillaume Faguet) 씨에게 특별한 감사를 드립니다.