2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DOOMをWindowsで動かしてみた

Last updated at Posted at 2025-02-08

はじめに

PDFでもGoogleの検索バーでも大体何でも動作する「DOOM」、自分も何かで動かしてみたいと思ったのでとりあえずWindows上で動かしてみる。ちなみに、DOOMは1997年からオープンソースとしてコードが公開されているので、著作権関連とかは問題ない。

実行環境

  • win11
  • wsl2(ubuntu22.04)

依存ライブラリの用意

C言語の特性上、64bitだとint型とpointer型のバイト数が不一致になり、正常にビルドできない為、32bitでビルドできるようにパッケージを導入する。

Type ILP32 (bits) LP64 (bits)
int 32 32
pointer 32 64
sudo apt update
sudo apt install make
sudo apt install gcc
sudo dpkg --add-architecture i386
sudo apt-get install libx11-dev:i386 libxext-dev:i386 libnsl-dev:i386
sudo apt-get install xserver-xephyr

DOOM本体

git clone git@github.com:id-Software/DOOM.git
cd DOOM/linuxdoom-1.10/

修正

なぜかは知らないが、DOOMのコードにはいくつかバグがあるにも関わらず、そのまま放置されている。わびさび的な何からしいが、普通に動かないので修正をかけていく。

linuxファイルの作成

ビルドしたもの配置するフォルダが作られてないので作ってあげる

cd DOOM/linuxdoom-1.10/
mkdir linux

WADファイルの準備

設定ファイルはレポジトリに含まれていない為、別途用意する必要がある。
自分はdoom wikiにお世話になった。

ダウンロードしたdoom1.wadDOOM/linuxdoom-1.10/linux配下に配置する。
何らかの要因でmake clearした場合、DOOM/linuxdoom-1.10/linux配下のファイルは全て消えるので注意されたし。

i_sound.cの修正

# line 166
extern int	errno; // これをコメントアウト

ヘッダにライブラリを追加

#include <errno.h>

i_video.cの修正

ライブラリ名にタイポがあるので修正

#include <errnos.h> // 正しくは<errno.h>

画面サイズの修正

値が1だと解像度が320*200で画面が小さいので、2にする事で倍の解像度にする。

static int	multiply=2;

カラーマップの設定追加

# line 820
XInstallColormap( x_display, x_cmap ); // これを追加

Makefileの修正

CFLAGS = -g -Wall -DNORMALUNIX -DLINUX -m32 # -m32 オプションを加え、32bitでビルドすることを明示

ビルド

ここまで来たら/DOOM/linuxdoom-1.10の中でmakeするだけ

make

起動

ビルドで出来たものにlinuxxdoomがあるので、これを叩いて起動する。
まず、適当なターミナルで描画用の画面を生成

Xephyr :2 -screen 640x480x8 -br -reset -terminate -title DOOM &

次に、ビルドフォルダに移動し、先ほど生成した画面を指定して起動

cd DOOM/linuxdoom-1.10/linux
DISPLAY=:2 ./linuxxdoom

起動したら成功
スクリーンショット (222).png

おわりに

思ったよりすんなりビルドしてプレイできた。先人たちがDOOM道を整備してくれたおかげですね。当然ここで終わるわけではなく、自作OS上で動かしたり、色々試行してみたいモノがあるので、うまく行ったらそれらも公開していく。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?