소스(게임 엔진)/역사

덤프버전 :

파일:나무위키+상위문서.png   상위 문서: 소스(게임 엔진)




1. 개요[편집]


소스 엔진의 역사를 서술한 문서다.


2. 역사[편집]



2.1. 2004년 하프라이프 2, 카운터 스트라이크: 소스 출시[편집]


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

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


2.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비트 엔진 배포를 중단하였다.


2.3. 2006년 하프라이프 2: 에피소드 1 출시[편집]



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

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


2.4. 2007년 하프라이프 2: 에피소드 2, 팀 포트리스 2, 포탈 출시[편집]



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

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

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

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


2.5. 2008년 레프트 4 데드 출시[편집]


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

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

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


2.6. 2009년 레프트 4 데드 2 출시[편집]


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

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

대대적인 버전업을 했으나 바뀐 게 눈에 띄지 않는다. 전작들이 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만 지원하며 밸브에서 아직 공식 지원하지는 않는다.


2.12. 2022년 닌텐도 스위치 지원[편집]


포탈: 컴패니언 컬렉션이 스위치용으로 출시하게 됨으로써 스위치도 지원하기 시작했다.

[1] 다른 밸브 게임들은 엔진이 최신 버전욿 적용된 채로 출시되고 있었으나 밸런싱 차원에서인지 카운터 스트라이크: 소스만은 출시 당시의 초기 그대로가 유지되고 있었다. 베타에서 먼저 적용된 뒤 시간 차이를 두고 본 게임 클라이언트에도 정식으로 적용되었다.[2] 코멘터리에서는 '월드 포탈'이라고 하지만, 개발툴내에서 사용되는 명칭은 'linked_portal_door'로, 포탈건이 만드는 포탈과 비슷한 기능을 하지만 테두리가 없고, 사이즈 조정이 자유로우며, 포탈건이 발사하는 프롭이 통과할 수 있다는 큰 차이점을 가지고있다.[3] 코멘터리에서는 포탈 2 레벨 디자인시 발생하는 수정 사항을 빠르게 고치기위해 만들었으며, 레벨 디자인이 확정된 이후에는 완성도를 위해서 모두 제거하였으나, 제거 시 발생하는 기술적 문제로 인해서 딱 한 곳에만 월드포탈을 남겨놨다. 그리고 포탈 2에 남아있는 두 번째 월드 포탈이 발견되었다 포탈2 DLC인 PeTI 퍼즐 메이커를 통해 만들어진 맵의 엘리베이터와 실험실을 연결하는 용도로도 사용되었다. 포탈을 통해 별개의 공간을 연결하는 거라서 물리적으로 불가능한 공간도 구현이 가능하다고 한다.

파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는
문서의 r296 판{{{#!wiki style="display: inline; display: 3;"
, 3번 문단}}}에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r296 판{{{#!wiki style="display: inline; display: 3;"
, 3번 문단}}} (이전 역사)
문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)

문서의 r 판{{{#!wiki style="display: inline; display: none;"
, 번 문단}}} (이전 역사)




파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-12-04 04:05:30에 나무위키 소스(게임 엔진)/역사 문서에서 가져왔습니다.