저자: 게오르그 (Georg C. F. Greve), 번역 Brave GNU World 한국어팀(
bgw@korea.gnu.org)
멋진 GNU 세상을 찾아오신 것을 환영합니다. 이번 호는 여러분들이 여가시간을 보다 멋지게 보내는데 필요한 정보들을 소개하고 있습니다.
Rocks"n"Diamonds
Holger Schemel이 제작하고 있는 Rocks"n"Diamonds는 고전게임인 "Boulder Dash" (Commodore 64), "Emerald Mine" (Amiga) 그리고 "Supaplex" (PC) 들과 흡사한 게임입니다. 이런 사실은 결코 놀랄만한 것이 아닌 것이 Rocks"n"Diamonds는 앞서 언급한 게임들의 팬이 다른 팬들을 위해서 제작한 것이기 때문입니다.
이 게임들에 대해서 잘 모르는 사람들을 위해서 설명하자면, 이 2차원 아케이드 게임의 목표는 아웃되는 일 없이 다이아몬드를 모으는 것입니다. 이를 위해서, 여러분은 다른 것들 사이에 끼어있는 바위를 옮기고 폭탄을 떨어뜨리고 괴물들을 물리쳐야 합니다.
이 게임은 이식성을 고려해서 C로 작성되었습니다. Rocks"n"Diamonds는 X11이 지원하는 여러 종류의 유닉스에서 매우 잘 동작합니다. 그리고 역시 Mac OS X와 DOS 그리고 윈도우에서도 동작합니다. 레벨들의 부드러운 스크롤과 함께 사용자들의 편의를 위해 조이스틱을 지원하며 키보드의 키들을 원하는 대로 설정할 수 있습니다.
그래픽이 마무리 지어짐에 따라 이 게임을 플레이하는 재미는 소리효과가 지원되는가와 모든 운영체제에서 음악 효과를 지원하는가에 영향을 받아 왔습니다.
Rocks"n"Diamonds는 유닉스버전에서 지원되는 네트워킹 기능을 통해 함께 레벨을 플레이할 다른 플레이어들을 찾을 수 있게 됨으로써 추가적인 흥미를 얻게 되었습니다. 물론 단일 시스템에서도 레벨을 통과하기 위해 동시에 여러 명이(local multiplayer) 팀을 이뤄서 플레이할 수 있습니다.
게임이 지루해 지는 것을 막기 위해서 Rocks"n"Diamonds는 글자 그대로 수 천 개의 레벨들이 존재하며 레벨 에디터까지도 포함하고 있습니다.
Rocks"n"Diamonds는 1994년과 1995년 사이에 GNU/Linux 와 솔라리스 버전이 먼저 공개 되었으며 이후 1998년에 MS-DOS버전이, 2001년에 윈도우 버전이 공개되었습니다. Holger Schemel은 이 게임이 자유소프트웨어가 되기를 원해서 GNU 일반 공중 사용 허가서로 배포했습니다.
이 게임이 현재 굉장히 완성도가 높다는 사실에도 불구하고 개발은 여전히 활기차게 이루어 지고 있습니다. Holger에 따르면, Boulder Dash, Emerald Mine, Supaplex & Sokoban의 다른 게임 엔진들을 에뮬레이팅 하는 것은 아직 완전하지 않으며 그 게임들의 원래 레벨들을 모두 플레이하는 것은 아직 몇몇 문제들을 포함하고 있다고 합니다.
만일 여러분이 도움을 주고자 한다면 이는 아주 환영할 만한 일일 것입니다. 물론 그래픽 부분에 도움을 주거나 다른 플랫폼으로의 포팅 혹은 새로운 레벨을 제작하는 것들도 모두 굉장히 환영받을 겁니다.
Holger는 독일의 취리히에 있는 핵연구센터에서 그에게 그의 게임이 그들의 AIX서버들 중 하나에서 문제를 일으킨다는 말을 들었던 90년대 중반쯤에 이 문제를 해결화는데 협력을 하는 흥미로운 경험을 했습니다.
그는 그 버그를 재현해 낼 수가 없었기 때문에 문제를 일으킨 서버에 텔넷 접속을 제공받아 문제를 추적한 결과 해당 서버의 X11의 시스템 호출에 문제가 있다는 것을 밝혀 냈습니다. 그 결과 그는 몇몇 핵장치들이 큰 문제를 일으키기 전에 문제를 바로잡을 수 있었습니다.
이것이 흔히 발생하는 상황은 아닐지라도, 이 작은 이야기는 자유소프트웨어의 정신에 입각한 협력과 연계가 여러분이 언젠가 처할지 모르는 문제 상황에서 어떻게 문제를 해결하게 될지에 대한 멋진 본보기입니다.
Mirror Magic
앞선 게임과 마찬가지로 Mirror Magic
[1]은 Holger Schemel에 의해서 제작되고 있습니다. 누군가가 이 게임은 1988년에 이미 제작되어서 상업적으로 배포되었으며 아미가에서 동작하는 "Mindbender"라는 이름의 독점적 소프트웨어라고 이야기 했습니다. Holger는 이를 1994년 무렵에 유닉스용으로 포팅했으며 자유소프트웨어로써 GNU 일반 공중 사용 허가서로 배포했습니다.
이 게임의 목적은 방출장치에서 나온 레이저 빔을 디텍터로 유도하는 것입니다. 플레이어가 조절 가능한 한 쌍의 거울이 주어져 있고 이것을 이용해 빔을 원하는 방향으로 진행하게 하는 것은 쉬울 수 있지만 피해가거나 혹은 레이저의 파워로 파괴할 수 있는 온갖 종류의 방해물들에 의해서 난이도가 어려워 지도록 되어 있습니다.특정 위치에서, 가울은 빔이 방출장치로 되돌아 가도록 할 것이며 이로 인해 레이저는 과열되어 결국 폭발하게 될 것입니다. 물론 이것은 결코 바라지 않는 결과입니다.
간단한 규칙은 재미를 감소시킬 수 있으며 Mirror Magic도 이러한 규칙에 예외는 아닙니다. Rocks"n"Diamonds와 마찬가지로 Mirror Magic도 역시 멋진 그래픽과 효과음, 그리고 음악을 제공합니다.
사실 Rocks"n"Diamonds이 Mirror Magic의 엔진을 기초로 했기 때문에 두 게임들은 의심스러울 정도로 흡사해 보입니다.
이들의 연관성은 버전번호에서부터 찾을 수 있습니다. 이 칼럼을 쓰고 있을 당시의 버전은 두 게임 모두 2002년 3월 19일에 발표된 2.0.1입니다.
그런데, 멋진 GNU 세상의 독자들은 이 두 프로젝트들을 소개해준 Glenn Alexander에게 감사를 보내야 합니다. 그는 이 프로젝트들을 다른 독자들에게 알려야 한다고 생각해서 제가 이야기를 한 후에 Holger Schemel에 멋진 GNU 세상의 표준 질문들에 대답을 해줄 것을 부탁했습니다.
이것은 과거의 사례를 볼 때 굉장히 좋은 방법이라고 입증이 되어 있습니다. 그리고 스카우트 정보에도 명확하게 나와 있습니다.
T.E.G.
실생활에서 불만스러운 많은 것들이 가상공간에서는 자유롭게 즐길 수 있습니다. 사회의 속박으로부터 탈출하는 것이 이들 중 하나입니다.
Ricardo Quesada에 의해 1996년에 시작된 T.E.G. ("Tenes Empanadas Graciela")
[2]은 잘 알려진 게임은 "Risk"를 흉내내서 만들어 진 게임입니다.
Risk에 대한 설명은 크게 필요해 보이지 않지만 아직 이 게임을 해보지 않은 독자들을 위해서 해보면, Risk는 플레이어들의 군대를 이용해서 다른 지역이나 전지역에서 다른 플레이어들과 겨루는 보드게임입니다. 승리하는 데는 전략적 능력과 주사위를 굴릴 때의 약간의 행운이 필요합니다.
이 프로젝트는 개발되는 동안 여러 번 중단이 선언되었었음에도 불구하고, 2000년 초부터 다시 개발이 재개되었습니다. 이 게임은 현재 3개의 지도를 포함하고 있으며 네트워크 플레이가 가능하고 스페인어, 프랑스어, 독일어 그리고 폴란드어로 번역되어 있습니다.
멋진 GNU 세상의 질문에 답변을 해준 Thomas R. Koll에 의하면 지도의 부족과 새로운 지도를 하나 생성하는데 상대적으로 복잡한 과정을 거쳐야 하는 것이 T.E.G.의 가장 큰 약점이라고 합니다. 하지만 이렇게 약점이 있는 T.E.G.로도 플레이가 가능하며 그래픽도 꽤 괜찮습니다.
앞으로의 계획의 초점은 다른 규칙 시스템을 만들고, 보다 많은 지도를 만들며 로봇들의 인공지능을 향상시키는 것과 메타-서버(meta-server)등 입니다. 이런 작업들에 도움을 주고자 하는 그래픽 디자이너나 개발자들은 물론 환영받을 것입니다.
T.E.G.는 GTK+/GNOME 라이브러리를 이용해서 C로 작성되었으며 GNU 일반 공중 사용 허가서를 준수합니다.
JTEG
만약 C언어와 GTK+가 여러분의 입맞에 맞지 않는 다면, TEG 게임 대신, Jef De Geeter씨와 Yves Vandewoude씨가 제작한 JTEG
[3]라는 게임을 할 수 있습니다. JTEG는 소스코드와 개발환경이 전혀 다른, TEG보다 향상된 TEG의 Java버전 게임입니다.
이 프로그램은 GNU 일반 공중 사용허가서를 따르며, TEG와 같은 네트워크 프로토콜을 사용하기 때문에, 게임이 다르더라도, 함께 게임을 할 수 있습니다.
현재 JTEG는 네덜란드어, 프랑스어, 독일어와 이탈리어 용으로 개발이 되어 있습니다.
Java를 사용하기 때문에 JTEG는 Java 1.3 이상을 지원하는 거의 모든 OS에서 실행됩니다. 하지만 이것 때문에 자바 관련 문제점을 가지고 있는 것 또한 사실입니다.
Sun이 Java를 완전히 open된 언어로 만드는 데 계획을 가지고 있고, 무료 레퍼런스들을 지원한다면 그러한 문제는 해결 될 것입니다.
GNU Chess
GNU Chess
[4]는 GNU System의 가장 오래된 프로젝트 중 하나로써, 1984년에 시작이 되었습니다. 현재까지도, 많은 개발자들이 유지,개발을 하고 있으며 ,BGW 홈페이지에도 그 자료가 연결되어 있습니다
"Chess"라는 게임 자체를 설명할 필요는 없을 것입니다. Chess를 즐기지 않는 사람들 까지도 그 규칙을 알기도 하고, 학교에서 "자승법칙"에 대해 공부할 때, Chess판과 쌀알들을 가지고 이해를 하기도 합니다.
프로젝트의 기간 및 시작년도를 볼 때, 이 게임이 GNU 일반 공중 사용 허가서를 따르고, C언어로 짜여졌다는 것은 놀라운 일이 아닐 것입니다.
이 프로젝트에 가장 활동적인 개발자는 Lukas Geyer씨와 BGW의 질문 해결사이신 Simon Waters씨입니다. 수년 동안 이 프로젝트를 운영해온 Stuart Cracraft씨는 버그 레포트에 대한 가끔의 대답들과 조언으로 그들을 도와주고 있지만, 이 프로젝트에 점점 손을 때고 있습니다.
해를 거듭할수록, 모든 사람을 여기에서 언급을 할 수 없을 정도로 많은 사람들이 이 프로젝트에 기여를 해왔습니다. 특히, Chua Kong-Sian씨는 이 게임의 5 버전에서 소스코드를 짜는데 매우 중요한 역할을 했습니다.
Simon씨는 현재의 개발 목표를 프로그램의 유지 및 높은 이식성에 대한 진보된 발전, 승리 전략 데이터 베이스와 "분석모드"에 두고 있습니다.
그가 가장 중요하게 생각하는 것은 분석 모드 입니다. 그의 경험에 비추어 볼 때, 복잡한 프로그램일 수록 상당히 많은 장점을 가지고 있기 때문입니다. 한 예로, 영국의 한 소방 조사 기관에서 화재 건물 모형에 모니터로 모든 건물을 볼 수 있는, 즉 건물을 한 눈에 분석할 수 있는, 프로그램을 추가 했는데 그 후에 그 모형에 하나의 계단이 빠져 있었다는 것을 발견했다고 합니다.
아무리 소스 코드를 완벽하게 짰다 하더라도 분석 모드는 이 게임의 게임 실력을 훨씬 늘리는 것을 도울 수 있습니다.
이 게임 말고도, 어떤 것들은 소스까지 구 할 수 있는, 많은 무료 Chess게임들이 있지만, GNU Chess가 홈페이지 관리자나 Chess 엔진을 필요로 하는 그래픽 Chess 게임 프로그래머들에게 매우 인기가 있습니다. Chess엔진의 경우, 프로그래머들이 자유롭게 이용할 수 있고 쉽고 효과적으로 그 엔진을 결합시킬 수 있기 때문입니다.
Simon씨의 경험에 의하면, GNU Chess가 제공하는 "자율성"은 수많은 횟수의 패치에 의해 찾을 수 있는 것 만큼의 큰 가치가 있는 중요한 장점이라고 합니다.
만약 여러분이 GNU Chess를 Chess게임을 하는 것에만 의미를 둔다면 그래픽이 없이 할 수 있겠지만, 그래픽을 선택할 수 도 있습니다. 가장 좋다고 알려진 그래픽 테마는 아마도 Tim Mann씨가 제작한 XBoard
[5]일 것 입니다. 이 테마는 GNU 일반 공중 사용 허가서를 따릅니다.
Scid
Chess를 해 본 사람들 중 게임에 어느 정도 실력이 있는 사람들은 Chess의 좋은 데이터베이스가 가지는 가치를 확실히 알고 있을 것입니다.
Scid ("Shane의 Chess 정보 데이터베이스")
[6]는 Shane씨가 개발한 GNU 일반 공중 사용 허가서를 따르는 이러한 종류의 데이터베이스입니다.
여러분이 나중에 어떤 특정한 검색어로 데이터베이스에서 게임을 검색을 하기 위해 게임을 저장하고싶을 때, Scid에 쉽고 빠르게 게임을 저장할 수 있습니다. 데이터베이스의 사용정도는 그것이 항상 최신데이터를 가지고 있느냐 에 크게 결정되기 때문에 이 부분의 기능이 상당히 고려되었습니다.
또한 여러분의 실력향상을 위한 훈련을 시키는 기능도 Shane씨에게는 매우 중요하다고 생각되었고, Winboard용 Chess엔진덕분에 심지어 여러분은 여러분의 게임을 분석하는 데 사용할 수도 있습니다.
이 분야에서 대단히 독점적이고 매우 비싼 프로그램과는 달리, Scid는 윈도우 뿐 아니라 Unix 계열에서도 실행을 시킬 수 있습니다. 또한, 저자의 말에 의하면, 인터페이스가 매우 쉽고 깔끔하다고 합니다.
게임이 가지고 있는 데이터베이스의 크기 또한 이러한 종류의 프로젝트에서 중요한 요인 중 하나입니다. 어떤 독점 프로그램들은 데이터베이스에 1,000,000개 이상의 게임의 양을 가지고 있습니다. 여러분은 Scid홈페이지에 가시면 상급 수준의 500,000개의 게임과 거의 중복성이 없고 상당히 괜찮은 데이터베이스를 제공 받을 수 있습니다.
Scid 개발은 1999년에 시작되었습니다. 현재 12개국어의 번역 버전이 있을 정도로, 매우 안정적으로 프로젝트가 진행 중입니다. 그래픽 유저 인터페이스로는 C++dhk Tcl/k를 사용하였습니다.
마지막으로, 가장 중요한 작업은 이제 도움말 페이지의 유지와 새 사용자들을 위한 안내문서 제작입니다. 여러분중 Chess와 씨름하면서 시간을 보내시기를 원하는 분이 계시면, 꼭 Scid에 대해 알아 봐야 합니다.
GNU oSIP Library
RFC2543
[7]는 멀티미디어 세션을 시작하고 조작하며 종료하는데 사용되는 프로토콜인 "Session Initiation Protocol" (SIP)에 대해 서술하고 있습니다. SIP는 하드웨어 혹은 소프트웨어 인터넷 전화을 위해 H232를 가볍게 대체하기 위해 만들어졌습니다. 다른 것들과 비교 했을 때 SIP 는 네트워크와 registars(?) 들 사이에서 프락시를 게이트웨이로 사용할 수 있도록 하여 동적인 사용자들이 자리잡을 수 있도록 합니다.(*)
이 프로토콜은 메일과 HTTP 프로토콜과 닮았고 - 원했던 것이지만 -, 지금 우리가 "mailto:greve@gnu.org"를 이용해 메일을 보내는 것처럼 SIP 는 언젠가 "sip:greve@gnu.org" URL 을 이용해 나에게 전화를 할 수 있을 것입니다.
많은 기업들이 H232 프로토콜에서 SIP 프로토콜로 옮겨가고 있고 SIP 프로토콜에 기반한 5개의 UMTS 프로토콜이 공표됨에 따라, 이 프로토콜을 자유롭게 구현하는 것이 점차 중요해지고 있습니다.
Aymeric Moizard가 만든 GNU oSIP ("Omnibus SIP") 라이브러리는
[8] 그렇게 GNU Lesser General Public License 를 준수하여 자유롭게 구현하였고 최근에 GNU-Project 의 한 부분이 되었습니다.
oSIP은 C로 만들어졌고, 많은 시스템에서 쓰이길 바라는 마음에서 libc6 의 의존성을 최소로 하였습니다. 이 덕분에 oSIP 을 독립장비(embedded devices)에 사용할 수 있게 되었고 자유 소프트웨어로 이동 인터넷 전화의 기반을 만들게 되었습니다.
독점 프로젝트에 비해 oSIP가 가진 큰 장점들은 그것이 작고, 유연하고 자유롭다는 것입니다. 하지만 Aymeric이 알고 있는 바로는 oSIP과 비교될만한 자유 소프트웨어 SIP C 스텍은 없습니다.
SIP 기반의 인터넷 전화가 잘 알려진 선수들과 현재의 전화를 완전히 대체하는 것은 가능한 일입니다.
만약 누군가가 전화에 의한 사회적, 경제적 중요성과 독점을 창출해내는 독점적 소프트웨어의 경향을 결합한다면 전화를 통한 통신에서의 국제적인 독점을 자유소프트웨어가 저지하고 예방할 수 있다는 것은 명확해 질 것입니다.
이제 Aymeric 의 GNUCOMM 프로젝트
[9]가 왜 발전 가능성있는 공헌인지 이해하기 쉬울 것입니다.
Libferris
방금 전에 소개된 프로젝트와 마찬가지로, Ferris 라이브러리
[10]도 역시 "일반적인 사용자"는 절대 직접 사용하지 않을 녀석입니다. 비록 이 기능들이 직접적으로는 개발자들에게만 유용하지만, "커튼 뒤에서" 무슨 일이 일어나고 있는지 이해하고 있는 것은 - 순수한 사용자에게도 - 유용할 것이라 믿습니다.
libferris는 사용자 공간에서 동작하는 "가상 파일 시스템(VFS)"입니다. 이것의 기능은 프로그램이 - 그리고 사용자가 - 많은 다양한 자료원으로부터 투명하고, 쉽고, 일관되게 접근할 수 있도록 하는 것입니다.
libferris는 데이터베이스, 관계형 데이터베이스, XML, 메일박스, FTP 계정, 소켓, compressed & RPM-archives 그리고 SSH2 서버 들을 투명한 디렉토리 구조로 사용할 수 있도록 합니다. 또한 ID3, MPEG2 그리고 Imlib2 혹은 ImageMagick 라이브러리가 지원하는 모든 이미지 포맷처럼 다른 포맷의 파일들에서 특정한 어떠한 정보/자료를 추출해냅니다.
모든 자세한 사항은 libferris가 담당하므로 사용자들은 자료가 어디에 어떠한 포맷으로 있건 관계없게 되었습니다.
개발자들은 수 십 개나 되는 파일포맷들과 전송 레이어들을 걱정할 필요가 없어졌습니다. - 오직 필요한 것은 libferris와 연동하는 것 뿐입니다.
Ben Martin은 libferris를 2001년 4/5월에 시작했고 6월에 벌써 첫번째 버전을 발표했습니다.
프로젝트를 진행하는데 있어 그는 C++ "Stand Template Library"를 광범위하게 사용하고 싶었기 때문에 프로그래밍 언어로 그는 C++을 선택했습니다. 이는 그가 gnome-vfs 를 확장하지 않기로 결정한 이유이기도 합니다.
libferris의 객체지향적, 흐름 지향적 성형은 libferris를 확장하기가 아주 편하고 다른 정보원이나 포맷을 사용할 수 있게 만드는 자신만의 모듈을 만들 수 있습니다.
Ben은 여러 다른 프로토콜 포함할 수 있거나 이나 아직 지원되지 않는 파일 포맷으로부터 정보를 추출 할 수 있는 모듈을 찾고 있습니다. 하지만 그가 찝어낸 훌륭하고 빠른 하드웨어들 제공해도 좋을 것입니다.
비록 기술적으로 자세히 논하진 못했지만 여러분들이 기본적인 개념과 중요한 특징에 관한 열쇠를 얻었기를 바랍니다. 흥미있는 개발자들은 살펴보시기 바랍니다.(*)
Until the next time
이번달의 멋진 GNU 세상은 이것으로 충분할 것 같습니다. 매 호마다 아이디어나 피드백, 코맨트를 메일로 보내달라고 말했왔습니다. 독자들의 아이디어가 흥미있는 기능들로 이끌었던 적이 많으니 망설이지 마세요.
참고 문헌 및 사이트 정보
각주
[1] Mirror Magic 홈페이지:
http://www.artsoft.org/mirrormagic/
[2] T.E.G. ("Tenes Empanadas Graciela") 홈페이지:
http://teg.sourceforge.net
[3] JTEG 홈페이지:
http://jteg.sourceforge.net
[4] GNU Chess 홈페이지:
http://www.gnu.org/software/chess
[5] XBoard & WinBoard 홈페이지:
http://www.tim-mann.org/xboard.html
[6] SCID 홈페이지:
http://scid.sourceforge.net
[7] RFC2543:
http://www.ietf.org/rfc/rfc2543.txt
[8] GNU oSIP library 홈페이지:
http://www.gnu.org/software/osip/
[9] GNUCOMM 홈페이지:
http://www.gnu.org/software/gnucomm/
[10] Libferris 홈페이지:
http://witme.sourceforge.net/libferris.web
Copyright ⓒ 1999, 2000, 2001, 2002 Georg C. F. Greve
본 기사는 멋진 GNU 세상에서 발췌한 기사입니다.