[English] [Japanese]

Linux CD-ROM ゲームシステム

 
  YAMAMORI Takenori ●yamamori@kt.rim.or.jp

●ベースシステムのインストール

○Vine 2.0のインストール

ベースシステムにはVine 2.0を使用することにした。まずはこれをHDDに インストールする。なお、現状使用中のマシンのHDDの空きパーティションを 利用して、いわゆるマルチブート状態で作業を行なうことも慎重にやれば可能だが、 できれば実験用の別のマシンを用いることをお勧めする。

マシンが1台しかない場合は、現在使用中のHDDを一時的に外して、 実験用のHDD取り付けて作業する方が安全だろう。

Vine 2.0のインストールでは、最終的にCD-ROMに入れることを考えて、 必要なパッケージのみをインストールするすることに注意しなければならない。

具体的に順を追って説明する。

Vine 2.0のインストーラ画面の途中の 「インストールタイプ」では「カスタム」を選ぶ。 HDDのパーティションは細かく分けず、“/”とswapのみにする。 swapは本当は必要ない(CD-ROMシステムではHDD自体を使わないため、 swapを使えない)が、swapを作らないとVineのインストーラが 先に通してくれないため、仮にswapパーティションを適当なサイズで 割り当てておき、インストール後に外すようにする。

パッケージグループの選択画面では、

の、計4個のみチェックする。

GNOME/KDEはインストールしない。

Development Toolsは、ゲームのインストール時に Cコンパイラやヘッダーファイルなどが必要なためインストールする。

LANはゲームシステムには必要ないが、システムの構築時に、 LAN経由でファイルを転送したりする便宜上、インストールすることにした。

Emacsは、筆者はEmacsを使わない(viのみ使う)ため必要ないが、 これをインストールしないと一部パッケージの依存関係を満たさなくなるため、 一応インストールすることにした。

その後、X Window Systemの設定では、 「GUIによるログインを使用」をチェックしないでおく。

この状態で、インストーラ上ではパッケージの総計が「567MB」と表示された。 しかし、インストール直後“df /”とやると約648MB使用されていた。


○不要パッケージの削除

このあとゲームのインストールなどにより、使用容量はさらに増えるため、 このままではCD-ROMに収まらない。

そこで、“rpm -qa | less”を実行してインストールされているパッケージを表示し、 その中から明らかに要らないものを外して行く。 なお、“rpm -qif ファイル名”で、インストールされているファイルから その属するパッケージ名を調べることもできる。

rpm -e パッケージ名”でパッケージをアンインストールするが、 この時、パッケージの依存関係でエラーが出た場合は、 その依存しているパッケージも消すようにする。

結局、筆者は以下のパッケージをアンインストールした。

  kinput2-v3release-7
  libwnn6-devel-3.0
  emacs-dl-wnn-0.3.6-7
  libwnn6-3.0
  wnn6-3.01
  wdm-1.20
  WMSoundSet-0.9.3
  wmakerconf-2.4
  WindowMaker-Icons-1.9
  WindowMaker-0.61.1_jp
  jman_pages-0.5-19991215.1
  CF-3.7Wpl2
  sendmail-8.9.3
  xxgdb-1.12
  gdb-4.18
  ImageMagick-4.2.9
  X11R6-contrib-3.3.2
  xscreensaver-3.17
  xlockmore-4.14
  xpaint-2.5.7
  tgif-4.1.27
  wget-1.5.3_jp

これで、HDD使用量は約585MBになった。これくらいなら CD-ROMに入れるのに余裕だろう。

(ところで、本当はCanna関係のパッケージも必要なく、これも外したかったのだが、 viがCannaのライブラリと動的リンクした状態でインストールされており、 viを使う以上Cannaを外せなかったのだ。できれば、vi のようなシステムの基本ツールは、日本語パッチの当たっていない素のvi も用意しておくよう、Vineに要望したいところである)


○サウンドの設定

サウンドは、コンソール上で kon を先に起動し、root/usr/sbin/sndconfig を実行して設定する。 筆者環境ではサウンドカードに"Creative SB16 PnP"を使用していたため、 一発で自動認識・設定された。 もし、代わりにALSAドライバを使用する場合は別途作業が必要だ。


○ジョイスティックの設定

ジョイスティック用のカーネルモジュールは、Vine 2.0の場合、 /lib/modules/2.2.14-1vl6/misc/joystick.o などとして、最初から存在している。 ただし、jstestなどのジョイスティックの動作確認をするツールが インストールされていないため、これをソースから入れることにした。

http://atrey.karlin.mff.cuni.cz/~vojtech/joystick/ より、執筆時点での最新版として joystick-1.2.15.tar.gz をダウンロードした。

これをすべてインストールする必要はなく、 jstestのみが欲しいため、以下のように作業する。

$ tar zxvf joystick-1.2.15.tar.gz
$ cd joystick-1.2.15
$ make jstest   ← カーネルモジュールをコンパイルする必要はない。
$ su
# install -c jstest /usr/local/bin

また、デバイスファイルとしては /dev/js0 などが必要で、これは、 joystick-1.2.15 を展開したディレクトリ上で

# make devs

とやると作れるが、 Vine 2.0では dev-2.7.10-2vl3 パッケージにより、/dev/js0〜3 まですでに作られているため、何もする必要はなかった。

ジョイスティックを接続してから、カーネルモジュールをロードするのだが、 筆者環境の場合は15pinゲームポート接続のものを用い、

# /sbin/modprobe joy-analog

で、モジュールが一気にロードできた。 この時、/sbin/lsmodコマンドで確認すると、joystickjoy-analogの2つのモジュールがロードされていることがわかる。 modprobeの代わりに、insmodで、

# insmod joystick
# insmod joy-analog

の順に、個別にロードしても良い。

ここで、

# /sbin/modprobe -r joy-analog

とやると、これら2つのモジュールが一気にアンロードされる。

モジュールjoystickはすべてのジョイスティックに共通だが、 joy-analogなどのモジュールは ジョイスティックによって違う。

/sbin/modprobe -l -t misc | less

で、モジュールの一覧が見られるため、 この中から適切なモジュールを選べばよい。

最終的には、/etc/conf.modulesに以下の行を追加しておく。

(/etc/conf.modulesに追加する行)
----
alias char-major-15 joy-analog
----

ここで、char-major-15とは、“ls -l /dev/js0”での表示を見てわかる通り、 キャラクタ型のメジャー番号15のデバイスという意味だ。

/dev/js0は、コンソールにログインしたユーザの所有になっているため、 そのユーザがjstestを実行できる。

$ jstest /dev/js0

と実行すると、/etc/conf.modulesの記述にしたがってモジュールが 自動的にロードされ、ジョイスティックが動作するはずだ。

ここで、ジョイスティックの入力に反応して数値やon/offが 画面に表示されればOKだ。


○ゲームのインストール

circuslinux ここで主役のゲームをインストールする。 サウンドにもジョイスティックにも対応したSDLのゲームとして 手頃なものを探したところ、circuslinuxというゲームに行き当たった。 以下からソースとしてcircuslinux-1.0.1.tar.gzをダウンロード可能だ。

http://www.newbreedsoftware.com/circus-linux/

circuslinuxのインストールには、以下のURLにあるSDLのライブラリが必要だ。

http://www.libsdl.org/

なお、SDL-1.1.xのほか、SDL_imageSDL_mixer の各ライブラリが必要となる。 なるべく簡単に作業を済ませるため、 最初はバイナリでインストールするつもりでいたが、 ダウンロード可能なSDL_image-1.0.4が、SDL-1.1.xではなく SDL-1.0.xと 動的リンクされた状態になっていて使えなかった。 そこで、すべて*.src.rpmからrebuildすることにした。

ところで、ダウンロード可能なバイナリのSDL-1.1.2は、 libesd.solibaudiofile.soと動的リンクされた状態になっている。

また、バイナリのSDL_mixersmpeg というライブラリと動的リンクされている。 SDLライブラリをソースからrebuildする場合、上記のライブラリがなくても SDLライブラリが構築できてしまう。そして、少なくともその環境上で circuslinuxが動くことは確認した。

しかし、後々のためlibesd/libaudiofile/smpegともリンクされるように SDLを構築するようにする方がいいだろう。 smpegのライブラリは、SDLのWebページからのリンクをたどるとダウンロードできる。

結局、必要なソースパッケージは以下のものになる。

(必要パッケージ)
----
  SDL-1.1.2-1.src.rpm
  SDL_image-1.0.4-1.src.rpm
  smpeg-0.3.5-1.src.rpm
  SDL_mixer-1.0.5-1.src.rpm
----

/usr/src/redhat/SRPMS 以下にこれらのパッケージを置く。

本記事に沿ってVine 2.0をインストールした場合、esoundaudiofileの実行環境はインストールされるが、 開発環境はインストールされていないはずだ。 そこでVine 2.0のCD-ROMから、以下のパッケージを先にインストールしておく。

(audiofile-develとesound-develのインストール)
----
# mount /mnt/cdrom
# cd /mnt/cdrom/Vine/RPMS
# rpm -ivh audiofile-devel-0.1.9-1vl2.i386.rpm
# rpm -ivh esound-devel-0.2.17-1.i386.rpm
# cd /
# umount /mnt/cdrom
----

ここでSDL本体を以下のようにインストールする。

----
# cd /usr/src/redhat/SRPMS
# rpm --rebuild SDL-1.1.2-1.src.rpm
# cd /usr/src/redhat/RPMS/i386
# rpm -ivh SDL-1.1.2-1.i386.rpm SDL-devel-1.1.2-1.i386.rpm
----

次にSDL_imageをインストール。

----
# cd /usr/src/redhat/SRPMS
# rpm --rebuild SDL_image-1.0.4-1.src.rpm
# cd /usr/src/redhat/RPMS/i386
# rpm -ivh SDL_image-1.0.4-1.i386.rpm SDL_image-devel-1.0.4-1.i386.rpm
----

SDL_mixerより先にsmpegをインストールする。

----
# cd /usr/src/redhat/SRPMS
# rpm --rebuild smpeg-0.3.5-1.src.rpm
# cd /usr/src/redhat/RPMS/i386
# rpm -ivh smpeg-0.3.5-1.i386.rpm smpeg-devel-0.3.5-1.i386.rpm
----

そして最後にSDL_mixerだ。

----
# cd /usr/src/redhat/SRPMS
# rpm --rebuild SDL_mixer-1.0.5-1.src.rpm
# cd /usr/src/redhat/RPMS/i386
# rpm -ivh SDL_mixer-1.0.5-1.i386.rpm SDL_mixer-devel-1.0.5-1.i386.rpm
----

これでSDL環境が整ったため、いよいよcircuslinuxをインストールする。 アーカイブのソースツリーに含まれるものは、 ほとんどがグラフィックやサウンドのデータである。 circuslinuxの初期のバージョンでは、 これらのデータを手作業でインストールする必要があったが、 現在ではGNU configure方式で、簡単にインストールできるようになっている。

具体的な手順は以下の通りだ。ジョイスティックを使うため、./configure 実行時に“--enable-joystick”オプションを付けるのを忘れないように。

(circuslinux のインストール)
----
$ ./configure --enable-joystick
$ make
$ su
# make install
----
これで、circuslinux本体が /usr/local/bin にインストールされる。 グラフィックやサウンドのデータは /usr/local/share/circuslinux 以下にある。

あとは、X上でcircuslinuxを起動するだけだ。 デジタルジョイパッドの場合、以下のように --digitalオプションを付けて起動する。

$ circuslinux --digital

circuslinuxは640×480ドットのサイズなので、 ここでXconfiguratorを用いてXサーバの画面サイズを640×480ドットに 設定変更するとよい。 すると、ゲームが全画面モードのように表示されて効果的だ。 あるいは、Xサーバの設定に、すでに640×480ドットのモードが含まれている場合は、 “--fullscreen”オプションをつけて circuslinux を起動すれば、画面サイズが自動的に全画面モードに切り替わる。

以上で、普通のLinux環境上でSDLゲームを動かすところまで、できたことになる。


To 『Linux CD-ROM ゲームシステム』index


このページは、(株)アスキー TECH Linux Vol. 2 『CD-ROMだけですぐに遊べる! Linux ゲームシステム全解説!!』の原稿を元に、Web 用に再構成したものです。
To 謎の処理系 SunOS 4.1.4 Home
YAMAMORI Takenori 山森丈範
yamamori@kt.rim.or.jp