2006年4月の日記

<2006年05月 2006年03月>

Cygwin

爆ボンのコーモリンのページを作りました。
はっきり言って相手にする価値もないような脇役ですが、行動パターンが意外と面白いので書いてみました。
あと、こっそりグリーンガーデン1面のどきどきモードでの合格タイムも記載しました。

そうそう、Cygwin導入してみました。
いや、何ってね、いろんなフリーソフトがUNIX用だったりするわけですよ。
いや、Windowsにもフリーソフトは多いけど「役立つ」というよりは「面白い」とか「便利」というのが多くて、必要になるのはUNIXのフリーソフトであることが多いです。
そりゃWindowsのシェアが大きいから多くのソフトがWindowsに移植されてたりするけど、やっぱりUNIXのソフトはUNIXで使ったほうがちゃんと動くだろうし、種類も豊富だろうと思うのですよ。
そんなわけでCygwinインストーラでインストールできる分全部インストールしたら1GB超えちゃいましたよ。
もっと少ないかと思ってたんですが。

母さん。・・・母さん!!

マザー3買ってきましたよ。
第一章が終わったところですが…ええ、この段階で早くも「ハッピーエンド」はありえなくなったわけですね。
まさか64版からあったあのセリフがどうでもいい知らせと最悪の知らせをもってきたものだとは想像もしてませんでした。
いや、でも、その、なんかね、正直、やっぱりマザー3は3Dであってほしかった。
やっぱりどうしても3Dのゲームを無理矢理ドット絵に落とし込んだようなゲームにしか見えないんですよ。
無益な戦闘を避ける手段は今回はダッシュらしいですね。
弱い敵なら蹴散らせます。

そうそう、プログラミングのページを更新しました。
DirectShowはどうにもDirectXとは別枠のような気がしたのでDirectXとは別のページに書いてます。
参照設定の方法も違いますしね。

ストーリー

そ、そういえばふにゃさんのストーリー入れるのすっかり忘れてましたよ。
一応ずっと昔にストーリーは作ってあるのでまた暇を見て追加しておきます。
ちなみにそのころのふにゃさんはVBで作られていて、ワープとかスイッチなどの仕掛けを考え、一部はある程度実装もできていました。
また、ボスキャラとかプログラム可能なステージ固有の仕掛けなども考えていました。
しかし、これらのステージをプログラムで記述するという方法はふにゃふにゃで無謀で手軽ではないことを知り、また、仕掛けについても、全部のスイッチを押したらワープ起動というのを考えていたのですが、そうするとバナナ回収ゲームなのにゴール探索型に近付いてしまうためカットすることになりました。
そしてVBでの開発をやめてしまった理由が、作れば作るほどにあらゆる部分でコードの複雑化が進んでいったこと。
今公開しているC++製のものはシーンごと、キャラごとに必要な部分は分けていて、かなりコードの複雑化も抑えられています。
また、複雑化を招くシステムはかなりカットし、ルール的にも単純にしました。

そういえば、私が競売に掛けられていたらしい旨のメールをいただきました。
勝手に売るとは何事じゃ。しかもたったの86万とは見くびられたものだ。

1146236065.png

FedoraCore

FedoraCoreに思ったより苦戦してしまいましたよ。
やっぱりコマンドラインはコマンドを知らないとさっぱりわかりませんね。
手探りで探る手がかりすらほとんどないからまぐれ当たりも中々ないし、このあたり、マニュアルが手元に無いとほとんど想像力で補うしかないです。
いや、manがあるんですけどね。
読んで読めない英語だとは思わないんですけどね。
読む気にならなかったんですわ。

分散処理

とりあえず読んで大体の流れはつかめるようになったのでRubyでCGI組んでししゃもを会話するチャットを作ってみました。
どうもししゃもはそれなりに動いてくれてはいるようですがどうにもブラウザに出力する時点でCGIクラスにエラーが起こってるみたいです。
正直、私の良く知っている言語と見た目の大きく異なるRubyはあまり使いたくないんですけどね。
とりあえずししゃもを動かすCGIが完成したらRubyからはとっとと離れるつもりです。
ちなみにししゃもで何をやりたいのかというと、アルニックにね、特定の確率でししゃもによる会話を織り交ぜようと考えているんですよ。
本来ならゆいと同じ辞書方式で事足りるはずなんですが何せ辞書を作れるのが私しかいないということで、どうしても辞書の量が足りなくなっちゃうんですよね。
あと、複雑なアルゴリズムで返事を決めようとするとどうしてもサーバーに負荷がかかるので、そういう重くする原因になることは分散して処理させようという考えもあったりするのですよ。
うちのサーバーではRubyが使えないんですが自分のパソコンでなら使えるので、例えば、サーバー上でアルニックが喋るとき、CGIからうちのパソコンに人工無能の返事を考えるようにリクエストを送って、それでうちのパソコンが頑張って答えを出してサーバーに送り返す、そういうのをやってみたいんですよ。
これをやると必然的にうちのパソコンに繋がらないときアルニックはあほあほになってしまいますが、まあそれも愛嬌です。

ルビーと呼んではいけないもの

Rubyをインストールしてました。
巷の優れた人工無能ちゃんは大部分がRubyで書かれていたりするので。
とりあえずロイディとししゃもをダウンロードしてきました。
しかしうちのサーバーではRubyは使えなさそうなので、自宅サーバーと繋げて使うようなやり方ができるかなと考えています。
しかしまあ、予備知識が無いとほとんど読めませんな。
変数の命名規則がかなり独特で、わかる人には一目瞭然、わからん人には誤解を招くという、ちょっとRubyで書かれたプログラムを見てみたい人には厳しいものがあります。
Ruby→http://www.ruby-lang.org/ja/
ロイディ→http://www.rogiken.org/SSB/reudy.html
ししゃも→http://yowaken.dip.jp/sixamo/

ルールを

久々にメテオスやってみましたよ。
腕は衰えておらず相変わらずレベル5相手に10回に8回は負けてます。

そうそう、掲示板にルールをつけようと思います。
やはりいつまでもノールールというのもどうかと思いますので。
ミディビについてもほとんど投稿のない今のうちにルールを作るというのもありかもしれません。

そうそう、掲示板への迷惑書き込みへの対策を考えてます。
別にうちは今迷惑書き込みは受けていませんが、まあ、迷惑書き込みに対する対策はあるに越したことは無いと思うので。
アイディアとしては、自動書き込みプログラム防止のため、フォームの名前をランダムにする。
もちろん完全にランダムにしてしまうとまともな書き込みさえも何がなんだかわからないことになるので、もちろんある程度の法則性は持たせておきます。
それと、NGワード機能。
以前使っていた改造掲示板ではNGワードが含まれていると機械的に投稿を拒んでいましたが、今度は、とりあえず保存しておいて、NGワードを含む場合は管理人がチェックしてOKを出すまで見られないようにします。

火の鳥

爆ボンのフレアバードとグレッグのページを作りました。
いや意外や意外。フレアバードって気絶させて持ち上げることができるんですね。
しかも敵にも問答無用でダメージを与えたりして、以外に面白い性質を持っていたりします。
細かいところもきっちり作られているんですね。

ErrorSafeのアホタレ

今回のNeoMuplはリストにファイルを追加するときの挙動を改善。
いったん余分めに配列を用意して配列の拡張を減らすようにしました。
今考えるともっとよい方法がありそうだったので今回はアップしていませんが約五千曲で3秒と、まあまあよさそうな結果です。
もっとも、追加処理ができるまでに、ファイルの受け取りそのものにかなり時間がかかって、それはVBの問題であってこちらじゃ解決できなかったりするんですが。

アキヤメのレゴのページを作りました。
今回は4種類紹介です。
愛夢以外には実は名前も設定もなかったのですがWWW公開用に名前と設定を付けてみました。
ちなみによくある車のほうは実際に昔遊んでいたころの設定を使ってます。

今日の画像は迷惑ヤローの主張。
ある掲示板に入ろうとしたらいきなり飛ばされてあれよあれよという間に怪しいチェックが入りました。
「エラーは見つかりました」とか「データ損失ができなくなります」とか、怪しさ満点です。
とりあえず画像に載っているサイトにはアクセスしないように。
そして間違ってもそんな迷惑ヤローの言うセキュリティソフトなんてインストールしないように!!

1145717598.png

VBCHECK

こっそりパネルαとじゃんけんαを更新ですよ。
VBのコードの問題点を指摘してくれるソフトをたまたま見つけたので、あたっている部分だけ修正してアップしました。
ついでに著作権情報や一部アルゴリズムも変更しておきました。

そのソフトを見つけるきっかけとなったのがNeoMupl。
NeoMuplの動作が極端に遅いということ、そして解決法は先日書いたとおりですが、ソートアルゴリズムや文字列-データ対応のプログラムなんかはいかにも誰かが作っていそうだったので手近なところでVectorで探していたら、目的のものは見つからずに他の便利そうなソフトが見つかったというわけです。
結局ソートアルゴリズム周りで楽はできそうにないので再びC#も視野に入れ始めたのですが、現段階の問題として、VC#2005がExpressEditionだからなのかあるいはC#だからなのか、エクスプローラからのドラッグ&ドロップができなくて、一歩踏み出せずにいます。
これさえあればもう迷わなかったんですけどね。
C#でエクスプローラからのドラッグ&ドロップの方法を模索しつつVBで効率のよいアルゴリズムを作るとしましょう。

そうそう、アキタラヤメル企画にレゴのコンテンツを追加しようと思います。
今レゴでオリジナルの作品がいくつもあり、それらを分解する前に作っておいたLDrawのデータがあるのですよ。
うちのキャラのいくつかはレゴで作ったものが元ネタだし、こういうのがあってもいいと思うのですよ。

時間の問題

NeoMuplに新たな問題ですよ。
まずソートプログラムがO(n2)の処理時間なので数が多くなるとソートが圧倒的に遅くなること。
予想はしていたんですが項目が数千個になるとかなり時間がかかりますよ。
そしてもう一つ、こっちのほうが深刻です。
リストのロードとセーブに時間がかかるんです。
計算したらやはりO(n2)の処理時間。
項目のソートに関してはクイックソートを使うことで、ロードとセーブについては読み込んだ結果の参照が遅いということがわかっているので読み込んだ時点で読み込み結果をソートして、ソートされていることを前提とした検索で目的のデータを探すことにすれば、いずれもO(nlogn)の処理時間に抑えることができそうです。

一気に進む

はい、もう一気にできそうですね。
ループ処理も演奏位置を変更するだけで可能。
100ナノ秒精度ですよ。
ループ演奏・演奏後の処理など、基本的な処理が早くもできました。
あとはBGMモードを付け加えれば基本機能が出揃うわけです。
そうそう、データ記録周りを少し整理しました。
レジストリに記録する場合とINIファイルに記録する場合で同じものを記録する処理を2回書いていたのですがここを統一して書くのが一回で済むようにしました。
そして、忘れてませんよ。
NeoMuplは進んだら進んだだけたとえ中途半端でもアップします。

そういえば弟がメトロイドプライム2を買ってきていました。
グラフィックについては1がすごすぎたから別に驚かなかったんですがこれもやっぱりバンジョーと同じくやりすぎなほどの正当進化の予感がひしひしと伝わってきています。
そういえば最近爆ボン以外のゲーム記の更新が滞ってるな。
ま、いいけど。

DirectShow

MusicPlayer3の怪しい挙動にどうにも我慢ならん!
と、NeoMuplの開発のほうに行こうとしたのですが、現在のVC++6での開発状況が、MFCに挫折して自分でWindowsライブラリを作ると意気込んで作っていて色々面倒くさそうな作業がたまっていたことに気付き、C#にあっさり移行したのはよいのですが、手抜きのため導入したYanesdk.NETではMP3が鳴らせないしMIDIは左側からしか聞こえてこないしで今回の用途には使い物にならず、だったら自前で作るかと思ったらDirectX9には日本語ドキュメントがないしDirectMusicへの対応が怪しかったりで結局どっちもうまくいきそうにありませんでした。
そういえばDirectShowのヘルプに「Microsoft Visual Basic でDirectShow API のかなりのサブセットにアクセスできるが、Visual Basic のサポートは完全ではない。」って書いてあったけど、これはほとんど使えますと解釈してよいのかな…?
去年の12月にVBはいったん捨てたんですが実は再生用DLLを作る必要すらなく、VBオンリーでいけたようです。
最初からダメだと諦めて別の方法を探すって、うちの悪い癖だな。

コンティニュー

ミディビにコンティニュー機能をつけました。
ただ単に保存しておいたバックアップファイルをアプレットに渡すだけなのでそう難しくはありませんでした。
lastをbreakと書き間違えることさえなければ。

受信

ミディビ、データ受け取りのところで受信データの種類判定にミスがあったので書き直してました。
なんかアプレットからデータ送信しても受信されないなとずいぶん頭をひねってました。
とりあえずeqと=を間違えていただけだったんで直してアップしました。
動作は変更されてませんが。

目撃者

突然ですがふにゃさんアップデートしました。
本当は1.01ができて割りとすぐに追加した機能だったんだけどそれだけでアップするにはあまりに小さな機能だったので今までアップしてませんでした。
だからといっていつまでもアップするに足る内容ができるのを待っていたらモチベーションが下がってしまっていつの間にか更新しなくなってしまうということがありそうだった(というよりふにゃふにゃのときに実際あった)ので、無理してアップしてみました。
どこが変わったって?
それなりにやりこんでる人なら即見つけるんじゃないかなぁ。

To Be Continued!

ミディビのコンティニュー機能を作ろうとしていたんですが、面倒でない方法をとるとパスワードを2回入力しなければいけない、パスワードの入力が一回で済むようにすればプログラムが面倒、という状況になりました。
だけどやっぱり一回で済むのならそれにこしたことはないのでなんとか頑張ってます。
とりあえず効率よりもわかりやすさ重視でまず読み込み部分と書き出し部分にプログラムをはっきり分け、読み込み部分は流用可能な形に、書き出し部分で用途ごとに異なった処理にすることにしています。
あとは、
音色プレビュー機能。
素早く何度もクリックを続けたとき偶数回目をダブルクリックとみなすことにした。
テンポの範囲チェック・例外チェック。
エラーの表示が間違っていたので修正。
といったところ

トルネコの大冒険

久しぶりにトルネコの大冒険をやってました。
心機一転、データをいったん消去して最初から始めてみました。
いつぞやは地下99階から徒歩で帰ってこられるぐらいだったのに今じゃギガンテスから逃げてるときにゴーレムに出会い頭に頭突き食らって死んでますよ。
しかしトラネコの名発言をまた最初から聞けるのはなんだか嬉しいです。
そうそう、ヤン様の不思議のダンジョンは購入予定ないです。
トルネコでいっぱいいっぱいです。

VC++2005EEでWindowsプログラム

VC++.NETでVC6のインクルードファイルとライブラリを使ってWindowsアプリケーションを作るのに成功しました。
しかしやはりVC6とかなり勝手が違い、標準関数と自作関数以外はオートコレクトもないし、よく見たらVC6でも一応設定はできないけど最適化は自動でやってるみたいだし、やはりC++に関してはまだまだVC6メインでいったほうがよさそうです。

今日はMIFUMIDIAの次の更新のためいきなりアプレットの仕様が変更になっても対応できるようにCGIを手直ししていました。
どうにも今の仕様じゃ続きから作る機能が実装しにくいんですよ。

モーションブラー

ふと思いついてふにゃさんにモーションブラーの機能をつけてみました。
ただ単純に前のフレームの内容を半透明で現在のフレームに合成しているだけなので画面全体に効果が及び、動くたびに全体がぼやけます。
やっぱりドット絵にモーションブラーは合いませんね。
画面写真は撮ってないけど沢山のものを配置している状況でブラーをかけると配置されたものがもはや別物に変化してしまいます。

そうそう、のんびりナマライザ、C#で書き直そうと画策中です。
やっぱりVB6じゃ、それもラーニングエディションじゃ遅くてお話にならないんですよ。
のんびり待つにも限界ってものがあるのです。

1144763600.png

伸び縮み

ミディビに音符の長さをクリックで変えられる機能をつけました。
何もないところを左ダブルクリックで音符をおき、音符を右ダブルクリックすれば消えるという動作は変わりませんが、それに加えて音符を左ダブルクリックで音符延長、中央クリックで短くする機能を加えました。
機能追加には積極的ではないのですが(既にいくつかの要望を断っています)、これはデザインを複雑化させることなく内容的に言っても直感的だし気付かない人は気付かなくても全く差支えがないので気軽につけることができました。
ついでにちゃちゃっとコンティニュー機能を実装しようと思ったのですが、これは送信データの内容の変更が必要そうだったのでちょっと後回しにすることにしました。

そういえば、熊と鳥のゲーム2で、ウィッチワールドで運命が微笑みました。
チイトチイト。

物理量解析プログラム

物理量解析プログラムができました。
二十キロメートルを20000mろ解釈したり2.65mとかも正しく解釈できたりします。
この解析には文字-意味対応をデータとして入力する必要があるのですが、さすがにオングストロームとか恒河沙とか天文単位とかはいらなかったような気がします。
年齢の表記も秒とか世紀とかも無意味にあったりします。
そのうち気が向いたら配布しようかな。

グランチルダがボールになる

弟がバンジョーとカズーイの大冒険をクリアしてました。
最後のグランチルダは強かったはずなんだけどチイトの体力自動回復がダメージを受ける勢いをはるかに上回っていたためほぼ体力全快で勝利。
グランチルダはかなり残酷な最期を遂げました。

物理量解析プログラムの解析には5つのレベルがあります。
レベル0:完全に確定した分
レベル1:確定した小数
レベル2:確定した整数
レベル3:千の位まで確定した整数
レベル4:未解析の連続した数値
レベルは基本的に解析が進めば下がるって最終的には0になります。
アルゴリズムが完成すれば公開してみようと思います。

Bomber丸WorldのBGMの変化パターンをいくつかに分類しようと考えています。
一つ一つにプログラムを組もうかとも思ったのですがデータと辻褄を合わせるのが結構大変そうだしめちゃくちゃ特別なことをするのではなく簡単なものを組み合わせるだけなので簡単なプログラムを組んでデータを渡すという方式にしたいのですよ。
サウンドテストを作るときにもプログラムとデータを分けたほうが都合がいいし。
フェード:指定の音量に徐々に近付く。目標値と時間を指定する。
プログラムチェンジ:音色を変更する。音色番号を指定。
即時切替:BGMを直ちに別の曲に変更する。BGM番号を指定する。
遷移:現在のBGMが終わった後に別の曲をかける。BGM番号を指定する。
効果音楽:指定の曲を現在のBGMに重ねる。ME番号を指定する。

健康診断

今日は健康診断でしたわ。
体重はそう変わらず52.1kg。
視力は相変わらず悪く、両目とも0.2。
身長は伸びず165.9cm。
尿検査は異常なし。
体脂肪率は今年も一桁の9.9%。

物理量解析

物理量解析プログラム、1万km→10000000m みたいに変換するのを作ってます。
123万とか、十、二十、という数え方とか、小数点も考慮したり、とにかく書き方が無数にあるからプログラムにしづらいです。
まず、一億万とか、数として成り立たないものの解析結果は不定、つまりめちゃくちゃでかまわない。
そして都合上負の数は扱いません。
数値の解析については http://www.doumo.jp/postgretips/tips.jsp?tips=4 が参考になります。
数値を解析しつつ、単位が出たらその時点で確定です。

2

爆ボン2をちょっとやらせてもらいました。
ちょっとね…やっぱりダメだわ。
ファミコンのときの基本ルールを使っていながら不自然に3Dになってるから動かしづらくて自爆が多い。
マス目単位で物が置かれているのにマス目に沿って動くのが難しい(斜め視点のマップなど)。
死ぬとワールドの最初からやり直しだというのにワールド最後のボスが容赦なく即死攻撃を使ってくる。
見てもどうということのないイベントに時間がかかる。
パワーダウンアイテムの存在がいやらしい。
バイタリティ制のせいでいきなり死ぬ緊張感がなくなった。
1のハートのようにどんな攻撃からも身を守ってくれるアイテムがなくなった(=即死攻撃の存在)。
歩くのが遅い。
ポミュのほうが明らかに強いし主役的。
斜めに誘爆しない。
グラフィックが明らかに悪くなってる(1のときの職人技的ビルボーディングはどうした!!)。
馬鹿女2名むかつく。
敵を倒すと扉が開くという昔ながらのルールといろんな部屋をいったり来たりする謎解きが合わない(いちいち部屋を通過するたびに敵を探して殺さないといけない)。
リモコンがあまり役に立たない。
リモコンが封じられても時間がかかっていらつくだけ。
ステージの仕掛けが見つけるのは難しい割に内容はくだらない。

ミディビ完成

つ、ついにできましたよっ!ミディビ!!
レスとかファイルのロックとか返信とか削除はまだできてないけど、それらは随時更新していきます。
着想からずいぶんと無駄に時間ばかり掛けてましたが、これでひとまずMIDIを気軽にブラウザ上で作って投稿、という最初の構想は出来上がったのです。
思えば無駄に長かった…。

進化

なんか弟がバンジョーとカズーイの大冒険2を買ってきてやっています。
いやまあ、正当進化ですね。
まず1で使えていたアクションは全て初期装備。
なにしろクルクル山のふもとで基本アクションはもとよりジャンプパネルや靴系統も揃ってるんですから。ただし、ツメツメパンチだけは弱かったためかなくなって、キツツキアタックに変更されています。
1の舞台だったグランチルダのとりでは2年の歳月を経て崩壊、妹たちの開けた穴を通って別世界へ旅立ちます。
が、ゲームシステムそのものは同じ。ジグソーを集めて次のステージに進むタイプのようです。
1のエンディングでマンボ・ジャンボが、2が出れば1がかすんでしまうといった内容のことを言っていたのですがまんざらうそではなく、むしろスタッフがその意気込みで作ったような気配さえ感じます。
そして進化していたのはアクションやゲーム内容だけじゃない!な、なんとバンジョーの声が、勇ましい、漢の声に…!
そんなわけで爆ボンは後回しに…。

そうそう、ミディビは現在アプレットは掲示板から使えるようにはなっていますが掲示板そのものができていないのでまだアップしていません。

<2006年05月 2006年03月>