「ふにゃふにゃ」に関する日記(6)

<前 次>

SetBox関数追加

「ふにゃふにゃ」に四角形(勿論4辺が座標軸に平行な長方形です)を仮想画面上に設定する関数を追加しました。
実は既にSetBMP関数で代用できていたのですが、非常に使い勝手が悪かったので新しく関数を追加したのです。
早速「まちかどバトル」のステージで使ってみました。
まあ、別に動作は変わっていないので見た目には無意味そうですが。

最近テレビを見るのが嫌になってきています。
面白い番組があるにはあるのですが、CM(CommercialMessageの略らしい)を見ていると腹が立ってくるのです。
主語も述語もない文を聞かされたり愚痴を聞かされたり、ネギネギネギネギうるさいし……

MIDI打ち込み

聖魔さんのゲームをするために多くの時間を費やしてしまったのでプログラミングは出来ませんでした(始めからする気はなかったけど)。
そこで気付いたことがひとつ。
…そろそろ更新するタイミングではないのか?
実は更新のネタは1ヵ月分ぐらい溜まっているのです。
受験で更新どころではなくなったときのためです。
そんなわけで溜めておいたネタのひとつ、「クイズα 問題エディタ」をver1.1に更新しておきました。

「ふにゃふにゃ」のBGMが思い付いたのでとりあえず笛の音でぴ~ひゃらぴ~ひゃらMIDIに打ち込んでみました。
実は随分前から思い付いたりはしていたんですが、それが登校途中の電車の中だったりするんで家に帰った頃にはすっかり忘れているんですよ。
メロディを忘れないための何の工夫もないMIDIだけど一応アップ。

バイキルト!?

「ふにゃふにゃ」で、ちょっとヤバイ機能を加えました。
それとは別に、画面端のさらに向こう側の線を表示できるようにしました。
表示の部分をforに入れただけなんで大した事はしていません。
サングラスを掛けた時のにやっとした表情が変だったので修正しました。
ゲームが終わって結果を表示する時の「おしまい」という文字が右からしか出なかったのを勝ったキャラクターの方向から出るようにしました。
引き分け及び同じ結果だった時はランダムに出てきます。

空中戦!?

「ふにゃふにゃ」で、相手を踏ん付けた時の処理を拡張しました。
上キーを押しながら相手を踏むと相手を蹴飛ばして自分が飛び上がり、下キーを押しながら踏むと相手を突き落とす効果があります。
予定では「お互いにぶつかってダメージ」が設定されている時にダメージを受けるようにするつもりです。
「お互いにぶつかって跳ね返る」が設定されている時に全速力で走って衝突すると跳ね返る処理も作る予定です。

聖魔さんからゲームを貰ってしまいました。
本人の希望で公開及び紹介はしませんが、結構面白いです。

もう30日かいな!

「ふにゃふにゃ」で、ようやく対戦結果の正確な表示(仮公開verでは引き分けが表示されません)と記録が出来るようになりました。
で、また弟と対戦してみたのですが、やはり負けました。
証拠もしっかりと対戦成績に残っています。
次にやろうと思うことは、

  1. 相手を踏ん付けた時の処理の拡張
  2. 攻撃の方向の調整
  3. 対戦成績の表示(今は設定プログラムのみ)
です。

世界史はやっぱり苦手です…

世界史のテストが返ってきました。
あえて点数は明かすまい・・・・

AAACAFEからウィルスメールが届いてきました。
それとメール機能が暴走したのか、そのことに関する問い合わせのメールまでこちらに届いてきていました。
もう少しきちんとしてほしいです。

「ふにゃふにゃ」のサングラスを掛けた絵を書きました。
実際に使ってみてわかったんですが、立っている時と走っている時で、サングラスの位置がかなり変わります。
掛けていない時でも立っている時は見下ろし、走っている時は真横から見た視点になっています。

「ふにゃふにゃ」、完成間近か?

「ふにゃふにゃ」の設定プログラムをヘルプ以外完成させました。
ただ、ゲーム本体がその設定を反映しないので対応させる必要がありそうです。

「Bomber丸World」のタイトルを作り始めました。
yaneFastDrawを使おうと思いましたが、いまいち内容が理解できなかったので普通のDIBを使うことにしました。
でも一応DirectXは使うのでフルスクリーン機能もありです。
もうひとつ、解像度変更の機能もあります。
つまり、画像は荒いけど高速なのと画像がきれい(とはいっても所詮Bomber丸なので大したことはありませんが)である代わりに低速なものの2種類が用意されています。

チィティングは卑怯の極み←本当です

「ふにゃふにゃ」の設定プログラムの設定プログラムが大体出来ました。
ヘルプと実行ボタンの処理を書けば設定プログラムは終わりです。

「Bomber丸World」に使う音楽で、始めの部分をオーケストラっぽくって思って一つ作り始めてみたんですが、あまりうまくいきませんでした。
どう作ってみても安っぽい音にしかなりません。
やはり私には変な音楽しか作れないようです。
考えても見れば一つの楽器の音に頼りすぎているような気もします。

学校の中間テストが終わりました。
それにしてもまだカンニングをしようとする連中がいたとは……
未遂に終わっていればよいが……

世界史は得意科目だぜィ!←大ウソです

「ふにゃふにゃ」の、全速力で二人が正面衝突すると飛び上がってしまうバグと、攻撃が次のプレイまで残ってしまうバグ、そして攻撃を画面外に出し続けるとそのうち攻撃できなくなってしまうバグを修正しました。
攻撃を再初期化する関数と主人公の速度を強制的に変更する関数を追加しました。

今回はふにゃにサングラスを掛けさせるのは難しいです。
斜めを向いている時はどうやっても大きさが変わってしまうのです。
しかもサングラスに合わせて口も移動しなければならないし…
ちなみにサングラスを掛けていない状態では少しつんのめった状態になっています。
よく見たらわかりますよね。

テストなんて余裕だぜィ!←ウソです

「まちかどバトル」の地下ステージを完成させました。
地上のマンホールに入ると行くことが出来ます。
つまり下水道であるわけですが、そんな雰囲気は皆無です。
リサージュ曲線を描いて動く足場や上からどんどん落ちてくる氷の雫など、下水道では絶対にありえない仕掛けがあります。
梯子を上ると地上に出られます。

このように私はテスト中だろうが何だろうが平気でゲームの開発を続けます。

卒業アルバムの写真を取りました。
が、撮影場所は担任の先生の最も嫌がる場所でした。

明日から中間テスト

昨日は全サーバーが停止していたので日記を書けませんでした。
今日は昨日の文も混ぜて書いておきます。

「SuperBomber丸」をMusicPlayer4に対応させました。
「SuperBomber丸」とは「DL不可能」のページにある大して遊べないゲームです。
何しろ爆弾が爆発しないのですから。

「ふにゃふにゃ」で、画面端でのバグをひとつ直しました。
その代わりに、主人公同士の当たり判定に関するバグをひとつ見つけました。
二つ目のステージを作っているときに気が付いたことです。
この二つ目のステージはボスステージです。
輪ゴムシャボンや放電、コピーなどの技を使います。

「Bomber丸World」にはまともな敵があまり登場しません。
ゲロノフン2世なんかは気持ち悪すぎてゲーム中にモザイクがかけられますし、アサシネーターはスクラップの車を組み立てなおしたような敵だし、ラスボスにいたっては戦闘中に飽きてやめてしまいそうなほどしぶといし…

αゲームの画像は16色

リンク集に「VisualBasic初心者連盟」を追加しました。
ここで嘗て公開されていた「はつかりライブラリ」は「ふにゃふにゃ」の基礎部分で使っています。
残念な事に今は公開されていません。

「ふにゃふにゃ」で、攻撃が相手をすり抜けてしまうバグを発見したので修正しました。
攻撃の移動の前に当たり判定をしていたのが原因でした。
加えて、移動の処理をまったく関係のないforの中に入れていたため、1フレームにつき本来の2倍の速度で動いていました。
本当の攻撃はもっとふわ~っとした動きです。

唐突ですが、「パネルα」のページを開きました。
一応パネルの絵は126種類全部揃ったのですが、まだまだふにゃの絵が多いので、それを減らすためプログラムの公開はもっと先になりそうです。
ついでに、画面写真に出ているパネルの絵の解説:

  1. クォータービュー風宝箱
  2. MusicPlayerアイコン
  3. ゴキブリと間違われやすい気の毒な甲虫
  4. パネルαアイコン
  5. 爆弾
  6. クイズαアイコン

軽量化計画

「Bomber丸World」で、MIDI関連の不要なクラスをなくしました。
yandeSDK2ndは便利な反面要らない機能も満載で、実行ファイルのサイズがネット上で公開するには相応しくないほどにまで大きくなりやすいのです。

「ふにゃふにゃ」で、ステージ端を隔てた向こう側のビットマップを表示できるようにしました。
2行追加して1行変更しただけです。
ステージの向こう側のキャラクターとの当たり判定も同様に出来るはずです。

「まちかどバトル」の地下ステージの制作をまた少し進めました。
ひたすら無機質なステージです。

「ふにゃ」ってバグ利用のステージがあったような…

「ふにゃふにゃ」の設定プログラムで読み込んだ情報を表示するところまで作りました。
今回は読み込んだ内容をただ単にコントロールのプロパティに入れて終わり、ということではなかったので普通より少し時間がかかりました。
また、設定項目をひとつ減らしました。
引き分けは二人にそれぞれ割り当てても同じことなので一つにまとめました。
それと、256回以上遊ぶ物好きな人がいるかもしれないので、対戦成績を記録する変数の型をBYTE型からWORD型に変えました。

「まちかどバトル」の地下ステージのすり抜けバグを解消しました。
「ふにゃふにゃ」には前作同様すり抜けバグがあるのですが、今回は角にある線を2重にすることで解決しました。
ついでに足場をひとつ追加。
ここでは足場をひとつ作るたびに8個以上の線を定義しなければならないので大変です。

していますと答えてくれたあなたに

「ふにゃふにゃ」で設定及び対戦成績をファイルから読み込む機能と、ファイルに書き出す機能をつけました。
対戦成績の方はまだ記録したりはしていないのであまり意味はありませんが…
特に忙しくなる12月までには完成させたいものです。

「ふにゃふにゃ」の設定プログラムで設定を読み込んで表示する部分を一部作りました。
そこで隠し機能に番号をつける必要が出てきたので、書き留めておきました。
テキスト形式でハードディスクに入れていると弟に読まれるので、HTML形式で秘密の場所に隠しておきました。

そう、秘密の場所に……
……見るなよ!

新記録!

「ふにゃふにゃ」の設定項目を増やしました。
これ以上はあまり設定項目は変わらないと思います。
隠し機能も設定項目のうちに入っているので、隠し機能の内容も全部考えました。
一応隠し機能なので、その内容は内緒です。

重力をいろいろ変えて遊んでみました。
 低重力…びよ~んってかなり高く跳びます。
 高重力…すと~んって嫌なほど速く落ちます。
無重力はありません。
これを実現するためには無重力状態のための特別のコードを書かなければならないからです。
「ふにゃ」の時も複雑なことになっていました。

「ふわふわふにゃ」で新記録が出ました。
1・2・3合計で410213点です。
この記録を超えた、あるいは超えなくてもいい記録が出たという人は連絡をください。

耳はお大事に…

「ふにゃふにゃ」の設定プログラムを外見だけ作りました。
画面写真だけアップしておきます。
見栄えは悪いですけれども、それはわざとです。

「まちかどバトル」の地下を一部作りました。
足場が狭く、落ちやすいので地上より危険です。
予定ではさらに危険な要素も付け加えるつもりです。
ここなら弟にもあまり負けずに済みます。

最近耳が痛いのであまりヘッドホンで音楽を聴かないようにしています。
普段から音量には気をつけていたのですが、やはり何時間もぶっ続けで聞くのはよくなかったようです。

左右反転上下反転色反転

「ふにゃふにゃ」で隠し機能に関する処理を作りました。
8つ中5つまで思いつきました。
4つまで実装されています。
対戦結果の記録はまだ先になると思います。
なぜなら、隠し機能も対戦結果のひとつだからです。
記録するためにはファイルフォーマットを決めなければならないのですが、それを決めるための記録が不足しているのです。

引き分けの時の処理もまだですねぇ…

明日から4連休

「ふにゃふにゃ」で、物凄い問題にぶち当たってしまいました。
ステージ"f2000"では50x50の大きさのビットマップを背景にすると処理が遅れるのですが、より複雑な構成のステージ
"f2001"では同じ色数の3072x48のビットマップでも速いのです。
しかも"f2001"では背景がアニメーションするのです。
常識的に考えれば"f2001"が遅くなって"f2000"が速くなるべきですよねえ。
両方とも速ければ言うことなしなんですが(当たり前)。

私がゲームを作るときのコンセプトは「自分で遊べるゲームを作る」なので、たとえ他人のコンピューターで快適に動こうとも自分が遊ぶ段階で動きがガタガタであればどんなものを作っても意味がないのです。

何があっても"f2000"を高速化します。

今日更新しました

「ゲーム音楽について」を修正しました。
実際には追加情報なのですが、ここでは修正扱いすることに決めています。
これはうちの環境だけで試したものでしかないので100%信頼できるとは限りませんが、参考ぐらいにはなると思います。
いずれにしても、MIDIを作っている人にしか意味のない情報ですが。

「ふにゃふにゃ」で画面の端から端へ移動する瞬間に一瞬主人公の絵が消えてしまうバグを修正しました。
表示領域を計算する過程が画面端から端へ移動する処理を含む当たり判定の部分よりも先に書かれていたのが原因でした。
どういうことかというと、カメラ位置が実際の位置よりも1フレーム分だけ遅れてしまうということです。
どこをどう修正したのかはプログラマーでなくてもわかるでしょう。
画面端での処理に関しては、

  • 反対側にあるビットマップも表示する
  • 境界線の向こう側にいる相手との当たり判定も取る
  • 反対側にある線の処理も作る
  • 背景のスクロールを自然にする
などが残っています(4つめはスクリプトでどうにかするつもりですが)。

<前 次>