遊べるまでのメモ
動作した環境は…
事前に用意するものは…
- X11 アプリケーション(OS のインストールディスクからカスタムインストールで入れておく)
- XCodeTools(インストール時に X11 SDK も必ず入れる!)
- Micropolis のソースコード
- stargo さんの Mac 用のパッチ
とりあえずこんだけだと思うけど、もしかしたら MacPorts で元々入っていたものが必要かも。
手順はココのをそのまま。
まずはダウンロードしてきたファイルを展開。うちの環境では safari が勝手に .tar にしてくれちゃう。tgz のままの場合は xvf を xvzf に。
debian:~/myTest paraches$ tar xvf micropolis-activity-source.tar
次にパッチをあてる。パッチファイルは .tar や展開されたフォルダと同じ場所に置いておく。
debian:~/myTest paraches$ patch < micropolis_mac-osx.patch -p2
で、ソースファイルのあるフォルダへ移動して make
debian:~/myTest paraches$ cd micropolis-activity/src/ debian:~/myTest/micropolis-activity/src paraches$ make
ここで、いくつか報告が既にあるけど途中でエラーになる場合があるみたい。自分の場合がまさにそれ! というわけで、エラーになる箇所をちょこっと(適当に)修正する。
最初のエラーはコレ。
tclenv.c:63: error: conflicting types for 'unsetenv' /usr/include/stdlib.h:243: error: previous declaration of 'unsetenv' was here tclenv.c:303: error: conflicting types for 'unsetenv' /usr/include/stdlib.h:243: error: previous declaration of 'unsetenv' was here make[1]: *** [tclenv.o] Error 1 make: *** [all] Error 2
tclenv.c は int だけど、stdlib.h は void。だから tclenv.c を以下のように void に修正。
63行目の場所
//int unsetenv _ANSI_ARGS_((const char *name)); void unsetenv _ANSI_ARGS_((const char *name));
303行目の場所
//int void unsetenv(name)
次のエラーはコレ。
tclxid.c:242: error: too few arguments to function 'setpgrp' make[2]: *** [tclxid.o] Error 1 make[1]: *** [TCLX_MAKES] Error 2 make: *** [all] Error 2
tklx/src/tclxid.c の中で呼び出している setpgrp 関数に渡す引数が足りないって。足りないって言われても…。とりあえずググってそれっぽいのを持ってきた。(これで良いのかどうかはかなり怪しい!)
まずは tklx/src/tclxid.c の 150行目、変数宣言してる場所の最後に以下を加える
pid_t pid;
次に 243行目(問題の箇所)をこんな感じに
pid = getpid (); setpgid (pid, pid); // setpgrp ();
最後の問題は /usr/X11/lib が無いって怒られる。
/usr/bin/ld: warning -L: directory name (/usr/X11/lib) does not exist /usr/bin/ld: can't locate file for: -lX11 collect2: ld returned 1 exit status make[1]: *** [sim] Error 1 make: *** [all] Error 2
これは sim/makefile の 19行目をこんな感じに。
#LDFLAGS=-L/usr/X11/lib LDFLAGS=-L/usr/X11R6/lib
これで私の場合は make が通るようになった。
あとは make install
debian:~/myTest/micropolis-activity/src paraches$ make install
問題なし。
後は実行だけど、1つ上のフォルダの Micropolis が実行ファイル。でも、何も気にせずに起動したらダメだった。
iMac:~/myTest/micropolis-activity/src paraches$ cd .. iMac:~/myTest/micropolis-activity paraches$ ./Micropolis Starting Micropolis in /Users/paraches/myTest/micropolis-activity ... Welcome to X11 Multi Player Micropolis version 4.0 by Will Wright, Don Hopkins. Copyright (C) 2002 by Electronic Arts, Maxis. All rights reserved. couldn't connect to display ":0" iMac:~/myTest/micropolis-activity paraches$
display に繋げない??? なんとなく X11 関係?嫌な感じだな〜と思いつつ、アプリケーションフォルダの X11 を起動してから再トライしたら…起動できた!
でも、SimCity を遊んだことがないので遊び方がわからない…。なんとなくあちこちいぢってみたりしたけど、これで本当にちゃんと最後まで遊べるのかは不明。付け焼き刃で make が通るようにしただけだから。
あと、起動したときにターミナルに何か出てる。音、鳴らないってこと??? っていうか、鳴ってないんだけど…
iMac:~/myTest/micropolis-activity paraches$ ./Micropolis Starting Micropolis in /Users/paraches/myTest/micropolis-activity ... Welcome to X11 Multi Player Micropolis version 4.0 by Will Wright, Don Hopkins. Copyright (C) 2002 by Electronic Arts, Maxis. All rights reserved. Adding a player on :0 ... Darn, X display ":0" doesn't support the shared memory extension. PlaySound Rumble PlaySound Rumble X connection to :0.0 broken (explicit kill or server shutdown). iMac:~/myTest/micropolis-activity paraches$