2010년 3월 12일 금요일

게임프로그래밍을 위한 언어

현업에서는 보통 C/C++을 사용합니다.

서버/클라이언트 모두 그렇습니다.

게임의 특성상 퍼포먼스 저하를 최소화하기 위해서

Native Code로 생성하기 위해서죠.

또한, 기반 시스템 라이브러리들이 이 언어로 되어 있습니다.

많은 예제들

그리고 많은 프로그래머들.



그러나, 비극은 C++을 제대로 쓰지 못하는 훈련되지 않은 프로그래머들에 의해서

발생합니다.

C++은 프로그래머에게 많은 자유를 주는 언어이기도 하지만,

많은 책임도 주는 언어입니다.

그렇지만, 책임을 못하는 프로그래머들이 부지기수이지요.

단순히 메모리 할당과 해제도 잘 못해서 프로젝트가 망하기도 합니다.;;;

그러한 C++을 잘 쓰기 위해서는 교육과 그것을 서포트하는 툴이 반드시 필요한 것 같습니다.

현업에서 썼던 Prevent는 아주 좋은 Static Analysis 툴이었습니다.



아마도 앞으로는 이러한 추세가 바뀔 것으로 예상합니다.

하지만, 생산성이라는 명분이 바뀌어야 합니다.

즉, 다른 언어로 선택했을때에 생산성이 높아야지만 선택될 수 있다는 것이죠.

기본적인 안정성과 성능은 기본입니다.

즉, 다른 언어로 선택했을때에 더 빠른 생산 속도를 보여줘야지만 된다는 것입니다.

이러한 것을 보여주고 싶습니다.

제가 한 번 해보이고 싶습니다.



MS에서 밀고 있는 XNA는 C#기반에 .NET기반에서 실행됩니다.

덕분에 XBOX360,PC,ZUNE모두에서 실행이 된다죠?



앞으로 개발 환경이 많이 바뀔 것으로 예상합니다.

어떤 플랫폼을 선택하느냐에 따라서 바뀔 것입니다.



제가 보는 언어는 몇가지 있습니다.

ocaml,haskell,erlang,haskell,clojure : 함수형 언어로써 익숙해지기만 한다면, 생산성이 높아질 뿐 아니라 멀티코어에서도 잘 동작할 수 있으리라 생각합니다. 특히 ocaml은 imperative특성도 있기 때문에 익숙해질 가능성이 높습니다. MS에서도 F#을 Ocaml 을 선택하여 하고 있습니다.MS에서 F#을 클라이언트에서 쓸 게임용 언어로 선택한 듯 보입니다. MS가 아닌 솔루션을 쓴다면, 다른 언어를 써야 하는데, 역시 ocaml이 학습이 쉬울 것 같습니다. 따라서, 게임용 미들웨어가 ocaml로 많이 접목되길 바랍니다.clojure는 웹에서 새로운 트랜드로 각광받고 있는 것 같습니다. haskell은 원래 함수형 언어를 좋아하는 사람들이 많이 쓰던 언어인데, clojure로 옮겨가는 사람들이 많아지는 듯 싶어요. 게임쪽에서도 팀스위니가 이걸로 언리얼4 만들고 있지 않을까 싶구요.

scala : JVM위에서 돌아가기 때문에, 서버사이드에 풍부한 java리소스를 활용할 수 있습니다.  덧붙여 java도 서버쪽에서는 좋은 선택이 될 것 같습니다.

ruby : lua보다는 훨씬 아름다운 언어로 생각합니다. 아직은 검토해보진 못했으나, 가능성이 있다고 생각합니다. 생산성에 있어서 많은 각광을 받고 있습니다.



이러한 특성들을 조합하여

새로운 언어를 생성할수도 있습니다.

바로 ANTLR을 이용하는 것입니다.

언리얼4를 만드는 팀스위도 이것을 써서 언리얼스크립트4를 만들고 있지 않을까 추측합니다. 왜냐하면, 언리얼은 평가판에서도 소스를 공개하는데, 그 이득이 상당합니다. 의심많은 개발자들은 소스가 없이 평가하기 싫어합니다. feature driven으로 평가하지 않죠. 왜냐하면, 그 feature가 제대로 되어있기도 어렵고, 변화하기 때문이고, 변화하려면 소스 구조를 봐야 하기 때문입니다. 그런데 소스가 공개되면, 기술이 유출되는 것이기 때문에, 엔진회사에서는 그렇게 하지 않습니다. 근데, 언리얼은 언리얼스크립트를 만들면서 이 문제를 해결했습니다. 언리얼4에서 이 문제를 똑같이 해결할 것이라 예상합니다.



자,이 블로그의 목표가 생겼습니다.

여러 개발 패러다음을 합쳐서 하나의 통합된 솔루션을 만드는 것입니다.

또한, 게임개발용 언어를 ANTLR로 만드는 것입니다.

댓글 없음:

댓글 쓰기