소스 엔진의 전체 C ++ 소스 코드를 사용할 수 있습니까?
소스 기반 게임을 구매할 때 SDK를 사용할 수 있다는 것을 알고 있지만 목표는 학습 목적으로 전체 구현 세부 정보가 포함 된 오픈 소스 게임 엔진을 찾는 것입니다.
소스 엔진의 전체 C ++ 소스 코드를 사용할 수 있습니까?
소스 기반 게임을 구매할 때 SDK를 사용할 수 있다는 것을 알고 있지만 목표는 학습 목적으로 전체 구현 세부 정보가 포함 된 오픈 소스 게임 엔진을 찾는 것입니다.
답변:
전혀 그렇지 않다. Valve로부터 소스 라이센스를 얻을 수 있지만 소스 자체는 오픈 소스가 아닙니다.
또한, 기존 엔진 전체를 학습 엔진으로 사용 하는 것은 해당 엔진 개발에 크게 관여하지 않은 사람의지도없이 일반적으로 매우 위험한 접근 방식 입니다.
소스 코드만으로는 특정 설계 결정 방법 만 알려줍니다. 대부분의 소프트웨어 엔지니어링 선택이 일반적으로 동일한 옵션 중에서 선택되기 때문에 대부분의 결정이 배제 된 이유 는 아닙니다 . 선택이 좋은 이유를 이해하려면 컨텍스트가 필요하며 일부 엔진의 소스를보고 해당 기술과 관용구를 앵무새로 쓰면 유용한 정보를 거의 배우지 못합니다.
또한 게임에 제공된 코드로 인해 코드가 양호하지 않기 때문에 (특히 소스는 C ++ 및 OO와 관련하여 현재 매우 오래된 디자인 결정을 내리는 경향이 있습니다 ). 가장 성공적인 AAA 타이틀의 엔진 코드베이스에는 수많은 공포 이야기가 있습니다. 그리고 인상적인 네오 피테로서, 좋은 코드를 나쁜 것으로부터 어떻게 말할 수 있을까요?
소스 코드를 학습 리소스로 사용하는 데주의를 기울이고 최대한 많은 보충 정보와 소스 코드를 연결하십시오.
tl; dr : 엔진을 만드는 법을 배우는 것은 종종 자신의 컴퓨터와 운영 체제를 처음부터 새로 만드는 법을 배우는 것만 큼 게임 제작에 유용합니다. 현장 전문가가 아닌 경우 엔진을 만들고 싶지 않을 것입니다. 대신 엔진 부분이 이미 존재하는 게임을 만드십시오. 나중에 게임 디자인에 대한 기준을 충족하기 위해 액세스 할 수있는 엔진이없는 경우에는 특정 측면을 구축하는 데 집중할 수 있으며 새로운 버전을 만들고 덜 강력한 버전을 다시 생성하지 않기 때문에 다른 측면에도 유용 할 수 있습니다. 사람들이 이미 수천 시간을 투자 한
긴 버전 : 엔진 작성 방법을 배우려면 기존 엔진을 아직 보지 마십시오. 엔진을 구성하는 부품 (알고리즘) 대신 렌더링, 물리 또는 경로 찾기 등을 배우십시오. 특정 측면에 대해 깊이 이해 한 후에는 소스를 확인하는 것이 좋습니다.
대체 대안이없는 한 일반적으로 소스에서 직접 배우기를 원하지 않습니다. 숙련 된 프로그래머조차도 전체 엔진의 소스를 살펴 보지 않고 (도움이 가능한 경우) 엔진의 특정 부분을 검사하거나 특정 부분을 조정할 가능성이 높습니다. 순수한 학습 목적으로 소스를 보려고 시도해도 엔진 코드 뒤의 절차와 사고 과정이 노출되지 않습니다. 그것은 건물을 짓는 법을 배우기 위해 건물 내부를 보려고 시도하면서 건물을 찢어 버리는 것과 같습니다. 조쉬의 대답에 동의하지만, 한 걸음 더 나아갈 것입니다. (현장에 익숙하지 않은 한) 많은 의미에서 "어떻게"를 배우지도 않습니다. 예를 들어 프로그래밍 팀은 어떤 방법을 사용 했습니까? 작업 코드를 구현하기 위해 어떤 원칙을 사용 했습니까? 디버깅에 어떤 도구와 기술을 사용 했습니까? 이러한 모든 질문은 때로는 학습 목적으로 코드 자체보다 더 중요합니다.
출처에서 배우고 싶다면 잘 문서화되어 있고 강력한 커뮤니티가 구축 된 출처를 찾으십시오. 직접 작성한 경우에도 (엔진) 코드를 읽는 것은 종종 혼동됩니다.