티스토리 뷰


'자유로움이 진정한 자유로움을 주는가.'
어떻게 보면 상당히 모순된 말일 수도 있는데, 내가 하고자 하는 말을 쉽게 이해하기 위해서는 Lua를 예로 들면 좋을 것 같다.
Lua로 프로그래밍을 하다보면 자주 겪는 일인데 너무 자유로운 문법 때문에 도리어 위축되는 느낌을 갖곤 한다.
나만 그렇게 생각하는 것은 아닌 것이, 다른 사람들에게 이런 이야기를 하면 다들 수긍하기 때문이다.
오히려 C++로 코딩을 할 때에는 제한된 문법 속에서 다양한 활용을 통해 강력하고 아름다운 코드가 나오기도 한다.
(Lua로 코딩하면 스파게티 소스가 나온다는 것은 아니다. 분명 해당 언어에 대해 해박한 사람이라면 멋지고 아름다운 코드를 만들어낼 수 있을 것이다.)

내가 말하고자 하는 바는 주제와 관계가 없어 보일 수도 있으나 게임 엔진과 관련된 이야기이다. 
나는 최근에 몇 달 동안 게임 엔진을 선택하기 위해 많이 방황했었다. Marmalade SDK, Corona SDK, LibGDX, Cocos2D-X 등등....
내로라 하는 게임 엔진들을 써 보았다.



엔진들은 첫번째로 자신의 퍼포먼스가 얼마나 뛰어난지 말하고 하고 두번째로 자신을 쓰면 개발하기 얼마나 편리한지에 대해 이야기 한다.
특히 Cocos2D와 Corona SDK가 쉽고 편리한 개발이라는 타이틀을 걸고 있고, 그 만큼 자유롭고 편리하게 개발할 수 있도록 구성되어 있다.
Cocos2d와 Corona SDK 둘 다 써본 내 생각을 말 하자면 그렇게 자유롭고 편리하게 코드를 짤 수 있도록 하는 것이 정말 쉽게 해주느냐는 것이다.

앞에서 말한 것과 같이 C++의 제한된 문법 덕분에 나는 오히려 개발이 편하다고 느낀다. 
지금 Corona SDK로 개발을 하는 입장에서 말을 하자면  Lua의 자유로운 문법과 Corona SDK의 범용적인 API 때문에 '어렵다고' 느낀다. 
물론  Lua에 익숙하지 않은 부분도 있겠지만 앞으로도  Lua의 자유로운 문법은 계속 장애물이 될 것이라고 생각한다.
Cocos2D-X 역시 마찬가지였으나 상속과 같은 C++의 문법적 특성 때문에 곤란함이 조금 덜 했다.

내가 말하고자 하는 것은 '엔진이 왜 사용자를 조금 구속하지 않으면 안되느냐'는 것이다.
다시 말하자면 특정 분야에 대해 특화된 엔진도 나쁘지 않을까 라는 생각이다.
범용성을 따져야 하는 엔진에서 특정 분야에 대한 특화는 독이 될 수도 있지만 오히려 특정 장르에 한해 개발하기 편하게 제작해둔다면
그것도 나쁘지 않은 선택이 되지 않을까 라는 생각을 많이 한다.
예를 들어 슈팅 게임 전용 게임 엔진이라면 슈팅 게임에서 주로 사용하는 것에 대한 템플릿을 미리 만들어 두어서
그것을 반드시 구현해야 하고 어느 형태를 꼭 유지하도록 하는 것이다. (ex : 총알, 적 비행기 등)
또 해당 장르에서 꼭 필요함직한 화면들을 따로 템플릿으로 만들어두어 개발을 편리하게 하는 것이다. (ex : 스코어 화면, 캐릭터 선택 화면 등)

이렇게 함으로써 개발을 하는 것에 있어서 조금 제한 사항이 생길 수도 있으나 오히려 더 편리하게 개발할 수 있게 된다고 생각한다.
여러 API들을 늘어놓아 개발에 있어서 혼란스럽게 하지 않고 특정 객체를 미리 엔진상에 구현해두고 그것을 쓰게 함으로써 오히려 편리해지진 않을까?
템플릿을 이용해야 하기 때문에 개발자마다 다른 환경 때문에 발생하는 여러 가지 버그들을 미연에 방지할 수 있지 않을까? 

요즘 들어 엔진들이 자꾸 쉽게 개발할 수 있다는 것에 초점을 맞추고 있는 것 같아 드는 생각이다.
그런걸 볼 때 마다 드는 생각은 '개발은 결국 개발자가 한다.'라는 것이다.
'일반인도 쉽게 개발할 수 있습니다.' 라는 문구가 과연 게임 엔진에게 어울리는 문구인가?
결국 개발은 '개발자'가 한다.
그리고 일반인이 쉽게 쓸 수 있게 한다고 해서 개발자가 쉽게 느끼는 것은 아니다. 




나는 그렇게 생각한다. 
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday