크로스 플랫폼 게임 엔진 개발에 C ++ 11 사용


18

참고 : 이것은 C ++ 03 및 C ++ 11에 대한 '당신의 의견을 제시하십시오'라는 질문이 아닙니다.

C ++ 03으로 작성된 게임 엔진은 Windows, OSX 및 iOS에서 컴파일되도록 설계되었습니다. 리눅스 지원은 (아주) 가까운 장래에 계획되어 있습니다. 콘솔에 관해서는 우리의 경험이 제한되어 있으므로이 질문을합니다.

현재 우리는 C ++ 11로 전환하고 C ++ 11 표준의 호환되지 않는 기능을 사용하여 엔진을 현재 세대 콘솔 중 하나에 이식해야 할 때 가까운 미래에 문제를 일으킬 수 있는지에 대해 토론하고 있습니다. 일부 콘솔에서 지원하는 컴파일러는 아직 C ++ 11을 지원하지 않습니까?

따라서 여러 플랫폼과 콘솔에서 경험이있는 게임 개발자라면 차세대 콘솔이 도착하고 대부분의 사람들이 C ++ 11 표준으로 전환 할 때까지 C ++ 03을 고수해야한다고 생각하십니까 (이미 가지고 있습니까?). 아니면 이미 C ++ 11 기능을 지원하는 컴파일러 (VC ++, GCC 또는 변형)를 사용 / 지원하는 대부분의 콘솔입니까?


1
내 지식이 다소 구식이므로 답변으로 게시하지 않지만 콘솔 컴파일러의 과거 경험은 이전 표준과 일치하면 운이 좋으며 새로운 표준을 염두에 두지 않는다는 것입니다.
Kylotan

1
가장 인기있는 개발 플랫폼에서도 완전히 구현되지 않은 표준의 사용을 고려할 때 어떤 기능과 그 기능이 중요한가?
snake5

4
@ snake5 : 자동, 람다, 템플릿 별칭, c-tor 위임. 이러한 기능은 코드를 더 읽기 쉽고 유지 보수 할뿐만 아니라 생산성을 향상시킵니다. auto 키워드는 C ++ 11에서 C ++ 03으로 전환 할 때 많이 그리워하는 것 중 하나입니다. variadic 템플릿과 같은 다른 기능은 매우 강력하지만 코드를 확실히 향상시킬 수 있지만 VC ++ 컴파일러로는 구현할 수 없습니다.
Samaursa

Kylotan이 언급 한 내용에 덧붙여, 나는 그의 의견에 전적으로 동의하며 내 경험에 특정 예를 추가합니다. C ++를 사용하여 수행 할 수있는 Android 플랫폼으로 해당 엔진을 확장하려는 경우 NDK에서 C ++ 기능이 불완전하므로 시간이 나쁩니다. 새로운 표준을 사용할 수 없으며 이전의 일부 항목도 결함이 있습니다.
그림 쇼

1
@DevilWithin, 나는 안드로이드 NDK에서 아무런 문제없이 꽤 많은 C ++ 11 기능을 사용하고 있습니다.
notlesh

답변:


19

음식과 대피소를 지불하기 위해 코드에 의존하고 알려지지 않은 미래 플랫폼에서 크로스 플랫폼을 지원해야하는 경우 (또는 향후 크로스 플랫폼을 지원해야 할 수도 있음), 알려지지 않은 컴파일러 작성자가 최신 언어 표준을 올바르게 준수하는 것은 위험합니다 (무책임한 주장). 그것은 당신에게 위험하기 때문에 부양 가족에게도 위험합니다.

를 위해 그런 종류의 위험을 감수 할 의향이 있다면 꼭 auto가십시오. 그러나 나는 당신에게 그렇게 권고하지 않을 것입니다.

내 경험상 크로스 플랫폼, 특히 콘솔 에서 진행하는 것은 가장 낮은 공통 분모를 목표로 달성하는 것이 가장 좋습니다. 최근의 모든 언어 언어에 의존하지 않고 사실상 모든 곳에서 작동 할 것입니다. 언젠가는 지원하지 않는 플랫폼으로 포팅해야한다면 시스템을 처음부터 다시 작성해야합니다. 그 동안 임금 / 임대료를 지불 할 여유가 있습니까?


4
+1 (이 글의 나머지 부분) : "알려지지 않은 컴파일러 작성자가 최신 언어 표준을 올바르게 준수하는 것은 위험합니다". 최신 장난감을 실험하는 것은 항상 재미 있고 그에 의존하지는 않습니다.
NoobsArePeople2

2
나는 특히 "원래 포스터가 듣고 싶어하는 것이 명확하지 않을 때"이러한 "주의"답변을 제공하는 것에 대해 항상 염려합니다. 그러나 나는 크로스 플랫폼 프로젝트에서 새로운 언어 표준으로 편안하게 뛰어 들기 위해 경력에서 콘솔에서 큰 컴파일러 버그를 너무 많이 보았습니다. 컴파일러에서 문제를 해결하기 위해 코드를 다시 작성해야하는 것은 특히 마감일이 지났을 때 결코 재미 가 없습니다 .
Trevor Powell 5

나는 이것을 억압하지 않을 것이지만 새로운 C ++ 표준은 auto 키워드와 같은 구문 설탕보다 훨씬 더 많습니다.
vdaras

1
@TrevorPowell은 새로운 C ++ 표준에 훨씬 더 중요하고 기본적인 기능이있을 때 자동 키워드를 사용하는 것이 위험하다고 말했다. rvalue 참조와 같은 일부는 위험에 대해 생각할 때 중요한 고려 사항을 고려해야합니다.
vdaras

2
@TrevorPowell 그렇기 때문에 게시물에 대한 논쟁에도 불구하고 게시물의 가치를 떨어 뜨릴 가치가 없다고 말했습니다. 나는 이것이 좋은 게시물이라고 생각합니다. 새로운 C ++ 표준에는 매우 중요한 기능이 있으며 그것을 사용하는 것이 자동차와 같은 사소한 것이 아니라는 것을 분명히하고 싶었습니다.
vdaras

6

좀 더 많은 일을하고자한다면 내화 솔루션을 살펴볼 수 있습니다. clang은 현재 해당 지역에서 흥미로운 일이 있습니다. auto 키워드를 사용하고 리 팩터를 통해 실행하여 모든 용도를 찾아서 해결하고 코드를 출력 한 다음 원하는대로 컴파일하십시오.

그러나 이는 게임 작업 시간이 줄어든다는 것을 의미합니다.

반사와 같은 일부 추가 기능의 가능성도 있습니다. 클래스를 만들고 런타임에 검사 할 모든 속성 목록을 자동으로 생성 할 수 있습니다. 스크립트 작성, 게임 편집자 제작 등에 매우 유용합니다. 편집 : clreflect 확인하십시오 .

http://cppnow.org/session/refactoring-c-with-clang/

http://www.youtube.com/watch?v=mVbDzTM21BQ

http://clang.llvm.org/docs/Tooling.html

http://clang.llvm.org/docs/RAVFrontendAction.html


매우 흥미로운; 이 (또는 비슷한) 목적으로 직접 시도 했습니까?
Jonas Byström

아직은 조금 나아질 때까지 기다리기로 결정했지만 마지막으로 실제로 살펴 보았을 때 svn에만있었습니다.
David C. Bishop

매우 흥미있는 (+1)
Samaursa

이것은 나에게 파이썬과 같은 것을 생각 나게 2to3하지만 반대로 그리고 훨씬 더 훌륭하지만 아마도 사용하기가 더 어려워집니다. 사람, 얼마나 더 잘 auto얻을 수 있습니까?
Steven Lu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.