「ふにゃさん」に関する日記(15)

<前 次>

地道な作業の続き

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

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

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

うなぎ完成

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

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

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

1127399889.png

凶暴化

爆ボンの攻略で検索してくる人が多いなと思って自分でも検索してみてビックリ!
検索で出てきたのは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の基本機能があっという間に出来上がりました。
要素の追加・削除・更新はもちろんのこと交換・並び替え・シャッフルも用意して、ファイル入出力もほぼ出来上がり、あとは細かいところを調整したら完成です。
配色はウィンドウズの設定をそのまま使用するので基本的にユーザーの好きな配色で使えます。

ヒュージィの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

データベース使えず

GChat、phpMyAdminで仮のデータをいくつか入れて、とりあえずmySQLに接続するだけのコードを書いて、いざ接続!と思ったら、あんたのサーバーからは接続させてやらん、とのデータベースサーバー様の仰せだったので、ローカルテストのときのデータベース利用は諦めることに。
本当は自分のコンピュータにもmySQL入れればいいんだけど、もうこれ以上面倒なものをインストールしたくなかったし、今までどおり普通のファイルでも一応実現はできるので、早々と従来の方式に切り替えてしまいました。
まあ、仮で入れてみたデータで、必要そうなデータは大体分かったので、一応意味はあったものと思います。

RPG±0、マップチップのサイズも自由にして欲しいとの意見があったので、それに対応するためデータ形式とインターフェースを全面的に作り直すことにしました。
まあ、インターフェースに関しては既に作り直す気になっていたのでちょうどいい機会です。

ふにゃさんのBGMはちまちまと作り続けています。
サブメロディも入れてみたり。消すけど。

1125498071.mid

スコア報告用ページほぼ完成

アクセス解析してみたら、8月のアクセス数が先月から倍増していました。
8月はアキタラヤメル企画でいろいろやっていたもんで、夏休みということもあってずいぶん伸びたんだと思います。
こういう月があると次の月が怖かったりしますが。

パネルγのランキング、報告ページの作成はできました。
鍵生成に使う乱数の精度が悪かったので、ちょっと補正をしてやらねばなりませんでした。
しかしそのおかげで以前よりはずっとマシな報告スタイルになったと思います。
あとはこれを受け取るCGIさえ完成すれば…。

ふにゃさんのBGMを引き続き作っていました。
とはいっても、出だしの部分にちょっと手を加えただけです。

RPG±0、要望があって、世界地図に対応することになりました。
少し難しそうですが、マップごとに世界地図のどこに当たるかなどの情報を記録すればできそうです。
そして、キャラクターシステム。
パーティ編成とかはどうしようかと考えたのですけれども、どうもイベントやら何やらと絡めて考えるとどのキャラクターも、そう、主人公から村人に至るまで、全部同じ方法で取り扱えば、私にもRPG作者にも優しいシステムになると思うんですよ。
A君のマップチップに話しかけると間違えてB君の顔グラフィックが出ちゃったなんて事も防げると思うんですよ。
まだいろいろありそうなので詳しくはまた後日。

1125413337.mid

簡単エディタ

ふにゃふにゃのページを更新しました。
開発メモ。どうやら以前のエディタは難しすぎてエディタ作者自身にも手に負えない代物だったようで、以前の何でもできるエディタは残しつつも、新しい簡易エディタを作ることにしました。

  1. ペイントの鉛筆ツールで曲線を描くかのごとく自由で簡単で直感的な直線生成
  2. ドラッグ&ドロップで置きたい場所に置ける画像
  3. 必要なファイルは全部ステージファイル一つに埋め込み、最低限動作に必要なファイルを極力減らす
  4. エクスプローラからドラッグ&ドロップで勝手に背景としてインポートされる一枚絵
  5. その他必要なファイルはインポートできるようにする。インポートしたファイルは関連付けられたプログラムで開く
  6. いろいろあった設定は必要最低限まで減らす。あとは自動設定
  7. 当然の如く用意されるすり抜け防止策
  8. ステージ作者が最初に使いたがるだろう機能をコンパクトにまとめたツールボックス
  9. ステージ作者を困惑から救う優れたヘルプシステム
だいたい開発理念はこんなもの。

そして、Bomber丸Worldのページも更新。
戦闘画面がついに出ました。
イメージ画像ですけど。
なかなか面白いことになっていますよ。

そんでもって、RPG±0、さしあたり自分で不便に思っていた右クリックの挙動を統一。
スポイト機能と右クリックメニュー、両方一気に実行されます。

チャットの人工無能ちゃん、以前のようにファイルに入れておくよりも、mySQLのデータベースに入れておいたほうが管理しやすいと思ったので、mySQLを勉強し始めました。
とりあえずphpMyAdminの使い方を思い出しつつどんなデータがどう使われるのかを覚えていきます。

ふにゃさんは今日はBGMを作成中。
先日言っていた違和感はほぼ取れたように感じます。
メロディ以外のパートは修正するときの補助のために入れた音で、後ではずすかもしれません。

1125326932.mid

アラビアン

ミスター・フレーム、作りました。
最初は敵クラスとふにゃクラスの多重継承で作っていたのですが、それが大失敗で、無駄且つ危険な拡張性の高いコードを残して多重継承によるミスター・フレームは消え去りました。
ミスター・フレームはふにゃの動きを模倣するということで、お手本となるふにゃを内部的に持ち、位置や状態などはお手本からコピーすることになりました。
お手本が死んじゃったら、遅れてミスター・フレームも死にます。

カービィのエアライドの、ウエライド:砂のMIDIを作ってみました。
作りかけなんですがゲーム記のところにアップしておきました。

PRG±0、意見をもらって、とりあえず需要ができたので、作る優先順位を上げることにしました。
半年以内にできたらいいな。
一応、作る予定のところをリニューアルして書き直してみました。

1125240329.png

スコア報告用ページ

ふにゃさん、昨日の嘘画像に出ていたミスター・フレームを実際に出すにはほんもののふにゃのほうの画像が出揃っていないと後々面倒になるので、もしかしたら使うかもしれない画像をどんどん追加していきました。
攻撃アニメーションの正面パターンとか、ジャンプ溜め中のアニメーションを増やしたり。
氷の息正面撃ちは上方向に広がって、すぐに避けないと落ちてきた冷気で自滅します。
そしてなんとなんとなんとなんと!!!!
もう圧縮ステージファイルに対応しちゃったのでありますッ!!!
いや、もう、圧縮アルゴリズムは既にあるものを呼び出すだけなんだから簡単なんだけど、本当にあっさり実装できちゃって自分でも驚いています。

パネルγのスコアランキング、ゲームがフルスクリーンであり、せっかくVBランタイム不要にしたので、これを崩したくはないわけですよ。
他のソフトなら好きなだけブラウザを呼び出せたけど、フルスクリーンじゃそれもままならないし、直接接続するにしても、いろいろと面倒そうだし、第一日本語入力できないし、スコア報告だけVBで別プログラムを組むというのも嫌だし。
そこで、スコアランキング本体がCGIであり、Webブラウザで表示されるということを考慮して、スコア送信プログラムもWebブラウザで表示すればいいのではないか、もっと言えば、パネルγ本体でスコア報告用のHTMLを作り、あとでそれを開くことによってスコアランキングにいけると、そういうシステムはどうかと考えています。
今はHTMLファイルを書き出す処理だけ。
暗号化処理とかはまだしていません。

爆ボンデータ更新しました。
ブラックシティまでの敵キャラデータどきどき版を追加です。

1125154611.gif

愛夢!?フレーム!?

プログラミングを更新しました。
「activebasic vb c 速度比較」のアレです。
今日は面倒くさいので空ループしかしませんでしたが、結構意外な結果でした。
VBのほうが速いなんて…!

ふにゃさんエディタ、上層マップや下層マップは存在しない場合は保存しないようにしました。
これを保存してしまうとゲーム本体のほうで誤解釈して見た目に汚くなるので。
そろそろ画像読み込みを手軽にできるようにしたいです。

本体のほうでは、ギヤバネとふにゃとの相互作用を改良。天井や地面でギヤバネと重なってしまうと動けなくなってしまっていたのですが、天井ではギヤバネを、地面ではふにゃを強制的に動ける位置まで移動することにより動かなくなる現象を解消しました。
そして、ななななんと!!!!
新キャラ3体追加だそうですよッ!
調査チームが極秘に活動写真を入手したそうなのでお披露目しましょう!!

1125068189.png

ケロろで、くれるケロ?

ふにゃさん、ギヤバネの動きもとげとげの動きも一通りできて一段落したところです。
ふにゃがギヤバネにはさまれるといろんなことになっちゃったりとげとげの反応が遅くて存在意義がアレだったりと微調整がまだまだといった印象ですが、それはステージを作りながら調整していくことにします。

チャット、最新版をアップしました。
アルニックは呼べば出てきます。
また、チャットに誰もいなくなって1時間経つと勝手に出てゆきます。
…しかし、ログ表示の遅さが問題だな…。

今度の更新は各言語ごとの速度比較にすることにしました。
検索でハズレを当てた人がいたので。

今日の絵はカエルの呪いのあの子。
しかもなぜか右側だけ。

1124895222.png

<前 次>