2005年9月の日記

<2005年10月 2005年08月>

残念無念

チャット、時間切れ強制退室の処理を改良しました。
以前のものだと二人以上が同時に時間切れになると一人ずつしか退室できませんでしたが、今回はその不具合も解消されています。

今日はミディビの開発でもしようと思ったのですが、Luna3はJavaアプレットを使っていると結構頻繁にフリーズするのでその対処で開発が全く進みませんでした。

マップエディタを作ろう

ふにゃさんのミスターフレームのグラフィックが本家のふにゃについてきていなかったので修正しました。

爆ボンのマップ作成ツールのための画像を一日掛けて用意していました。
そして、これから3Dマップエディタを作る予定です。

設定ミスだった

ふにゃさん、MIDIも鳴らせるようになりました。
なんのことはない。自分でライブラリのMIDI再生機能を使わない設定にしたのを自分で忘れていただけでした。
それで、無事MIDIも鳴らせるようになったのですが、今度は一部のMP3に問題が出てしまいました。
サウンドのストリーム再生を使うと、一部のMP3の場合、延々と後半部分を中途半端に再生し続けるのです。
ストリーム再生をやめれば正しく再生されるのですが、そうするとBGMに使うほどの巨大な音声ファイルを丸々メモリに読み込んでしまうことになり、動作が果てしなく不安定になってしまいます。

爆ボンのマップを作るのが結構大変なので、マップ作成ツールを作ろうと考えて、マップの下地となる枠を作って。

MIDIが鳴らない

ふにゃさん、BGMが鳴るようになりました!
ライブラリ側が結構しっかりしてるので結構いろんなファイル形式で使えたりするのですが、なぜか唯一MIDIだけがならなかったりします。

名前と場所

というわけでBGMの実装中です。
BGM.datを読んで、「BGM名 "ファイル名" 必要と有らばその他の情報」という形式で一行ごとにデータが入っていて、BGM名とファイル名があった場合はそのBGMが有効になります。
一応音声データもBGMに使えるようにするつもりですが、基本はMIDIだと思います。
もし読み込めなくてもライブラリ側が結構しっかりしてるので大丈夫だとは思いますが。

番号と名前

RPG±0にはRPGツクールのオートタイルは使わないことにしました。
最大の理由は、作り方がわからない&面倒くさいということだけれど、ほかにも、実際のところエンターブレインが特許を取っているかもしれないし、そうでなくてもあからさまに方法をパクっているもあるので。
あと、RPG±0ではいろんなものに名前をつけることができます。
例えばイベントに名前をつけたり、キャラクタチップに名前をつけたり、サウンドに名前をつけたり、敵パーティにまで名前を付けられたりします。
デフォルトネームは通し番号と同じものをつけます。

ふにゃさんのBGMは、パネルγのときのように色々面白い仕掛けを入れようと思っていたのですが、いや、今も入れるつもりですが、ゲームプレイ中にBGMを切ったりユーザーが自由に変えられるBGMに切り替えたりできるようにするつもりなので、切り替えたそのときにどのBGMが再生されているかを保持しておかなくてはならなくて、結局それはBGM番号であり、どっちみちBGMは番号で管理することになりそうです。
そりゃ番号をつけるということ自体はパネルγでも同じことですが、こちらはゲーム本体ではサウンド管理クラスにパネルが消えたとか今ピンチだとか、そういうことを通知してサウンド管理クラス側で番号を決めていたのですが、ふにゃさんの場合はそれを通知する側で決めてやら無ければならないということです。
そうなればユーザー指定のBGMとも互換性を図るためBGMはある程度決まった簡単な方式で作らなければならないので、あんまり特殊なことはできなくなるのです。

地道な作業の続き

というわけで、高速化に成功しました!
今までキャラの出しすぎで処理落ちしていたステージが処理落ちなし!
さらに副産物で、敵キャラクターの描画順序が一定になることで、場所によって敵の前後関係が変わるようなこともなくなりました。
ついでにふにゃのしゃがみ&歩きの処理も作ってしまました。
本当は前にも言ったようにデジタルな動きにしたかったのですが、アホなギヤバネが、ふにゃがしゃがんでいるかどうかが分からなくて、無理に弾き飛ばそうとしちゃったりするので、仕方なくそれに合わせた仕様にすることになりました。
ただ、普通に走っている状態からしゃがむとほぼ瞬時に止まりますし、歩きもほぼ一定速、ギヤバネに吹っ飛ばされても踏ん張るためほとんど動きません。
そうそう、今回は、しゃがみがジャンプのキャンセルも兼ねていたりしますよ。

オブジェクト指向とグループ分け

オブジェクト指向といったら何をオブジェクトにするかが大事なんです。
例えば、名簿クラスのメンバの各個人の名前はstring型を使うかCNameを作るかという問題など。
どの程度までクラスとしてまとめるか、分けるか、というので結構痛い目にあってるから使う必然性がない限りはあまりオブジェクト指向でやりたくないんですよね。
ええ、痛い目にあいました。ふにゃさんで。
分け方を誤った…。もっと細かく分けるべきでした。
派生クラスを作るときに余計なクラスをはさむべきじゃなかったんです。
実は、他のゲームでならこれでもよかったのですが、今回は違いました。
主人公にとって敵とアイテムの間に本質的な違いはないし、敵にとって他の敵と主人公の区別は無いんです。
仕事を語るのに白人も黒人も無いようなものですね。
今の仕様では主人公・敵・アイテム、という3人種がいて、それぞれで主人公は主人公で一まとめ、敵は敵で一まとめ、アイテムはアイテムで一まとめにしていたのですけれども、例えばですね。ウナギカズラというキャラ、主人公のふにゃと敵のミスターフレームは乗せるけど、敵のとげとげとギヤバネは食べてしまいます。
ギヤバネは他のギヤバネとぶつかって吹っ飛にますし、アイテムのバナナは主人公グループと、敵グループのミスターフレームに食われます。
だけど、ミスターフレームはめったに登場しません。つまり、敵の中からミスターフレームを探す作業は果てしなく無駄が多いのです。
これを、とげとげならとげとげだけのグループ、ウナギカズラならウナギカズラだけのグループを作れば、効率はかなり上がるはずです。
例えば、とげとげはウナギカズラを無視するからとげとげがウナギカズラを見る時間をそっくりカットできるというわけです。これで沢山敵が出たときの処理落ちが軽減されます。
バナナとかは主人公とミスターフレームしか見てないからバナナが多くて関係ない敵が多いとめちゃくちゃ無駄な時間が使われていたわけです。
しかし、こうして分けても、場合によっては全部を統一的に扱わねばならないときもあるので、結局は混在することになりそうですが、今の問題は、マップキャラと、例えばギヤバネの間に、敵キャラという分類を設けたことによる中途半端さによるものなので、いっそのこと全部か各個かのどちらかにしてしまえば問題はなくなるのです。
そもそも、敵キャラと味方キャラとアイテムの区別すら曖昧だったんですよね…。そもそも似たもの同士でグループ分けできるものじゃなかったんです。
しかし…変更は地道な作業になりそうです…。

うなぎ完成

LineConstructorアップしました。
おそらくつけ忘れの機能も無いはずだし、これでおそらく完成版になるものと思われます。

Lunascape3インストールしました。
インターフェースはまあまあ改善されているようです。
そのほかは別によくなったとか悪くなったとかは実感できず。

ふにゃさん、ウナギカズラが完成しました。
風などがゲームに実装されていないのでその点はまだなのですが、まあ現状ではこれ以上できることがないので。

1127399889.png

メテオスの強さ

今日は爆ボンのレインボーパレスのマップを引き続き。
レインボーパレス3面のフルパワー全ブロック破壊マップ切り替え無しでのクリアに成功しました。
後日攻略ページに掲載します。

LineConstructorに検索を実装しました。
結局ショートカットキーは思いつかなかったので1・2・3にしてしまいました。
明日にでもアップします。

メテオスやってます。
弱いメテオスも難しさ5になれば圧倒的、でも無いけど強いです。
何しろ難しさに関わらずカタマリの落下が遅いのです。
難しさ5でも上まで積みあがってからそこそこ耐えますし、時々大きく飛ぶのでそのときに点火の素材が沢山出てきます。

凶暴化

爆ボンの攻略で検索してくる人が多いなと思って自分でも検索してみてビックリ!
検索で出てきたのは500件以上、そのうち上位50サイトを見てみたのですが、まともな攻略サイトが一つも無い!!
ひどい!ひどい!!いくらなんでもひどすぎる!!!爆ボンに対する冒涜だ!!!!
そんなわけで、これから私は本格的な爆ボン攻略ページを作ります。
既に計画は始まっています。需要の最もありそうなレインボーパレスのマップを一つ作成しました。
ゲーム記のところから見てみましょう。

さて、ふにゃさんにもウナギカズラが登場して、そろそろ本格的に活動開始らしいのでちょっと覗いてみましょう。
・・・・・・・・
ああっ!なんということでしょう!激しく!激しく凶暴化しています!
共食い!共食いです!共食いをしています!!仲間だというのに罪の意識は無いのでしょうか!およそ人間のすることとは…あっ、そうでした人間じゃないんでした。
ご覧ください!他の生物も!…信じられない。およそ生物が食せるとは思えない硬い鋼鉄の機械を食らい、成長を続けています!
危ない!主人公のふにゃが近づいて…あれ、何も起こりません。何事も無かったようにふにゃはウナギカズラの上を走り、ウナギカズラは何もしません。…歯ごたえが無いからなのでしょうか。
とにかく、今はとてもお見せできるような状況ではありません。

長期戦

ウナギカズラ作ってました。
種が蒔かれて芽が吹いて成長するところまでできました。
細かい仕様は昨日の日記に書いてありますので。

メテオス、さすがにレベル5むずかしさ1だと全くといっていいほどブレイクしません。
ブビットでオレアナと対戦していたのですが、倒すのに21'11"53もかかってしまいました。
お互いメテオは全く飛ばないのにブレイクまでの猶予時間だけはあるのでひたすら点火で時間稼ぎ。
取得メテオ14723個、得点1,643,540点。

ちびロボ!ですが、どうもファンキーちゃんを逝かせてあげないとイベントが進まない模様。

今日の絵はBomber丸Worldより昴夏樹。
ハットを脱ぐと頭には花が生えていたりします。

1127140717.gif

ウナギカズラ

ウナギカズラ作ってました。
今回はふにゃふにゃのときと同じく氷の息による攻撃ができますので、凍ったバージョンも作っています。
まず、ウナギカズラは、植物なので、最初は種です。
そして、種は地面に蒔かれます。
何はともあれさっさと出てこないとゲームにならないのでいきなりウナギカズラとして出てきます。
ウナギカズラは他のウナギカズラの種を食べることにより成長します。
成長すると大きく背が高くなります。
つまり、ステージ作成時に基礎となるウナギカズラを置いておき、その上に餌となるウナギカズラの種を用意しておくことで好きな大きさに調整できるわけです。
一度成長したウナギカズラは氷の息でやられて種から出直しになっても元の大きさに戻ります。
餌を食べなおす必要はないのです。
その代わり、氷の息にやられた後の種はすぐには芽吹かないのです。
そうすることにより、成長するウナギカズラをあたかもエレベータのように利用してより高い場所へ移動することができるのです。
ちなみに、ウナギカズラは場外に落ちても芽吹く性質を持っていたりします。
そして、他の敵キャラクターと同じく、とげ類のダメージマスの影響を受けないので、地面の上にいかにも危なそうなとげ類を置いて、ウナギカズラしか足場にできないようなステージも作れたりするわけですこれが。
そうそう、風の影響で傾いたりもします。
おまけに地面のように乗ることができてもやっぱり地面じゃないので色々操作感が違ったりします。

重くなる

ふにゃさん、各自でBGMを用意するタイプはCBGMLoaderでさらっと書いちゃおうかな~などと思っていたのですが、強制的にループしたり存在しないファイルに対する動作がよくわからなかったりするので使用は控えることにして、その基底クラスであるCLoadCacheとファイル解析のCLineParser、CSound、あと存在するBGMとかいろいろデータのためSTLのmapなどを使って実装してみようと目論んでいます。
そひて、色々仕掛けを入れようと考えている標準BGMのほうは、曲の進行に合わせて効果音とかの音程を変更するようにしてみようかと思ったのですが、それをDirectMusicProducerのデータで実現しようとしてソフトを起動して色々調べていたら、どうもどうにも私の考えていたのとは違っていたような違っていないような、とどのつまりは余計に分からなくなって、少々挫折気味なんですが、やろうと思えばプログラムで無理矢理、ということもできなくはないだろうし、そもそもやらなくたってゲーム進行には別に関係ないわけだし、とりあえずDirectMusicProducerのセグメントのパターン切り替えはマスターしているつもりだし、何とかなるだろうしならなくてもよいわけで、結局BGMそのものができていなければBGMに特殊効果をつけるなんてできるわけがありませんので、やっぱり原点回帰で普通にMIDI作るのが無難かと思っていたりするわけです。

う~む、localtimeとかで得たデータをまた秒数に直すにはmktimeか…。
となればもう試行錯誤しながら目的の時間を探す必要はないわけで…。
うん、よさそうだ。
これを使うと以前のデータは壊れてしまうみたいだけど、コピーを持っておけば何の問題も無いというわけで。

ナマライザ読み込みできるようになりました。
エクスプローラからドラッグ&ドロップで読み込めます。
一括して沢山のファイルを読めます。
重いです。激しく重いです。さすがナマライザです。他のソフトも巻き添えで重くなります。メモリ食いすぎです。
あんまり重いので、強制終了できるようにしておきました。
ログ読み込みは基本的に中断できないんですよ。ログ解析は中断可能ですが。

カカシの歌

引き続き時のオカリナやってます。
今森の神殿です。クリアしましたがリセットしました。
それで、ボヌールにどの曲を覚えさせようかと考えていたのですが、風のタクトの来年の儀式の曲を覚えさせることにしました。
オカリナ譜も載せていますよ。
時のオカリナで演奏しやすいように移調してあります。

なんとかふにゃさんのミスターフレームの画像も作成中…。

1126879344.png

ノリ突っ込み

チャットの人工無能の動作を変更しました。
完全一致辞書というのを正規表現によりキーワードを登録する曖昧辞書とは別に作っていたのですが、正規表現を使うことにより曖昧辞書と統合することにしたのです。
そして、もうひとつ作ろうと思っているのがあって、それは自己反応辞書。
つまり、自分の言ったことに対して、自分で突っ込みを入れるためのデータです。
これによりノリ突っ込みなどのより高度な人間的動作を…って、高度なのか?!
ちなみに、今のアルニックのレベルは21ですが、参考までに他の人工無能を同じ方法で測ると、ゆいぼっとがレベル26、うずらがレベル99をはるかに超える経験値。
もっとも、数値が大きくてどうなるものでもないし、動作原理が違えば内容が同じでも値が違ったりするのであまり当てにならなかったりもしますが。

ふにゃさんのウナギカズラを描き終えました。
昨日のから、光と影を調整しただけです。
こいつもギヤバネと同様、敵として登場しながらも直接的な害は無く、というより、道をふさいでいるだけのキャラとしてさえ役立たずの人畜無害なキャラクターです。
氷の息により倒せますが、しばらくするとまた復活しています。
BGMについてですが、今回は自由にBGMを設定できるモードを先に実装しようと考えています。
ええ、BGMそのものがなかなかできないから…。

1126789806.gif

延期

今日はものすごく久しぶりにマリオゴルフ64をやりました。
いやー。ゲーム内容はもう既に9割方忘れていたんですが、思い出す必要が無いくらい簡単ですね~。
昔のプレイを見られるメモリアルホールというモードがあるのですが、それでルイージのホールインワンを見ただけで操作方法を理解しました。
このころのルイージはよかったなぁ。ドジやるときもさり気ない。
オープニングムービーでは主役がルイージになってしまったかのような勢いがあります。
ヨッシーの声もよかった。

そして、ゼルダの伝説時のオカリナを突然始めました。
名前は「まだねむいのに」。
「よく来た。まだねむいのに。」とか言われちゃいます。
でも、よく考えたら「もうねむいけど」のほうが面白い名前だったかな、と思います。

ラインコンストラクタ、アップしました。
ショートカットキーを考えるのがそろそろ大変になってきたので、検索は付けられなくなりました。
ショートカットキーを思いつき次第バージョンアップしようと思います。

ふにゃさん、10月1日に公開する予定でしたが、このペースだととても充分なクオリティで提供することができないと考え、公開を延期することにしました。
とはいえ、無期延期すると、ありがちなパターンでいつまで経っても完成しなくなってしまいそうなので、3ヶ月伸ばして、1月1日に公開することにしました。
とにかく、ステージデータを用意するのとBGM&隠し機能をつけるのが結構大仕事なので、こいつらを集中攻撃します(攻撃?)。
一応、今日はウナギカズラほぼ完成形ができました。

1126708154.gif

ラインコンストラクタ完成!?

LineConstructor完成しました。
VBの命令のInputBoxだとPaintイベントが呼び出されないからInputBoxと同じ機能を自前で作って(うちで配布しているInputBoxExね)、OCXのコモンダイアログコントロールだと同じく再描画されなくてAPIを使って直接呼び出して、指定したフラグがおかしなことになって瞬時に終了されたりして、いろいろあったようななかったようなで、必要な機能は全て揃いました。
行ごとの編集、並び替え、追加削除、あっ検索が無かった!
とにかく、明日検索を追加してドキュメントを付属してアイコンを作ってアップします。
うわー。紹介ページもまだだぁ。

爆ボンのMIDI、一応聞けるようにだけはして置きました。
でも、実際のところ、聞かれたくはないのだけれど…。

そして、エアライドのページも更新しました。
各種記録を!

ヒュージィ、負ける

LineConstructorの基本機能があっという間に出来上がりました。
要素の追加・削除・更新はもちろんのこと交換・並び替え・シャッフルも用意して、ファイル入出力もほぼ出来上がり、あとは細かいところを調整したら完成です。
配色はウィンドウズの設定をそのまま使用するので基本的にユーザーの好きな配色で使えます。

ヒュージィのMIDI追加しました。
打ち上げまくったけど結局滅亡しちゃったバージョン。

ふにゃさんのウナギカズラの絵を描いていました。
でも意外となかなか難しいものです。

1126536792.gif

LineConstructor

まあ、引き続きアルニックの辞書を拡充。
めでたくレベル19までレベルアップしました。
しかしそろそろ辞書がごちゃごちゃになってわかりにくくなってきたので整理のためにデータを五十音順に並べるため、行ごとにさまざまな操作をするLineConstructorの開発を始めました。
しかし、それを実現するにはVBに最初から入っている配列操作では貧弱すぎたので、独自に勝手に配列処理を作ることにし、結構他でも使えそうな気がしたので、ライブラリとして作ってみようかなと思ったり。
エラーが出ないという欠点があったりもしますが、サイズが0(ということになっている)の配列も作れたりして、それなりに便利にはなっているような気がします。
あと、Push、Pop、Shift、Unshift、Spliceなどの操作も当然実現、シャッフルしたりランダムな要素を取り出したりもできる…ようにする予定です。

ふにゃさん、愛夢の代わりにウナギカズラを出すことにしたのでこれから絵を描くことにします。

1126362698.gif

The Game was Over!!

ふにゃさん、ミスして残り数が減ってゲームオーバーになってカウントダウンされてコンティニューするか否かを選べるようになりました。
ゲームオーバーの条件、1にならって残り人数が0になった瞬間ゲームオーバーにするか多くのゲームで採用されている残り人数0のときにミスするとゲームオーバーになるようにするか考えていたのですが、結局1のときに倣って残り1のときにミスするとゲームオーバーになるようにしました。
例によって例の如くエディタのほうで対応が遅れているため残り人数が4人固定だったりするのですが。
ゲームオーバーのときのカウントダウンはそこらによくあるゲームに倣って10秒としていますが、「Game Over!!」の表示と0秒も含めて、計12秒の猶予となっています。
そして、ギヤバネのグラフィックをマイナーチェンジ。
木目模様を少しだけ変更しました。
そろそろ実際に出すステージも作り始めないとなぁ。

1126277465.png

もっと賢くなあれ!

というわけで今日はアルニックの辞書を拡充していました。
そして賢さの目安として、経験値とレベルを導入。
現在レベル17です。

賢くなあれ!

今日はチャット管理のぼっとの辞書管理を作りました。
これで辞書に単語と応答を追加していくことでどんどん賢くなっていくはずです。
で、ためしにいろいろ入力していったところ、チャット本体のほうでバグ発見。
時間が誤って解釈されていたので修正しました。
現在のアルニックの賢さは7,168ポイント!!

ちなみに、インターフェース面でも改良を加えていたりします。

赤山

チャット管理プログラム作り始めました。
現在はぼっとの辞書を見ることのみできます。
一応形だけ削除フォームと追加フォームが作ってあります。
こればかりは実物を見せるわけにもいかないので画面写真のみ公開しておきます。

調子に乗ってレッドマウンテンの曲まで作ってしまいました。
昨日は爆ボンのブルーリゾートの曲を作っていてあまりの難しさに放棄したのですが、今日は最後まで作りました。
で、やっぱり幸せ気分粉砕。
あまりにひどいデータなので公開していません。

1126015192.png

ブルーリゾート

今日は昨日のあの辞書整理システムを作る予定だったのですが、突然の衝動に駆られ、ブルーリゾートの曲の耳コピを始めてしまいました。
いあ、だって、爆ボンの音楽ってそれくらいいい曲ですもん。
今日爆ボンやってて終わった後にミョ~に幸せな気分になっていたのですよ。
で、耳コピに挑戦してみて幸せな気分粉砕。
ム・ズ・カ・シ・す・ぎ・で・す!

1125929479.mid

奇跡の早業

チャットの人工無能、基本機能がほぼ出揃ったのでアップしました。
まだ辞書がほとんどできていないのでろくな返答はできませんが。
今後は辞書の充実のため、辞書管理プログラムを作ってゆきます。

メテオスのスタートリップの最高難易度をノーミスでクリアできました!
しかし、レベルMAXだというのに、みんなそろいも揃って弱い。
いや、さすがに後半にもなるとなかなか強いのですが、前半、15秒でブレイクといったら、何も操作しなくてもできる芸当じゃありません。
無駄にタイムアクセルを踏み、敵の激烈な攻撃でもない限りはこんな早業は不可能です!
レベルMAXだからこその驕りというものでしょうか。
後半は積みあがるとほぼ瞬殺なのでそこそこ張り合いはあったのですが。

今日の絵は昨日の人カラーバージョン。
少し笑顔です。

1125844986.png

パネルγランキング開始!

パネルγ更新しました!
オンラインスコアランキング開始ですよッ!
参加の前にローカルなランキングで1位を取る必要がありますが、それさえクリアすれば誰でも参加可能です。
ちなみに、他のソフトのランキングは前のアドレスなのですが、新ランキングのほうの変更点が点数受け取りの部分だけなので、表示だけなら前のランキングCGIでもできてしまったりします。
実は、昨日までのアルゴリズムではランキングごとに得られる暗号が全く同じだったため、一番得点の高いデータを使って不正報告できていたのですが、今日ので暗号化のキーをランクごとに分けるようにしたので多分もう大丈夫です。

今日は名もなきキャラの絵。
何かに使いまわすかも。

1125752637.png

ナンバー4まで

パネルγの暗号化アルゴリズムを改良しました。
ランダムにキーを生成していると何度も同じデータで保存するうちに規則性を見抜かれてしまう恐れがあるので、同じ点数には同じ暗号を吐き出すようにしたのです。
そして、受け取り側のCGIも完成。
以前のランキングとの互換性も維持しつつパネルγ方式の新しいデータも受け取ることができるようになりました。
まだセーブに難ありですが暗号・復号処理は大体OKみたいです。

メテオスのヒュージィ曲、4番まで全部作ってみました。
そして、3番までを繋げてみました。
0と1との切り替わりが少し分かりにくいかもしれません。

今日の絵は、白けるコンビ、シャイとカンです。
テキトー落書きと蛙という意味不明な組み合わせです。

1125671739.png

<2005年10月 2005年08月>