소스 엔진

밸브 코퍼레이션의 게임 엔진
골드 소스 엔진소스 엔진

밸브 코퍼레이션의 비주얼 아티스트 그레이 호스필드(Gray Horsfield)의 테크니컬 데모.

셰이더 테크니컬 데모.

1 개요

밸브 코퍼레이션이 개발한 게임 엔진.

2 상세

퀘이크 엔진을 대량으로 개조해서 만든 골드 소스 엔진 대신 새로 개발된 엔진으로 하프 라이프 2에 처음으로 사용되었다. 픽사의 3D 영화 제작에 쓰이는 셰이더 기반 렌더러를 사용하였다. 또한 이전에 골드소스 엔진으로 개발되었던 몇몇 게임들이 소스 엔진으로 리메이크되기도 했다. 소스 엔진으로 개발된 게임들은 대부분 밸브가 개발한 게임들이지만, 마비노기 영웅전과 Zeno Clash 같이 다른 회사에서 개발한 게임들도 꽤 있다. 밸브 쪽에서 NDA를 걸고 라이선스를 판매하기 때문.

2.1 물리 엔진

소스 엔진은 게임에 쓰이는 정교한 물리적 움직임을 위해 하복 엔진이라고 하는 별도의 미들웨어를 이용한다. 밸브가 만든 것은 아니며, 자세한 것은 해당 항목 참고. 하복 엔진을 네트워크상 물리 효과 지원을 위해 손대지 않은 곳이 없을 정도로 커스터마이즈해서 사용하였다. 또한 고사양은 물론 저사양에서도 높은 퀄리티의 효과를 보여준다는 점도 특징이다.

소스 2에는 밸브가 자체 개발한 엔진인 루비콘으로 교체되었다.

2.2 소리 엔진

소리에는 마일즈 사운드 시스템이라는 미들웨어를 이용하였다. 물리엔진에 HavokPhysX가 있다면 소리엔진에는 마일즈 사운드 시스템FMOD가 있다고 할 정도로 존재는 드러나지 않지만 상당히 자주 쓰이는 엔진이다.

2.3 그래픽 시스템

마테리얼 시스템이라는 특유의 엔진을 사용하고 있는데, 물체에 재질을 미리 정해두면 자동으로 해당 물체에 쓸 텍스처, 사운드, 물체의 강도, 부숴졌을 때의 반응 등이 연동되는 시스템이며, CPU 의존성이 높고 소스 엔진 게임의 거의 대부분의 처리능력을 여기에 쓴다고 보면 된다.[1]

3 역사

3.1 2004년 하프라이프 2, 카운터 스트라이크: 소스 출시

  • 지원 DirectX 버전: DX6/7/8/8.1/9/9b
  • 사용 게임: 현재 없음

당시에는 AMD CPU와 협력관계였으며, 특히 ATI Radeon과 협력관계가 깊었다. 현재는 모든 소스 엔진이 하프 라이프 2: 에피소드 2 이상 버전으로 업그레이드되었기 때문에 지금은 흔적을 찾아볼 수 없다.

3.2 2005년 하프 라이프 2: 로스트 코스트 시연, 데이 오브 디피트: 소스 출시

HDR 시연용 엔진. 코멘터리 시스템을 최초로 도입했으며, NVIDIA VGA에도 신경을 써 주었다. AMD CPU와 협력관계를 유지하여 64비트 버전 엔진도 제작되었으나. 바로 다음해 하프 라이프 2: 에피소드 1부터 인텔과의 협력관계로 바뀌면서 그 후로 64비트 엔진은 제작되지 않았다. 시연용으로 제작한 것이라 최적화가 부족한 관계로 하프 라이프 2: 에피소드 1보다 성능이 후달리는 편.

HDR 시연에도 한가지 일화가 있는데. 빛 계산은 수치를 세밀하게 표현하기 힘든 정수보다 부동소수점(Floating Pont)까지 끌어다 계산하는 것이 HDR의 정석이다. 예를 들어 1.5, 1.6이라는 수치는 정수로는 절대 표현할 수 없으며, 소수점까지 계산하기에는 쉐이더라는 연산 유닛의 성능의 소모가 심하고, 무엇보다 제일 큰 문제는 당시 주류 VGA들은 ROP라는 유닛들이 소수점 처리기능이 취약했던 것.

결국 밸브는 다른게임들이 시도했던 소수점계산 방식의 HDR을 포기하고, 색별 256단계의 정수 표현의 HDR을 구현하였다.이로 인해서 낮은 사양의 VGA도 HDR이 구현 가능해졌고 HDR이 정식으로 편입되기 이전 버전의 DX9/DX9b 카드들도 구원받았다. 위에서 1.5, 1.6같은 부동소수점으로 표현 가능한 수치들은 스케일을 늘려서 15, 16 식으로 정수로 표현하게 하였다. 물론 소수점 네 자리 이후가 보편적인 부동소수점에 비하면 256단계로는 표현 제약도 심해지지만, 반대로 라이트닝 계산은 계산을 세밀하게 한다고 해도 눈에 띄는 차이가 거의 없기에 이런 방식을 사용할 수 있게 된 것. 빛의 계산이 부정확해서 발생하는 오차로 인해, 여기저기 추가적으로 최적화 할것이 많아지는점이 생긴다는것은 양날의 검. 이후 레프트 4 데드 2까지도 정수방식의 HDR을 계속 사용하게 된다.

현재 스팀을 통해 배포되는 엔진중 가장 오래된 버전의 엔진.

2009년 말 64비트 엔진 배포를 중단하였다.

3.3 2006년 하프 라이프 2: 에피소드 1 출시

제작협력사를 인텔로 바꾸고 NVIDIA에 대한 코드 최적화가 실시되기 시작한 버전. 정식으로 HDR이 지원되기 시작하였으며, NPC들의 AI향상, 반응 스크립트 개선, 덤으로 2005년에 출시된 데이 오브 디피트: 소스에서 소리효과를 대폭 개선했다. 인텔 CPU 코드최적화에 필요한 VTune Performance Analyzer의 흔적도 보인다. 이후 기존 소스엔진 게임들이 모두 에피소드 1 엔진으로 업그레이드되었으며 쉐이더가 없는 DX6/7 VGA에 대한 지원이 빠지기 시작한다.

같은 DX8과 9를 지원하지만 효과를 처리하는 몇몇 부분은 ATi쪽과 사용 코드가 달라 알파채널을 지원하는 이팩트를 쓰면 색감이 빠져 보인다. 물효과라던지 얼음효과 같이 반사와 투명도가 같이 존재하는 효과들은 색이 많이 연해 보이는 문제점이 있다.

3.4 2007년 하프 라이프 2: 에피소드 2, 팀 포트리스 2, 포탈 출시

제작 협력 VGA 회사를 완전히 NVIDIA로 바꾸고 스팀 상점 페이지에도 엔비디아 로고를 달고 나온다. 개선점만 보자면 소스 엔진 출시 이후 가장 큰 혁명이라고 불릴 정도.

  • 파티클 효과 실시간 계산 및 유연한 적용 시작 파티클 계산의 멀티코어 CPU지원
  • 손전등 플래쉬등의 가변적인 라이팅으로 인한 그림자 생성효과 지원
  • 얼굴 표정의 풀 VGA처리 및 자동적으로 생성되는 립싱크 로컬라이즈 지원

가장 중요한점은 마테리얼 시스템의 멀티코어 CPU지원이었다. 소스 엔진의 특성상 CPU 처리가 잦은데, 이전까진 CPU 하나만 썼기 때문에 그래픽 효과가 좋으면 프레임이 많이 하락하고 높은 프레임 유지도 쉽지 않았다. 게다가 팀 포트리스 2는 특수효과가 범벅된 게임이라, CPU 하나만 쓰게 하면 당시의 쟁쟁한 사양도 32명방 난전이 일어나면 20프레임 띄우는게 다반사였다. 결국 레프트 4 데드 출시 후에 멀티코어 CPU 지원이 정식 패치되었다. 덤으로 데이 오브 디피트: 소스도 같이 엔진 업그레이드를 받았으며, 맥 지원과 동시에 주요 카운터 스트라이크: 소스도 엔진 업그레이드를 포함한 업데이트를 받게 되었다.

팀 포트리스 2부터 DX7 지원이 완전히 삭제되었다. 강제로 DX7 모드로 구동시키면 까만 화면만 출력된다.

3.5 2008년 레프트 4 데드 출시

  • 지원 DirectX 버전: 9/9b/9c

NVIDIA와도, ATI와도 제작 협력을 하지 않고 독립적으로 개발된 버전으로, 2007년 엔진이과 비교했을 때 완벽하게 멀티코어 CPU 지원, 다이렉트X 9c 버전 기술 정식 채용했다. 그리고 모션 캡처를 통한 상황별 애니메이션이 최초로 적용되었다.

그래픽 관련 콘솔 명령어가 많이 막혀버렸고, DX8.1이하 버전에 대한 지원이 완전히 끊겼다. -dxlevel도 먹히지 않는다.

3.6 2009년 레프트 4 데드 2 출시

  • 지원 DirectX 버전: DX 9/9b/9c/10 (알파)

레프트 4 데드와 마찬가지로 카운터 스트라이크: 소스 기반이지만. 엔진 버전이 2.0.0.4로 급격하게 빌드넘버가 상승하면서 엔진을 거의 갈아 엎었다는것을 암시한다. 그러나 작동하지 않는 카운터 스트라이크: 소스 명령어는 여전히 남아있더라는게 후문.

대대적인 버전업에도 불구하고, 바뀐게 눈에 띄지 않는다는 점은 어느정도 안습 요소로 작용한다. 전작들이 DX9c 베타 버전으로 코드만 넣어놓고 사용을 하지 않거나, 아주 일부만 적용했다면 DX9c 버전의 사용빈도가 월등하게 높아졌고 VGA에서 DX9b 버전 대비 높은 성능으로 표현한것이 특징. 특히 레프트 4 데드 2의 감염자의 신체 훼손이 DX9c로 표현한 주요 효과들이다.

3.7 2010년 맥 OS X 지원

OS X를 지원하는 버전. 맥 지원을 위해 주요 게임들이 오렌지 박스 엔진으로 업그레이드되었다. 맥에서는 현재 OpenGL을 이용하며 오디오는 OpenAL을 이용하는 중.

3.8 2011년 포탈 2 출시

레프트 4 데드 2의 엔진을 개량한 엔진이다. 엔진 버전은 2001이다.

3.9 2012년 카운터 스트라이크: 글로벌 오펜시브 출시

2012년 빌드 버전 4932로 업그레이드되었다. 카운터 스트라이크: 글로벌 오펜시브도타 2에 사용된 엔진이다. FXAA 등의 기술 지원이 추가되어 있으며, 게임 내에서는 아직 볼 수 없지만 Ambient Occlusion, Cinematographic Motion blur, Tyndall Effects, Dynamic Lighting, DoF 등의 기술도 적용되어 있다.

3.10 2013년 리눅스용 스팀 출시, 도타 2 정식 출시

엔진버전 23, 빌드 5134로 업데이트 되었고, OpenGL 그래픽 API 가속을 통해서 공식적으로 리눅스도 지원하게 되었다.

3.11 2014년 안드로이드 지원

엔비디아에서 하프 라이프 2와 포탈을 쉴드용으로 포팅하면서 지원하게 되었다. 다만 테그라만 지원하는 상황이며 밸브에서 아직 공식 지원하지는 않는다.

3.12 2015년 소스 2 엔진 출시

본래 소스 2 엔진의 존재는 게이브 뉴웰이 자신의 생일 때 밝혀 처음 드러났다. 이후 2014년 8월 7일의 도타 2 베타 커스텀 게임 업데이트에 조용히 소스 2를 사용한 것으로 알려졌다. 그리고 2015년 리본 베타를 거쳐 정식으로 도타 2에 처음으로 적용되었다. 소스 2 엔진이 공식적으로 출시될 날짜는 미정이다.

2015년 GDC에서 소스 2 엔진를 공식 공개하면서 출시시 완전 무료화를 선언했다. 다른 게임 엔진이 조건부 무료인 것과 같이 게임 발매시 스팀에 반드시 출시해야 한다는 조건하에서 제약 없이 무료 이용이 가능하다. 또한 물리 엔진이 기존 하복 엔진에서 자체 개발 엔진인 루비콘 엔진으로 변경되었다.

소스 2 엔진에서 가장 괄목할만한 성과는 하드웨어간 I/O 렉을 크게 줄였다는 점이다. 이제는 크게 늘어나버린 메인메모리 덕에 상대적으로 매우 느린 하드디스크 캐쉬를 쓸 일이 적어졌고 SSD등장으로 인해 텍스쳐 로딩으로 손실되는 프레임 하락 현상을 더 이상 걱정할 필요가 없어졌다. 또 64비트 CPU가 보급이 많아졌으므로 64비트 정식지원으로 더 이상 메모리 제한에도 허덕일 필요도 없어졌다. 호환성 문제로 DX9가 남아 있긴 하지만 내부적으론 DX11기반이라 Windows XP는 지원되지 않는다. 또한 플래시 하드웨어 가속도 지원하므로 플래시를 UI로 쓰는 게임들도 GPU 자원을 쓸 수 있다.

3.13 2016년 Aperture Robot Repair 출시

GDC2015에서 스팀 VR 퍼포먼스 테스트용으로 만들어진 'Aperture Robot Repair'가 소스 2 엔진을 사용한다.# 2016년에 스팀에서 SteamVR Performance Test이라는 이름으로 무료 공개되었으며, 이후 더 랩에서도 포함되었다. 하지만 더 랩의 다른 콘텐츠들은 전부 유니티 엔진을 사용하며, 소스 2 엔진을 사용하는 것은 Aperture Robot Repair 뿐이다.

4 소스 엔진을 사용한 게임

나무위키 문서가 작성된 상업 작품만 기재하고 밸브 코퍼레이션의 프랜차이즈에는 λ마크를 붙인다. 소스 2 엔진이 들어간 작품에는 ②를 표기한다. 비상업용 아마추어 게임 및 모드는 소스 엔진 모드 문서 참고.

  1. 이 때문에 소스 엔진 게임 파일 중 material이라는 폴더가 있다. 좋은 예로 팀 포트리스 2의 스파이 전용 무기인 고드름으로 백스탭을 하면 캐릭터가 얼음처럼 변하는게 마테리얼을 이용한 효과다.
  2. 엔진이 광범위하게 수정되었다. 손대지 않은 코드는 거의 없다고 밝혔으며, 별개의 엔진으로 봐도 좋을 정도로 갈아엎었다.