소스(게임 엔진)/역사
1. 개요
소스 엔진의 역사를 서술한 문서다.
2. 역사
2.1. 2004년 하프라이프 2, 카운터 스트라이크: 소스 출시
- 지원 DirectX 버전: DX6/7/8/8.1/9/9b
- 사용 게임: 없음
2.2. 2005년 하프 라이프 2: 로스트 코스트 시연, 데이 오브 디피트: 소스 출시
- 지원 DirectX 버전: DX6/7/8/8.1/9/9b
- 사용 게임: 하프 라이프 2: 로스트 코스트
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비트 엔진 배포를 중단하였다.
2.3. 2006년 하프 라이프 2: 에피소드 1 출시
- 지원 DirectX 버전: DX7/8/8.1/9/9b
- 사용게임: 일부 소스 엔진 모드 게임, 하프 라이프: 소스, 하프 라이프 2: 데스매치 등 극히 일부.\
같은 DX8과 9를 지원하지만 효과를 처리하는 몇몇 부분은 ATi쪽과 사용 코드가 달라 알파채널을 지원하는 이팩트를 쓰면 색감이 빠져 보인다. 물효과라던지 얼음효과 같이 반사와 투명도가 같이 존재하는 효과들은 색이 많이 연해 보이는 문제점이 있다.
2.4. 2007년 하프 라이프 2: 에피소드 2, 팀 포트리스 2, 포탈 출시
- 지원 DirectX 버전: DX8/8.1/9/9b/9c (베타)
- 사용 게임: 하프 라이프 2, 하프 라이프 2: 에피소드 1, 하프 라이프 2: 에피소드 2, 포탈, 팀 포트리스 2, 데이 오브 디피트: 소스, 카운터 스트라이크: 소스, 일부 소스 엔진 모드
- 파티클 효과 실시간 계산 및 유연한 적용 시작 파티클 계산의 멀티코어 CPU지원
- 손전등 플래쉬등의 가변적인 라이팅으로 인한 그림자 생성효과 지원
- 얼굴 표정의 풀 VGA처리 및 자동적으로 생성되는 립싱크 로컬라이즈 지원
팀 포트리스 2부터 DX7 지원이 완전히 삭제되었다. 강제로 DX7 모드로 구동시키면 까만 화면만 출력된다.
2.5. 2008년 레프트 4 데드 출시
- 지원 DirectX 버전: 9/9b/9c
그래픽 관련 콘솔 명령어가 많이 막혔고, DX8.1이하 버전에 대한 지원이 완전히 끊겼다. -dxlevel도 먹히지 않는다.
2.6. 2009년 레프트 4 데드 2 출시
- 지원 DirectX 버전: DX 9/9b/9c/10 (알파)
대대적인 버전업에도 불구하고, 바뀐게 눈에 띄지 않는다는 점은 어느정도 안습 요소로 작용한다. 전작들이 DX9c 베타 버전으로 코드만 넣어놓고 사용을 하지 않거나, 아주 일부만 적용했다면 DX9c 버전의 사용빈도가 월등하게 높아졌고 VGA에서 DX9b 버전 대비 높은 성능으로 표현한것이 특징. 레프트 4 데드 2의 감염자의 신체 훼손이 DX9c로 표현한 주요 효과들이다.
2.7. 2010년 맥 OS X 지원
맥 OS X를 지원하는 버전. 맥 지원을 위해 주요 게임들이 오렌지 박스 엔진으로 업그레이드되었다. 맥에서는 현재 OpenGL을 이용하며 오디오는 OpenAL을 이용하는 중.
2.8. 2011년 포탈 2 출시
레프트 4 데드 2의 엔진을 개량한 엔진으로 버전은 2001이다. 퍼즐 요소로 액체 젤이 추가되면서 게임 콘솔에서 발생할 수 있는 성능저하문제를 감소시키기 위해 액체 방울을 표현하는 코드가 수정되었으며, 포탈건에 사용된 포탈을 응용해 별개의 공간을 눈에 띄지않게 연결해주는 일명 '월드 포탈' 기능이 추가되었다.[2][3]
2.9. 2012년 카운터 스트라이크: 글로벌 오펜시브 출시
2012년 빌드 버전 4932로 업그레이드되었다. 카운터 스트라이크: 글로벌 오펜시브 및 도타 2에 사용된 엔진이다. FXAA 등의 기술 지원이 추가되어 있으며, 게임 내에서는 아직 볼 수 없지만 Ambient Occlusion, Cinematographic Motion blur, Tyndall Effects, Dynamic Lighting, DoF 등의 기술도 적용되어 있다.
2.10. 2013년 리눅스용 스팀 출시, 도타 2 정식 출시
엔진 버전 23, 빌드 5134로 업데이트 되었고, OpenGL 그래픽 API 가속을 통해서 공식적으로 리눅스도 지원하게 되었다.
2.11. 2014년 안드로이드 지원
엔비디아에서 하프 라이프 2와 포탈을 쉴드용으로 포팅하면서 지원하게 되었다. NVIDIA Tegra만 지원하며 밸브에서 아직 공식 지원하지는 않는다.
[1] 다른 밸브 게임들은 엔진이 최신 버전욿 적용된 채로 출시되고 있었으나 밸런싱 차원에서인지 카운터 스트라이크: 소스만은 출시 당시의 초기 그대로가 유지되고 있었다. 베타에서 먼저 적용된 뒤 시간 차이를 두고 본 게임 클라이언트에도 정식으로 적용되었다.[2] 코멘터리에서는 '월드 포탈'이라고 하지만, 개발툴내에서 사용되는 명칭은 'linked_portal_door'로, 포탈건이 만드는 포탈과 비슷한 기능을 하지만 테두리가 없고, 사이즈 조정이 자유로우며, 포탈건이 발사하는 물체가 통과할 수 있다는 큰 차이점을 가지고있다.[3] 코멘터리에서는 포탈 2 레벨 디자인시 발생하는 수정 사항을 빠르게 고치기위해 만들었으며, 레벨 디자인이 확정된 이후에는 완성도를 위해서 모두 제거하였으나, 제거 시 발생하는 기술적 문제로 인해서 딱 한 곳에만 월드포탈을 남겨놨다. 포탈2 DLC인 PeTI 퍼즐 메이커를 통해 만들어진 맵의 엘리베이터와 실험실을 연결하는 용도로도 사용되었다. 포탈을 통해 별개의 공간을 연결하는 거라서 물리적으로 불가능한 공간도 구현이 가능하다고 한다.