전 딱히 게임을 끝까지 완성해 보지는 않았는데, 그냥 이것 저것 가지고 놀면서 많은것들을 알아갔습니다.
이번 시간에는 제가 지금까지 알아왔던 것을 공유해 보고 싶습니다.
일단 인디게임은 개발자가 1~2명 정도 밖에 안될텐데요, 이런 적은 숫자로 게임을 만들때는 수십명이 참여하는 대형 프로젝트와는 다른 방법을 써야 합니다.
게임 개발을 백지부터 시작한다면 엄청난 시간이 투자되고 별로 효과도 없을 것입니다. 그래서 어느정도 게임의 틀을 갖추고 있는 게임 프레임 워크를 사용해서 게임을 개발하는 것이 훨씬 좋습니다.
게임 개발 언어는 개발자가 편한것으로 선택하는 것이 좋고, 그에 맞는 게임 프레임 워크를 선택하시면 됩니다.
제가 아는 게임 프레임 워크는 다음정도가 있습니다.
LibGDX: java 기반 게임 프레임 워크. java가 깔려있는 곳이라면 맥이든, 윈도우, 리눅스에서 실행할 수 있는 크로스플랫폼 프레임워크이고, 더욱이 안드로이드에서도 실행 시킬 수 있다. java용 OpenGL binding인 jogl과 마인크래프트에서 사용된 게임 프레임워크인 LWJGL와 ANGLE을 내장하고 있으며, 일부 코드는 효율성을 위해 JNI코드를 이용하여 C로 작성되어 있다.
Cocos2D: MIT에서 개발된 게임 프레임 워크이다. 언어는 python과 object-C를 사용한다. Cocos2D도 마찬가지로 크로스플랫폼 게임 프레임 워크이고, iPhone에서도 실행될 수 있고, 안드로이드에서도 native로 binding 될 수 있다. 파이썬 그래픽 라이브러리인 pyglet을 포함하고 있다. cocos2D는 object-C를 사용하는 특성상 iPhone에 최적화 되어 있고, 보통 아이폰 게임을 개발할 때 쓰인다. 그리고 개발할때 아무래도 python보다는 object-C가 성능면에서는 좋겠지만, python으로 작성할 부분과 object-C로 작성할 부분을 적절히 나누면 개발속도를 빨리하면서 성능도 좋게 할 수 있을 것이다.
pygame: python기반의 게임 프레임 워크이다. 마찬가지로 파이썬 기반이므로 어느 운영체제에서든 실행 될 수 있다. 그러나 스마트폰에서는 사용할 수 없다. SDL을 내장하고 있고, C 코드를 이용해 성능최적화가 이루어져 있다.
CoronaSDK: Lua 언어를 사용한다. 짧은 코드로도 굉장한 효과를 낼 수 있다. 14살 아이가 이것으로 Bubble Ball이라는 게임을 만들어 화제가 된적이 있다. 스마트폰용 게임을 만들때 사용하고 크로스 플랫폼이다. 무료로 사용할 수는 있지만, 수익이 날 경우 라이선스 비용을 지불해야 한다.
XNA: 마이크로소프트에서 만든 플랫폼에서 돌아가는 게임 엔진이다. Xbox, 윈도우, 윈폰에서 돌아간다. 아무래도 자사에서 만든 것이니까 최적화가 잘 되어 있다. 언어는 Visual Basic, C/C++, C#을 사용한다.
Panda3D 와 Blender는 3D 게임 엔진이다. 둘다 python을 사용한다. panda3D는 C++ API도 제공한다. 3D는 안해봐서 모르겠다.
Unity 3D는 유료이긴 한데, 맛보기 정도는 무료버전으로 사용 할 수 있다. 유료버전도 그렇게 가격이 비싸지 않고 모든 플랫폼에서 개발이 가능해 많이 쓰이는 게임 엔진이다.
LimeJS: HTML5 기반 게임 프레임 워크이다. 써본적이 없어서 잘 모르겠다.
플래시 기반 프레임 워크는 http://www.flashrealtime.com/flash-game-library-engine-list/#2D 에 가면 찾아 볼 수 있을것이다. 플래시 개발은 해본적이 없어서 잘 모르겠다.
그리고 그 외에 알만툴과 컨스, 겜메등 엄청난 많은 숫자의 게임 프레임워크들
위에서 유료라는 말이 없으면 완전히 무료입니다.
결국 해본것 보다 안해본것이 많아서 도움을 많이 드리지는 못하겠지만 이 정도의 정보가 도움이 되었으면 합니다.
그 외에 추천할 만한 게임 프레임워크들이 있으면 알려주시면 감사하겠습니다.
일단 게임을 개발하려고 할때 어떤 플랫폼에서 돌아갈지 생각해야 합니다. 사실 데스크탑, 타블렛, 스마트폰은 사용하는 느낌이 너무 달라서 모든 곳에서 돌아가는 게임을 개발하는 것은 힘들뿐만 아니라 효율적이지 않다고 생각합니다.(예외적인 경우도 몇가지 있겠지만)
보통 인디게임 개발하시려고 하면 2D를 많이 할거라고 생각합니다. 데스크탑에서 2D게임을 개발하신다면 XNA, pygame, LibGdx등을 추천합니다.
아이폰에서는 Cocos2D를 추천하고, 안드로이드에서는 LibGdx를 추천하고, 윈폰에서는 XNA를 추천합니다. CoronaSDK는 모든 폰에서 다 잘 돌아가지만 뭔가 제약이 많고, 라이선스를 지불해야 합니다.
그리고 이제 막 게임 개발에 입문하시려는 분들은 일단 예제로 게임 개발하는 책을 사두시고, 그 책 그대로 따라 가면서 게임개발에 대해 좀 감을 잡으시면 어렵지 않게 배울 수 있습니다. 중요한건 끈기인데, 책 한권에 나온 소스를 모두 작성하는 것이 쉬운 일은 아닌데, 일단 한번 다 해보고 나면 뭔가 엄청난 것을 얻은 기분을 느낄 수 있습니다. http://www.masque.kr/?mid=free&category=50961 여기는 날자고도님의 DirectX로 탄막슈팅게임 만드는 건데, 아무래도 게임 프레임워크를 사용하지 않아 좀 어려울 수도 있는데, 일단 한번 해보고 나면 득도할 수 있을것입니다.