日記(1049)

<前 次>

不条理な灰色

基本得点とBGM実装。
ただし基本得点には連鎖による倍率掛けはなし。基本得点は基本得点のままです。
DirectMusicを使ってみたのですけれども、ゲームとの同期が取れなくていろいろ手間取りました。
消しBGMがコンボ終了後も鳴り終わらなかったり、コンボが終わった後に無音になったり…
先日言っていたチャンネルの問題は、実際起こり、消しBGMの楽器で次のBGMが鳴らされたりもしたので、チャンネルを完全に分けました。
コンボ精算のときの音をどうやって分けるかというのと、消しBGMの同時消しに反応する部分をどうやって実現するかということを現在研究中です。
ところで、適当にプレイしながら思ったのですが、これ、何も考えずにパネルを出しまくって消しまくっていたら勝手にどんどん最小単位の4つパネルの四角形ができて得点がたまっていくんですよね。しかもかなりのスピードで。
これでは、運を天に任せてひたすらパネルを流していくゲームになりかねません。
そんなゲームバランスのないゲームなんか、自分で作って自分で遊べばいいのです。人様に見せるような代物ではありません!(そういうことで、私のパソコンにはバランスも糞もないくだらないゲームがたくさん埋もれています)
だから、まだ途中ですが、ゲームバランスを考えるためテストしてみました。
4つ消しのみを狙い、ひたすら出して消し、まぐれ当たりを狙ったら10000フレームで1020点。
9つ消しを狙い、適当に出しつつ入れ替えで消していったら、まぐれ当たりも含めて1270点。
かろうじて9つ消しのほうが高得点ですが、あまり割に合いません。
だからといって4つ消しの得点を下げすぎると4つ消しが「ハズレ」になってしまいます。
4つ消しの価値はそれなりに残しつつ、狙うならまぐれ当たりよりももっと大きく、という方向に持っていけるゲームバランス(例えば、4つ消しを連鎖数稼ぎに使い、数がたまったところで大きな塊を作れるようにして更なる高得点を目指すとか)にしたいものです。
ちなみに、灰色パネルというのがたまに出てきまして、これは普通の方法では消えてくれません。
で、特殊なパターンに揃えて消すわけですが、これがまた、完全に消せるパターンだと難易度の割りにやけくそに得点が低く、それなりの得点が入るものは8個消えて1個発生という、実にプレイヤー泣かせの消え方をしてくれます。

ミュージック

MIDIどうすべきか考えていたりするのであります。
リアルタイム性が必須の消しBGMは通常BGMとチャンネル分けるべきかもしれないと思っていたりするのであります。
なぜなら、パラメータ変更に手間取っていたらピアノ化したり前に使っていたりした楽器が勝手に使われたりして困るかもしれないと思っていたりしたからなのであります。
ともかくMIDIを再生できないことにはどうにもならないのでリソースからMIDIを読む処理を作ることにしていた次第であります。
ヘルプのチュートリアルには記述が見当たらなかったのでプラットフォームSDKのヘルプと照らし合わせながら作っていたりするのであります!

ウィンドウ

パネルγでやったことと同じことをPRG±0でも。
ウィンドウをクリップしてウィンドウモードでウィンドウを動かしてもウィンドウの位置に合わせた位置に正しくウィンドウ内に収まるようにウィンドウにウィンドウの内容を表示できるようになりました。
さらに保存してあるデータのタイトル画面を表示できるようにもしてみたかったんだけど面倒だったんで後回し。

パネルγの動作チェックも。
空中で素早くパネルを揃えることにより脅威の空中消しが!
例によって得点は変わりませんが。

コンボまで実装。基本得点と連鎖得点はなし

「パネルγ」のノーマルゲームのコアの部分を作りました。
まず、パネルの生成。
イレカエモードで(といってもまだこれだけなんですが)、何もないところをマウスでごしごしするとパネルがだーっと降ってきます。
で、逆にパネルがあるところを右クリックでがしがしやるとパネルがざーっと消えます。
正直言うとパネルを直接消す機能はいらないと思ったのですが、実際に操作した感覚ではパネル入れ替えは想像以上に神経を使う細かい作業なので、通常時はともかくピンチのときはとっさにパネルを退避できそうにないので、一時しのぎに使えるようにパネルを直接消す方法を用意しました。
で、次がパネル消し。
アルゴリズムは作り始める前から考えていたので一日で作った割にはまあまあ。
得点加算のところの演出までできたので結構満足。
現状のゲーム画面をアップしておきました。

理不尽なエラーが多すぎる

学校のActiveBasicで、行単位でデータが格納されたファイルを整理する「LineConstructor」を作っていたのですが、メニューを作成すると謎のエラーが出てコンパイルが通らなくなるという事態が発生。
もちろんエラーの原因を究明しようと思ったのですが、ヘルプにも公式サイトにもエラーの解説はなく、該当するエラーをクリックしても存在しないFドライブのファイルを参照してデバッグも糞もない状態。
一応それらしきファイルを探してきて覗いては見たのですが、エラーの原因となっている部分と関係のありそうなところは確認できず。
VS.NETがだめ、JBuilderもだめ、ActiveBasicもだめとなればもう残りはさっぱりわからないDelphiのみ。
こりゃ学校じゃプログラミングはできそうもありません。

「パネルγ」のマウスクリック感知の部分を作って、タイトルを動かせるようにできました。
まずは終了処理を作成。
ウィンドウを直接閉じると強制終了がかかってデータが破損する可能性があったので正規の終了方法を用意ということで。
これでゲームメインへのシーン移動もできるようになったのでこれからはメインのほうを集中的に作っていこうと思います。

すり抜けないぞ!

さて、HPMでも更新しようかと思ったのですが、やる気が起きないので「ふにゃふにゃ」のほうで。

ついでに、「Bomber丸World」のページも更新しておきました。
ふにゃの仲間の歴史がわかっちゃいます。

Lunascape2!

Lunascape2入れてみました。
使ってみた印象は、Luna2でできていたことができなくなっていたり、よくわからない機能が説明もなしにたくさん付いていたりで、かなり使いにくいという印象でした。
大部分は慣れで解決するのでしょうけれども、慣れではどうしようもない不具合などはできればつぶしていってほしいものです。
そのいくつかは既に報告があったようで。
まだまだ安定版には程遠いようですなぁ。

「パネルγ」のタイトル画面を作りました。
ゲーム名はまだ表示されませんが、ゲームメニューがずらっと表示されます。
背景とメニューの文字の明度が近いので見づらかったのですが、マウスカーソルを合わせると背景色を明るくして見やすくなるように調整しました。
今回アップしたスクリーンショットではプレス機が表示されていなかったりしますが、実際の今の状況だとプレス機が表示されていますし、パネルの並び方も若干異なり、メニューの位置も変わっています。
まだマウスボタンの押下を検出することができないのでメニューを押すことはできません。

「Bomber丸World」のページを更新しました。
主人公の社会での扱われ方がわかっちゃいます。

あっ、そろそろ更新する時期だなぁ。

<前 次>