********************************************************************* WebPetSystem 暫定マニュアル v1.13 2002.02.10 Copyright (C) 2000-2002 まかまか般若波羅蜜 http://www2u.biglobe.ne.jp/~hannya/ ********************************************************************* 目次: 0 WebPetSystemとは? 1 システムの構成 2 設置の仕方 3 データの作成 A B C 4 コマンドリファレンス 5 利用規約・サポートについて・その他 ********************************************************************* ★0 WebPetSystemとは? WebPetSystem(以下WPSと略)はウェッブ上でアドベンチャーゲームや、 マスコットやペットを育てるゲームをつくるために特化されたシステムです。 ゲームのデータはWPS-Scriptと呼ばれる簡単なプログラミング言語によって 記述されます。このWPS-Scriptを使ってあなたは好きな選択肢をつくり、そ れに応じてどのようにペットが振る舞うかを自由に設定することができます。 あなたのサイトに来た人々は、あなたのつくったペットに個別に出会い、 育てることができます。 ペットやマスコットをつくる以外にもアドベンチャーゲームをつくるなど の応用もできます。WPS-Scriptは変数の設定や簡単な条件分岐など、アドベ ンチャーゲームをつくるのに必要な様々な機能を持っています。 まだまだ発展途上ですが、ぜひ一度お試しください! ※WPSの仕組みは、「アドベンチャーゲームブック」をご存じの方は イメージしやすいかと思いますが、選択肢に番号がふってあって、 その選択肢を選ぶとその項目へジャンプするという感じです。 WPS動作概念図 ■WPSにログイン ↓ ユーザーデータの読み込み ↓ スクリプトデータの読み込み スクリプトに従って処理 ↓ 結果の表示と一時データファイルへの書き出し ■ログイン中(選択肢を選ぶこと=WPSへのアクセス) ↓ 一時データファイルの読み込み ↓ スクリプトデータの読み込み スクリプトに従って処理 ↓ 結果の表示と一時データファイルへの書き出し ■ログアウト ↓ 一時データファイルの読み込み ↓ スクリプトデータの読み込み スクリプトに従って処理 ↓ 結果の表示とユーザーデータの保存 ********************************************************************* ★1 システムの構成 □はじめに WPSは以下のファイルによって構成されます。(*がついているものは必須) wps.cgi *(WPSエンジン部分) wps_base.pl *(基本スクリプトモジュール) config.cgi *(設定ファイル) wps_img.cgi(WPS画像表示用CGI) また以下のファイルをご自分で用意してください。 ・テンポラリファイル*(空ファイル) ・ユーザデータファイル*(空ファイル) ・スクリプトデータ*(登録用データ、通常データ、追加データ) □解説: wps.cgiはWPSを動かすエンジン部分です。設定ファイル(config.cgi)を読 み込み、データファイルからデータを読み込み、最終的なデータの表示や処 理を行います。 wps_base.plはWPS-Scriptを解析・処理するモジュールです。wps.cgiはデー タファイルを読み込んだときにこのモジュールを呼び出し、データの解析と 処理をさせます。処理結果はwps.cgiによって表示されたりファイルに記録さ れたりしますが、このwps_base.cgiもまた一部そのような仕事を受け持って います。 wps_img.cgiは画像を表示するためのCGIです。このCGIがなくても画像の表示 は可能ですが、例えばブラウザで表示されるときに処理結果の文章や数値の 表示よりも先に画像を表示したときにはこのCGIを使う必要があります。 config.cgiは設定ファイルです。このファイルで様々な設定を決めることが できます。詳細は次の「2:設置の仕方」で述べます。 登録用データファイルはWPS用のデータファイルの一種です。 通常データファイルはWPS用のデータファイルの一種です。 追加データファイルはWPS用のデータファイルの一種です。 ユーザデータファイルにはユーザーのデータが格納されます。 テンポラリファイルはWPSがデータ処理するときに一時的に利用します。 ********************************************************************* ★2 設置の仕方 □設定フィルの変更 $max_user_num = 200; #ユーザー登録データの最大 登録できるユーザーの最大数です。 $max_temp_num = 50; #テンポラリの同時アクセス許可数 テンポラリファイルを利用できるユーザーの最大数です。 $timeout = 120; #処理を無効にする時間(秒) WPSにアクセスしてから一定時間がすぎるとアクセスを無効にします。これ によってテンポラリファイルがいっぱいになることがないようになります。 単位は秒。 $deltime = 7*24; #登録自動抹消までの時間 ほっておくとユーザーデータは膨大な数になります。そこで一定期間アク セスしないユーザーの登録を抹消することになります。単位は時間。上の例 では7×24時間=一週間。 $wps_datafile = 'main.dat'; 通常時に読み込まれるWPS-Scriptファイルです。登録したユーザーが wps.cgiにログインするとこのファイルが読み込まれ、処理がはじまります。 $reg_datafile = 'regist.dat'; ユーザー登録時に読み込まれるWPS-Scriptファイルです。通常用と同じで ももちろん構いませんが、ファイルサイズを小さくするためにも別にするべ きです。web.cgi?mode=regにアクセスすることによって登録データ用ファイ ルが呼び出されます。 $user_file = 'user.dat'; #ユーザーデータファイルの名前 なおファイルは各自でご用意ください。単なる空ファイルです。 $temp_file = 'temp.dat'; #テンポラリファイル なおファイルは各自でご用意ください。単なる空ファイルです。 $img_dir = 'image/'; #画像用ファイル 画像ファイル用のディレクトリをCGI設置場所と別にする場合に便利なよう にということでこの項目があります。必要なければこの項目は削除して構い ません。 $jcode = './jcode.pl'; #jcodeの位置 日本語環境で利用する場合に必要です。別途jcode.plが必要。この項目は URLではなく、ディレクトリのパスを記入してください。 $test=0; #テストモード(通常は"0"に) 1にするとテストモードになります。2にすると動作確認モードになりま す。通常は0にします。通常WPSはブラウザの「再読み込み(リロード)」 ボタンを押したり、「戻る(Back)」ボタンを押すとエラーを出しますが、 テストモードではエラーを出さないようにしてデータづくりの便を図ってい ます。 WPSは通常モードでは選択肢の不正な選択が出来ないようになっています が、テストモードでは可能です。 $log_mode = 0; #ipアドレス記録モード wps.cgiにアクセス者のipアドレスを記録するかどうかの設定です。0の 場合、記録せず。1にするとユーザー登録時のみ記録。2にすると登録時と ログイン時の記録を取ります。いたずら防止などに利用できるでしょう。 $log_file = 'log'; #ipアドレスの記録用ファイル wps.cgiアクセス者のipアドレスを記録するためのファイルです。 □CGIの設置 適当なディレクトリをつくってそこに wps.cgi,wps_base.pl,wps_img.cgi, config.cgi、テンポラリファイル,ユーザデータファイル を置きます。データ ファイルはパーミッションを644にしてください(ご利用の環境によっては若干 変わることもあります)。また必要ならjcode.plを適宜設置してください。 □ファイルロック用のディレクトリの作成 WPSを設置したディレクトリにlockというサブディレクトリを作成してくだ さい。そしてパーミッションを757あるいは755にしてください(ご利用の環 境によっては若干変わることもあります)。 □動作確認 動作確認のためconfig.cgiの $test=0; を $test=2; に変更します。問題 がなかったら$test=0に元に戻してください。 ********************************************************************* ★3 データの作成 A:データ(WPS-Scriptデータの概要) □はじめに WPSデータはテキストデータです。そしていくつかのルールがあります。 □一行目について まず最初にデータの一行目に「#wps_base」という一文を書きます。これに よりwps_base.plの使用が可能になります。(将来wpsモジュールを拡張でき るようにするための措置です。) また、後で説明しますがopenによって読み込まれる追加のWPS-Scriptデー タには#wps_baseはいりません。 □コマンド及びコマンドグループ 次に「コマンド」と「コマンドグループ」という概念について説明してお きます。WPSデータは「メッセージを表示しろ」とか、「選択肢を出せ」と いったひとつひとつのコマンド(命令)を順々に処理していくことによって 動作します。このひとつひとつのコマンドがいくつか集まって「グループ」 をつくります WPSデータはグループからグループへと移動(goというコマンドを使う)す ることによって処理が進みます。そしてグループ内の一つ一つのコマンドは 上から順に実行されます。次のグループへのジャンプがない(goがないとい うこと)時点で、(あるいはendなどの明示的に処理を終了させるコマンドを 出したとき)データ処理は終了します。 グループ名は行の先頭に書きます。そしてコマンドは行の最初にタブ(TAB) を一つ入れて書きます(caseの「条件」だけはタブを2ついれます)。今のと ころ、一行につきひとつのコマンドしか書けません。 下に例を示してみます。(タブを表示する設定でみると良いでしょう) ----------------------------------------------------- #wps_base Start var->A B C $A=1 mes->"\$Aの値は$Aです。" go->Tugi Tugi rand(10) $RANDOM+1 mes->"ただいまの乱数は$RANDOMです。" case{$RANDOM} (-3) mes->"3以下の値" (4) mes->"きっかり4" (5-7)mes->"5から7の値" (8-) mes->"8以上の値" go->Owari Owari mes->"これで終了です。" ----------------------------------------------------- 上は16行からなる簡単な例です。 1行目:#wps_baseと書くことによってwps_base.plを呼び出します。 2行目:行の先頭にグループ名。ここでは「Start」としています。グループ 名の次の行からはタブをひとついれてコマンドを書きます。 3行目:変数No.0,1,2に順にA,B,Cという名前をつけて使用することを宣言し ています。実際に変数を使用するときは$A,$B,$Cの形で書きます。 4行目:変数$Aに「1」を代入。WPSでは原則として変数には数値しか代入でき ません(strというコマンドで特殊な変数に文字列を代入可)。 5行目:「$Aの値は1です。」とブラウザに表示されます。$の前に\をつける ことで$を表示させることができます。 6行目:次のグループ「TUGI」に移動します。 7行目:グループ「TUGI」 8行目:0から9までの数を「予約変数$RANDOM」に代入します。 9行目:「ただいまの乱数は○です。」と表示。 11行目:条件分岐するためのコマンド"case"。下のかっこにはいっている数 字が実際の条件です。 12行目:$RANDOMが3以下の時「3以下のの値」と表示されます。 13行目:$RANDOMが4の時。 14行目:$RANDOMが5以上7以下の時。 15行目:$RANDOMが8以上の時。 16行目:グループ「Owari」に移動 17行目:グループOwari 18行目:「これで終了です。」と表示。ここでもう別のグループに移動する ことがないので処理は終了。 ※先頭の行に#をつけるとコメントとみなされます(一行目は例外)。 もう一つの例: ----------------------------------------------------- #wps_base Start select(1) go->001 select(2) go->002 go->000 000 mes->"次の選択肢を選んでください。
" menu(1)->"これは選択番号1です" menu(2)->"これは選択番号2です" 001 mes->"1番が選ばれました。
" menu(0)->"もう一度" 002 mes->"2番が選ばれました。
" menu(0)->"もう一度" ----------------------------------------------------- 上の例では 1行目:#wps_baseと書くことによってwps_base.plを呼び出します。 2行目:グループ名「Start」。 3行目:予約変数$SELECT_NUMの数値が1の時、グループ名「001」に移動。 4行目:予約変数$SELECT_NUMの数値が2の時、グループ名「002」に移動。 5行目:上の条件以外の時、グループ「000」へ移動。 6行目:グループ「000」 7行目:メッセージ表示。 8行目:選択肢「これは選択番号1です」を表示。ユーザーがこの選択肢を選 ぶと$SELECT_NUMに1が代入されます。 9行目:選択肢「これは選択番号2です」を表示。ユーザーがこの選択肢を選 ぶと$SELECT_NUMに2が代入されます。 10行目:グループ「001」 11行目:メッセージ表示。 12行目:選択肢の表示。ユーザーがこの選択肢を選ぶと$SELECT_NUMに0が代 入されます。 13行目:グループ「002」 14行目:メッセージ表示。 15行目:選択肢の表示。ユーザーがこの選択肢を選ぶと$SELECT_NUMに0が代 入されます。 □変数について 変数は半角英数字(a〜z,A〜Z,0〜9,アンダーバー"_")から構成します。WPSの予約変数がかなりあるため、小文字を推奨。 このマニュアルでは変数について詳しく説明しません。WPSにおいて変数の 代入には次の方法があります。 $HOGE=1 # $HOGEに1を代入 $HOGE+ # $HOGEに+1します $HOGE+1 # これも$HOGEに1プラス $HOGE+++ # $HOGEに3プラスします $HOGE=$FOO # $HOGEに$FOOの値を代入します $HOGE+$FOO # $HOGEに$FOOの値をたします $HOGE- # $HOGEの値から1引きます $HOGE--- # $HOGEの値から3引きます $HOGE-$FOO # $HOGEから$FOOの値を引きます 宣言された変数(予約変数以外)は0以上99999999以下の整数値しかとりませ ん。また、0以下の値になったときは強制的に0に、99999999以上の値の場合は 99999999に設定されます。 mes->"STR"など、大概のコマンドでは変数を展開することができます。 $hoge=5なら mes->"$hogeだよ" とすることで、「5だよ」となります。 ただし、mes->"$hogeDAYO!" というふうに、半角英数字アンダーバーを変数のすぐ後につづけてしまうと、WPSはそれを$hogeDAYOという変数にとってしまいます。このばあいは、変数の最後に"\"をつけることによって、その文字を変数の名前ではないとWPSに判断させます。 mes->"$hoge\DAYO!" これで「5DAYO!」という表示に。 □予約変数について 次の変数はWPSが使用するために予約された変数です。変数宣言でこれらの 名前を使うことはできませんが、スクリプト内で自由に使用することはでき ます。 $USERNAME ユーザー名(文字列)。 $PETNAME ペット名(文字列)。 $SELECT_NUM 選択肢番号が代入されます。 $CLICK_COUNT 今回WPSにアクセスしてから選択肢をクリックした回数。 $RANDOM rand()を使うとこの変数に数値が代入されます。 $IMG_NAME 画像の名前(imgコマンドで変更可能) $IMG_ALT 画像のALT属性(imgコマンドで変更可能) $IMG_WIDTH 画像の横幅(imgコマンドで変更可能) $IMG_HEIGHT 画像の縦幅(imgコマンドで変更可能) $MENU_AC 選択肢番号の不正チェック用変数 $Wps_var 使用しているWps.cgiのバージョンです。 $Wps_Script_var 使用しているWPS-Scriptモジュールのバージョンです。 $Process_end 値を1以上にすると直ちに処理を終了することができます $Wps_Mode テストモードの時、1以上の数値になります。 $Browser 使用ブラウザ $Strings_ck strckコマンドを使用した際に利用します。 $Browserは、"DoCoMo","J-PHONE","EZWEB","MSIE","Mozilla","Lynx"のいずれかを識別しますが、それ以外は"Unknown"となります。 □時間変数 予約変数の一種です。 $PTIME 現在の時間。 $STIME ユーザー登録をした時間。 $LTIME 前回のログイン時間。 $ATIME 今回のログイン時間。 ※上の「時間変数」の値は1970年1月1日からの秒数です。年月日、時分秒へ の変換は後述。 $PSTIME 登録してから現在までの時間。 $PLTIME 前回ログアウトしてから現在までの時間 $PATIME 前回の選択肢選びから現在までの時間 $ASTIME 登録してから前回の選択肢を選んだまでの時間 $ALTIME 前回ログアウトから前回の選択肢を選んだまでの時間 $LSTIME 登録してから前回アクセスまでの時間 □文字列変数 $Strings0, $Strings1...$Strings9 までの10の変数は WPS ver.1.09から予約変数となりました。 str(N)->"XXX"で $StringsN(nは対応する数字)にXXXという文字列が 代入されます。ただしこの変数はデータに記録されないので 気を付けてください。 □条件分岐について 現在、WPS-Scriptには3つの条件分岐用のコマンドがあります。 "slect"と"case"、それに"if"です。 select(N) XXX 予約変数 $SELECT_NUM と N が一致したときにコマンドXXXを実行します。 case{$HOGE} (NN)XXX $HOGEの変数を調べ、(NN)の条件設定に一致したときにコマンドXXXを実行します。NNには、0以上の整数値が入ります。 例: (0-) 0以上の値 (0-10) 0から10の値 (5) 値はちょうど5 (-5) 5以下の値 この「条件」は行の頭からタブを二つ入れることによって認識されます。 また、ifによる比較も利用できます。 if{$A == 3} go->10 などなど。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * B;実際にデータをつくる □はじめに データづくりは次の手順を踏みます。 1ログイン用ページの作成 2登録用データの作成 3通常データ・追加データの作成 □1 入口用のページをつくる a 登録フォーム WPSの登録モードを起動するには以下のようなリンクをはります。 登録 b ログインフォームについて WPSにログインするには下のようなフォームを使います。methodは、POSTで もGETでも構いませんが、POSTが利用できない環境ではGETにしなければなり ません。ユーザーの名前を入力する欄の属性NAMEは"username"に、パスワー ド欄は"password"にします。
□2 登録用データをつくる 最初に登録モードで呼び出す「登録用データ」を作成します。この登録 モードでユーザー登録がなされ、データファイルに各ユーザーの名前やパス ワード、変数などが記録されます。 ユーザー名、パスワード名(必要ならペット名も)を入力するための フォームをつくります。フォームをつくるにはregform()を使います。 regform(n)のnの部分が選択番号となります。フォームは最後にregform(0)で 閉じます。そのため、最初のregformで選択番号0を指定することはできませ ん。入力欄はinput()を使います。サブミットボタンはsubmitを使います。 なお、登録データの一行目には#wps_baseという一行が必要です。 □3 通常用データ・追加データをつくる ログインフォームからWPSにログインしたときに呼び出されるデータの作成 です。詳しくはサンプルデータなどを参照してください。ログインしたとき に最初に呼び出されるWPS-Scriptデータの一行目には#wps_baseという一行が 必要です。openというコマンドを使うことによって途中でデータを追加する こともできます。 WPSをログアウトするような選択肢のところでは最後にendというコマンド を使うと、ユーザーデータをファイルに記録し、テンポラリデータから一時 的に記録されていたユーザーデータを抹消します。endを使用しないと、テン ポラリデータに暫くの間ユーザーデータが残るため、その間ログインしてい る状態とみなされます。 ↓注意:必ずご覧ください ※WPS-Scriptデータは改行をLF形式にしてください。 ※WPSは自動的に