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

한빛출판네트워크

IT/모바일

게오르그의 Brave GNU World 제 37 호

한빛미디어

|

2002-10-15

|

by HANBIT

8,225

저자: 게오르그 (Georg C. F. Greve), 번역 Brave GNU World 한국어팀(bgw@korea.gnu.org)

많은 사람들에게 생각할 거리를 제공할 수 있는 프로젝트들에 대한 내용을 담은 Brave GNU World의 새로운 이슈를 찾아주신 것을 환영합니다.

이번 기사에서도 역시 세계 어디서든 높은 관심이 있을 것이 분명한 몇몇 자유 소프트웨어 게임들에 대한 소개로 시작합니다.

Trophy

Andrew Mustun은 2000년 3월에 자신의 컴퓨터 과학 공부를 마무리 짓기 위해 Trophy[1]를 개발하기 시작했습니다. Trophy는 위에서 내려다 보는 형태의 2차원 자동차 경주 게임인데 결승선을 가장 먼저 통과하기만 하는 게임이 아닙니다.

좀더 자세하게 설명하면 이 게임은 단순히 결승선을 통과하는 자동차 경주 게임이 아닙니다. 이 게임에서 경주에 참여하는 자동차들은 James Bond의 영화에서처럼 무장을 하고 있으며 여러 장치들을 이용해서 서로를 방해합니다.

비록 부드러운 스크롤을 보기 위해서는 높은 사양의 컴퓨터가 필요하긴 하지만 훌륭한 그래픽과 사운드 덕분에 Trophy는 격한 움직임을 선호하는 게이머들이 즐길 수 있을 만큼 완벽해져 있습니다.

Trophy는 C++로 작성되었으며 Andrew는 이 게임을 GNU GPL로 배포하고 있습니다. 이 게임의 가장 큰 약점은 네트워크 플레이 옵션이 없다는 것입니다. Andrew는 다음 번 작업 때 이 문제에 대해 고민을 하려 하지만, 현재로서는 새로운 공부에 바빠 그럴만한 여유가 없습니다.

비록 25살이 되도록 아직 운전면허가 없어서 실제 차를 운전할 수는 없지만, Andrew는 개인적으로 평화를 사랑하고 무기는 없어져야 하며 무기가 장착되지 않았다고 하더라도 자동차는 충분히 위험하다고 강조한다는 이야기를 이번 호를 준비하면서 들었습니다.

그래도 평화가 중요하다는 사실이 오후의 여가시간에 Trophy를 하는 재미를 빼앗지는 않을 것입니다. 만일 게임을 즐기면서 GIMP를 사용해서 트랙을 디자인하는, 보다 독창적인 보다 재미를 찾고자 한다면 어려울 것 없습니다. Trophy의 홈페이지에 이런 것을 어떻게 할 수 있는지 소개가 나와있기 때문입니다.

네트워크 옵션이 전혀 지원이 되지 않기 때문에 이쪽으로 관심을 갖고 개발에 참여 하려는 개발자들은 굉장히 환영받을 것이며 당연히 Andrew도 이를 도와줄 것입니다.

Adonthell

Adonthell 프로젝트[2]는 예전의 SNES와 흡사하지만 보다 높은 자유도를 목표로 활발하게 자유 2D 롤플레잉 게임을 제작하고 있습니다.

많은 게임들은 확연하게 구분할 수 있는 두 부분으로 이루어져 있습니다. 즉, 줄거리,그래픽,음악과 같이 금방 떠올릴 수 있는 중요한 부분 이외에도 일반적으로 "엔진"이라고 불리는,예를 들어 사용자 인터페이스, 기술적인 부분이 있습니다.

프로그램과 운영체제 혹은 악보와 악기사이의 관계가 이와 유사한 관계라고 할 수 있습니다. 이러한 구분 덕에 게임 제작은 언어를 통해서 상상한대로 할 수 있으며 동작 가능성 여부는 엔진을 통해서 결정지어 집니다.

Adonthell 프로젝트는 정해진 줄거리를 갖는 게임을 개발하는 것 뿐이 아니라 엔진에 의해 로딩되는 줄거리를 가진 롤플레잉 게임을 위한 엔진을 개발하고 있습니다. 또한 모든 릴리즈에서 소스코드 뿐만 아니라 완전하게 동작하는 작은 게임들도 포함할 계획입니다.

Adonthell 프로젝트의 영구적인 팀은 Kai Sterker, Alexandre Courbot, James Nash, Benjamin Walther-Franks, Joel Vennin, Joseph Toscano 그리고 Mike Nieforth 입니다. 이들 중 세 명만이 프로그래머이고 나머지는 음악, 그래픽, 줄거리 등을 담당하고 있습니다. 이처럼 조화가 잘 이루어져 있고 멤버들이 자발적으로 일년에 한번은 모이려고 하고 있어서 이 게임은 자체로 전문 게임개발 업체가 만든 것처럼 "느껴질" 정도로 잘 만들어지고 있으며 그 자체로 인터넷을 통한 효과적인 협력에 대한 훌륭한 예를 보여주고 있습니다.

Adonthell의 코드와 그래픽들은 GNU 일반 공중 사용 허가서를 준수하면서 배포되고 있으며 엔진 작성을 위해 사용되는 프로그래밍 언어는 C++ 이고, 게임 내 시나리오와 확장 등 게임 제어를 위해 파이썬이 엔진에 내장되어 있습니다. 이로 인해서 C++를 전혀 손댈 필요 없이 Adonthell에서 돌아가는 게임을 제작할 수 있습니다. 음악의 제작에는 OGG Vorbis[3]가 사용되고 있습니다.

여러 장점들 중 하나는 엔진과 게임을 따로 패키징할 수 있다는 것이었습니다. 단지 엔진만을 인스톨한 후에 지도 편집기와 파이썬과 같은 작은 대화 편집기 등의 툴을 이용해서 완벽한 게임을 제작하는 것이 가능합니다.

이 프로젝트를 보다 흥미롭게 만드는 것은, Adonthell 그룹은 스스로의 역사와 관습과 특성을 지닌 완벽한 세상에서 작업을 하고 있다는 점입니다.

다음 단계는 무엇이냐는 Brave GNU World의 질문에 Alexandre Courbot는 코드의 상당부분을 그동안 얻은 경험을 바탕으로 재작성 하는 것이라고 대답 했습니다.

이 팀은 현재도 다른 플랫폼으로의 포팅을 도와줄 사람들을 찾고 있습니다. Adonthell은 GNU/Linux, FreeBSD, OpenBSD와 BeOS 상에서 동작한다고 알려져 있지만 멀리 내다 봤을 때 독점적인 운영체제의 사용자들에도 자유소프트웨어를 맛볼 수 있게 하기 위해 이러한 운영체제들로의 포팅도 계획하고 있습니다.

내부적인 개발은 네트워크 플레이가 가능하도록 하기 위해 좀더 클라이언트/서버 기반으로 진행되어 가고 있습니다. 굉장히 많은 수의 플레이어를 지원하는 것이 아니라고 하더라도, 결국에는 중간정도 수의 플레이어들이 지속적인 가상세계 안에서 서로 영향을 주고 받을 수 있게 될 것입니다.

1999년에 Adonthell이 시작된 이래로 이러한 계획은 이미 상당한 진척이 있었으며 개발이 진행될수록 더 좋아질 것으로 보입니다. 괜찮은 실력이 있으면서 기다리기 싫은 사람은 이런 진행에 참여해서 도움을 주기 바랍니다. Adonthell 팀은 모든 종류의 도움을 환영합니다.[4]

이처럼 성미가 급해서 개발에 직접 뛰어들 생각이 없는 사람들은 Adonthell로 플레이가 가능한 첫번째 게임인 "Waste"s Edge,"로 하루나 이틀 오후를 즐겁게 보낼 수 있을 것입니다.

XbindKeys

Philippe Brochard는 X11환경에서 하나의 키를 가지고 쉘 명령어를 실행시킬 수 있게 하는XBindKeys[5]를 개발했습니다. 예를 들어 메일관리프로그램, 웹브라우저, xterm 등의 자주 사용되는 프로그램들이 키조작으로 메뉴를 띄울 필요 없이 실행시킬 수 있는 것입니다. 물론, 사용자에 따라 키보드에 손을 대지 않고 작업을 할 수 있게 되었다 하더라도, 이러한 기능이 그다지 필요없다고 생각하는 사용자들도 있을 것입니다.

어떤 윈도우 메니저들은 기본적으로 키바인딩을 지원하지만, 특정 키보드에서만 볼 수 있는 특수키들처럼 모든 키들이 지원이 되지는 않습니다. Philip은 그의 시스템을 셧다운 할 때 자신의 키보드에 있는 &qout;전원" 버튼으로 합니다. 그는 이를 XBindKeys를 통해 구현해 놓았습니다.

또한, 사용자들은 윈도우 메니저를 변경하려 할 때 자신들이 사용하던 키조합을 새로운 윈도우 메니저에 입력을 하는데 매우 많은 시간투자를 해야 한다는 것을 잘 알고 있습니다.

XBindKeys를 이용하면 이러한 문제들을 해결할 수 있습니다. 또한, XBindKeys는 Philippe가 제작한 간단한 프로그램인 MoveMoise[6]의 결합할 수도 있는데 이 프로그램은 하나의 키를 가지고 마우스 포인터를 특정위치로 옮겨놓을 수 있습니다.

XBindKeys와 MoveMouse 모두 C언어로 작성이 되었고, GNU GPL을 따릅니다. 왜냐하면 Philippe가 그 프로그램들을 GNU System을 위해 만들었다고 생각하기 때문입니다.

XBindKeys의 환경설정은 간단한 텍스트 설정 파일을 직접 수정해서 할 수 있습니다. 뿐만 아니라, Laurent Vuibert가 제작한 XBindKeys-Config[7]라는 GTK 프로그램을 이용할 수도 있습니다.

앞에서 말한 것처럼, 사용자가 XBindKeys를 윈도우메니저보다 먼저 실행이 되도록 설정하는 것이 중요합니다. 왜냐하면, 윈도우메니저가 XBindKeys의 설정 값들을 변경시키지 않도록 해야 하기 때문입니다.

XBindKeys는 현재 안정적으로 동작하고 있으며 Philippe 자신이 이 프로그램이 작고 유용한 형태로 남아있기를 바라기 때문에 더 이상 개발을 진행시킬 계획은 없습니다. 이것은 프로그램의 개발이 산만하게 되어 여러 기능들이 복잡하게 얽혀 덩치가 커지는 것을 견제하는 명확하면서도 좋은 예가 될 것입니다.

Access Road

IT-보안 영역은 굳이 물어보지 않아도, 매우 복잡하고 중요합니다. 현재까지는 프로그램 버그의 가능성에 대해 알고 있다는 것만으로도 충분했을지 몰라도, 버그가 없는 프로그램들을 연계하고 함께 사용하는 과정에서 보안 문제가 생길 가능성이 있습니다.

복잡한 환경과 작업들은 때때로, 매우 복잡하고, 모호한 정보체계를 요구하게 됩니다.

접근 제한을 없애면, 데이터가 몰래 유출되거나 수정이 될 수 있습니다. 컴퓨터로 작업을 하는 병원의 경우 이 문제는 바로 분명해 집니다. 반대로, 모든 접근의 완전한 제한은 또 모든 작업을 불가능하게 만드는 것이므로 좋은 생각은 아닙니다.

따라서 수작업으로 작업하는 시스템은 구성하는 것은 불법적으로 자료가 사용되는 것을 원천척으로 막으면서 유용하게 작업할 수 있는 방법입니다.

하지만 이런 경우 수작업으로 이루어 지기 때문에 언제나 문제가 발생할 수 있는 중요한 가능성이 존재하기 마련입니다. Patrick Thazard는 정보 체계의 복잡한 환경을 모델하고, 관리자들을 위해 그것을 시각화해주는 Access Road 라는 프로그램을 개발했습니다. 이 프로그램은 자체적으로 보안을 강화 시키는 것 뿐만 아니라, 알려지지 않은 보안 문제들을 찾는데 도움을 주는 기능을 합니다.

Patrick Thazard는 1987년부터 컴퓨터 보안 컨설턴트로 일을 해온 사람으로 Java를 가지고 GNU i일반 공중 사용 허가서를 준수하는 프로그램인 Access Road를 개발했으며, GNU 자유 문서 사용 허가서를 따르는 문서를 제작했습니다.

Access Road는 지난 발표 이후로 아무런 데이터 업데이트가 이루어 지지 않았다 하더라도 GNU/Linux 계열의 시스템들, 간단한 라우터들, 솔라리스 계열의 시스템들을 지원합니다. 이러한 면에서 Patrick은 다른 개발자들에게 매우 유용한 구조를 이미 제공해 왔다고 확신하고 있습니다.

앞으로의 계획은, 먼저 GNU/Linux와 Apache, 더 나아가 OS와 사용되는 데이터베이스 관리 시스템들간의 연계를 추가하는 것입니다. 장기적으로는, COBRA나 Windows 2000/XP 같은 시스템들을 모델링하는 것에 대한 확장을 계획하고 있습니다.

그 때까지 해야 할 여러 가지 자질구래한 작업들이 있고, Patrick은 그의 개발에 동참할 생각이 있는 개발자들을 찾고 있습니다. 일반적으로 시각적인 모델링의 접근이 상당히 약하지만, 이 프로젝트는 매우 흥미진진하고, 새로운 방식을 찾아 갈 것 입니다.

GNU Cons

GNU Cons[8]은 고급 프로그램들 중 하나인 GNU Make[9]와 같은 기능을 제공합니다. 소프트웨어를 다운로드 받아 설치하거나 리눅스 커널을 다시 컴파일 해본 사람들은 간단히 "make"라는 명령어를 입력하여 GNU Make를 사용해 보았을 겁니다.

Make 는 프로그램을 직접 컴파일하거나 배시(Bash) 셸 스크립트를 사용하는 것이 당연히 여겨지던 시절에 만들어 졌고 정말 큰 도움이 되어 주었습니다. 하지만 만약 여러분이 직접 메이크파일(Makefile) 을 만들어 보려고 했다면 문법이 약간 이해하기 어렵다고 느꼈을 겁니다. 이때문에 대부분의 개발자들이 다른 프로젝트에서 사용중인 메이크파일을 복사하여 그들 목적에 맞게 변형해서 사용하거나 메이크파일을 자동으로 만들어 주는 GNU Automake 와 같은 프로그램을 사용합니다.

Make 는 제일 먼저 파일들이 언제 마지막으로 저장되었는지를 기준으로 변경이 있었는지를 파악합니다. 하지만 이 방법은 문제가 많고 새로운 컴파일 옵션으로 다시 컴파일 할 때 확실히 실패하게 됩니다.

GNU Cons는 프로그램이 구축 되도록 돕는다는 의미에서 이름 지어졌고, 이 프로젝트의 목표는 GNU Make가 했던 일들을 대신하는 것입니다.

이 프로그램의 가장 큰 장점은 파일의 변경여부를 판단하는 방식이 굉장히 좋다는 점입니다. GNU Cons는 파일이 마지막으로 변경된 시간만을 보지 않고 MD5 서명을 사용하여 동작하므로 변경된 파일들을 훌륭하게 인식해 냅니다.

이러한 능력을 잘 보여주는 것이 다음과 같은 상황에서의 GNU Cons의 동작입니다. 프로그램 "test"는 오브젝트 파일 "test1.o", "test2.o", "test3.o"로 이루어져있습니다.

컴파일을 한 번 하고 난 후, 오브젝트 파일 중 "test2.o" 를 일부러 손상시키거나 내용을 엉키게 만듭니다. 다음 번에 다시 GNU Cons를 호출하면 GNU Cons는 "test2.o"를 다시 생성 하고 기존의 오브젝트 파일들의 링크에 사용되었던 내용과 비교를 합니다. 이 둘이 똑같이 때문에 오브젝트 파일들을 연결하여 "test"를 다시 만들어내지는 않습니다.

GNU Cons를 다른 컴파일 옵션으로 호출하면 모든 부분들이 다시 컴파일 되고 링크 됩니다. 컴파일 결과뿐 아니라 그러한 결과를 만드는 인자들도 다음 번 구동시 비교의 대상이 되기 때문입니다.

GNU Cons는 지금은 이 작업에서 손을 뗀 Bob Sidebotham이 펄(Perl)을 사용하여 만들었습니다. Rajesh Vaidheeswarran과 Steven Knight가 안정 버전과 개발 버전의 메인테이너를 맡고 있습니다. GNU Project 의 한 부분으로써, GNU Cons 는 GNU 일반 공중 사용 허가서로 배포되고 있습니다.

다행히도 GNU Cons는 펄(Perl) 을 사용하고 있기 때문에 윈도우나 유닉스에서 파생된 여러 OS에서도 동작하고 흔히 사용되는 "Makefiles"과 같은 의미의 설정파일도 매우 동적이고 복잡한 표현을 허용함으로써 프로그램을 특정 시스템에 가능한 한 맞출 수 있습니다.

GNU Cons는 비록 C/C++ 만큼 무겁지만 굉장히 쓸만합니다. 다른 프로그래밍 언어에서는 Johan Holmberg가 만든 Cons::Plus 모듈을 통해 사용가능합니다. 설정파일 역시 펄보다 복잡하지 않아 대다수의 사람들이 사용하기에 용이합니다.

마지막으로 Brave GNU World의 표준 질문에 대해 굉장히 많은 답변을 해준 GNU Cons 팀에게 감사의 마음을 표합니다.

Rajesh Vaidheeswarran과 Erich Waelde이 굉장히 많은 양의 예제가 포함된 정보를 보내주었습니다. 비록 이번 호에 이것들을 모두 다 실을 수는 없었지만 저 자신에게는 모두가 굉장히 흥미가 있는 것들이었습니다. Cons의 중요한 장점들이 개발자들에게 부각이 되어서 이들이 Cons를 사용해 봐야 겠다는 생각이 들기를 바랍니다.

Scons

GNU Cons 와 SCons[10]의 이름이 굉장히 비슷한 것은 단순한 우연의 일치가 아닙니다. SCons는 GNU Cons 의 개발 버전(development version)의 메인테이너인 Steven Knight가 소프트웨어 개발 시합삼아 GNU Cons 디자인의 많은 부분을 기초로하여 2000년 8월에 만들어졌습니다.

Cons의 메인테이너가 되고 얼마 후, 그는 Cons의 개념을 파이썬의 힘과 결합하여 Cons와 경합해 본다는 목표를 설정했습니다.

SCons는 이러한 노력의 결과물입니다. Cons처럼 파일의 변경을 감지하고 의존성을 해결하는데 강력한 기능을 갖고 있지만 설정파일은 파이썬으로 만들어집니다. 또한 SCons는 호출시 입력하는 옵션으로 스레드의 개수를 기재해주면 병렬 컴파일도 가능합니다.

SCons 는 첫번째 알파버전이 2001년 12월 13일에 발표되었을 정도로 아직은 새로운 프로젝트입니다. 이때문에 매우 짧은 간격으로 새로운 버전이 공표되고 있고 새로운 기능들도 자주 추가되고 있습니다. 프로젝트가 하위 호환성과 품질에 대해 강력한 재귀 테스트 기반을 가지고 있는데도, 사용하는데 있어 거슬리는 부분이 많이 있을 것입니다.

확장하려고 계획중인 것들은 아직 꽤 많이 남아 있으며 Java, C# 그리고 Fortran 뿐 아니라 여러 포맷(PDF, PostScript, 텍, 기타)의 문서작성과 문서저장소로써의 기능도 여기에 포함되어 있습니다.

SCons는 프로그램의 자유로운 사용과 소스 수정에 대한 제한이 없는 X11-type 라이선스 아래에서 공표되고 있습니다. GNU 일반 공중 사용 허가서가 멀리 봤을 때 좀 더 나은 선택이겠지만, SCons는 확실히 자유 소프트웨어로서 자격이 있고 이 프로젝트를 살펴본다거나 참여하는 것은 굉장히 좋은 생각입니다.

Finish

자, 이달에는 기사가 매우 많았습니다. 다음 회를 위해 저는 stow쪽에서 이미, 제 생활과 여러분의 생활을 훨씬 쉽게 만드는 하나의 프로젝트를 준비해 놓았습니다.

그 때까지 좋은 시간이 되시길 바라며 제안, 생각, 코멘트, 피드백과 프로젝트 소개 들이 있으면 아래 주소[11]로 이 메일을 주시기 바랍니다.

참고 문헌 및 사이트 정보
각주
[1] Trophy 홈페이지: http://trophy.sourceforge.net
[2] Adonthell 홈페이지: http://adonthell.linuxgames.com
[3] OGG Vorbis 홈페이지: http://www.xiph.org/ogg/vorbis/
[4] Join Adonthell 홈페이지: http://adonthell.linuxgames.com/development/join.shtml
[5] Xbindkeys 홈페이지: http://hocwp.free.fr/xbindkeys/xbindkeys.html
[6] MoveMouse 홈페이지: http://hocwp.free.fr/movemouse.html
[7] Xbindkeys-Config 홈페이지: http://www.netchampagne.com/xbindkeys_config/
[8] GNU Cons 홈페이지: http://www.gnu.org/software/cons/
[9] GNU Make 홈페이지: http://www.gnu.org/software/make/
[10] SCons 홈페이지: http://www.scons.org
[11] Brave GNU World에 대한 질문이나 의견 제안 주소: column@brave-gnu-world.org

Copyright ⓒ 1999, 2000, 2001, 2002 Georg C. F. Greve
본 기사는 멋진 GNU 세상에서 발췌한 기사입니다.
TAG :
댓글 입력
자료실

최근 본 책0