게임엔진은 무슨 뜻인가요? 너무 일반화하기 전에 다시 한 번 생각해보세요

최근에 저는 C++로 게임 엔진을 작성하느라 바빴습니다. 작은 모바일 게임을 만드는 데 사용합니다. 홉 아웃. 제 아이폰6로 녹화한 영상입니다. (소리를 켜셔도 됩니다!)


귀하의 브라우저는 HTML5 비디오를 지원하지 않습니다.


Hop Out은 제가 직접 플레이하고 싶은 게임입니다. 만화 같은 3D 그래픽을 갖춘 복고풍 아케이드 게임입니다. 게임의 목표는 Q*Bert처럼 각 플랫폼을 다시 색칠하는 것입니다.



왜 게임 엔진을 작성하고 싶은 사람이 있을까요? 가능한 이유는 다양합니다:

  • 당신은 장인입니다. 당신은 시스템을 처음부터 구축하고 그것이 실제로 구현되는 것을 보는 것을 즐깁니다.
  • 게임 개발에 대해 더 알고 싶으십니까? 저는 14년 동안 게임 산업에 종사해 왔지만 아직도 어떻게 해야 할지 고민 중입니다. 저는 엔진을 처음부터 작성할 수 있을지 확신조차 없었습니다. 대규모 스튜디오에 있는 프로그래머의 일상적인 업무 책임과는 너무 달랐기 때문입니다. 나는 확인하고 싶었다.
  • 당신은 통제감을 좋아합니다. 원하는 방식으로 코드를 구성하고 모든 것이 어디에 있는지 항상 아는 것은 재미있습니다.
  • AGI(1984), id Tech 1(1993), Build(1995)와 같은 클래식 게임 엔진과 Unity 및 Unreal과 같은 거대 업계 엔진에서 영감을 받았습니다.
  • 당신은 우리 게임 산업이 엔진 개발 과정에서 미스터리를 제거해야 한다고 생각합니다. 우리는 아직 게임 개발의 기술을 완전히 익히지 못했습니다. 말도 안 돼요! 이 프로세스를 주의 깊게 살펴볼수록 개선할 가능성이 커집니다.

2017년의 게임 플랫폼(모바일, 콘솔, PC)은 매우 강력하고 여러 면에서 서로 유사합니다. 게임 엔진 개발은 더 이상 과거처럼 약하고 희귀한 하드웨어로 인해 어려움을 겪지 않습니다. 내 생각엔 지금은 상대와의 싸움에 가깝다. 자신의 작업의 복잡성. 쉽게 몬스터를 만들 수 있어요! 이것이 바로 이 기사의 모든 팁이 코드를 관리 가능하게 유지하는 방법을 중심으로 설명되는 이유입니다. 나는 그들을 세 그룹으로 분류했습니다.

  1. 직렬화는 광범위한 주제라는 점을 인식하세요.

이 팁은 모든 게임 엔진에 적용됩니다. 셰이더를 작성하는 방법, 옥트리가 무엇인지, 물리학을 추가하는 방법에 대해서는 설명하지 않겠습니다. 나는 당신이 이것을 알아야 한다는 것을 이미 알고 있다고 생각합니다. 그리고 이러한 주제의 대부분은 당신이 만들고 싶은 게임 유형에 따라 다릅니다. 그 대신, 나는 널리 다루어지지 않는 주제, 즉 무언가를 설명하려고 할 때 가장 흥미롭다고 생각하는 주제를 의도적으로 선택했습니다.

반복적인 접근 방식을 사용하세요

첫 번째 팁은 주저하지 말고 무엇이든 작동하도록 만든 다음 반복하는 것입니다.


가능하다면 장치를 초기화하고 화면에 무언가를 그리는 샘플 애플리케이션으로 시작하세요. 이 경우에는 SDL을 다운로드하고 Xcode-iOS/Test/TestiPhoneOS.xcodeproj를 연 다음 iPhone에서 testgles2 예제를 실행했습니다.



짜잔! OpenGL ES 2.0을 사용하는 멋진 회전 큐브가 있습니다.


다음 단계는 누군가가 만든 마리오의 3D 모델을 다운로드하는 것이었습니다. 나는 대략적인 OBJ 파일 로더를 빠르게 작성했고(형식은 그리 복잡하지 않습니다) 벽돌 대신 마리오를 그릴 수 있도록 예제를 수정했습니다. 또한 텍스처를 로드하기 위해 SDL_Image를 통합했습니다.



그런 다음 마리오를 움직일 수 있는 듀얼 스틱 컨트롤을 구현했습니다. (처음에는 듀얼 스틱 슈터를 만드는 아이디어를 고려했습니다. 그러나 마리오에서는 그렇지 않았습니다.)



다음으로 하고 싶었던 일은 뼈대 애니메이션을 시작하는 것이었습니다. 그래서 블렌더를 열고 촉수 모델을 만든 다음 앞뒤로 진동하는 뼈 두 개로 이루어진 뼈대를 거기에 연결했습니다.



이 시점에서 저는 OBJ 형식을 포기하고 Blender에서 JSON 파일을 내보내는 Python 스크립트를 작성했습니다. 이러한 JSON 파일은 스킨 처리된 메시, 스켈레톤 및 애니메이션 데이터를 설명합니다. C++ JSON 라이브러리를 사용하여 이 파일을 게임에 로드했습니다.



모든 것이 제대로 작동한 후 블렌더로 돌아가 좀 더 상세한 캐릭터를 만들었습니다. (이것은 제가 만들고 리깅한 최초의 3D 인물이었습니다. 상당히 자랑스러웠습니다.)



다음 몇 달 동안 나는 다음과 같은 조치를 취했습니다.

  • 나는 벡터와 행렬 작업을 위한 함수를 나만의 3차원 수학 라이브러리로 분리하기 시작했습니다.
  • .xcodeproj를 CMake 프로젝트로 대체했습니다.
  • 저는 Visual Studio에서 작업하는 것을 좋아하기 때문에 Windows와 iOS 모두에서 엔진을 실행하도록 만들었습니다.
  • 코드를 별도의 라이브러리 "엔진"과 "게임"으로 이동하기 시작했습니다. 시간이 지나면서 나는 그것들을 더 작은 도서관으로 나누었습니다.
  • JSON 파일을 게임이 직접 로드할 수 있는 바이너리 데이터로 변환하기 위해 별도의 애플리케이션을 작성했습니다.
  • 어떤 시점에서는 iOS 빌드에서 모든 SDL 라이브러리를 제거했습니다. (Windows 빌드에서는 여전히 SDL을 사용합니다.)

핵심은 다음과 같습니다. 프로그래밍을 시작하기 전에는 엔진 아키텍처를 계획하지 않았습니다.. 그것은 의식적인 선택이었습니다. 대신 다음 기능을 구현하는 가장 간단한 코드를 작성한 다음 어떤 아키텍처가 나타나는지 살펴보았습니다. 당연히. "엔진 아키텍처"란 게임 엔진을 구성하는 모듈 세트, 해당 모듈 간의 종속성, 각 모듈과 상호 작용하기 위한 API를 의미합니다.




항상 완전히 다시 작성해야 하는 잘못된 코드를 작성하기 때문에 이 접근 방식을 사용하면 많은 시간이 낭비되는 것처럼 보일 수 있습니다. 그러나 대부분의 변경 사항에는 하나의 .cpp 파일에서 다른 .cpp 파일로 코드 이동, 함수 정의를 .h 파일로 추출 또는 기타 똑같이 간단한 작업이 포함됩니다. 정의하다, 어디무엇을 놓아야 하는가는 어려운 작업이며, 코드가 이미 존재하면 해결하기가 더 쉽습니다.


나는 반대 접근 방식, 즉 필요한 모든 것을 수행할 아키텍처를 미리 생각하려고 하면 더 많은 시간이 낭비된다고 확신합니다. 오버엔지니어링의 위험성에 대해 제가 가장 좋아하는 두 기사는 Tomas Dabrowski의 The Vicious Circle of Generalization과 Joel Spolsky의 Don't Let Architecture Astronauts Scare You입니다.


코드에서 문제를 만나기 전에 종이에서 문제를 해결해서는 안 된다는 말은 아닙니다. 또한 필요한 기능이 무엇인지 미리 결정해서는 안 된다는 뜻도 아닙니다. 예를 들어, 나는 엔진이 백그라운드 스레드의 모든 리소스를 로드하기를 원한다는 것을 처음부터 알고 있었습니다. 나는 내 엔진이 최소한 일부 리소스를 로드하기 시작할 때까지 이 기능을 설계하거나 구현하려고 시도하지 않았습니다.


반복적 접근 방식은 빈 종이를 보면서 상상할 수 있었던 것보다 훨씬 더 우아한 아키텍처를 제공했습니다. 현재 내 엔진의 iOS 빌드는 다음과 같이 100% 구성되어 있습니다. 원본 코드, 자체 수학 라이브러리, 컨테이너 템플릿, 반사/직렬화 시스템, 렌더링 프레임워크, 물리 및 오디오 믹서를 포함합니다. 나는 이 모듈 각각을 직접 작성해야 할 이유가 있었지만 이것이 여러분에게는 필요하지 않을 수도 있습니다. 대신, 귀하의 엔진에 적합할 수 있는 훌륭한 오픈 소스 및 허용 라이선스 라이브러리가 많이 있습니다. GLM, Bullet Physics 및 STB 헤더는 흥미로운 예 중 일부에 불과합니다.

너무 일반화하기 전에 다시 한 번 생각해보세요

프로그래머로서 우리는 코드 중복을 피하기 위해 노력하고 코드가 일관된 스타일을 따르는 것을 좋아합니다. 하지만 이러한 본능이 모든 결정을 내리게 놔두지 않는 것이 도움이 된다고 생각합니다.

때때로 DRY 원칙을 어기세요

예를 들어 보겠습니다. 내 엔진에는 std::shared_ptr과 유사한 스마트 포인터의 여러 템플릿 클래스가 포함되어 있습니다. 각각은 원시 포인터 주위의 래퍼 역할을 하여 메모리 누수를 방지하는 데 도움이 됩니다.

  • 소유<>단일 소유자가 있는 동적으로 할당된 개체의 경우.
  • 참조<>객체가 여러 소유자를 가질 수 있도록 참조 계산을 사용합니다.
  • 오디오::앱 소유<>오디오 믹서 외부의 코드에서 사용됩니다. 이를 통해 게임 시스템은 현재 재생 중인 음성과 같이 오디오 믹서가 사용하는 개체를 소유할 수 있습니다.
  • 오디오::오디오핸들<>오디오 믹서 내부의 참조 카운팅 시스템을 사용합니다.

이러한 클래스 중 일부는 DRY 원칙을 위반하여 다른 클래스의 기능을 복제하는 것처럼 보일 수 있습니다. 사실 개발 초기에는 기존 Reference 클래스를 재사용하려고 했습니다.<>가능한 한 많이. 그러나 오디오 개체의 수명에는 특별한 규칙이 적용된다는 사실을 알게 되었습니다. 개체가 조각 재생을 마쳤고 게임이 이 개체에 대한 포인터를 소유하지 않은 경우 해당 개체는 즉시 삭제 대기열에 들어갈 수 있습니다. 게임이 포인터를 캡처한 경우 오디오 개체를 삭제하면 안 됩니다. 그리고 게임이 포인터를 캡처했지만 플레이가 끝나기 전에 포인터의 소유자가 파괴되면 포인터를 취소해야 합니다. 복잡한 참조 대신<>, 별도의 템플릿 클래스를 도입하는 것이 더 실용적이라고 판단했습니다.


95% 재사용 가능 기존 코드- 맞아요. 그러나 그것이 당신을 수렁에 빠뜨리기 시작하거나 한때 단순했던 것을 복잡하게 만든다면, 코드베이스의 이 부분을 실제로 둘로 나누어야 하는지 스스로에게 물어보세요.

다른 호출 규칙을 사용해도 괜찮습니다.

Java에 대해 내가 좋아하지 않는 점 중 하나는 클래스 내부의 모든 함수를 정의해야 한다는 것입니다. 내 생각에는 이것은 무의미하다. 이렇게 하면 코드가 더욱 일관되게 보일 수 있지만 지나치게 복잡해지며 앞서 설명한 반복적 접근 방식을 지원하지 않습니다.


내 C++ 엔진에서 일부 함수는 클래스에 속하고 일부는 클래스에 속하지 않습니다. 예를 들어, 게임의 모든 적은 클래스이고 대부분의 적 행동은 예상대로 해당 클래스에서 구현됩니다. 반면, 내 엔진에서는 물리 네임스페이스의 함수가sphereCast() 를 호출하여 실행됩니다. sphereCast()는 어떤 클래스에도 속하지 않습니다. 단지 물리 모듈의 일부일 뿐입니다. 나는 모듈 간의 종속성을 관리하는 빌드 시스템을 가지고 있는데, 이는 코드를 상당히 잘 정리된 상태로 유지합니다. 이 함수를 임의의 클래스로 래핑해도 코드 구성이 어떤 방식으로든 개선되지 않습니다.



최소한 요구 사항이 얼마나 복잡한지 상상해 보십시오. 몇 가지 자산을 사용하여 Flappy Bird와 같은 소규모 게임을 만드는 경우 직렬화에 대해 많이 생각할 필요가 없을 것입니다. 아마도 PNG에서 직접 텍스처를 로드할 수 있으며 그것만으로도 충분합니다. 컴팩트하고 이전 버전과 호환되는 바이너리 형식이 필요하지만 직접 개발하고 싶지 않은 경우 Cereal 또는 Boost.Serialization과 같은 타사 라이브러리를 살펴보세요. 저는 Google 프로토콜 버퍼가 게임 자산 직렬화에 이상적이라고 생각하지 않지만 여전히 살펴볼 가치가 있습니다.


게임 엔진을 작성하는 것은 작은 일이라 할지라도 큰 일입니다. 더 많은 말을 할 수 있지만 솔직히 말해서 가장 많은 것은 도움이 되는 조언이 정도 길이의 기사에 대해 내가 생각할 수 있는 것은 반복적으로 작업하고, 코드를 일반화하려는 충동을 약간 억제하고, 직렬화는 광범위한 주제이므로 적절한 전략을 선택해야 한다는 점을 기억하는 것입니다. 내 경험상 이러한 점 하나하나를 무시하면 걸림돌이 될 수 있다.


나는 이 주제에 관해 메모를 비교하는 것을 좋아하므로 다른 개발자의 의견을 듣고 싶습니다. 만약 당신이 엔진을 작성했다면, 당신의 경험도 같은 결론을 이끌어냈나요? 그리고 아직 글을 쓰지 않았거나 글을 쓰려고 계획하고 있다면 당신의 생각도 나에게 흥미로울 것입니다. 어떻게 생각하나요 좋은 자원훈련을 위해? 어떤 측면이 아직도 당신에게 신비롭게 느껴지나요? 아래에 댓글을 남겨주시거나 저에게 연락해주세요.

첫 번째 게임을 만들면서 프로그래머는 하드웨어 플랫폼의 차이에도 불구하고 각 게임에 공통 구성 요소가 포함되어 있다는 결론에 도달했습니다. 그리고 첫 번째 게임은 냉장고 크기의 슬롯머신에서 이루어졌습니다.

그래픽 솔루션, 게임 메커니즘, 물리 계산 등 게임에 공통적인 기능이 별도의 라이브러리로 분리되기 시작했지만 "게임 엔진"이 되기 위해서는 아직 멀었습니다. 이는 주로 소프트웨어와 하드웨어 플랫폼의 심각한 차이와 게임 자체의 불확실성 때문이었습니다. 결국, 최초의 게임 중 다수가 텍스트 기반이라는 사실에도 불구하고 게임의 장르와 유형은 아직 발명되지 않았습니다. 실제로 게임 엔진이 등장하기 시작한 것은 초기 어드벤처 게임과 플랫폼 게임을 위한 것이었습니다. 특히 그래픽 개발과 함께 AGI(Adventure Game Interpreter)가 좋은 예입니다. 1984년에 King's Quest를 개발할 때 Sierra On-Line 프로그래머는 당시 그렇게 복잡하고 유망한 게임을 낮은 수준으로 개발해야 하는 불편함에 직면했고, 일련의 솔루션을 개발했는데 이것이 AGI가 되었습니다. 총 14개가 출시되었습니다. 다양한 게임 5년 동안 7개의 플랫폼에서 활동했기 때문에 당시에도 '크로스 플랫폼'이라는 개념이 중요했습니다.

그러나 당시의 엔진은 원래 개발 회사의 경계를 벗어나는 경우가 거의 없었으며 일반적으로 특정 게임 장르에 매우 전문화되었습니다.

시작

1993년 id Software에서 Doom 게임이 출시된 이후 상황이 바뀌기 시작했습니다. 개발은 Wolfenstein 3D 엔진의 개발을 기반으로 했지만 기능과 모듈성 측면에서 진정한 기술 혁신이었습니다. 당시에는 비디오 프로세서가 3D 그래픽을 효율적으로 처리할 수 없었기 때문에 엔진의 수석 프로그래머인 John Carmack이 3D 개체, 조명, 음영, 텍스처 매핑 등을 조작하는 데 필요한 모든 수학적 계산을 직접 수행했습니다. 결과적으로 이미지는 입체적으로 보였지만 실제로는 그렇지 않았습니다. 따라서 Doom 엔진(id Tech의 첫 번째 버전)은 진정한 3차원이 아니라 의사 3차원이었습니다. 하지만 중요한 것은 이 게임의 기술적 구성 요소가 게임 엔진이라고 할 수 있는 표준을 설정했다는 것입니다. 즉, Doom 엔진은 명확하게 분리된 각 소프트웨어 계층이 자체 데이터 부분을 처리하는 일련의 하위 시스템으로 구성된 모듈식이었습니다. 결과적으로 다양한 게임(Hexen, Heretic, Strife)과 타사 개발자(Raven Software 및 Rogue Entertainment)에서 사용하기가 훨씬 쉬워졌습니다. 따라서 게임 엔진의 출현은 20세기 90년대 중반으로 거슬러 올라간다. 즉, 현대적 의미의 게임 엔진의 정의가 마침내 형성되었다.

게임 엔진은 후자의 모든 모듈을 포함하기 때문에 일종의 고도로 전문화된 운영 체제입니다. 여기에는 메모리 관리 시스템, 그래픽 하위 시스템, 입력 시스템, 오디오 하위 시스템, 인공 지능, 물리적 하위 시스템, 네트워크 하위 시스템, 게임 레벨 편집기 등이 포함됩니다. 또한 엔진 커널은 파일(리소스) 시스템뿐만 아니라 기본 운영 체제와 다른 멀티스레딩 작업을 위한 도구 등 파일 작업에 대한 특별한 접근 방식을 제공할 수 있습니다. 최신 게임 엔진에는 게임 논리를 설명하도록 설계된 스크립팅 언어의 인터프리터와 완전한 시각적 편집기도 포함되어 있습니다. 이를 사용하면 낮은 수준의 명령 및 지침에 대한 설명을 추상화하고 게임 플레이에 집중할 수 있습니다. 엔진을 구성하는 구성 요소는 이에 국한되지 않고 다소 많을 수 있습니다.

목표

게임 엔진은 주로 개발을 단순화하고 속도를 높이기 위해 만들어졌습니다. 따라서 여기에는 게임 세계 수준 모델링, 객체 가져오기, 텍스처링, 캐릭터 로드 및 애니메이션, 시각 효과 생성, 물리 설정 등을 위한 도구가 포함되어 있습니다.

엔진 개발의 두 번째 중요한 목표는 개발 중인 게임의 크로스 플랫폼 또는 플랫폼 독립성입니다. 즉, 가능한 최소한의 변경으로 실행하는 기능입니다. 화면 크기, 컨트롤 및 방법 등을 포함한 하드웨어 차이로 인해 변경 없이 다른 플랫폼에서 게임을 시작할 수 없습니다.

게임 엔진의 개발은 새로운 게임 장르의 등장, 사용자 취향의 변화와 함께 하드웨어 및 소프트웨어 플랫폼의 개발과 함께 또는 그 영향을 받아 발생합니다. 한마디로 게임산업 전체의 발전이다.

그래픽 시스템의 탄생

90년대 중반, 3D 그래픽을 처리할 수 있는 비디오 프로세서가 등장한 후 개발을 단순화하는 소프트웨어 인터페이스가 등장하기 시작했습니다. 크로스 플랫폼 OpenGL에 이어 Windows용 Direct3D가 DirectX의 일부로 등장했습니다. 이 두 가지 시각화 장치는 앞으로 수년 동안 게임의 그래픽 출력 방법을 정의했습니다.

1996년에 Quake는 Quake Engine으로 출시되었습니다. 이 엔진은 게임 산업에 엄청난 영향을 미쳤습니다.


Quake Engine을 기반으로 한 엔진 트리

나머지 10년 동안 게임 미들웨어(즉, 게임 엔진) 시장은 id Software가 거의 단독으로 지배했습니다. 그러나 1998년에 Epic Games는 그래픽 측면에서 진정한 기술 혁신을 통해 동일한 이름의 엔진을 기반으로 성공적인 게임 Unreal을 출시했습니다. 엔진의 수석 프로그래머는 Epic 창립자 Tim Sweeney였습니다. Tim은 Carmack과 함께 게임 엔진 역사상 가장 중요한 인물이며 Unreal Engine의 3, 4 버전은 오늘날에도 여전히 인기가 높습니다. 1년 후, Epic은 훨씬 더 인기 있는 Unreal Tournament를 출시했습니다.

동시에, 경쟁 개발사인 id Software는 Unreal Tournament와 마찬가지로 온라인 전투를 포함하는 멀티플레이어 게임인 Quake 3 Arena(id Tech 3 엔진 기반)를 출시했습니다.

이 두 게임은 업계의 주력 게임이 되었으며 향후 수년간의 발전을 결정했습니다.

시장에는 플레이어가 많지 않았습니다. 그래서 그들의 제품은 매우 고가였고, 플래그십 엔진은 꽤 규모가 큰 개발사에서만 라이센스를 받았고,

상황은 21세기의 첫 10년 중반에 급격하게 변하기 시작했습니다. 그러다가 수많은 게임 개발 도구가 시장과 공개 도메인에 등장하기 시작했습니다. 미들웨어 사업이 탄력을 받기 시작했다. 첫째, 시장은 프로그래머에게 그래픽 API에 대한 높은 수준의 레이어를 제공하는 Ogre, DarkGDK 등과 같은 그래픽 프레임워크로 가득 차 있었습니다. 동시에 게임 내 편집자가 전혀 없다는 점에서 게임 엔진과 다릅니다.

그런 다음 Torque 3D, Unity 3D 등을 포함한 본격적인 게임 엔진이 소규모 인디 개발 팀에 적합한 가격으로 시장에 출시되었습니다. 예를 들어 Crytek의 CryEngine과 앞서 언급한 Unreal Engine과 같은 주력 엔진으로 시작된 엔진조차도 훨씬 더 저렴한 가격 정책을 사용하기 시작했으며 초보 개발자도 사용할 수 있게 되었습니다.


토크 3D

캐주얼 게임은 게임 산업에서 중요한 트렌드가 되었습니다. 본질적으로 단순하지만 키보드와 마우스와의 격렬한 상호 작용이 필요하지 않은 다채로운 퍼즐은 기술적 관점에서 볼 때 3D 하드코어 슈팅 게임보다 단순했기 때문에 개발에는 범용 엔진의 강력한 수정이 필요하지 않았습니다. 그러나 반면에 Torque Game Builder, HGE 등과 같은 새로운 플레이어가 업계에 등장했습니다.


토크 게임 빌더

동시에 World of Warcraft 덕분에 MMORPG는 게임 산업에서 큰 인기를 얻었으며 동시에 많은 장르가 점점 더 멀티플레이어에 의존하게 되었습니다. 많은 엔진이 사용자에게 클라이언트-서버 애플리케이션을 위한 새로운 기능을 제공할 수 없어 잊혀졌습니다. Unity 3D용 Photon 및 SmartFox와 같은 다른 엔진도 서버 솔루션을 개발하여 멀티플레이어 세계에 맞게 조정되었습니다. 처음에는 클라이언트-서버였던 세 번째 유형의 범용 엔진은 아무런 변화도 느끼지 못했습니다. 여기에는 토크 3D가 포함됩니다. 또한 수천 명의 플레이어를 위해 확장 가능한 서버 솔루션과 특정 플레이어가 사용할 수 있는 클라이언트를 결합한 HeroEngine, BigWorld와 같은 글로벌 멀티 플레이어 게임을 위해 설계된 새로운 엔진이 시장에 출시되었습니다.


HeroEngine

브라우저 게임은 90년대부터 시장에 존재했고, 이후 소셜 네트워크를 통해 두 번째 탄생을 하게 되었습니다. 브라우저용 게임을 효과적으로 제작해야 할 필요성은 간과되지 않았습니다. Torque 2D/3D, Unity 3D와 같은 범용 엔진 개발자들은 브라우저 창에 그래픽을 직접 표시할 수 있는 브라우저용 플러그인을 출시하여 이에 매우 빠르게 대응했습니다. 처음에는 Flash 기술을 기반으로 한 시각화 장치가 인기를 얻었지만 여러 가지 이유로 이 기술은 점점 시장 점유율을 잃어가고 있습니다. 따라서 이제 웹에서의 시각화를 위해 대화형 3D 그래픽을 만들 수 있는 JavaScript 라이브러리 WebGL이 자주 사용됩니다. 그러나 멀티스레딩이 부족하다는 등 언어의 단점으로 인해 라이브러리는 게임 제작자의 요구를 완전히 충족시킬 수 없습니다. 이를 대체하기 위해 W3C 컨소시엄(Microsoft, Google, Mozilla 등 포함)은 새로운 저수준 바이너리 컴파일 형식인 WebAssembly를 개발하고 있습니다.


웹어셈블리

21세기의 첫 10년 말에 모바일 기술은 매우 빠르게 발전했습니다. 마치 청천벽력처럼, 중저가 PC에 버금가는 성능과 저급 그래픽 인터페이스의 모든 특수 효과를 갖춘 강력한 게임 애플리케이션을 실행할 수 있는 모바일 장치가 등장했습니다. 어떤 경우에는 게임 엔진 개발자가 특정 하드웨어(예: Unity 3D)에 고유한 코드를 생성하는 전문 변환기를 만들고, 다른 경우에는 크로스 플랫폼 기능(예: Torque 2D, Cocos 2DX)에 맞게 제품을 현대화하여 대응했습니다. 또한 전체 차량에 대해 크로스 플랫폼 엔진을 제공하는 새로운 플레이어가 시장에 등장했습니다. 모바일 장치네이티브 코드의 속도로 실행됩니다. 이러한 도구의 예: Corona SDK, Marmalade SDK, AGK(App Game Kit).


코로나 SDK

또한 최소한의 프로그래밍 지식만으로 게임을 개발할 수 있는 다양한 크로스 플랫폼 엔진이 등장했습니다. 예로는 Construct 2 및 GameMaker Pro가 있습니다. 기성 솔루션과 시각적 편집기를 사용하면 빠르게, 때로는 몇 시간 내에 간단한 게임을 만들 수 있습니다. 이는 특히 free2play 모델과 짧은 게임 세션의 확산으로 인해 "간단한" 게임이 매우 성공적인 장르가 된 모바일 시장에서 흔히 발생하는 것으로 입증되었습니다.

게임업계의 신제품

저수준 프로그래밍 인터페이스: OpenGL, DirectX는 비디오 어댑터에 따라 개발되고 있습니다. 1~2년마다 애플리케이션 프로그래머(엔진 개발자)가 하드웨어의 모든 기능을 구현할 수 있도록 지원하고 활성화하는 새 버전이 등장합니다. DirectX는 이미 버전 12에 도달했습니다. 반면 OpenGL은 하드웨어 및 소프트웨어 제조업체가 포함된 Khronos Group 컨소시엄에서 개발한 새로운 크로스 플랫폼 그래픽 API인 Vulkan으로 대체되었습니다.

VR


현재 게임산업의 최신 트렌드는 가상/증강현실입니다. Torque 3D, Unity 3D, Unreal Engine 4 등 대부분의 현대 게임 엔진은 이미 이 기술에 대한 지원을 획득했습니다. Vuforia Unity Extension과 같은 많은 타사 확장 프로그램도 개발되었습니다. VR 안경에 대한 지원을 구현하려면 엔진 개발자는 첫 번째 화면과 다른 콘텐츠로 두 번째 화면(두 번째 눈의 경우)에 시각화를 추가해야 할 뿐만 아니라(첫 번째 눈과 두 번째 눈은 서로 다른 장면을 볼 수 있으므로) 제어 지원도 추가해야 합니다. VR 헤드셋마다 다르며 아직 표준화되지 않은 새로운 입력 장치에서 발생합니다.

결과

게임 산업이 존재한 수년 동안 게임 엔진 측면에서 5가지의 대규모 게임 유형이 등장했습니다.

1) 싱글 플레이어 게임(PC 및 콘솔에 대한 고유한 사양 포함)
2) 멀티플레이어 온라인 게임
3) 게임 소셜 네트워크일반적인 브라우저 게임
4) 모바일 게임(휴대폰, 태블릿, Android/iOS에 대한 세부 사항 포함)
5) VR/AR용 게임

또한 SmartTV에서 슬롯 머신에 이르기까지 다른 플랫폼도 있습니다.

각 유형의 개발에는 특정 엔진 세트가 있습니다. 기술적 측면모든 유형의 게임에는 큰 차이가 있습니다. 현재 시장에는 모든 취향에 맞는 수십 개의 엔진이 있습니다. 크로스 플랫폼 및 특수 엔진의 소스 코드에 대한 적극적인 작업이 필요하고 프로그래밍 지식이 전혀 없어도 사용할 수 있으며 성능, 문서 품질 및 가격이 다양합니다. 저는 우리 프로그램의 "게임 개발의 기술 기초" 분야에서 최신 엔진과 귀하의 목적에 맞는 엔진을 선택하는 방법에 대해 자세히 설명합니다.

게임 엔진이란 무엇입니까? 모든 사전에서 이 문구의 정의를 찾을 수 있는 것은 아닙니다. 하지만 이 질문에 대한 답을 스스로 찾으려고 한다면 아마도 다음과 같을 것입니다. "게임 엔진은 비디오 게임을 만들고 실행할 수 있게 해주는 소프트웨어 구성 요소입니다." 이는 개발자에게 대부분의 게임 구성 요소를 생성하고 이를 함께 구성할 수 있는 도구를 제공합니다. 게임 엔진은 렌더링, 물리, 사운드 디자인, 스크립팅, AI 생성, 네트워크 측면 종료 등 게임의 모든 구성 요소에 영향을 미칩니다. 그리고 이를 사용하여 무언가를 생성할 수 없는 경우에는 전문 프로그램에서 생성한 다음 게임으로 가져올 수 있습니다. 어쨌든 게임 엔진은 현대 비디오 게임의 일꾼입니다.

아시다시피 현재 개발자와 퍼블리셔가 상당히 인상적인 가격에 구입할 수 있는 Quake 및 Unreal과 같은 잘 알려진 브랜드부터 개발자가 내부 프로젝트를 위해 특별히 만드는 엔진에 이르기까지 수많은 게임 엔진이 있습니다.
아래에서는 현 세대 최고의 게임 엔진 목록을 소개합니다. 이들은 제작자의 손에서 자랑스럽게 빛을 발하는 진정한 최고의 대표자들이며 기억에 남는 게임 경험을 선사합니다. 다음은 훌륭하고 창의적인 아이디어가 얼마나 흥미진진한 게임플레이를 가져올 수 있는지 보여주는 예입니다.
참고: 모든 개발자가 자신의 게임 엔진에 대해 이야기하는 것은 아니며 많은 개발자가 이를 철저히 비밀로 유지한다는 점은 주목할 가치가 있습니다. 따라서 우리가 모르는 많은 좋은 엔진은 그럴 자격이 있지만 이 목록에 포함되지 않습니다. 이러한 시크릿의 예는 Metal Gear Solid 4, FIFA 및 God of War III를 만드는 데 사용되었습니다.

***
다음과 같은 프로젝트에서 볼 수 있습니다: Rockstar Table Tennis,
GTA IV + 추가 콘텐츠
미드나잇 클럽: 로스앤젤레스,
레드 데드 리뎀션,
라. 느와르(아마도)
***

GTA III, Vice City, San Andreas 및 Bully는 훌륭하지만 Rockstar의 자체 엔진으로 제작되지 않고 대신 Criterion의 "렌더웨어" 엔진을 사용하여 제작되었습니다. 그러나 Red Dead Revolver가 덜 상업적인 게임인 것처럼 보임에도 불구하고 인기 퍼블리셔에게 차세대 콘솔을 위한 자체 엔진을 만드는 아이디어를 준 사람은 바로 그 사람이었습니다. 다른 게임 엔진이 제공할 수 없는 훌륭한 속편을 꿈꾸는 Rockstar San Diego는 2004년부터 RAGE(Rockstar Advanced Game Engine) 게임 엔진 작업을 시작하여 곧 출시될 게임 Red Dead Redemption에서 처음으로 이를 시험해 보았습니다. 그리고 개발자들에 따르면 이미 이 엔진으로 출시된 3개의 게임에 2010년에는 적어도 하나의 게임이 더 추가될 예정이라고 합니다. 그리고 이것은 바로 Red Dead Redemption의 원하는 속편입니다.

RAGE에는 많은 장점이 있습니다. 그중에서도 GTA IV가 우리에게 입증한 광대한 세계, 복잡한 AI, 날씨 효과, 빠른 네트워크 코드 및 다양한 게임플레이 스타일을 만들 수 있는 가능성에 주목할 가치가 있습니다. 이 엔진은 다른 게임 엔진과의 공생에도 매우 우호적입니다. 예를 들어, 현재 인기 있는 NaturalMotion의 Euphoria 엔진을 사용하면 마치 RAGE가 태어날 때부터 있었던 것처럼 적합합니다(LucasArts도 최근 게임인 Star Wars: The Force Unleashed에서 그러한 공생을 달성하지 못했습니다). 총알 게임 시뮬레이션을 담당하는 Erwin Koumans의 물리 엔진도 RAGE에 완벽하게 들어맞습니다. 그리고 더 놀라운 점은 이 엔진이 아직 매우 어리고 추가 개발이 가능하다는 점입니다. 향상된 물리학, 생태계, 향상된 AI 및 그리기 거리는 개발자들이 RAGE가 다음 게임에서 우리에게 가져올 개선 사항 중 일부일 뿐입니다.

***
다음과 같은 프로젝트에서 볼 수 있습니다. 파 크라이,
크라이시스, 크라이시스: 워헤드, 크라이시스 2,
아이온: 영원의 탑
***

CryTek의 독일 개발자들이 스스로 큰 이름을 만드는 데는 오랜 시간이 걸리지 않았습니다. 2004년에 출시된 첫 번째 게임인 Far Cry는 모든 사람에게 새로운 놀라움을 선사했습니다. 예상대로 세계가 차세대 PC 게임의 출현을 예고한 Half-life 2, Doom 3 및 S.T.A.L.K.E.R.의 등장을 기다리고 있는 동안 CryTek은 모든 사람보다 한 발 앞서 있었습니다. 스튜디오 "CryEngine"의 내부 엔진에서 제작된 화제의 슈터를 출시합니다. 3 년 후에 새로운 게임 CryEngine 2 엔진의 두 번째 버전으로 개발된 Crysis는 게임 개발에 새로운 시각적 기준을 제시하며 다시 한번 동일한 성공을 거두었습니다. 다음 선택은 이미 CryEngine 3 엔진의 세 번째 버전으로 개발된 Crysis 2입니다. 그것의 도움으로 Crytek은 콘솔 시장을 커버하려고 노력할 것입니다.

CryTek에 따르면 CryEngine 3는 개발자가 차세대 콘솔에서 DirectX 10 기능을 사용할 수 있게 해주는 Xbox 360 및 PlayStation 3의 첫 번째 엔진이 될 것입니다(푸! - 편집자 주). 대부분의 경쟁업체와 달리 이 엔진은 다른 추가 게임 엔진 간의 동맹이 필요하지 않습니다. 게임의 물리학, 사운드 및 애니메이션과 함께 작동할 수 있습니다. 이러한 엔진의 도움으로 게임은 높은 시각적 높이를 달성할 수 있습니다. 사실 크라이텍이 인기를 끌 수 있었던 것도 그들 덕분이었습니다. 그리고 만약에 자신의 게임 Crytek은 CryEngine을 최고의 엔진 목록에 추가할 만큼 충분하지 않습니다. 따라서 CryEngine의 개발자가 이를 다른 개발자가 사용할 수 있는 소프트웨어로 홍보하기 위해 가능한 모든 노력을 다하고 있다는 사실에 주목할 가치가 있습니다. 이것은 우리 게이머들에게는 좋은 소식이지만, 매우 가치 있는 경쟁자가 있을 것으로 보이는 Epic Games와 그들의 Unreal Engine 3에게는 그리 좋은 소식이 아닙니다.
추신 그리고 CryEngine 3의 TimeSplitters 4에 대한 소문이 사실이 되기를 바랍니다.

버릇없는 개 게임 엔진

***
Uncharted: Drake's Fortune,
언차티드 2: 도둑들 사이에서
***

의심할 여지 없이, Uncharted 2: Between Thieves는 지난 E3의 경이로운 그래픽 중 하나였으며, 가장 중요한 것은 PlayStation 3가 게임 엔진 제작에 올바른 접근 방식을 취한다면 엄청난 잠재력을 가지고 있음을 입증했다는 것입니다. Uncharted뿐만 아니라 Jak & Daxter와 같은 인기 시리즈를 제작한 스튜디오의 이름을 딴 Naughty Dog 엔진은 PS3 아키텍처용으로 특별히 제작되었습니다. 이러한 도움으로 개발자들은 2007년 Uncharted: Drake's Fortune을 출시하면서 엄청난 성장을 이루었습니다. 탁월한 애니메이션 및 캐릭터 모델, 볼륨감 있는 조명, 화려한 사운드, 풍부한 색상 팔레트 및 헐리우드와 같은 컷 장면이 그들의 명함이 되었습니다. Uncharted 2: Between Thieves 개발에 이미 사용된 Naughty Dog 2.0 엔진을 만드는 데 2년 이상의 노력이 소요되었습니다. 이 작업의 결과는 놀랍습니다. 게임의 모든 위치는 수많은 캐릭터로 가득 차 있습니다. 자체 물리학을 지닌 동적 개체 환경의 애니메이션이 더 부드럽고 다양해졌습니다. . 게임의 조명과 AI가 놀라울 정도로 개선되었습니다. 게임에서 컷씬으로 또는 그 반대로 원활하게 전환됩니다. 그리고 잊지 마세요. Uncharted의 새로운 부분에서 우리를 기다리는 것은 무엇입니까? 협동 게임그리고 멀티플레이어. 정말 놀라운 결과입니다.

또한 우리 데이터에 따르면 Naughty Dog는 향후 PS3의 모든 프로젝트를 개선하는 데 도움이 될 기본 도구 세트를 개발하고 있는 Sony의 비밀 스튜디오 The Ice Team과 지식과 경험을 공유하고 있습니다. 그리고 지난 E3에서 개발자들이 다음과 같이 암시했다는 사실을 잊지 마세요. 내년인기 있는 Jak & Daxter 시리즈에 새로운 작품이 나올 수도 있습니다.

***
다음과 같은 프로젝트에서 볼 수 있습니다. 죽은 공간,
단테의 지옥
***

Dead Space는 정말 훌륭했습니다. 너무 훌륭해서 출시 직후 알려지지 않은 스튜디오 EA Redwood Shores가 명성을 얻었습니다. 지난 5월 Electronic Arts는 지능형 액션 게임 제작에 중점을 두고 있는 스튜디오의 문화와 개성을 더 잘 표현하기 위해 스튜디오 Visceral Games로 이름을 변경했습니다. Dead Engine은 Visceral Games 엔진의 공식 명칭은 아니지만(언론과 Dead Space 팬에 의해 별명이 붙었기 때문에) 호주의 Dead Space 프로모션 중 Glen Schofield가 그 존재와 기술적 능력을 발표했습니다.

2006년 The Godfather가 출시된 후 개발팀은 해체되었고 일부 개발팀은 엔진을 가져가서 Dead Space를 출시한 동일한 EA Redwood Shores 스튜디오가 되었습니다. 엔진은 Dead Space의 공포와 미래 지향적인 요구 사항에 맞게 거의 완전히 재설계되었습니다. 궁극적으로 엔진의 성공은 The Godfather보다는 Dead Space에 더 많은 영향을 받았습니다. Dead Space는 거의 모든 새로운 위치로 우리를 놀라게 했지만, 엔진의 주요 장점은 작동이 간편할 뿐만 아니라 게임의 사운드 및 조명 작업도 가능하다는 것입니다. Dead Space는 비디오 게임 역사상 가장 무서운 게임 중 하나입니다. 그리고 엔진 개발의 다음 포인트는 새로운 게임 Visceral Games Dante's Inferno입니다.

***
다음과 같은 프로젝트에서 볼 수 있습니다. Gears of War,
매스 이펙트,
바이오쇼크,
언리얼 토너먼트 3
보더랜드,
브라더스 인 암스: 지옥의 고속도로,
홈프론트,
거울의 가장자리,
특이,
레인보우 식스: 베가스
***

우리는 "대대적으로 수정된 언리얼 엔진"이라는 말을 몇 번이나 들었습니다. 다른 리뷰비디오 게임이나 게임 보도 자료에서요? 1998년 처음 등장한 이후 Epic Games의 Unreal Engine(현재 세 번째 버전)은 가장 유명하거나 덜 유명한 비디오 게임 개발자의 주요 무기가 되었습니다. 그는 또한 Surf's Up과 같은 어린이 프로젝트와 심지어 자체 엔진을 갖춘 스튜디오의 게임에도 출연했습니다. 주요 질문- 왜?

일부 부정적인 리뷰(Too Human의 제작자인 Silicon Knights)와 PS3 초기 프로젝트의 성능 관련 문제(주로 초당 프레임 저하 문제)에도 불구하고 Epic Games의 엔진은 소비자에게 제공되었습니다. 고품질그리고 절대적으로 모든 장르의 게임을 개발할 수 있는 능력입니다. 그리고 그 적당한 가격으로 인해 많은 사람들이 값 비싼 자체 엔진 제작을 단념했습니다. 가장 인기 있는 게임 엔진은 언리얼 엔진으로, 차세대 게임이 어떤 모습이어야 하는지에 대한 그림을 우리에게 제시한 엔진이었습니다.
최신 보고서에 따르면 Epic Games는 이미 Unreal Engine 4 작업에 열중하고 있으며 계획에 따르면 이 엔진은 차세대 콘솔 출시에 맞춰 등장해야 합니다. 가능한 날짜출시일은 2012년으로 발표됐다.

눈사태 엔진

***
다음과 같은 프로젝트에서 볼 수 있습니다. 다만 원인저스트 코즈 2,
사냥꾼
***

Just Cause 2는 지난 E3에서 우리를 정말 놀라게 했던 게임 중 하나였습니다. 첫 번째 부분은 꽤 흥미로웠지만, 출시된 지 거의 4년이 지났고 우리는 점차 게임에 대해 잊어버리기 시작했습니다. 이 평온한 기간은 두 번째 부분에 대한 우리의 관심을 조금 죽였고 우리는 더 이상 그것을 기대하지 않았습니다. 그러나 게임 제작자 인 Avalanche Studios는이 모든 시간을 헛되이 보내지 않은 것으로 나타났습니다. 그들은 Avalanche 엔진을 완전히 변경하고 많은 요소를 처음부터 다시 구축했습니다. 그래서 개발자들은 새로운 Avalanche Engine 2.0을 사용하여 게임의 첫 번째 부분의 성공을 쉽게 능가할 수 있는 Just Cause 2를 만들었습니다.

Just Cause 2를 보면 개발자들이 새로운 엔진으로 달성한 성과에 놀라지 않을 수 없습니다. 엔진은 매우 다양한 게임 메커니즘(낙하산 타기, 운전, 사격, 3인칭 전투, 다이빙 등)을 생성합니다. 화면에는 수많은 폭발과 적들이 끊임없이 깜박입니다. 주인공은 새로운 기회를 얻었고, 주요 기회는 갈고리입니다. AI 적들도 많은 변화를 겪었고 이제 상당히 좋아진 것 같습니다. 그것보다 낫다우리가 첫 번째 부분에서 본 것. 게다가 게임의 그림도 매우 인상적입니다. 이 모든 작업은 눈 덮인 산봉우리, 열대 정글, 모래사장. 이러한 모든 장점으로 인해 Avalanche Engine은 현 세대 최고의 게임 엔진 중 하나가 되었습니다.
추신 또한, 이미 발표된 다음 프로젝트는 Avalanche 2.0을 기반으로 하며 판타지 환경에 구축된 AionGuard라는 게임이 될 것입니다. 이 엔진이 이런 작업을 어떻게 처리할지 궁금합니다.

***
Call of Duty 2,
콜 오브 듀티: 현대 전쟁,
콜 오브 듀티: 월드 앳 워,
퀀텀 오브 솔러스,
현대전 2
***

명확히 하자면, IW는 현 세대의 가장 인기 있는 게임 시리즈 중 하나인 Call of Duty를 제작한 전설적인 스튜디오인 Infinity Ward의 약자입니다. 그리고 게임 시리즈 Infinity Ward의 첫 번째 부분에서는 id Tech 3 엔진을 사용했지만 이미 두 번째 부분 출시를 위해 자체 내부 엔진을 준비했지만 안타깝게도 아직 공식 이름을 얻지 못했습니다. 지난 E3에서 엔진에 관해 우리가 물었던 질문 중 하나에 이어 Infinity Ward는 곧 출시될 히트작 Modern Warfare 2가 엔진의 네 번째 버전, 즉 IW 4.0에서 만들어졌다고 알려주었습니다. 동일한 버전의 엔진이 2007년 출시된 걸작 Call of Duty 4를 제작하는 데 사용되었습니다.
게임을 플레이해 본 적이 있다면 아마도 이 엔진의 성능과 기능이 무엇인지 알고 있을 것입니다. 게임 경험그는 그것을 플레이어들에게 제공할 수 있습니다. 경이로운 애니메이션과 조명, 복잡한 AI, 놀라운 사운드, 실제 총알 동작 시뮬레이션 등 엔진은 이 모든 것을 매우 빠르게 처리할 수 있으며, 누구도 이를 부인하지 않습니다. 또한 이 모든 아름다움은 친구들과 온라인으로 플레이하면서 볼 수 있습니다. Call of Duty가 비디오 게임 역사상 가장 성공적인 온라인 게임 중 하나로 간주되는 것은 당연합니다. 물론 Modern Warfare 2의 두 번째 부분에서는 엔진이 큰 변화를 겪지 않았지만 우리를 다시 놀라게 할만큼 중요합니다. 새로운 시스템텍스처링은 세계의 디테일을 높이고 텍스처의 해상도를 높입니다. 그리고 주요 변경 사항은 게임의 조명, 물리 및 AI에 영향을 미칩니다.

추신 또 다른 좋은 소식은 Infinity Ward가 Treyarch와 같은 Activision 산하의 다른 스튜디오에서 자사 엔진을 사용할 수 있도록 허용하고 있다는 것입니다.

***
Assassin's Creed와 같은 프로젝트에서 주목을 받았습니다.
페르시아의 왕자 (2008),
숀 화이트 스노보드,
어쌔신 크리드 II
***

아마도 Ubisoft는 게임을 만들기 위해 다른 사람의 기술을 사용하는 데 지쳤기 때문에 최근 Ubisoft 스튜디오는 자체 게임 엔진을 차례로 찢어내기 시작했습니다. 이제 이러한 엔진이 약 12개 있으며 그 중 Dunia(Far Cry 2), LEAD( 스플린터 셀: Conviction), Fox(Naruto: Broken Bond), LyN(Beyond Good & Evil 2), IRISZOOM(R.U.S.E) 그리고 우리의 영웅 Anvil, 일명 Scimitar 2.0 Engine. 사실, 이 엔진을 기반으로 제작된 게임을 그냥 지나치고 그것이 만들어내는 그림에 놀라지 않는 것은 어렵습니다. 또한 호평을 받은 히트작인 Assassin's Creed가 이 엔진 덕분에 인기를 얻었음을 잊지 마십시오.
Assassin's Creed와 Prince of Persia에서 Anvil은 애니메이션이 환경실시간. 또한 정착할 수 있게 해줍니다. 가상 세계수백 가지 모델에 자체적으로 매우 똑똑한 AI를 부여합니다. Assassin's Creed의 속편을 위해 Ubisoft Montreal의 개발자는 향상된 조명 시스템, 반사, 동적 의상, 고급 AI를 준비하고 외부 세계와의 상호 작용 능력, 그리기 거리를 늘리고 게임도 개선할 예정입니다. 전체주기낮과 밤의 변화. 위의 모든 것 외에도 Anvil은 Far Cry 2가 구축된 Dunia 엔진의 기술 중 하나를 추가했다는 점도 주목할 가치가 있습니다. 이 기술은 게임의 식물 시뮬레이션을 담당합니다.

우리는 또한 Shaun White Snowboarding에서 Anvil이 플레이어에게 처음으로 온라인 게임을 제공했다는 사실에 주목했습니다. 이는 Assassin's Creed의 두 번째 부분에 온라인 모드가 나타날 것이라는 소문을 불러일으켰습니다.

***
다음과 같은 프로젝트에서 볼 수 있습니다: Colin McRae: DiRT,
레이스 드라이버: GRiD,
플래시포인트 작전: 드래곤 라이징,
콜린 맥레이 DiRT 2,
F1 2009,
F1 2010
***

Codemasters는 이미 이 세대의 콘솔 게임 중 매우 평범한 게임 몇 개를 출시했지만 스튜디오 내부 프로젝트에 관해서는 최고만을 제공하려고 노력합니다. 이 최고 수준의 대부분은 EGO 엔진(한때 NEON으로 알려짐)을 기반으로 구축되었습니다. 그건 그렇고, Sony 사람들도이 엔진 제작에 부분적으로 참여했다는 점은 주목할 가치가 있습니다. 많은 게이머들에게 Codemasters는 매우 인기 있는 고품질 레이싱 시뮬레이터인 Colin McRae & Race Driver 게임 시리즈로 유명합니다.
엔진의 장점 중 하나는 훌륭한 레이싱 게임플레이를 생성할 수 있는 능력뿐 아니라 엔진의 도움을 받아 동일한 자동차에 대한 모델과 물리학을 생성할 수 있다는 것입니다. 또한 특히 200km/h의 속도로 자동차 앞 창문을 통해 놀랍게 보이는 다양한 지형(사막과 눈 모두)의 매우 상세한 세계를 만들 수 있습니다. 또한 개발자는 이해하기 쉬운 손상 시스템, 뛰어난 AI 및 조명을 만들었습니다. 이러한 모든 장점은 EGO에서 만든 게임을 캔디로 만듭니다. 글쎄요, EGO가 최고의 엔진 목록에 오른 주된 이유는 레이싱 엔진을 FPS와 같은 우수한 엔진으로 바꾸는 놀라운 능력 때문입니다. 이는 올 9월 매장 진열대에 등장할 초현실적인 Operation Flashpoint: Dragon Rising의 기반이 됨으로써 우리에게 이를 증명했습니다.

음, DiRT 2에서 개발자들은 게임에 더욱 사실감을 더하기 위해 게임의 물리학에 집중하기로 결정했습니다. 그리고 이것이 계속된다면, 여전히 주머니에 1년의 개발 기간이 남아 있는 F1 2010의 개발자들은 매우 진지하고 매력적인 결과를 얻게 될 것입니다.

***
Red Faction: Guerrilla와 같은 프로젝트에서 볼 수 있습니다.
***

Digital Illusions가 Battlefield: Bad Company의 이전에 볼 수 없었던 동적 파괴 시스템을 소개하는 Frostbite 엔진을 출시했을 때, 우리는 전투 중 전장이 어떻게 변하는지에 깊은 인상을 받았습니다. 다음 단계, LucasArts의 개발자는 자체 물리 엔진인 Digital Molecular Matter를 갖춘 Star Wars: The Force Unleashed를 출시하여 이러한 방향을 취했습니다. 그는 외부 세력의 압력에 따라 주변 세계가 변화하도록 허용했습니다. 표시된 내용은 지구상의 한 명 이상의 게이머를 놀라게 했습니다. 그러나 Volition Inc는 Red Faction: Guerrilla를 통해 더욱 발전했습니다. 사용 새로운 버전 Red Faction의 첫 번째 부분을 만들 때 2001년에 등장한 Geo-Mod 엔진입니다.
전체 게임 시리즈의 세 번째 부분을 통해 우리는 해당 지역의 모든 것을 무의미하게 파괴할 수 있었습니다. Geo-Mod를 사용하면 객체가 자신의 속성을 취할 수 있습니다. 실제 프로토타입, 그들은 우리 세계의 실제 법칙에 따라 파괴됩니다. 이는 플레이어의 행동뿐만 아니라 그를 둘러싼 물체에도 사실감을 심어줍니다. 게임의 폭발적인 게임플레이와 복잡한 AI를 시뮬레이션하고 법칙을 시뮬레이션하세요. 현실 세계, 동시에 어떤 엔진도 프레임 속도 손실 없이 이를 수행할 수 없습니다. 게다가 이 모든 것이 네트워크 게임에서도 훌륭하게 작동합니다. 이 엔진은 위에 나열된 경쟁사에 비해 장점이 많지 않지만 실제 법칙을 모방하고 실시간으로 놀라운 폭발을 생성하는 능력이 다른 엔진과 차별화됩니다.

우리는 개발자들이 향후 히트 시리즈 Saints Row 3의 후속작에서 이 엔진을 사용할 수 있는 방법을 찾을 수 있기를 진심으로 바랍니다.

그게 다야. 현재 사용 가능한 최고의 게임 엔진 목록을 안내해 드렸습니다. 여러분이 그토록 좋아하는 대부분의 게임은 이 말들의 도움으로 만들어졌습니다. 불행하게도 최고의 엔진이라는 타이틀을 획득할 수 있는 다른 많은 후보자들은 이 목록에 포함되지 않았지만 가까운 시일 내에 이 목록의 연속을 작성하여 나머지를 소개할 수 있기를 바랍니다.

게임 엔진(영어) 게임 엔진)은 컴퓨터, 비디오 게임 및 실시간 그래픽을 갖춘 기타 대화형 응용 프로그램의 핵심 소프트웨어 구성 요소입니다. 이는 핵심 기술을 제공하고 개발을 단순화하며 종종 게임 콘솔과 GNU/Linux, Mac OS X 및 Microsoft Windows와 같은 데스크톱 운영 체제와 같은 여러 플랫폼에서 게임을 실행할 수 있도록 해줍니다.

"게임 엔진"이라는 문구는 2D 또는 3D 그래픽용 렌더링 엔진("비주얼라이저"), 물리 엔진 또는 충돌 감지(및 충돌 반응), 사운드, 스크립팅, 애니메이션, 인공 지능을 포함한 전체 응용 프로그램 세트를 의미합니다. , 네트워크 코드, 스트리밍, 메모리 관리, 스레딩 및 장면 그래프. 엄밀히 말하면 프로그래머가 게임을 개발할 때 작성한 모든 코드는 엔진 구성 요소입니다. 게임 플레이(게임 플레이)는 이러한 프로그램에 구현된 기능에 따라 결정됩니다.

컴퓨터 시대가 시작될 때 모든 게임이 개발자에 의해 "처음부터" 만들어졌다면 Doom 게임이 등장한 이후(10년 전) 모든 것이 바뀌었습니다. 오늘날 거의 모든 상용 게임은 기성 도구를 사용하여 제작됩니다. 단일 게임 엔진을 재사용하여 다양한 게임을 제작함으로써 개발 과정에서 비용을 절감할 수 있습니다.

때때로 "모더"는 스크립팅 스크립트를 통해 게임에 내장된 프로그래밍 언어를 사용하여 일부 수정 작업을 수행합니다. 부정 행위자가 즐겨 사용하는 엔진 기능의 일부 매개변수를 조정할 수 있습니다(예를 들어 플레이어가 가진 돈의 양 증가). 그러나 게임의 소스 코드를 방해하지 않고는 주요 게임 플레이 변경이 불가능합니다. 그리고 이것이 문제가 시작되는 곳입니다. 첫째, 모든 게임 회사가 코드를 공개하는 것은 아닙니다. 둘째, 모든 사람이 수많은 엔진 기능을 독립적으로 이해할 수는 없습니다. 그리고 참조 정보가 없고, 다른 방법이 없는 경우가 많습니다. 기술적 지원(물어볼 사람이 없습니다). 셋째, 원칙적으로 이미 기술적으로 오래된 엔진(예: Quake II, III)의 소스 코드를 게시합니다.

초보 개발자에게 남은 것은 무엇입니까?

  • 잘 알려진 회사의 최신 엔진을 사용할 수 있는 권리를 구입하세요(엔진 라이센스 부여). 참조 정보 및 제조업체 지원이 함께 제공됩니다. 그러나 이 즐거움은 값싸게 오지 않습니다. 최대 수십만 달러에 달하는 상용 게임 엔진이 있습니다.
  • 자신만의 엔진을 개발해보세요. 물론 탈출구가 있지만 이를 위해서는 많은 노력과 높은 프로그래밍 자격이 필요합니다.
  • 다음 중 하나를 사용하세요. 무료 엔진,그 능력에 가장 적합합니다. 일반적으로 추가 정보와 지원이 함께 제공됩니다.

무료 게임 엔진

오늘날 가장 인기 있고 발전된 무료 서비스(보통 o 펜 소스, 오픈 소스) 게임 엔진은 다음과 같습니다.

  • 오우거(객체 지향 그래픽 렌더링 엔진)

객체 지향 그래픽 렌더링 엔진. C++, 3D 그래픽으로 작성되었으며 Direct3D 및 OpenGL을 사용합니다. 이 엔진에는 인쇄된 책이 있습니다. 영어). 러시아어 웹사이트도 있습니다. 최신 버전의 엔진을 사용하려면 gcc, Visual C++ 7.1(2003), Visual C++ 8.0(2005) 컴파일러 중 하나가 필요합니다. 엔진은 컴파일러를 지원하며 Linux 및 Mac에서 작동하려면 gcc 3+가 사용됩니다. 게임에서 DirectX를 사용하는 경우 먼저 DirectX SDK를 설치해야 합니다(Microsoft 웹사이트에서 다운로드 가능).

개발자에 따르면 Ogre는 엄밀한 의미에서 게임 엔진이 아닙니다. 문서에 명시된 바와 같이, “Ogre는 그래픽 엔진이며, 단지 그래픽 엔진일 뿐입니다. 이는 그래픽을 표시하고 처리하는 것 외에는 아무 것도 하지 않는다는 것을 의미합니다. 그러나 이는 또한 타사 라이브러리를 연결하여 정식 게임, 즉:

  • 소리;
  • 네트워킹;
  • 입력(조작기, 조이스틱);
  • 충돌 계산.

Ogre에는 이러한 라이브러리가 포함되어 있지 않지만 외부 모듈을 쉽게 연결할 수 있는 인터페이스를 제공합니다."

엔진은 다양한 그래픽 형식을 폭넓게 지원합니다. 표준 텍스처 외에도 체적, 압축 텍스처 및 큐브맵.다양한 3D 그래픽 패키지(3DS Max, Maya, Milkshape3D, Blender Wings3D)에서 3D 모델을 가져올 수 있는 많은 플러그인이 있습니다. 이 경우 프레임 애니메이션과 골격 애니메이션을 모두 사용할 수 있습니다. 오우거의 풍경은 좋아 보입니다. 작은 게임을 만들기 위해 엔진에는 필요한 모든 표준 장면 제어 클래스가 포함되어 있습니다. 게임 리소스는 PK3 ZIP 아카이브로 패키징될 수 있습니다.

Ogre에서는 상업용 게임도 제작됩니다. 특히 "Steel Monsters"라는 게임이 쓰여 있습니다. (태평양 폭풍)그리고 온라인 게임 무정부 상태 온라인. 상용 게임 엔진을 기반으로 한 개발은 다음과 같습니다. 큰 잠재력오우거. 많은 사용자가 있습니다. 문제가 발생하면 연락할 사람이 있습니다. 확실히 누군가가 당신보다 먼저 문제를 해결했거나 적어도 문제를 해결하는 방법을 알고 있습니다. 많은 수의 참고정보예제를 통해 초보자도 엔진을 마스터할 수 있습니다. 상용 엔진을 구입할 재정이 없는 경우 게임 개발을 위한 탁월한 옵션입니다.

  • 크리스탈 스페이스. 특히 게임 개발을 위한 실시간 3D 그래픽을 위한 오픈 소스 크로스 플랫폼 SDK입니다. C++로 작성되었지만 C++ 프로젝트뿐만 아니라 Python, Perl, Java 프로젝트에서도 사용할 수 있습니다.
  • 성운 엔진 2. 오픈 소스 3D 게임 및 렌더링 엔진. 여러 상업용 게임에 사용됩니다. 또한 C++로 작성되었으며 Windows에서만 실행되고 DirectX 9.0을 사용합니다. 셰이더(HLSL 및 DirectX FX 파일), 골격 애니메이션, 입자 시스템 및 그림자를 구현하기 위한 클래스가 있습니다. 널리 사용되는 여러 스크립트 언어인 TCL, Python 및 Lua를 지원합니다.
  • . C++로 작성된 오픈 소스, 크로스 플랫폼은 .NET(C#, VisualBasic 및 Delphi.NET과 같은 언어), Java - jirr 또는 Bindenlicht 라이브러리 사용, Python - Pyrr 라이브러리 사용, Ruby -에서 사용할 수 있습니다. IrrRuby 라이브러리와 기타 여러 언어를 사용합니다. 이 게임 엔진은 독일에서 왔습니다. 실제로는 한 사람이 홍보하는 것입니다. 혼자서 엔진을 개발하고, 완전히 무료로 만들고, 모든 소스코드를 게시하는 것은 아무나 할 수 있는 일이 아닙니다. Irrlicht의 최종 버전은 아직 멀었지만 이미 진지한 게임을 만들 수 있습니다. 엔진에는 이에 필요한 모든 기능이 있습니다. 렌더링은 OpenGLDirect3D(DirectX9.0 지원)를 통해 수행됩니다. 또한 소프트웨어 모드도 있습니다. 즉, 모든 것이 자체 소프트웨어 시각화 장치에 의해 렌더링되며 비디오 카드의 뛰어난 하드웨어 기능 시대에는 실제로 사용되지 않습니다. 이 매우 배우기 쉬운 게임 엔진은 3D 게임 프로그래밍의 첫 단계를 시작하는 사람과 본격적인 게임을 만드는 숙련된 팀 모두에게 적합합니다. knol.google.com에서 Irrlicht에 대해 자세히 알아볼 수 있습니다.
  • OpenSceneGraphg . 표준 C++로 작성된 오픈 소스, 크로스 플랫폼은 OpenGL을 사용합니다. .lwo, .obj, .geo, .3ds, .x, .wrl 형식의 3D 모델, 즉 최신 3D 그래픽 편집기(3DS Max, Maya 및 Lightwave 3D)에서 생성된 개체와 함께 작동합니다.
  • 마이크로소프트 XNA. 3가지 플랫폼(Windows, Xbox 360 및 Zune(Microsoft의 mp3 플레이어))을 위한 크로스 플랫폼 게임 개발을 위한 Microsoft의 기술입니다. 사실, Xbox용 게임을 개발하려면 Xbox 개발자 키트를 구입해야 하지만 Windows용 게임은 무료로 개발할 수 있습니다. 이 기술은 DirectX 및 .NET Framework(Xbox 360의 .NET Compact Framework)에서 게임을 개발하기 위해 설계되었으며, 엄밀히 말하면 XNA를 사용하여 게임을 개발할 때 기본 언어는 C#이어야 합니다. 기업이 지원하는 개발자 커뮤니티가 있습니다. techdays.ru 웹사이트에는 XNA 게임 개발에 전념하는 여러 개의 ""(음성 슬라이드)가 있습니다. 웹 세미나는 Microsoft 직원이 진행하며 프로세스를 소개합니다.
  • 다른 무료 게임 엔진도 있습니다: 팬더3D, , 다크 베이직그러나 위에서 설명한 것만큼 널리 사용되지는 않습니다.

기성 게임 엔진이 있으면 게임의 메커니즘만 생각할 수 있으며 이는 개발자에게 매우 중요합니다.

출처:

  • sindicollo.blogspot.com - 무료 게임 엔진 리뷰;
  • knol.google.com - 무료 게임 엔진(A. Krylov);
  • x-sky.ru - 무료 게임 엔진;
  • irrlicht3d.org - Irrlicht 엔진의 위키 리소스(영어).