2006年9月の日記

<2006年10月 2006年08月>

真に本気なのさ

スクリプト作成講座の記事を書いています。
結構自分でも理解してなくてしどろもどろですが、書いているうちになんとなくわかってきたような気がするので明日ぐらいにはアップできそうな気がします。

Bomber丸Worldのトップページのランダムメッセージを実はこの前こっそりJavaScriptからPHPに入れ替えていたんですが、そのせいでindex.htmlを解析してダウンロードページを自動生成するプログラムに通らなくなってしまっていたので、自動生成プログラムのほうをPHPに対応させておきました。
そして、昨日のバトル2の更なるアレンジ曲を今日作っていました。
テンポを一定にすると結構変わるものですね。
一応このアレンジは大ボス用のアレンジであり、バトル2はザコ・中ボス用です。

1159627509.mid

数値的問題

メモちらしの長さ自動調整アルゴリズムを考えるため計算してたんですが、計算を進めるうちに却ってややこしくなってきて、手が付けられなくなってきました。
いや、式そのものは短いんですが、どうしても勝手に決めた係数が消えてくれないんですよ。
その係数が正しければそのままでも別にかまわないんですが、消えることを前提にして考えていたため当てが外れました。

Bomber丸Worldのバトル2の曲がほぼ完成しました。
なんか、マザー3の影響を色濃く受けている部分があったりなかったりします。
ループ部分の一番最後は、ふにゃふにゃで使うつもりだったボス曲のボツ曲と同じメロディを、その前の部分はふにゃさんのこれまたボツ曲を使っています。
Bomber丸Worldではこうやっていろんな形で昔のボツ曲が姿を表すと思われるのでご覚悟を。じゃなくて、お楽しみに。
開発室のほうにもアップしてますがこっちにもアップしておきました。

1159541722.mid

エラー対応と自動調整について

ナマライザの読み込み処理、これで完成かと思いきや全く正常に動かないプログラムであることが判明!
いえ、まだ実行したわけじゃないですが、簡単なデータを想定してコードを順番にたどっていったら、まだ読み込まれていないデータを処理しようとして、データがないとして、データが丸々残ってるのに次のステップに行って、その次のステップでは次に来るデータが特定の形式であることしか想定していないので、誤った場所のデータでは当然形式が会わなくて、どんどん違うデータを生み出し続ける、ということになってしまっています。
特定のフォーマットのみに対応して高速化を図ろうという考えでしたが、ちょっといくらなんでもデータの狂いに対して弱すぎるようでした。
今の状態だと全く正しく読み込めないばかりか、その正しく読み込めないところを修正したとしても、データそのものに少しエラーがあった場合でも、どんどん誤りを蓄積してそれ以降の全てのデータに悪影響を及ぼすのです。
ログデータは行単位で記録されているので、データの破損があったとしてもそれにより信用できなくなるのは該当する行だけであり、改行コードの一つも出ればそれ以降のデータは正しい可能性が高いのです。
というわけで今後の課題は、データの正しい読み込みと、エラー時の復帰の2つになります。
末端の表示処理はまあ速度さえ気にしなけりゃそれなりに楽にできるでしょう。
データ読み込みのときにも同じことを思っていたような気がしてなりませんが。

メモちらしの改良を考えています。
どうしても粒子の数が増えてくると色々なところで腕が伸びきってしまって扱いにくくなるので、腕が必要以上に伸びないような対策を考えています。
これの根本的な原因は平方根計算をするのを嫌って反発力の算出に距離の二乗に反比例した値ではなく距離に反比例した値を使ってしまったことだったのですが、既にこの仕様で動き出してしまっている以上、この部分は現段階のメモちらしでは変更するわけには行きません。
そこで、対症療法的な考え方ですが、これ以上伸びてもらうと困るという、そういう数値を設定しておいて、腕の長さがその数値を超えている場合は腕の引っ張り強さを上げるのです。
ただ、腕が長すぎる間ひたすら上げっぱなしだと、本当は時間さえかければ規定の長さに戻るのに、その途中であっても規定の長さに達していないというだけで必要以上に腕を引っ張ってしまうので、それが暴走や、縮みすぎという結果を招く可能性が高いです。
それを防ぐには、自動で腕の引っ張り強さを下げることはしないので、とにかく腕の引っ張り強さの上げすぎに注意する必要があります。
腕が長すぎるということは、つまり、腕の引っ張り強さが弱すぎて、反発力に負けているということを意味するので、反発力≧引っ張り力である間だけ引っ張り強さを上げてゆきます。
反発力<引っ張り力となっている間は腕は縮み、腕が縮むと反発力が上がり、引っ張り力は弱まります。
引っ張り強さが足りない場合、腕の長さが規定に達する前に再び反発力≧引っ張り力になるため、改めて引っ張り強さを上げてやります。
これを規定の長さになるまで続けてやれば、おおよそ規定の長さよりも少し短いところで腕は縮み終わるはずです。
縮みすぎたところがあれば、まあ、それを編集するのは長すぎの場合よりは簡単なので、手動で調整してもらいましょう。

のんびりしすぎてました。

今日28日だと思ってたのだ。
まあいいや。

のんびりナマライザのファイル読み込みと表示を作ろうとしてたんですが、その前に完成しているべきファイル解析ができていなかったので、今思い出しながら作成中です。

爆ボンのカスタムパーツのページを独立させました。
他にもいくつか更新してます。
ドラクエ8のエンディングの話とか。

Lunascape2.6.5

Lunascapeのバージョンが2.6.5になっていたのでインストールしました。
わかりやすいところでの2.5との最大の違いはタブに閉じるボタンがついたことです。
これにもまあ良し悪しはあって、簡単にわかりやすく閉じられる反面、そのタブを単に選ぼうとしてクリックしたところが運悪く閉じるボタンだったりすると予期せず閉じられてしまうことがあるのです。
最終的に慣れの問題だとは思うのですが。

TGscriptの吹き出しのデザインを作っていました。
今回ただ掲示板の記事に使うだけでなく色々な用途に使いたいので拡張性と可搬性を持たせて一つの関数にしてしまいました。
あと、ついでにアイコンもいくつか追加したのです。
7つ追加で1つ削除。
削除された1つは、システムアイコンとしての役割を持たせます。

15000

やぁ、あっさりカウンター15000回りましたね。
だからって別に何の特典もありませんが。

掲示板。TGBBSの開発をスタートしました。
いえ、TGscriptの共通設定を作っているところです。
ひとまずアイコンの設定が一段落着いたところなんです。

FrieveさんとこのFaleal Story、キーボードで動かすと画面表示が著しくずれるため、WindowsXPでは動かないものだとずっと思っていたのですが、マウス操作のみでプレイすると問題なく動かすことができたので久々に一気にクリアしてしまいました。
データがわかりやすい形式で記録されてたおかげで過去の自分に改造されまくりで法外な退職金が出されたりロプティーバニーキックが最強攻撃になっちゃったり、Frieveドラゴンより強い蟹がデスの書を持って転げ落ちてきたり、お城の中で唐突に甲殻寄生獣が現れたり、ハチャメチャな旅路となってしまいました。

リセットさん

今日は爆ボンのバトルステージのことでも書いてみようかと思ったのですが7割方書いたところで突然パソコンが再起動されてしまい、文章が消失してしまいました。
再起動後書き直そうとしてエディタを開いたのですがやる気が減退してしまい、結局何もせず終わりました。

メモちらしを少し改良しました。
どことも繋がっていない粒子が動いてしまうとどこにも繋げないうちにどこかへ飛んでいってしまうことがあったので、どことも繋がっていない粒子は動かさないようにしたのです。
ただ、現在位置の座標を更新しないだけでかかっている力やそれから算出される速度の値は時々刻々変化しているので、どこかに繋げた瞬間内部的に持っていた速度でいきなり動き出すのが問題ではあります。
だったら速度の値を0にすればいいとも考えられるのですが、前回の速度の値と現在の力の値などが多少複雑に結びついていたりするのでそう簡単に変えられないのですよ。
このあたりをきっちり書き直せばアップできそうではあります。

昨日の日記で日記プログラムはCGIとPHPに分かれていることを書きましたが、実は今このCGIで動いている部分がCGIでなければならない理由は全くなく、むしろ一部のPHPとの動作の違いで同じはずのアドレスが別物にされたりしてうまくブラウザのキャッシュが使えず表示に必要以上の時間がかかるという不都合だけがあるのです。
そういえば日記の削除機能が未実装だったので公開前にはその点も改善しなきゃいけませんね。

マウスの調子が悪い

最近涼しくなってきましたね。
また冬が近付いてきたようです。

そういえば最近マウスの調子が悪いです。
クリックした瞬間とか手を離した瞬間にポイント位置がずれるのは買ったときからでしたが、最近はホイールを上向きに回した瞬間下に向かって勢いよくスクロールすることが多くなってきて困り者です。

そうそう、見ているユーザーには全然関係ありませんが日記の編集フォームを改良しました。
カテゴリ画面はどうしても場所をとるので他のフォームより横幅を広く取ってスクロールが少なくてもいいようにしたほか、ジャンル名の途中で行が折り返されたりすると非常に見つけづらくなるので、ジャンル名の途中では折り返さないようにしました。
そういえば昔日記プログラムを配布しようとしたことがあったのですがあまりに配布しにくい形式だったので断念したのでした。
書き込みはCGI、閲覧はPHPと分かれているのが問題なんですよ。
全部PHPで書き直したら配布できるようになるかな…。
ん、編集画面をJavaScriptでもっと改良できそうな気がしてきた!

月狐うどん

スーパーでうどんと油揚げを買ってきて家にある卵とあわせて月狐うどんにしてみました。
なんか適当に思いつくままあわせてみたにしては意外とおいしいもんでした。
これでレバニラ炒めもあればいうことなしだったのに。

スクリプト作成のページを1ヶ月ぶりに更新しました。
ここの説明は少し難儀しそうだったので延ばし延ばしになってしまっていましたがこれは来年までにはある程度まで作っておきたい部分なので取り急ぎ作ってみました。

爆ボンページリニューアル

とりあえずバトルモードのページを形だけ用意して新バージョンを公開しました。
一応1面のさいしょのバトルだけはきっちり書いてます。
今後はバトルモードの解説の充実と共に、操作説明の足りない部分の補完に、ストーリーモードの加筆に、シリウスセリフ集の完成に、隠し要素のまとめページに、トップページに書いてあるコンテンツの別ページへの分離に、ってやることが結構多いじゃないか。

真に本気なのさ

爆ボンのページを少しリニューアル中です。
大規模に変えるのではなくて、トップページを少し整理しようと思ったのです。
それに伴い、バトルモードのページも設けて、その他諸々の情報にも専用のページをつけようと思っています。

Bomber丸Worldのバトル2の曲を作っています。
これはザコ戦用の曲なのですが、割と真面目なタイプの敵に使われるので、結構真剣な感じの曲になっています。
今日アップしたのは前半部分ですが、後半部分はテンポを変えて少し雰囲気を変えようと思っています。

1158764335.mid

GROW RPG

とりあえずフリーゲーム全般もPCソフトの範疇に入れるとして…。
http://www.eyezmaze.com/index_jp.html
ここのFlashゲームやってました。
結構前にGROW RPGというのを勧められてやってみたことがあったのですがどうしてもうまくいかなくてしばらくやってませんでした。
最近またやってみる機会に恵まれたので今度はしっかり推理を働かせながらやってみたらなんとかクリアすることができました。
組み合わせのパターンは40720通りにも及ぶのででたらめにやってたらまずクリアはありません。
各パーツの性質を見極めながら推理していくとどのパーツもある特定のタイミングでしか置けないことがわかります(以下ネタバレ)。
森、レベル2まで育てた後海で分断して4ターンで完成。
階段、お城が完成していた場合8ターン目に自動的に完成。
店、8ターン全部かけて完成。ただしレベル4以降になるためにはレベル2以上の森が必要。
岩、階段が完成すると自動的に完成?
宝箱、岩があると自動的に完成。
お城、設置後4ターンで完成。7ターン目終了までに完成させる必要がある。
海、2ターン目以降に設置するとそれだけで完成。
塔、設置後3ターンで完成。

やられそうになったとき助けてくれる兄さんが結構かっこよかったです。

Bomber丸WorldのCBWWindowにOnResizeイベントを追加しました。
これでサイズ変更を検知して正しいレイアウトを保つのです。
それに伴いSetSizeもResizeに名称変更しました。

Bomber丸World関連で色々やってみました

1.HPメーターの形式を考えてみた
今日の画像の分です。
以前考えた形式があまりにも場所をとりすぎていたためサイズを半分にして、更に二人分を同じ行に入れたため事実上4分の1まで省スペース化できて、HPメーターの下にメッセージを表示する十分なスペースをとることができました。
2.基本フォントサイズを決めた
大きくしすぎると全画面や拡大表示のときに不細工だし、小さくしすぎると原寸表示のときに痔がつぶれるし……案外難しいんです。
本当はフォントサイズは2の累乗、特に8または16がプログラム的に都合が良かったのですが、いずれも不適格だったので中間の12にしました。
これで原寸でもそれなりに漢字が表示できるし拡大表示でも大きくなりすぎません。
3.ピアノ曲のBGM作成中
相変わらず出だしに手間取ってます。
ここさえ何とかできれば後は勢いで作ってしまえそうなのですが。
4.CBWWindowを改良
ウィンドウの登録・解除処理がどうにも不細工で手間のかかって少し何が起こるか解らない代物だったので表示ならShow、非表示ならHideで一発でできるようにしました。
更に、ウィンドウが表示されているか、最前面にあってメッセージを受け取れるかなども、簡単にわかるようになりました。
5.文字列メニューウィンドウを作りたい
つまり、いくつかの選択肢の中から選ぶというクラスを簡単に作れるように、ただのCBWWindowだったら自由度の代わりに作るのが少し大変だから、用途を絞ってより簡単に気軽に、ということで作ってみたいのです。
6.ギャラリーに日記にあった画像を追加
日記から検索するのも悪くなかったのですが画像は画像でまとめておくのが良いのかなと思いまして。

1158588258.png

ツールのこと

DirectMusicで現在のボリュームなどを得るためにはボリュームチェンジのMIDIメッセージを横取りしてその値を漏らさず見ておけば現在のボリュームは把握できるというわけです。
IDirectMusicToolを使えばそれができるらしいので現在調査中です。
他にも通知イベントを使えばやりたいことが色々できそうな気がしてます。

Bomber丸WorldのページのCBWWindowのページを更新しました。
今日BGMシステムを作ろうと思ってBGM用のウィンドウ作ろうと思ったらCBWWindowの仕様を忘れてしまっていて、取り急ぎ作ったものです。
結局これに時間とられてBGMシステムできなかったんですがね。

実時間のこと

なんとかうまくいきました。
MusicTimeを0にしていたのがまずかったようです。
RefTimeを0にすることで即座にメッセージ送信。
ついでに言えばPチャンネルを設定しておけばMIDIメッセージ側でのチャンネルの設定は不要になるみたいです。

コントロールすること

う~む、DirectMusic、コントロールチェンジを送るのが全然うまくいきません。
そもそもPチャンネルというのが曲者で、そしてトラックやらなにやらもSMFとは違っていて、もう何がなんだかわかりません。

そういえばうぃーの値段出ましたねー。
25000円ですってねー。
高いですねー。
まず本体で25000円。
コストパフォーマンスはともかく決して安い買い物ではありません。
やっぱみんなで遊びたいよね。ということでコントローラを4つそろえるためにリモコン&ヌンチャク3800+1800=5600円が追加3つで16800円。
昔のゲームも遊びたいよね。5000ポイント分のプリペイドカード+クラシックコントローラ5000円。
やっぱりクラシックコントローラも4人分集めるために1800*3=5400円。
はじめてのWii買うとリモコン1個つくので実質4800-3811=1000円。
大作の一つぐらいはもっておきたいのでゼルダ6800円。
合計すると、25000+16800+5000+5400+1000+6800=61000円。
プレ捨て3に匹敵しますがな。

そうそう、ボンバーマンの裏技のコンテンツを半分ほど書きました。
他にもいろんなステージのゴール出現条件なんかを書いてました。

ループすること

で、実際やってみました。
とりあえずループの設定だけ。
これは特別難しいことではなかったので、変数名を逆にして全然動かなくなったこと以外はスムーズに進みました。
Bomber丸Worldへの応用も結構すんなりいけるかな…?

できること

DirectMusicで何ができるのかを確認していました。
1.全てのMIDIメッセージを送ることができる
2.ソフトシンセは鳴らない音が多い
3.ボリュームやパンなどのコントロールチェンジによるパラメータは取得できない
4.マスターxxx系は反応が遅い
5.転調ができる
まあ、色々と面倒ですな。
前にサンプル代わりにアップしたDirectMusicとMFCの練習プログラムを改造して色々試しています。

白紙撤回を白紙撤回

2006/06/18(Sun)の日記で書いたことですが、白紙撤回したことをまた白紙撤回しようと思います。
つまり、今日の日記の内容は、その日の日記の、「しかし、です。」より前と同文です。

そうそう、プログラミングコーナーのDirectX7のコーナーも更新しようと考えてます。
いちいちヘルプ立ち上げるのが面倒なんで自分のサイトに必要なことが書いてあればやりやすいんですな。
いっそのことプログラミングコーナー全体をそういうものに変更しちゃおうかしらと考えている今日この頃。

BGMシステム

Bomber丸WorldのBGMシステムを開発中です。
さすがにデータばかり作っていてプログラムができていないのではMEなどの確認ができないので。
実装はDirectMusicを使って色々やろうと考えてます。
パフォーマンス的な問題やMIDIメッセージを送る手順がややこしそうですがなんとかやってみたいです。
とりあえず現状はまだ何もできていません。
まずBGMシステムの中枢となる部分を作って、プログラミングコーナーでやっているスクリプト講座ができたら、それを使ってエフェクト定義ファイルやなんかを作るようにしてみたいと思っています。

ということでマリオさん、ぼくは王子です。

今日はなぜかひたすらスーパーマリオRPGをやっていました。
主にキャラとストーリーの再確認のためで、結構無茶なプレイをしていました。
なんかこう、一気にプレイしてみると、クッパがすごくいいキャラですね。
離れ離れになってしまった部下たちを無理に引き戻そうとせず、今後の人生を応援しているところにクッパの部下への思いを感じます。
自分らの親分を突貫工事の部屋に閉じ込めて延々と武器生産をさせ続けていたどこぞの工場長とは大違いです。
あと、マロの王子宣言がかわいかったり。

掲示板全面リメイク計画

ふにゃさんの操作説明ずいぶんできてきましたよー。
とりあえず基本操作は全て完了です。
走って歩いてジャンプしてバナナ食ってとげに刺さって場外に落ちるところまでできています。
今後はギヤバネなどのいろんなキャラクターの紹介ですよ。

掲示板の全面的なリメイクをしようと考えています。
まだどうするか煮詰まっていないので行動を起こすのはまだ先になりそうですが。

ファイルイメージ

ふにゃさんの操作説明用ステージを作りました。
これはプログラム上で生成される広大なマップで、操作説明の都合で何でも出てきます。
昨日言っていた具体的数値を意識せずにプログラムを組める方法については、どうやって完全で安全な方法にしようかとか、どうやって見た目に美しいコードになるように構成しようかとか、どんなわかりやすい名前をつけたらいいだろうかとか言う、結構どうでもいいところに無駄に時間を掛けすぎてしまい、予定としてやってしまいたいところまで全然届きませんでした。
操作説明用ステージはふにゃが勝手ににこにこしないためのバナナ一個と、ふにゃ自身が一人いるだけのステージですが、操作説明の都合でそのときそのときに応じて必要なものを出していきます。

次々と

ふにゃさん、最初の画面でバージョンを表記するようにしました。
そしてゲーム上での操作説明も作り始めてます。
パネルγやふにゃふにゃのときのようなものですが、もっと効率の良いやり方を考えています。
例えば、今回の操作説明では、プレイヤーに実際に動かしてもらいながら次々と新たな操作を教えてゆくのですが、次々と、というのを実現するには、今何を教えているか、という情報が数値として必要なわけで、例えば、歩き方を教えている間は1、ジャンプを教えている間は2、というようにして数値で分ければよいのですが、いちいち数値を振るのが面倒だし、AというシーンとBというシーンがあればその間の遷移も必要になることもあるわけで、生真面目にやっていたらどんどん扱う数値が増えていって、定数として数値に名前をつけて混同をなくすようにしていったとしても、ただ順番に続くだけだったら、その名前が出てくるのもその一つ前のシーンでしか出てこないわけで、どうにも手間ばかりが増えるのです。
そこで考えたのですが、この番号を自動生成して、具体的な数値をあまり意識しないようにしたらどんどん次のことを書きなぐっていけると思うんですよ。
具体的な方法は既に考えていたマクロを使う方式と関数を使う方式を考えています。

スでマジなのさ

CharaBox3アップできました。
結局画像ディレクトリの変更には対応しませんでした。
一日で作ってしまおうと考えていた簡易的な方法よりももっとよい方法があったので次はそれを実装してみようかと思うんですよ。

Bomber丸Worldのバトル系BGMの一つを作り始めました。
ピアノがメインになる曲です。
あと、バトル1を長調から短調にしてみたのですが、なかなか面白い変化がありました。
むしろバトル曲としては単調版のほうがバトルらしいんですよ。
そろそろBGMのデータだけでなくプログラムも作り始めたいです。

そういえば、今日はハードディスク内蔵マウスなんて夢を見ました。
やっぱり信頼性や振動の問題などで実用化は難しいでしょうね…。
そもそも内蔵する理由がないし。

検索機能

CharaBox3の検索機能は検索アルゴリズムが出来上がって、後はそれを表示する部分を作るばかりとなりました。
多分この日記を書き終えた後にそれは完成するでしょう。
それが終われば画像ディレクトリの変更、データの整合性チェック、保存せずに終了、などをちゃちゃっと実装して明日にも公開できそうです。

怪しい書き込み

最近うちのGBBSにも迷惑書き込みが来るようです。
どういう方法なんでしょうね。
人がやっているにしてはURL表記を改善してこないところが怪しいです。
しかしフォームデータの名前を変更しているアップロード掲示板にも同様の書き込みがあるところから、人がやってるんじゃないかという疑いもあるわけで。
GBBSの根本的な問題も含めて、色々考えて変えていかなければならない場所が多そうです。

Bomber丸Worldの通常戦闘のテーマを少し改変しました。
ふにゃパートを少し。

キャラボックスの改良は進んでいます。
今は検索ダイアログボックスを作って、これから中身を実装するところです。

それと、すごく久々に爆ボンのMIDIを打ち込んでみました。
ブルーリゾートのベースをとりあえずですが最後まで打ち込みました。

1157295008.mid

カレントディレクトリ

キャラボックス3の改良をしています。
今まで隠し機能だった任意のファイルを利用できる機能が、いい加減不便になってきたのでファイルダイアログを使って普通に使えるようにしました。
これのおかげでカレントディレクトリの問題がなにやら出てきましたが、ダイアログ使用前にカレントディレクトリを取得しておいて、使用後に元に戻すようにしたら直りました。
他には保存せずに終了とか、画像のディレクトリ変更とかにも対応させてみたいです。

関係ないことですけど、ソースを公開しても問題なさそうな作品に関してはソース公開をしてみようかなと思ったりしてます。
オンラインランキングに対応してるものはセキュリティの関係上公開しないけど。

CBWInput

昨日に続いてライブラリのCBWInputのページをアップしました。
ついでにCBWInputの終了処理に問題があったので修正しました。

爆ボンのブルーリゾートとレッドマウンテンとホワイトアイスの3面のどきどきモードのデータを書き終えました。

<2006年10月 2006年08月>