게임 개발을위한 D 프로그래밍 언어
최근에는 C ++ (심지어 0x)가 매우 제한적으로 느껴지는 지점에 도달하여 신경이 쓰 였기 때문에 대안을 찾기 시작했습니다.
Java, C #, Python 또는 Ruby는 잊어 버리십시오. 저는 여전히 C ++의 낮은 수준의 특성을 좋아하고 가상 머신을 좋아하지 않습니다. 더 나아가 저는 게임 엔진 개발자이기 때문에 정말 빨라야하는 핵심 루틴을 개발해야했고 최근에는 코드 표현력에 굶주려있었습니다. C ++는 저에게 거의 존재하는 언어이지만 템플릿을 사용하는 방법에 대한 많은 예외가 있으며 GCC는 제가 기대했던 것만 큼 최적화하지 않습니다.
그래서 나는 D를 배우기 시작할 것을 고려하고 있습니다.
게임 개발자로서 제 요구를 충족시킬 것이라고 생각하십니까? 나는 D가 사용되는 것을 들어 본 적이 없기 때문에 조심합니다.
감사!
아직 갈 것이 더 많지만 최근에 나 자신이 D를 꽤 많이 배웠습니다. 지금까지 배운 것을 보면 언어 는 거의 모든 것에 적합하지만 컴파일러 와 라이브러리는지금 나와있는 것은 최고가 아니므로 컴파일러에 버그가 없는지 확신 할 수 없습니다 (그렇지 않습니다). 예를 들어 게임 프로그래밍의 경우 가비지 수집이 올바르게 수행되고 컴파일러가 중요한 코드를 잘못 최적화하지 않는지 확인해야합니다. 이와 같은 것들은 다음을 사용하여 다시 생각하게 만들 수 있습니다. 언어. 그러나 저는 언어 자체가 최고라고 생각합니다 (이것은 완전히 주관적입니다). 언어를 사용하는 데있어 유일한 장벽은 언어 자체가 아니라 완벽한 구현이 없다는 것입니다.
게임과 데모를 위해 D 1.x를 사용했는데, 그중 일부는 공개 도메인 오픈 소스 ( A , B , C , D , E )입니다.
D를 사용하는 이유에 대해 모든 사람과 논쟁하는 높은 비용을 지불 할 의향이 있다면 D는 C ++ 분야에서 전례없는 생산성을 제공 할 수 있습니다.
이 길을 가면 D 2.x, Derelict 및 Visual D를 선택하는 것이 좋습니다 (미래 독자를위한 힌트 : 2011 년).
게임 개발 :
D GC는 실제 문제가 아닙니다. 프레임에 너무 많이 할당하는 경우이지만 그게 전부입니다. 풀링, 재사용 등의 고전적인 방법이 작동합니다.
Linux, Mac 및 Windows에서 이식 가능한 x86 어셈블리를 작성할 수 있습니다. 또한 꽤 재미있는 템플릿 기반 어셈블리 함수를 허용하는 경우 정적입니다.
모듈 경계를 넘는 인라인은 "링크 시간 최적화"스위치없이 작동합니다.
디버그 및 릴리스 버전을 유지하는 것이 더 쉽다는 것을 알았습니다 (C ++에 비해).
새로운 기능을 피하고 보수적으로 컴파일러를 선택하십시오 ... C ++에서와 같이
Kenta Cho는 D 및 SDL (Simple DirectMedia Layer) 을 사용하여 Windows 게임 을 개발 합니다. 그들은 아주 재미 있습니다. 영감과 출처를 찾으십시오.
D는 비디오 게임을위한 훌륭한 언어이며 실행 가능한 실행 파일의 신속한 개발을위한 모든 기능을 갖추고 있습니다.
- 네이티브 코드로 빠르게 컴파일되고 빠르게 실행됩니다.
- 즉시 단위 테스트, 프로파일 링 및 코드 커버리지가 있습니다.
- 가비지 콜렉션이 기본값이지만 자체 메모리 할당자를 사용할 수 있습니다.
- C와 ABI 호환되며 네이티브 라이브러리를 호출하기 위해 지불하는 마샬링 비용이 없습니다.
- 유형 시스템의 스레드 안전성 : 공유, 순수 및 불변 한정자.
- 유형 시스템의 메모리 안전성 : @safe, @trusted, @system.
- 컴파일 시간 함수 평가, 코드 생성 등.
별도의 스크립팅 언어, 코드 생성을위한 추가 컴파일 단계가 필요하지 않습니다. 저수준 시스템에서 성능이 중요한 경우 가상 머신의 메모리 모델에 국한되지 않고 스크립팅의 모든 생산성과 안전성을 얻을 수 있습니다. 게임 로직에 대한 관리 언어. 당면한 문제에 대해 절차 적, 객체 지향적, 기능적, 일반 또는 메타 프로그래밍 패러다임 중에서 자유롭게 선택할 수도 있습니다.
글쎄, D를 사용한다면 모든 것을 처음부터 완전히 만들어야하는 것과는 다릅니다. 예를 들어 다음을 사용할 수 있습니다.
- 입력 / 출력용 GLFW
- 렌더링 엔진으로서의 Horde3D
- 소리를위한 OpenAL
- 물리학을위한 총알
- 스크립팅을위한 Lua
- 빠른 감압을위한 lzo
- 직렬화를 위해 주황색 일 수도 있습니다.
그래도 오버레이에 대해 잘 모르겠습니다. 그것은 나를 위해 잘 작동 할 꽤 견고한 기반입니다 :)
행운을 빕니다!
D proramming에서는 다음과 같습니다.
- OpenGL 3 및 OpenGL 4를 지원하는 외딴
대부분 언어 프로그래밍에서 OpenGL 3과 4는 지원되지 않습니다.
- yage 무료 3D 게임 엔진, 당신의 도움을 환영합니다
간단한 방법 : http://blog.fedora-fr.org/bioinfornatics/post/D-programming-OpenGL-and-MVC-Pattern
D에서 RAII를 사용하려면 키워드 범위가 매우 강력합니다.
2014 년을 환영합니다!
D의 최신 버전은이 글을 쓰는 현재 2.067입니다. D와 관련하여 약간 불안정 auto
하지만 그 외에는 D를 사용하지 않는 이유를 알 수 없습니다. 컴파일러가 크게 향상되었습니다.
제 생각에 D는 C ++보다 읽기 쉽고 배우기도 쉽습니다. 여기에는 C에 대한 인터페이스와 C ++에 대한 부분 인터페이스가 포함됩니다. 변수와 상호 작용할 수있는 인라인 어셈블리도 허용합니다. D 표준 라이브러리는 Phobos라고합니다.
나는 D. D가 효율성을 위해 만들어 졌다고 강력히 제안합니다. Adam D. Ruppe에 따르면 "[C는] 동등하게 빠릅니다". 그리고 C는 가장 빠른 언어 중 하나입니다. 따라서 C의 속도와 C ++의 높은 수준의 기능으로 게임을 빌드하려면 D가 그 중간에 있습니다. 질문이 있으시면 irc.freenode.net #d에 자유롭게 가입하십시오.
To sum it all up, D is basically the safe version of C++. While the language is multi-paradigm, including OOP, much emphasis was put on the FP paradigm, using pure
functions and immutability. All objects have an init
property so if you declare 'int foo;', it is initialized to int.init
. Yes, there are still pointers. Pointers in D are called lvalue and values are called rvalue. An lvalue always points to an rvalue.
For more information, visit the official D site, http://www.dlang.org/ .
The folks calling themselves "team0xf" did this entirely in D1.
Remedy (Max Payne, Alan Wake, Quantum Break) are using D : http://dconf.org/2013/talks/evans_1.html
I'm looking forward to learning D language someday too :)
But there's one thing to remember: good language is good, but you, as a game developer, need also tools (like libraries) to do your bidding. And few good libraries currently have bindings to D. However, I know of one that most likely (but not certainly) has:
Ogre - one of the leading, if not leading, free-as-in-freedom library for all your portable 3D graphic needs.
Of course you need more, but that pretty much depends on your game.
I'm not aware on how easy or hard is it to make bindings to D for a C++ library. It may be hard, may be easy and somewhat automated. Latter would be pretty much possible, because, as I take it, languages are very close to each other, and D developers probably had C++ in mind a lot of the time.
Hope this helps.
From another perspective, D compiles into the same object files (albeit OMF format) as C/C++. One would assume D's optimization of the assembly is comparable to C/C++, regardless, the assembly is always there to hand optimize if you want.
ReferenceURL : https://stackoverflow.com/questions/4516283/the-d-programming-language-for-game-development
'programing' 카테고리의 다른 글
Entity Framework 4 Entitydesigner에서 두 개체 간의 연결을 올바르게 설정하려면 어떻게해야합니까? (0) | 2021.01.14 |
---|---|
한 파일에서 두 변경 집합 간의 차이점보기 (0) | 2021.01.14 |
DBRef로 mongodb를 쿼리하는 방법 (0) | 2021.01.14 |
"1 개 선택"은 무엇을합니까? (0) | 2021.01.14 |
strdup 또는 _strdup? (0) | 2021.01.14 |