No.004: 箱庭2+の設置
初心者の間でかなりの「謎」になっている箱庭2+の設置を手順を追って説明したいと思います。
箱庭2+に関しては今までの箱庭1、2シリーズやその派生系と違って「分かりやすさを犠牲にしてサーバーへの負担を軽くする」という方針がとられています。
具体的には、
といった部分で今までとは仕様が変更されています。
ではどのように設置するか見てみましょう。
設置する前に
箱庭2+を設置するには以下の用件を満たしたサーバ(サーバスペース)を用意する必要があります。
- Telnetが使えること
説明によっては「シェルアカウントがある」「Bシェル」「Cシェル」「Telnetアカウント」などという呼び方がされています。
具体的には、Windowsでスタートメニューの「ファイル名を指定して実行...」に以下のように打ち込んでみます。
telnet [プロバイダ、レンタルサーバで指定されたサーバのアドレス]
これでしばらくたって「login:」と表示されればそこのサーバでTelnetが使えるということです。
もちろん、その後に打ち込んで有効なIDとパスワードがなくては話になりませんが……。
また、セキュリティーのために今流行のsshを使っていたり、telnetのポートアドレスを変えてあったりするかもしれません。(デフォルトのTelnetのポートアドレスは23です)その辺の説明はめんどくさいので割愛。
こればかりは「サーバ管理者にお問い合わせください」としか言えません。^^;
- gcc、g+が使える事
gccとがg++というのはCコンパイラの事です。C言語を理解してコンピュータの理解できる実行ファイルを作る為のツールです。
gccというのは「GNUという団体の出しているCコンパイラのセット」の事で、g++というのは「GNUという団体が出しているc++のコンパイラセット」の事です。
サーバのスペック一覧を見ても「gccもg++も書いてないよ〜〜!」という場合でも、「cc使用可能」「cpp、c++使用可能」「make使用可能」などと書いてあれば多分大丈夫です。
ただ、GNU-CじゃないCコンパイラだと後で説明するコンパイル作業のときにFatal ErrorでSTOPするかもしれません。
- gmakeが使える事
これも「GNUという団体で出しているmakeのセット」の事です。
これは何かというと、Cコンパイラで得られる結果を使って実行可能ファイルを作製するツールです。
普通、Cコンパイラはmakeから呼び出されます。
もしTelnetできるのなら、「make」と打ってリターンを押して「make: no target to make.」などと表示されるのであればmakeが使えるということです。「command not found」などと出るときは多分使えないサーバだということです。
- ネイティブ形式の実行ファイルの実行を許可している事
これは見分けるのが結構難しいです。
要するに、「CGIはPerl以外は実行できません」と書いてあると多分アウトです。
つまり、makeして出来上がったファイルをCGIとして実行する権限が与えられているかということです。
CはPerlに比べて非常に自由な言語です。システムに関するほとんどのことができてしまうので悪用されると結構危険なんです。そこでCGIとしてネイティブファイルの実行を決められた場所に制限してるプロバイダは結構あります。ま、とりあえずはTelnetとmakeが使えれば大抵使えるでしょう。
どちらか使えなければ基本的に箱庭2+の設置は不可能です。あきらめてください。
ソースファイルのアップロード
makeをかける前のC言語で書かれたテキストファイルを「ソースファイル」と言います。
配布元のファイルはここにも置いてあります。Readme.txtを読んだ上で持っていってください。
っていうか、本当はReadmeを見ながら設置するものなのですが……^^;箱庭2+の配布ファイルは「tar」という形式で圧縮されたテキストファイルの集合です。
これを展開しなければmakeにはかけられないのですが、サーバにアップしてから展開する方法とサーバにアップする前に展開する方法との2通りがあります。
サーバにアップしてから展開するにはサーバ上で「tar」というコマンドが使える必要があります。
まずは「展開してからアップロードする方法」実はtar形式の圧縮ファイルはWindowsでも解凍できます。
簡単なのは「eo」という解凍専用ツールを使います。これはただドラッグアンドドロップすれば圧縮形式を自動で判別してくれるので簡単です。
他にも、私が愛用している「ExpLzh」というツールも便利です。DLLさえ手に入れれば世の中で出回っているほとんどの形式のファイルを圧縮・解凍できます。
vectorのシェアレジなどで探してみてください。
で、自分のマシンで解凍すると以下のようなファイルができます。(わー、たくさん!)
で、これをサーバに適当な名前のディレクトリを作ってそこにアップしてやります。
FTPのモードは必ず全てアスキーモードで転送してください。次にサーバにアップしてから展開する方法。
まず、hakow094.tarファイルをバイナリモードでサーバにFTPします。
バイナリモードですよ!バイナリモード!間違えないように!!
で、アップしたらアップした場所を覚えておいてTelnetでログインします。(ログインの仕方は後述)
アップしたファイルのある場所まで移動します。
lsでファイルがあることを確認したら以下のコマンドで展開します。tar xvfz hakow094.tar
すると、展開したファイルがずらーっと表示されて終了します。
表示されてなかったらlsで確認しましょう。こんな風になっていればOKです。
Makefile info.c monster.c sight.c util.c
command.c info.h monster.h sight.h util.h
command.h main.c new_island.c template.c value.c
config.cgi main.h new_island.h template.h value.h
hako_io.c map.c owner.c toppage.c
hako_io.h map.h owner.h toppage.h
hakow.js mentenance.c rename.c turn.c
hakow094.tgz mentenance.h rename.h turn.h気分の問題ですが、展開した後のhakow094.tarはいりません。サーバスペースを気にする人は削除してください。
Telnetのログインと、超・基本的なコマンド解説
え〜っと、こんな事を解説してしまうのはどうかとも思ったのですが、わかんない人は分からないと思うので、まあ、超・初心者向けということで、分かってる人は読み飛ばしてください。
Telnetソフトは実はWindowsに標準装備されています。Win95だろうが2000だろうが、何でもです。
(win9xとWinNT系ではちょっと違うのですが……、Win200ではさらに違うのですが(笑))
ここでは既にダイアルアップ、もしくはインターネットへの接続がされているものとして話を続けます。Telnetクライアントを自分のマシンで起動させます。
スタートメニューから「ファイル名を指定して実行...」を選択し、「telnet」と打ち込んで[OK]をクリックします。
Win9x系の人はメニューから「接続→リモートシステム」を選択し、サーバのアドレスとポートを打ち込みます。
WinNT系の人は何だかコマンドプロンプトみたいなものが出てくるので「Open [サーバのアドレス]」と打ち込んでやります。
そうするとサーバによって多少の違いはあるでしょうけど、次のような画面が出てくるはずです。
OSなんとかうんたらかんたら バージョンなんとか
…………
login:そうしたら、その「login:」の後に自分に与えられたTelnetアカウントのユーザ名を打ち込みます。(telnetアカウントがなければダイアルアップやFTPの時に与えられているアカウント名かもしれない)
次に
password: と聞いてくるはずなので、自分のパスワードを入力します。入力は画面にうつりませんが、入力されているので大丈夫です。
うまくいくと「Welcome」とかなんとか表示されて、最後に
% と表示されて入力待ちになるはずです。ならない人は頑張りましょう。
これでこの「%」の後にコマンドを打ち込めるようになったはずです。では極々基本的なTelnetのコマンドを説明します。
- pwd
今自分のいるディレクトリへのパスを表示します。
まず、ログインしたら自分の居場所を確認しておきましょう。^^;
- ls
現在のディレクトリに入っているファイルとディレクトリを一覧します。
ls -l(エル・エス・スペース・マイナス・エル)と打つとパーミッションも含めて表示できます。
- cd [移動する先のフォルダ]
現在のディレクトリを変更します。telnetで作業を行う時は対象のファイルがあるところまでcdしないとなりません。
常にpwdしてcdしてlsする癖をつけましょう。迷子にならないように。
ちなみに、一つ上のディレクトリに戻るには「cd ..」とピリオドを2つ入力します。
- mv [動かす元] [動かす先]
ファイルの移動、名前の変更を行います。(同じ場所で違う名前にすれば名前を変更した事になります)
- rm [削除するファイル]
ファイルを削除します。削除すると元には戻せないので注意しましょう。
- cp [コピー元] [コピー先]
ファイルをコピーします。「*.*」とかで複数のファイルを対象にできるのはMS-DOSと大体同じです。
- chmod [パーミッション] [ファイル名]
指定したファイルのパーミッションを変更します。FTPなんかで設定していた「0755」とか「0666」とかのアレです。
- chown [オーナーのユーザ名] [ファイル名]
指定したファイルのオーナーを変えます。あんまし使わないか?使うよなあ……。
- chgrp [グループ名] [ファイル名]
指定したファイルの所属グループを変えます。これは設定しないと動かないサーバがあったりします。
- exit 又は logout
telnetのセッションをクローズしてサーバから切断します。
お帰りの際は忘れずに……。まあ、迷子になったらログアウトしてログインすればOKです(爆)
箱庭2+のコンパイル(make)
箱庭2+はアップロードしたそのままじゃ動きません。
「make」とか「コンパイル」という作業が必要です。さっき展開したソースか、展開したソースをアップロードしたディレクトリに移動してください。
ここからの例は
Makefileというファイルがあるディレクトリです。
%cd ~hogehoge/hako2p/ 一応lsで確認してください。
%pwd
/usr/home/hogehoge/hako2p
%ls -l
total 217
-rw-r--r-- 1 hakoniwa wwwusers 432 Jun 17 2000 Makefile
-rw-r--r-- 1 hakoniwa wwwusers 15921 Jun 17 2000 command.c
-rw-r--r-- 1 hakoniwa wwwusers 2340 Jun 17 2000 command.h
-rw-r--r-- 1 hakoniwa wwwusers 1279 Jun 17 2000 config.cgi
-rw-r--r-- 1 hakoniwa wwwusers 13833 Jun 17 2000 hako_io.c
-rw-r--r-- 1 hakoniwa wwwusers 1911 Jun 17 2000 hako_io.h
-rw-r--r-- 1 hakoniwa wwwusers 40081 Jun 17 2000 hakow.js
-rw-r--r-- 1 hakoniwa wwwusers 41312 Mar 31 02:41 hakow094.tgz
-rw-r--r-- 1 hakoniwa wwwusers 8389 Jun 17 2000 info.c
-rw-r--r-- 1 hakoniwa wwwusers 2860 Jun 17 2000 info.h
-rw-r--r-- 1 hakoniwa wwwusers 2602 Jun 17 2000 main.c
-rw-r--r-- 1 hakoniwa wwwusers 275 Jun 17 2000 main.h
-rw-r--r-- 1 hakoniwa wwwusers 31550 Jun 17 2000 map.c
-rw-r--r-- 1 hakoniwa wwwusers 4325 Jun 17 2000 map.h
-rw-r--r-- 1 hakoniwa wwwusers 3648 Jun 17 2000 mentenance.c
<<<以下省略>>
おもむろにmakeを打ちます。
%make
g++ -c -O2 -Wall -c main.c
g++ -c -O2 -Wall -c hako_io.c
g++ -c -O2 -Wall -c template.c
g++ -c -O2 -Wall -c value.c
value.c: In function `static void Value::input(ifstream *)':
value.c:108: warning: unsigned int format, different type arg (arg 3)
g++ -c -O2 -Wall -c mentenance.c
g++ -c -O2 -Wall -c info.c
g++ -c -O2 -Wall -c map.c
g++ -c -O2 -Wall -c sight.c
g++ -c -O2 -Wall -c new_island.c
g++ -c -O2 -Wall -c util.c
g++ -c -O2 -Wall -c toppage.c
g++ -c -O2 -Wall -c command.c
g++ -c -O2 -Wall -c owner.c
g++ -c -O2 -Wall -c turn.c
g++ -c -O2 -Wall -c monster.c
g++ -c -O2 -Wall -c rename.c
g++ main.o hako_io.o template.o value.o mentenance.o info.o map.o sight.o new_is
land.o util.o toppage.o command.o owner.o turn.o monster.o rename.o -o hakow.cgiなんか多少ワーニングが出ていますが、最後にhakow.cgiができていれば気にしない(ぉ
hakow.cgiができている事を確認
%ls -l
total 386
-rw-r--r-- 1 hakoniwa wwwusers 432 Jun 17 2000 Makefile
-rw-r--r-- 1 hakoniwa wwwusers 15921 Jun 17 2000 command.c
-rw-r--r-- 1 hakoniwa wwwusers 2340 Jun 17 2000 command.h
-rw-r--r-- 1 hakoniwa wwwusers 10072 Apr 30 09:25 command.o
-rw-r--r-- 1 hakoniwa wwwusers 1279 Jun 17 2000 config.cgi
-rw-r--r-- 1 hakoniwa wwwusers 13833 Jun 17 2000 hako_io.c
-rw-r--r-- 1 hakoniwa wwwusers 1911 Jun 17 2000 hako_io.h
-rw-r--r-- 1 hakoniwa wwwusers 23128 Apr 30 09:24 hako_io.o
-rwxr-xr-x 1 hakoniwa wwwusers 66367 Apr 30 09:25 hakow.cgi
-rw-r--r-- 1 hakoniwa wwwusers 40081 Jun 17 2000 hakow.js
-rw-r--r-- 1 hakoniwa wwwusers 41312 Mar 31 02:41 hakow094.tgz
-rw-r--r-- 1 hakoniwa wwwusers 8389 Jun 17 2000 info.c
-rw-r--r-- 1 hakoniwa wwwusers 2860 Jun 17 2000 info.h
-rw-r--r-- 1 hakoniwa wwwusers 8804 Apr 30 09:25 info.oとりあえずこれができていたら喜びましょう。
で、設置にうつります。
箱庭2+の初期設定
もちろんmakeしただけでは動きません。
普通のUNIXのパッケージでは「make install」なんて打つと導入設定までしてくれちゃったりしますが、箱庭2+はそこまで親切ではありません(苦笑)今、hako2pのディレクトリにあるファイルで必要なものは、
- hakow.cgi ……CGI本体
- config.cgi ……設定パラメータファイル
- hakow.js ……Javaスクリプトファイル
いっぱいあっても実はこれだけ(笑)
その他に画像ファイルセットが必要なので用意しておきましょう。
仮に、画像ファイルのあるディレクトリは /usr/home/hogehoge/imagesとします。まず、それぞれのファイルを正しい場所にコピーしてやらないといけません。
hakow.cgiを置く場所が全ての中心になります。ここは普通に、/cgi-bin/に置いてやるものとします。
設置計画 /usr/home/hogehoge ……ホームページの親ディレクトリ
:
public_html/ …… ホームページのディレクトリ
:
/cgi-bin/ ……CGIの実行可能なディレクトリ
:
hakow.cgi ……実行するファイル
config.cgi ……設定パラメータ(必ずhakow.cgiと同じところに置く)
/images/ ……画像ファイルのフォルダ
:
gazou1.gif ……画像ファイル(いっぱい)
hakow.js ……Javaスクリプトファイル(ここでなくても読み出せればOK)/hako2p/ ……今回は箱庭2+をmakeしたのはここだとします
パーミッション(この辺はreadme参照)
hakow.cgi = 0755(実行可能)
hakow.js = 0644(読み出し可能)
config.cgi = 0644(読み出し可能)……本当は0600とかにしちゃうといいのかもしれないけど不安
せっかくなのでtelnetから移動してあげましょう(^^)/
%cd /usr/home/hogehoge/hako2p ……makeしたディレクトリに移動
%mv hakow.cgi ../cgi-bin/ ……CGIを実行ディレクトリへ移動
%mv config.cgi ../cgi-bin/ ……設定ファイルを同じところへ移動
%mv hakow.js ../images/ ……Javaスクリプトを画像ディレクトリへ移動
%cd ../cgi-bin ……実行ディレクトリへ移動
%chmod 0755 hakow.cgi ……CGIに実行パーミッションをセット
%chmod 0644 config.cgi ……設定ファイルを変更できないようにセット
%cd ../images/ ……画像ディレクトリへ移動
%chmod 0644 hakow.js ……読み出し可能パーミッションをセットあとは設定ファイルを適切に書き換えてあげます。
一旦自分のパソコンにダウンロードしてエディタで編集してアップロードしてやるといいでしょう。
# 共通設定
titleName=箱庭諸島2+ ……タイトルとして表示される文字
# 管理者用パスワード
masterPassword=hogehoge ……管理者パスワード(必ず変更する事!!)
# 管理者用特殊パスワード
specialPassword=superpass ……資金、食料がMAXになるパスワード
# 設置URL
cgiURL=http://www.funyafunya.com/~hogehoge/cgi-bin/hakow.cgi ……hakow.cgiのURL
# 画像等を置くディレクトリ
fileDir=http://www.funyafunya.com/~hogehoge/images ……画像とhakow,jsのある所
# 掲示板
bbsURL=http://www.funyafunya.com/~hogehoge/cgi-bin/keijiban.cgi ……掲示板のURL
# BODYタグの属性
htmlBody=BGCOLOR="#EEFFFF" ……背景の色 青字の部分が設定値です。
htmlBody=background="images/parchmtl.jpg" とかすれば背景に画像を表示させる事もできます
# データディレクトリ名
dirName=notdata ……データディレクトリ(これからhakow.cgiと同じところに自動でできます)
# 終了ターン
endTurn=5000 ……何ターンゲームをするか(重さには関係なし)
# ディレクトリのモード
dirMode=705 ……データディレクトリのパーミッション(これでいけるのなら問題なし)
# 初期連続資金繰り数
initialAbsent=25 ……新しく発見された島の資金繰り回数
# 自動放棄連続資金繰り数
giveupTurn=28 ……この回数資金繰りすると自動放棄される
(自動放棄連続資金繰り数 − 初期連続資金繰り数)が最初のコマンドを入れる為の猶予になります
なるべく2以上になるようにしてあげましょうね。かわいそうだから。
あんまり大きすぎても問題だけど。
# 初期資金
initialMoney=1000 ……島を作った時の最初の資金
# 初期食料
initialFood=1000 ……島を作った時の最初の食料
# 全体の大きさ
worldSize=60 ……世界全体の大きさ
# 島数の最大数
maxNumber=30 ……登録できる島の最大数
# コマンド入力数
commandMax=24 ……ためておけるコマンドの数
# 1ターンの秒数
unitTime=14400 ……あんまり小さくしないように!!
# バックアップを何ターンおきに取るか
backUpTurn=4 ……値が小さいほど安全。でも重くなるし容量を食う
# バックアップの保持数
backUpMax=3 ……多いほど容量を食う
# デバッグモード(1にすると、「ターンを進める」ボタンが出る)
debugMode=0 ……普通は0
# 食料消費率
eatenFood=20 ……確立は全て1/1000が基準になります
# ログの保持ターン数
logMax=8
# 木の値段
treeValue=5
# 記念碑の種類
monumentVar=3
# 火災率
disFire=10
# 自然地震率
disEarthquake1=80
# 地均し地震率
disEarthquake2=5
# 津波率
disTsunami=300
# 台風率
disTyphoon=400
# 隕石率
disMeteo=200
# 巨大隕石率
disHugeMeteo=100
# 噴火率
disEruption=200
# 埋蔵金率
disMaizo=50
# 怪獣率(ターン辺りの頭数)
disMonster=2 ……世界中で歩き回ってる怪獣の数
# ミサイルの射程
missileReach=12 ……標準ミサイルの届く範囲
書き終わったらhako.cgiを実行してあげましょう。
ブラウザからhttp://www.funyafunya.com/~hogehoge/cgi-bin/hakow.cgiを開きましょう。下のほうにある「管理者モード」のところに管理者パスワードを入力して「管理者モード」のボタンを押します。
リフレッシュされて「新しい島を探しに行く」のボタンが現れれば成功です。お疲れ様でした!!!