요피용 디센트

체스맨의 이미지

몇년 전, 요피에 xboard 를, 화면 크기나 작동 방식이 알맞도록, 포팅한 일이 있었습니다.

얼마 전에 디센트 관련 블로그 글 http://kldp.org/node/87051 을 쓴 뒤 d1x-rebirth 프로젝트를 알게 되었고, youtube 에서 디센트 스피드런이나, 게임기에 포팅된 디센트 등을 볼 수 가 있었습니다. 그래서, 이번에 디센트를 요피에 한번 포팅해봤습니다.

d1x-rebirth 0.53 최근 소스를 받아다가, SDL 모드로 컴파일 했습니다. 일부 버그가 있어서 빌드 및 실행하는데 좀 애를 먹었습니다. 아직도 옵션 셋팅에 일부 버그가 남아있지만, 변경한 옵션들이 저장은 된 뒤 죽고, 옵션 변경이 자주 필요한 부분이 아니기 때문에, 일단 그냥 뒀습니다.

버그 문제 외에도 240x320 해상도에 게임 실행 화면이 전부 표시되도록 하거나 , 펑션키를 게임 조작키로 설정하는 것이 불가한 것을 해제 ( 요피는 게임에 적합한 세개의 키가 펑션키 코드를 갖고 있습니다. )하는 등을 위해, 소스를 좀 열어봐야 했습니다. 아무튼 비교적 성공적으로 포팅됐네요.

프레임 수는 4~8 프레임 정도 나옵니다. 평균적으로 6~7 프레임은 나오지 않나 생각되네요. 좀 느린 편이지만, 그런대로 할만한 정도입니다. 소리도 잘 납니다. 단지 제 요피 기계 자체가 좀 맛이 가서 소리가 나오다 안나오다 하는게 아쉽네요. 요피 키 배열이 디센트 조작에 잘 맞는 편은 아니라, 키 조작은 불편한 편입니다만, 그런대로 적들과 싸우는 느낌은 납니다.

자우르스같은 경우 요피보다 사양은 높지만, 해상도 역시 높기 때문에, 만일 자우르스에 포팅한다면 어느 정도가 될지 모르겠네요... 아무튼 지난번 디센트 관련 블로그 포스팅 이후로 디센트 rebirth 를 실행해보면서, 게임을 다시금 음미해봤거든요. 특히, 유튜브 스피드런 http://www.megapass.co.kr/~heesc22/home/game/descent.htm 동영상을 보면서, 조작법이나 전략 등에 대해 크게 느낀바가 있었거든요. 그런 느낌을 받아서 다시 실행해보니, 더욱 재미있게 게임을 즐길 수가 있었고, 디센트가 나온지 10년이 넘어가지만, 정말로 잘 만든 게임이라는 것을 새삼 느낄 수가 있었습니다.

아무튼 포팅이 돼서 기쁩니다. 처음에 빌드해놓고, intro 화면만 나오다 죽어버리니, 서운했었거든요...

--------------

추가:
저 이미지 캡쳐는 디센트를 실행하면서 vnc 로 요피에 연결해서 캡쳐한건데, 요피가 성능이 별로 좋지 못해서, 캡쳐된 이미지 위쪽 부분이 좀 망가져 있는 것 같네요...

File attachments: 
첨부파일 크기
Image icon ydecent.png26.75 KB
Image icon yboard.png6.63 KB

댓글

체스맨의 이미지

음... 게임을 좀 플레이 해봤더니 특정 레벨들에서 오류가 나더군요. 잘 모르겠어서, 개발자에게 메일을 보냈더니, 금새 답변을 받았습니다. 제가 미처 파악하지 못했던 arm=1 옵션이 있더군요. 몇시간 삽질한 게 아까운 순간이었습니다. ㅠㅠ

그리고 성능 향상에 대한 조언을 받았는데, 실행시 -tmap quad 옵션을 사용하라더군요. 이것을 테스트해보니 7~12 FPS 정도로 향상돼서, 보다 부드러운 이동이 가능해졌습니다.

아무튼 이제 원활히 플레이가 되는군요. 요피 키보드에서도 어느 정도 컨트롤에 익숙해져갑니다.

그리고, 윈CE 에 포팅을 하고 싶은데, 이미 포팅이 되었는지 다시 물었습니다.

Orion Project : http://orionids.org

체스맨의 이미지

아... 개발자 피드백이 매우 빠르군요. 순식간에 답장을 다시 받았습니다. 정력적인 개발자인가 보네요.

옵션 저장 후 segfault 버그는 여전히 남아있는 것 같습니다. 후에 고쳐지면 리포트할 생각입니다.

윈CE 용 빌드는 과거 한때 그게 되던 적이 있었지만, 지금은 그렇지 않기 때문에 윈CE 에서 하려면, 다시 시작하는 게 좋을거라는군요.

> Finally I wonder, descent was ported WinCE device already. I wish it
> and I personally guessed that to support WinCE, decent should be
> compiled using msvc compilers. I want to know the current state...
 
D2X once supported Win32_CE code but since of missing hardware I could
not care about it anymore. We also had MSVC project files but the source
was heavily altered so it's probably better to start from scratch here.

아무튼 윈CE 가 된다면 full keyboard 를 가진 제품들이 꽤 있기때문에, 괜찮을 것 같습니다. 언젠가 착수할 기회가 오면 좋겠군요.

Orion Project : http://orionids.org

jacojang의 이미지

한때 요피를 사용했던 사용자인데... 오랜만에 요피 화면을 보니 반갑네요..^^;

----------------------------------------
http://www.jacojang.com

--------------------------------------------------
http://www.jacojang.com

요피 사용자의 이미지

요피를 사용한지 5년은 넘은것 같은데 아직도 열심히 사용하고 있습니다.(이북리더로요^^)
포팅하신 게임을 혹 받을수 있을까요?
요피에 신선한 피를 공급하고 싶네요
감사합니다

체스맨의 이미지

물론 받으실 수 있고 첨부 했습니다. 단 게임 파일 (hog, pig 파일)은 제가 배포할 수가 없어서, 스스로 구하셔야 합니다.

문제점이 없는 상태라면 요피 동호회에도 올렸겠지만, 게임을 좀 해보니 아직 이런 저런 문제가 있고, 게임 데이터를 스스로 구해야 하는 문제도 있고 해서 그냥 올리지 않고 있었습니다.

아마 요피 사용자님께서도 아래 내용을 보시면 별로 해보고 싶지 않아지실 것 같은 생각이 듭니다... -_-;

아무튼 타격감이 꽤 괜찮은 편이기 때문에, 이동중에 심심할 때 쉬운 모드로 해놓고 즐길 정도는 될 것 같네요.

========= 실행 방법 ===========

1. 우선 디센트 데이터 파일을 구하셔서 /usr/local/share/games/d1x-rebirth 로 복사합니다. 또는 외부 저장 장치에 복사하시고, symlink 하셔도 됩니다.

2. 첨부 파일 zip 을 풀면 exepak 으로 압축돼 있는 d1x-rebirth-sdl 실행 파일이 나올겁니다. 실행 속성 주시고, 다음 옵션으로 실행하면 됩니다.

d1x-rebirth-sdl -aspect320x200 -tmap quad

(1)좀 더 나은 텍스쳐 퀄리티를 원하시면 -tmap quad 를 지우시면 됩니다. 하지만, 이 옵션을 줘야 2~3프레임 더 나옵니다.

(2)FPS 를 보고 싶으시면 -fps 옵션을 추가하면 됩니다. 잘은 모르겠지만 이 옵션을 키면 segfault 빈도가 높아지는 것 같습니다.

(3) 위 캡쳐 화면처럼 윈도 모드로 실행하려면 -window 옵션을 주시면 됩니다. 게임중이 아닌 경우에는, 즉 인트로 화면이나 옵션 설정 화면 등은 비트맵을 scale 하지 않고 그대로 뿌리기 때문에, 좌우가 일부 잘립니다.그래서 옵션 설정시 설명글 일부가 안보일 수도 있는데, 이걸 보고 싶을 때 -window 모드로 한번 실행해 보시면 될 것 같습니다. 게임 중에는 점수나 상태 표시문장이 다 보이도록 크기를 조절해놨습니다.

(4) xlandr 로 요피 화면을 가로 모드로 전환하면 320x200 을 전부 보이게 할 수 있지만, 그렇게 하면 비트맵 회전만큼 렌더링이 느려집니다. 게다가 현재는 하드코딩으로 240x200 으로 잘라놓은 상태이기 때문에, 우선은 세로 모드에서 실행하시는 게 좋을 것 같네요.

3. 설정

(1) 주의점 : 설정을 바꾼 뒤에는 일단 프로그램을 종료하고 다시 실행하세요. 특히 키보드 설정 변경뒤에는 아래 문제점에 적어놓은 내용들이 발생할 수 있고, 그런 경우에는 설명해놓은 것처럼 대응하면 됩니다. 아무튼 segfault 가 돼도 설정한 것이 날아가는 일은 없었습니다.

(2) 해상도 : 아마 처음 실행하면 640x480 모드로 나올 겁니다. Options-->Screen Resolution 에서 320x200 으로 변경합니다.

(3) 키보드 : 저는 다음과 같이 설정해놓고 합니다. 꽤 할만합니다.

방향키 : 요피 방향키
SLIDE ON : SPACE or A
BANK LEFT : Q
BANK RIGHT : E or W

FIRE PRIMARY : F10 ( 통화키 )
FIRE SECONDARY : F12 or S ( 종료키 )
FIRE FLARE : F11 (확인키)
( 원래 디센트에서 Function 키를 키로 할당할 수 없지만, 요피용은 가능하도록 전환해 놨습니다. )

ACCELERATE : PGUP (좌측에 있는 볼륨 높이기 키 )
REVERSE : PGDN (좌측에 있는 볼륨 낮추기 키 )

최대한 PC 에서 할 때와 비슷하게 했고, 방향키와 FIRE... 키들은 오른손, 나머지 키들은 왼손을 씁니다. FIRE SECONDARY 는 오른손 또는 왼손으로 하는데, PC 에서는 SPACE 키로 대개 할당하고 이때는 대개 왼손으로 제어 합니다.

========== 문제점 =============

(1) 게임을 좀 해보니 arm=1 로 빌드해도 버그가 남아있네요. 하지만, 게임 도중에 죽어버리는 일은 아직 없습니다. 게임을 좀 한 뒤 프로그램을 종료하면 segfault 가 나는 경우가 있습니다. 혹은 프로그램을 종료하면 그냥 빈 화면이 돼 버리는 경우도 있는데, 이 때는 '전원' 버튼을 꾹 눌러서 절전모드로 가게 하시면 벗어나실 수 있습니다.

(2) 현재 배경음악 (미디) 은 나오지 않습니다. 효과음(웨이브)은 나옵니다.

댓글 첨부 파일: 
첨부파일 크기
Package icon d1x-rebirth-sdl.zip403 KB

Orion Project : http://orionids.org

체스맨의 이미지

사실 이걸 빌드해본 건 요피에서 게임을 적극적으로 즐겨보려는 목적은 아니었구요. 윈CE 용 포트를 만드는 게 목적이었습니다. 풀키보드가 없으면 디센트를 즐기기가 좀 그렇습니다. 그래서 풀키보드 HPC 제품들이 있는 윈CE 로 포팅되는 걸 기대하고 있습니다.

d1x 개발자가 말하길 현재 파일 입출력 관련해서 redesign 중이라 합니다. 그래서 다음 릴리스에서는 자연스럽게 수정이 될지도 모른다더군요. 현재 옵션 저장시 죽는 문제는 gdb backtrace 파일을 보내주면 자기가 한번 보겠다 하구요.

그런데 게임을 좀 해보니 여전히 버그가 남아있는 것 같아서, 좀 확인해보고 backtrace 파일을 보내볼 생각입니다. 파일 입출력과 관계 없는 부분에서도 죽는 것 같아서요.

그리고 윈 CE 포트는 다음 릴리스가 나온 뒤에 생각해보는 게 좋을지, 또한 현재 프로젝트에서 fork 하는 게 좋을지 아니면 다른 방법을 취하는 게 좋을 지 문의해봐야 할 것 같습니다.

디센트를 윈CE 에 포팅함으로써, 우선 휴대 장치에서 즐길 수 있는 양질의 게임 하나를 얻게 될 것이고, 그 다음으론 제가 작성하고 있는 그래픽 처리 관련 라이브러리에 디센트에 적용된 texture mapper 들을 적용해볼 수도 있을 거라 생각되서, 손을 대보게 됐네요...

Orion Project : http://orionids.org

Prentice의 이미지

반가운(?) 소식입니다. ^^

사족이지만 예전에 Parallax Software 초창기에, “면접 때 어셈블리 텍스쳐 매퍼 코드를 들고와서 고용된 사람” 얘기가 있던 것 같은데 누구신지는 기억이 안나네요..

체스맨의 이미지

아마 당시에 디센트에 사용되는 수준의 텍스쳐 맵퍼를 구현했다면, 충분히 고용될만 했겠지요... 아무튼 디센트 실행하면 Credits 목록에 나오는 사람들 이름 중 하나 아닐까요. 디센트 게임 디렉토리에 보면 320x200 해상도의 개발자들 사진이 pcx 파일로 있던데, 그 중에도 있을 지 모르겠네요.

그 때 시대만해도 피씨에서 하드웨어 렌더링이 안되던 시기였으니, 소프트웨어 렌더링 엔진 만드는 게 엄청난 기술 중 하나였죠. 저도 그걸 갈구하던 사람 중 하나였구요. ^^

http://cg.cs.tu-berlin.de/~ki/engines.html

3D 엔진 리스트라는 사이트입니다. 여기에 잘 찾아보면 제 엔진의 흔적도 있어요... 물론 링크가 깨졌지만.

Orion Project : http://orionids.org

jachin의 이미지

제 기기들은 모두 베터리가 수명이 다 되어서 못 쓰고 있는데,

오랫만에 한 번 전원을 줘봐야겠습니다.

베터리를 하나 구해볼까...
====
( - -)a 이제는 학생으로 가장한 백수가 아닌 진짜 백수가 되어야겠다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.