메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

휴멍거스(Humongous)사가 채택한 파이썬

한빛미디어

|

2002-08-21

|

by HANBIT

11,868

저자: 스티브 피긴스(Stephen Figgins), 역 전순재

휴멍거스 엔터테인먼트(Humongous Entertainment)사의 기술담당 이사인 브루스 더슨(Bruce Dawson)은 최근 자신이 2002 게임 개발자 컨퍼런스(Game Developers Conference)에 제출했던 "파이썬으로 하는 게임 스크립팅(Game Scripting in Python)"이라는 논문을 발표하였다.

휴멍거스 엔터테인먼트사는 어린이와 부모에게 아마도 어드벤쳐 게임과 백야드(backyard) 스포츠 게임으로 잘 알려져 있을 것이다. 이전에 그 회사는 SCUMM이라는 스크립팅 언어를 사용하였는데 이 언어는 애릭 윌먼더(Aric Wilmunder)와 론 길버트(Ron Gilbert)가 루카스필름 게임(LucasFilm Games)사에서 일할 때 매니악 맨션(Maniac Mansion)을 위해 만들어 낸 스크립팅 언어이자 게임 엔진이다. 길버트(Gilbert)는 휴멍거스와 케이브독 엔터테인먼트(Humongous and Cavedog Entertainment)사에 공동출자하면서 함께 SCUMM을 가지고 왔다. 그 대가로 그는 계속해서 갱신된 사항들을 루카스아트(LucasArts)사에 보냈다. 수년에 걸쳐 SCUMM은 성장을 거듭했으나 점점 휴멍거스사의 게임 개발을 가로막는 장애물이 되어 가고 있었다.

특히 SCUMM은 모험(adventure) 게임 스크립팅에 잘 맞는다. 물론 휴멍거스사의 첫 번째 빅 히트작들은 어드벤처 게임들로 프레디 피시(Freddi Fish), 팟팟(Putt Putt), 파자마 샘(Pajama Sam)과 같은 인물들을 탄생시켰다. SCUMM은 백야드 야구(Backyard Baseball)나 백야드 축구(Backyard Football)와 같은 백야드 스포츠(Backyard Sports) 게임에는 별로 쓸모가 없었다. 초기부터 이 사실은 분명했지만 개발자들은 그 언어를 잘 알고 있었고 적절히 임시방편을 만들언 낼 능력이 있었다. 그렇지만 프로그래머들은 특히 스포츠 게임에서 그 언어의 제한사항을 극복하는데 엄청나게 많은 시간을 보내고 있었다. 길버트가 더 이상 그 회사에서 일하지 않게 되자, 휴멍거스사는 새로이 출시할 백야드 하키(Backyard Hockey) 게임에는 무언가 새로운 시도를 해야겠다고 생각했다.

그래서 휴멍거스 사는 새로 출시할 백야드 하키 게임에 무언가 새로운 시도를 하고 싶어 했다. "우리는 다른 맞춤 언어를 개발하는 것에 대해 생각해보았습니다."라고 더슨(Dawson)은 나에게 말했다. "우리는 이미 실수를 한번 저질렀습니다. 같은 실수를 다시 되풀이 하고 싶지 않았죠. 이 번에도 실수를 저지르겠지만 이번엔 새롭고 완전히 다른 실수를 저질러볼 생각입니다." 휴멍거스사는 강렬한 그래픽과 자원 적재, 물리적 법칙의 구현에는 C++을 사용하고 스크립팅과 인공지능(AI)에는 파이썬을 사용하는 조합에 최종적으로 이르렀다. 휴멍거스사는 구축 도구로서 이미 파이썬에 익숙하고 여러 개발자들 역시 파이썬으로 작업한 경험이 있었다. 더슨은 게임 개발자 회의에서 슬라이드를 발표하면서 다음과 같이 썼다. "우리는 파이썬을 사용하기 시작하였고 멈출 수가 없었다. 참으로 재미있었다!"

백야드 하키가 올가을 출시 되면 이 게임은 휴멍거스사가 파이썬으로 스크립트하여 선적한 첫 번째 게임이 될 것이다. 여러 게임 회사들이 지금은 게임에 파이썬을 사용하고 있지만 더슨에 의하면 이런 회사들 중에 파이썬을 기본 언어로 사용하고 있는 회사는 소수라고 한다. "대부분의 게임에서, 게임 그 자체는 C++로 작성되어 있으며 인공지능(AI) 이벤트 등등 어떤 촉발을 위하여 파이썬을 호출합니다. 우리 게임과 디즈니 게임 만화동산(Disney game Toontown)에서는 실행파일이 Python.exe이지요. 파이썬 스크립트로 시동을 걸어 게임이 시작되면 파이썬은 C++ 모둘을 호출하여 그래픽이나 사운드같이 힘에 부치는 작업을 떠 넘깁니다. 게임 로직은 파이썬으로 작성되어 있으며, 말단 노드에 C++로 작성되는데 이전에는 반대로 하는 것이 더 일반적이었습니다." 백야드 하키 게임에 관련된 모든 물리적 법칙과 그래픽은 C++로, 인공지능(AI)과 메뉴 코드는 파이썬으로 작성되었다.

C++과 파이썬을 함께 결합하기 위해, 휴몽거스사의 개발자들은 YAGA라는 접착제 코드를 독자적으로 작성하였다. YAGA는 인터페이스 기술 언어(IDL, interface description language)를 사용하여 인터페이스를 정의한다. 이에 대해 더슨은 다음과 같이 말한다. "인터페이스에 대한 결정이 나면 IDL을 생성한 후 C++로 작성해 놓은 그 인터페이스들을 구현합니다. 지금까지는 모듈을 파이썬으로 개발한 후 다시 C++로 개발해, 모듈을 대체하는 경우가 종종 있었습니다. 어느 정도는 실행시간에 어느 구현을 사용하기를 원하는지 선택할 수 있습니다." IDL 덕분에 유연하게 스크립팅 언어 또한 선택할 수 있는데, 다른 언어들도 역시 YAGA 모듈을 사용할 수 있기 때문이다. 그들은 그래픽, 충돌, 사운드 모듈을 비롯하여 다수의 YAGA 모듈을 만들었다. 이 모든 것이 경쟁적인 이점이 있는가의 관점에서 고려되었기 때문에 YAGA 모듈은 오픈 소스가 아니다.

그렇지만 그들은 HAPS 디버거를 GNU LGPL 프로젝트로 공헌하였다. 휴몽거스사의 개발자들은 마이크로소프트와 애플 플랫폼 모두에 대하여 두 시스템에서 작동할 수 있는 디버거가 필요했다. 예전 같으면 이는 곧 SCUMM 디버거가 이식이 가능해야 한다는 것을 의미했었을 것이다. 새로이 구축될 시스템에 대하여 그들은 원격 디버거를 만들기로 결정하였다. 그 디버거는 편집기와 IDE, 내장된 디버깅 호스트로 구성되는데 이 호스트는 IDE와 TCP/IP를 통하여 통신한다. 매킨토시에서 디버그하려면 내장된 호스트만 이식하면 될 것이다. 눈에 익은 시스템에서 계속 개발을 하면서 여러 플랫폼을 위한 디버깅을 할 수 있게 되자, 이러한 접근법 덕분에 게임을 테스트 시스템에서(화면전체 애플리케이션으로) 실행하면서, 다른 한편으로 별개로 둔 개발 시스템에서 그 프로그램을 디버깅하는 일이 가능해졌다.

더슨(Dawson)은 C++과 파이썬으로 전환한 것에 대해 대단히 만족하고 있다. 그리고 백야드 하키 개발팀 역시 기뻐하고 있다. 나는 그에게 그 변화과정이 어렵지는 않았는지 물어 보았다. 간단한 스크립팅 언어에서 C++과 파이썬으로 이동하는 것이 쉽지는 않았을 것이다. 더슨에 의하면 모든 것을 한번에 처리하는 것이 정말 도전적인 작업이었지만 초기 전환 작업이 마무리되자 이른 곧 더 쉬워졌다고 한다. 그의 지적대로 SCUMM은 소멸 직전의 언어로 이 언어로는 다른 언어에 대한 훈련을 잘 할 수 없다 그렇지만 파이썬과 C++이라는 기술은 익혀나갈수록 더욱 쉽게 이용할 수 있고, 그 경력은 헛되지 않다. 어느 모로 보나 파이썬을 사용한 것은 휴멍거스 엔터테인먼트사에게는 성공이다.
스티브 피긴스(Stephen Figgins)는 오라일리 네트워크 편집자이자 파이썬 데브센터 책임자이다.
TAG :
댓글 입력
자료실

최근 본 상품0