小野田洋仁郎見た

最終更新 2002/4/7

Back...


4月7日(日)

予告
 明日から、従来のhtml版「小野田洋仁郎の見た夢」から、tDiary版の「小野田洋仁郎の見た夢」(http://www.onoda-pro.com/black/dream)に移行します。html版のページは過去ログとして参照出来るようにしますので、ご心配なく。本来は、データをすべてtDiaryに移行出来ればいいんですけどね。そのうち挑戦してみる予定です。
 それと、移行による皆さんへの影響は、ページの表示がちょっと遅くなる場合がある以外は、特にないと思われます。移行しても、変わらぬご愛顧をお願いします。

BLACK DIAMOND講座4「アイテムについて」
 第四回です。これ、読んでる人がいるんでしょうか。


 第四回は、アイテムについて説明します。アイテム関係の機能を使わなくても、変数の使い方を工夫することで同じことは出来るのですが、使った方がよりわかりやすく記述出来ますので、覚えておいて損はないと思います。
 さて、いつものように、以下のスクリプトを見てください。


*ITEM                  ←1
メモ 0
ノート 0
*ITEMEND

*SCENE IE

>見る
*IF I(メモ)!=0 MEMO_NAI       ←4
 メモが落ちています。
*END
*LABEL  MEMO_NAI
 何もありません。

>取る メモ
*IF I(メモ)!=0 MEMO_MOTTERU   ←5
*GETITEM メモ             ←2
 メモを取りました!
*END
*LABEL  MEMO_MOTTERU
 既にメモは持っていますよ?

>持ち物/アイテム
*ITEMLIST                ←3

*SCENEEND
 
  1. アイテムの宣言と初期化
     「*ITEM」から「*ITEMEND」までは、アイテムの宣言と初期化をあらわします。この例では、取り扱うアイテムに「メモ」と「ノート」があることを宣言し、それぞれの所有個数を0に初期化しています。アイテムを増やしたいときは、このアイテムの宣言に追加することになります。書式は「アイテム名 所有個数」です。
     また、所有個数を0以外にすることで、最初からそのアイテムを所有している事になります。
     
  2. アイテムの取得
     「*GETITEM アイテム名」で、指定したアイテムの取得ができます。具体的には、アイテムの所有個数を1に設定しています。
     
  3. アイテムの一覧表示
     「*ITEMLIST」命令を使うと、現在所有しているアイテムの一覧を表示出来ます。所有個数が一個以上のアイテムがすべて表示されます。例では「持ち物」あるいは「アイテム」と入力することで、アイテム一覧を表示出来ます。
     
  4. アイテムの所持判定
     前回解説したIF文により、アイテムを所有しているかどうかを、アイテム変数によって判断しています。アイテム変数とは「I(アイテム名)」という形式で表現される特殊な変数で、「I(アイテム名)」とした場合、アイテム名で示したアイテムの所有個数が入っています。
     例では「I(メモ)!=0」となっており、メモの所有個数が0以外(つまり、アイテムを持っている場合)でIF文の条件が成立します。そのため、アイテムを持っている場合はラベル「MEMO_NAI」にジャンプして「何もありません」と表示し、持っていない場合(I(メモ)がゼロの場合)は「メモが落ちています」と表示しています。

     また、アイテム変数も普通の変数の一種なので、演算が可能です。たとえば「*I(リンゴ)+=1」とすれば、アイテム「リンゴ」の所有個数を一個加算出来るというわけです。
     よって、前述の「*GETITEM メモ」は「*I(メモ)=1」(メモの個数を1にする)と書いたのと同じ意味なのですが、個数に意味のあるアイテム以外は、わかりやすさを重視して「*GETITEM」を使用した方がいいでしょう。
     
  5. 4と同様に、アイテムの所有判定を行っています。持っていない場合はIFの下がそのまま実行され、*GETITEMでアイテムを取得し、*ENDで処理終了、持っている場合はラベル「ITEM_MOTTERU」にジャンプして「既にメモは持っていますよ?」と表示されます。

 以上、アイテムについて解説しました。ちなみにBLACK DIAMOND 0.36までのバージョンでは「*ITEMLIST」で所持アイテムを表示した場合、現在所持個数が表示されません。これに関しては、今後対応したいと思います(すっかり忘れていました)。
 アイテムがなくてもゲームは作れますが、あればそのぶんゲームに広がりが出来ます。アイテムの個数に制限はありませんので、様々なアイテムでゲームの世界を彩ってみてくださいね。


 ということで、第四回でした。実際はアイテム変数と、それ以外の変数(文字列変数)について解説する予定だったんですが、どうもまとめてやるとわかりづらくなりそうなので、アイテムの解説だけにしました。なので、ちょっと短めです。
 次回は文字列変数と、テキストへの変数の埋め込み方法あたりですかねえ。なんか、ブルーバックの説明がのびのびになっていますが。リクエストがあったらtDiaryの方でツッコミを入れてください。

巨人 16点
 取りすぎ。

 

4月6日(土)

tDiaryいろいろいじり中(試行錯誤日記)
 tDiary版の「小野田洋仁郎の見た夢」を現在のhtml直書き版ページよりも便利に使うために、色々試行錯誤中です。以下、試行錯誤の結果を書いてみましたが、興味のない人には面白くない内容なので、読み飛ばしてください。
 で、tDiaryで気になっているのは、

  1. データがバイナリーなので、Google等のサーチサイトで引っかからない
  2. データがバイナリーなので、Namazu等の検索で引っかからない
  3. 基本的にブラウザでの更新になるので、表や画像を埋め込んだりするのが苦手(面倒)

 こんなところですが、項目3以外はなんとかクリアできそうです。

 まず項目1に関してはtDiaryに「yasqueeze」というプラグインがあるので、これを使ってデータをhtml化します。ただ、これだと、たとえば今日のデータの場合「0406」という、拡張子無しのテキストデータ(中身はhtml)で書き出されてしまうため、サーチサイトが探してくれません。で、ちょっと改造して、出力されるファイルに拡張子「html」をつけましたが、このままではどこからもリンクされていないので、まだ駄目でしょう(基本的にサーチサイトはどっかからリンクされていないと検索対象にならないはず)。そこで、強引に、それぞれのページへのリンクだけを含んだサーチサイト用ページ(クローラー用のページ、というらしい)をスクリプトで自動生成するようにしました。自動生成したページはこんな感じです(今のところ三日分しかないので寂しい)。このページをトップから密かにリンクするか、サーチサイトに直接登録することで、おそらく検索に引っかかるようになるでしょう。
 ただし、ひっかかったからといって安心出来ません。出力されるhtmlはあくまで検索用で、cssや画像へのリンクが相対指定になっているため、マトモに表示されないのです。そこで、このページが検索されたら、元のtDiaryのページへ飛ばしてやる必要があります。yasqueezeは、tDiaryの一日分表示用のスケルトン「day.rhtml」を使用しているのですが、これを改造してyasqueeze専用のスケルトン「daysq.rhtml」を作りました。で、その中のテキトーなところに、

<meta http-equiv="refresh" content="1;url=http://www.onoda-pro.com/black/dream/?date=<%= @diary.date.strftime('%Y%m%d') %>">

 という、一秒で該当するtDiaryのページに飛ばすタグを入れ、おおむね完了です。サーチサイトで飛んできた人は、一秒間検索用のページが出たあとに、正しいページにジャンプするというわけです(0秒でもいいんでしょうけど、なんとなく一秒にしてある)。

 さて、サーチサイトに関してはこれでいいとして、次は二番目のNamazuの問題です。これも基本的には上記のhtmlをNamazuのインデックス対象にしてしまえばいいんですが、それでは芸がないので、namazurcに

Replace       /home/onoda/www/black/dream/html/(\d\d\d\d)/(\d\d\d\d).html  http://www.onoda-pro.com/black/dream/?date=\1\2

 という、なんか冗長な一文を入れて、検索で引っかかった場合、直接tDiaryのページに飛ばすようにしました。おそらくこれで問題はないでしょう(上記のディレクトリ構成は、さくらインターネットの場合です)。

 しかし、これが正しい方法なのかはイマイチ謎です。まあ、不具合が出るまではこの方法でやってみましょう。

巨人
 気持ちよく勝ったようですが、用事があったのでゆっくり見られませんでした。かわりにラジコン動かしたりバトン振ったりしていたのは春の陽気が見せた幻でしょうか……?

今日のドールハウス
 本来は煙突だったのですが、煙突を作るのに必要な両面テープが切れていたので、一週先の「屋根」を作りました。ひたすら貼りまくって青灰色を塗るだけという、面倒くさいだけの単純作業です。
 それにしても、なんだか最近家具系を作ってない気がするんですが、まさかもうこれから先、壁やら床しかないんでしょうか……?さすがにあと20号もあるんだから、なんかあるとは思うんですけど。
 まあ、随時報告します。

 

4月5日(金)

Windows XPでWizardry
 ずいぶん大昔に「The Ultimate Wizardry Archives」という、英語版Wizardry I〜VII+Goldがまとまって入ってるソフトを買ったんですが、先日思い立ってWindows XPのコマンドプロンプトで実行したら、動きませんでした(確か、Windows 2000だかでは動いていた記憶が……?Windows 98だったか?)。で、別にあんまりやる気はないのですが、動かないのもシャクなので、DOSが動くエミュレーター「DOSBox」を拾ってきて動かしてみたら、ちゃんと動きました。↓

DOSBoxでWizardry

 小野田は時々発作的にレトロゲームをやりたくなる事があるわけですが、それでクリア出来るのはだいたいアドベンチャーゲームで、RPGはたいてい途中で挫折するんですよね。まあ、マッピングする根性がないのなら昔のRPGなんてやっちゃイカンというところでしょうか。先日も書きましたけど、マッピングって嫌いなんですよね〜……。

上の
 普通のネタっぽく書いてますが、tDiaryのページで画像を貼れるかのテストを兼ねています。

夕焼けの詩
 今週のビックコミックオリジナルに掲載されている西岸良平の「夕焼けの詩」が、なんか、妙に昔のノリで素敵です。「プロフェッショナル列伝」の平成版みたいで。ファンは是非読みましょう。

 

4月4日(木)

トップページで
 緑柱石の全文検索が出来るようにしてみました。Namazu 2.0.10使用。www.onoda-pro.com/black以下にあるhtmlファイル全般を検索対象にしてるので、余計なもんにまで引っかかる場合もありますが、まあ、文章量から言って「小野田洋仁郎の見た夢」のどれかが引っかかる確率が高いでしょう。ただ、「〜見た夢」は月ごとにファイルになっているため、検索ワードをブラウザの検索機能かなんかで再度探す必要があると思いますが。このへんどうにかなりませんかねぇ。

案内
 昨日書いた日記システム「tDiary」での「小野田洋仁郎見た夢」はこちらです。現在テスト運用中ですが、各種機能はすべて動くはずですので、色々試してください(ツッコミくらいしか試すことはないかもしれませんが)。問題が無いようなら、来週頭には移行します。

妖怪カレンダー2001
 今年の頭から部屋にかけっぱなしだった妖怪カレンダー2001を、昨日ようやく外しました。三ヶ月間、2001年11月/12月の絵「新板あんどんうつしかげぼうし」のままだったんですね。さすがにこれは風水的に悪そうなので……(ほとんど風水信じてませんが)。
 しかし、三ヶ月そのままでも気にならなかったということは、ほとんど妖怪カレンダーはカレンダーとして使わなかったってことですねえ。妖怪画ポスター状態。いっそ、日付の部分を切り離して、本当にポスターとして使うのもいいかもしれません。いや、もったいないからやりませんけどね。

 

4月3日(水)

現在
 いわゆる日記システムをテスト中です。以前にも色々と試したんですが、外観が気にくわなかったり、そもそもonoda-proのあるサーバーで動かなかったりと問題があり、結局今の、手で入力する形に落ち着いていたのでした。
 今試しているのはtDiaryというRubyで書かれた日記システムで、日ごとに読者がツッコミ(コメント)を入れられるのが特徴です(それ以外にも、テーマで外観を変えられたり、プラグインで機能を拡張できたりと、多機能です)。今のところ日記の検索に問題があったりするんで、しばらくテストをして、大丈夫なようなら移行する予定です。

onoda-pro
 の、サービス継続料21000円(年間)が引き落とされてました。忘れてなかったのか、さくらインターネット……。
 ともあれ、これでまた一年はwww.onoda-pro.comが有効なんで、今後ともよろしくお願いします。

巨人
 なんとか苦しみつつも勝ちました。原監督もこれで一安心でしょう。あとは松井がホームラン打ってくれればいいんですけど。明日以降に期待ですね。

 

4月2日(火)

ほんまもん
 そういえば先週末に、このページで事あるごとにこき下ろしてきたNHKの連続テレビ小説「ほんまもん」が終わったんですが、書くの忘れてました。どうでもよすぎて。
 なんというか、よくあるインチキ料理漫画の最終回みたいな「××の料理への挑戦は、まだ始まったばかりだ!」みたいな終わり方でしたね。なんか、もう、最高に最低でした。
 今週頭から新しい連続テレビ小説「さくら」をやっていますが、今のところまだどうとも言えないですね。ただ、ヒロインは好みじゃないなあ、ってのはありますが。ま、あたたかい目のつもりで見守ります。

BLACK DIAMOND講座3「変数と条件分岐」
 第三回です。当初は画像の重ね合わせなどをやる予定でしたが、まずは手っ取り早くゲームを作るためには今回解説する内容が必須なので、繰り上げました。


 第三回は、変数と条件分岐について説明します。プログラムを知っている方であれば説明するまでもないのですが、変数というのは、数字や文字列が入る「箱」のようなもので、その箱の中に数字を入れたり、取り出したり、数字の比較などをしたりできます。
 まあ、言葉で解説するよりも見た方が早いと思うので、以下のスクリプトを見てください。


>見る
*IF F(0)=1 LOOK2         ←2
 とりあえず見てみました。
*F(0)=1                ←1
*END

*LABEL LOOK2          ←3
 あなたは二回見ましたね。
*GOTO LOOK2B          ←4
*END

*LABEL LOOK2B
 アドベンチャーゲームでは二回見るのは基本ですね。

 

  1. 変数への代入と演算
     F(0)という名前の変数に1を代入しています。 F(0)というのは「整数を入れることの出来る箱のゼロ番目(パソコンでは一般的に数字はゼロから数えます)」をあらわします。BLACK DIAMONDでは、この、整数を入れられる箱のことを「フラグ変数」と呼びます。たとえば「*F(18)=25」は「フラグ変数の18番に25という数字を入れる」という風に読めます。フラグ変数は512個(F(0)〜F(511)まで)あり、ゲームを作る人が自由に使うことが出来ます。
     この例では、一回「見る」と入力されたときに「とりあえず見てみました」と表示され、F(0)に1を代入(数字を入れること)しています。これは、「一回見た」という事をF(0)に1を入れることであらわしているわけです(別にこの例であれば、代入するのは1ではなく100でも256でもなんでもいいんですが……それについては二番目の項目で解説します)。

     また、このフラグ変数に対して、様々な演算を行うことが出来ます。たとえば、

    *F(0)+=5

     とすると、0番のフラグ変数に5を加算できます。同様に「*F(0)-=3」だと、3を減算します。加減算だけでなく、四則演算がすべて可能です。

    *F(0)=1
    *F(0)+=3
    *F(0)*=2
    *F(0)-=4

     これは、(1+3)*2-4をあらわし、*F(0)には4が入ります。また、四則演算の他に論理演算も出来るので、プログラムを知っている方はBLACK DIAMONDの制作マニュアルを参照してください。

     また、フラグ変数にフラグ変数を代入することも可能です。たとえば、

    *F(0)=10
    *F(1)=F(0)
    *F(1)+=4

     とすると、まずF(0)に10が代入され、そのあとにF(1)にF(0)の値(つまり10)が代入され、さらにF(1)に4を加算しているので、F(1)は最終的に14になります。F(0)は10のままです。

     フラグ変数の他に、文字列変数とアイテム変数がありますが、一気に説明すると混乱しそうですので、今回はフラグ変数の説明だけにとどめておきます。よく仕組みを理解しておいてください。
     
  2. 条件分岐
     さて、フラグ変数などというものに数字を格納して、どんないいことがあるんだ?と思われた方もいるのではないでしょうか。もちろん、フラグ変数の中の数字は使われなければ意味がありません。この項目では、その使い方を解説します。この項目2は、

    *IF F(0)=1 LOOK2

     という記述になっていますが、これは「もし」「F(0)に入っている数字が1だったら」「ラベルLOOK2に飛べ」と、読めます。ここで耳慣れない「ラベル」というものが現れました。ラベルとは、スクリプト内での位置を示すもので、スクリプト中の項目3「*LABEL LOOK2」が、「ラベルLOOK2」に相当します。
     要は、この例ではF(0)の中身が1だったら「*IF F(0)=1 LOOK2」の次以降の行の処理は無視して、「*LABEL LOOK2」以降の行に処理を移せ、ということになるわけです。そのため、F(0)が1の場合は「とりあえず見てみました。」とは表示されず、「*LABEL LOOK2」以降の「あなたは二回見ましたね。」が表示されます。当然、F(0)が1以外の場合は「とりあえず見てみました。」と表示され、その次の行の「*F(0)=1」(F(0)に1を入れる)が処理されてから「*END」でスクリプトの解釈が終了するため、次に「見る」としたときには、この「*IF F(0)=1 LOOK2」の条件が成り立ち、「あなたは二回見ましたね。」が表示されます(よくわからない場合は、上から一行ずつ解釈しながら何度かスクリプトを読んでみてください)。

     また、この例では項目1の部分を「*F(0)=150」とし、項目2の部分を「*IF F(0)=150 LOOK2」とすれば、結果的には同じ動きになります。つまり、変数の中身の数字の意味づけは制作者が自由に行うわけです(通常は、脈絡のない150などという数字よりは、「1回見た」ということを表すために1を入れておくべきでしょう)。

     このIF文では、数字の一致の他に、不一致や大きいとき、小さいときなどの条件判断が出来ます。たとえば

    *IF F(3)>10 OVER10

     の場合、F(3)の中の数字が10より大きければラベルOVER10に飛びます。また、数字の部分(「10」の部分)を変数にすることも出来ます(変数と変数の比較ですね)。このほかにどんな条件判断が出来るのかについては、BLACK DIAMONDの制作マニュアルを参照してください。

     ちなみに、条件分岐の部分(「F(3)>10」など)にはスペースなどを入れないようにしてください。マトモに判断しなくなります(手抜きです)。
     
  3. ラベル
    「*LABEL ラベル名」という書式で、ラベルを宣言できます。スクリプトの解釈中にこの文を見つけても、特に何もしません。条件分岐、または分岐によってこの行以降にスクリプトの処理を移すことが出来ます。

     また、以前紹介した「*SCENE シーン名」の「シーン名」も自動的にラベルとして登録されるため、分岐先のラベル名としてシーン名を書くことで、シーンへの分岐が可能です。
     
  4. 分岐
     「*GOTO ラベル名」とすると、強制的に「ラベル名」で示されたラベルに分岐します。つまりこの例ではF(0)が1の時に「あなたは二回見ましたね。」と出たあとに、このGOTO文によりラベル「LOOK2B」に処理が移り、続いて「アドベンチャーゲームでは二回見るのは基本ですね。」と、表示されるわけです。

     上記太文字で解説したように「*GOTO シーン名」でも分岐可能ですので、シーンを移るときなどに、この命令を多用することになるでしょう。

 以上、変数と条件分岐、そして普通の分岐について解説しました。この部分はBLACK DIAMONDで、もっともややこしい部分ですので、頑張って理解してください。この部分を乗り越えれば、あとは楽なもんです。
 このほか、文字列変数や、変数のアクロバティックな使用方法(IFを使わずに、GOTOと変数の代入だけで条件分岐する、など)については、講座の後半で解説します。

 ともあれ、これでほとんどのアドベンチャーゲームは作れるようになるはずです。最後に具体例を挙げておきましょう。


*SCENE SOTO
*IF F(14)=2 SOTO_KOUGEKI
*PICTURE mori
*END

*LABEL SOTO_KOUGEKI
*PICTURE morimoe
*SE kugeki
 すでに攻撃が始まったようです!
 

 フラグ変数14番は「森が燃えているかどうか」のフラグです。シーン「SOTO」が処理されたときにF(14)が2以外の場合は通常の森(mori)が表示され、F(14)が2の場合は、燃えている森(morimoe)が表示され、SEが鳴り「すでに攻撃が始まったようです!」というテキストが表示されます。
 このように、いくつもの変数を用意し、それぞれに制作者が意味を持たせて代入、演算、条件分岐で使用することで、複雑なゲームが作られているわけです。BLACK DIAMONDで制作したゲーム「宇宙」では、19個のフラグ変数によりゲームを処理しました。
 皆さんも変数と条件分岐を使いこなして、面白いゲームを作ってくださいね!


 なんか唐突に最後だけゲーム講座みたいになってますが、まあこんなもんで。ややっこしい部分なので、やっぱりややっこしくなりました。ごめんなさい。質問などは随時受け付けておりますので、気軽にBLACK DIAMOND掲示板、またはメールにて連絡くださいね。

 

4月1日(月)

エイプリルフール
 今日はエイプリルフールなので、0時よりトップページをこんなページにしてました。当初は架空のネットアイドルのページにしようと思ってたんですが、時間が足りなかったので、イラスト一枚でごまかしました。だまされたというか、なんか、笑ってくれた人はいるんでしょうか……。毎年無反応なんで、寂しいんですけど。

歴代エイプリルフール企画
 実は毎年(っても今年で三年目)変なことをやっているので、ここで一挙にリンクを張ってみます。

 ひとまず、毎年恒例なので来年もこのページがあったら、なんかやります。お楽しみに。

なんか
 心霊と宇宙人と超能力について論争するという番組をやってましたね。心霊は半ばインチキ(すでに癒しの装置として用をなしていない現代では、そう言うしか……)、宇宙人はほとんどギャグ、超能力は半分インチキで半分ホント、という感じでした。なんか、2012年までに宇宙人に侵略されちゃうらしいので、気をつけましょう。枕の中に大事なものを入れておけば、何かあったときにも枕抱えて逃げればいいので便利ですヨ。

よみきりもの2
 竹本泉の新刊がこないだ出ていたので買いました。なんか、年々この作者の作品にはオチ(というかスジというか)が無くなっていくような気がしてなりません。とりあえず、変なキャラと設定を作って、それを紹介して終わり、という作品作りに、さらに磨きがかかっている感じです。まあ、息抜きにちょうどいいので、こういう作家さんも貴重です。ハイ。

 

↓トップページがエイプリルフール企画で差し変わっていた時の4/1の項目。

エイプリルフールなので
 現在、トップページがこんな事になってます。多分BLACK DIAMOND Version 0.36関係で飛んできた初めての人も多いので、今ひとつシャレになりきってない気もしますが(いつもの、背景真っ黒のページを知らないと、それほど派手に違和感を感じないはず)、ま、それはそれで。次回更新時に、歴代のエイプリルフール企画でも紹介します。

 


2002年[1月][2月][3月]
2001年[1月][2月][3月][4月][5月][6月][7月][8月][9月][10月][11月][12月]
99年[8月][9月][10月][11月][12月] 2000年[1月][2月][3月][4月][5月][6月][7月][8月][9月][10月][11月][12月]

Back to Top.