「ミディビ」に関する日記(5)

<前

ピアノロールへの道1

ミディビ更新。なんかLunascape2から実行すると音が鳴らないんだけど。
ヒュージィって、弱いの相手だと逆に自滅しちゃう。
テレビ壊れた。と思ったらリモコンの電池切れてた。
掲示板のアイコン追加。ドットモック。
最新日記の表示に間違いがあったので修正。次の→古い。
今日の絵は弱いヒュージィさん。ついカッとなってやってしまった。今では後悔している。

1122907373.png

ギヤバネ本格始動

見てください。ギヤバネ君が動き回っています。
ギヤバネ君はふにゃとは違いカクカク不連続的に動きます。
ことあるごとに笑ったり、壁にぶつかると跳ね返ったり、それで空中に投げ出されて落ちたり、特に跳ね飛ばされ→落ちの流れは漫画的な動きを意識して作っており、いやもう、実際見てください。
作りかけだけどちょっとダウンロードページにアップしておきます。

MIDIAP、進みました。
まさかいつか悩んでいた問題がこんな初歩的なミスのせいだったとは…。
ともかく、これで開発スピードアップですよー!
…多分。

1121956047.png

ゆびきった!

MIDIAPでとにかく早く音を鳴らしたいと思って適当なコードを書いたら全然動いてくれませんでした。
いろいろ試したんだけどやり方がまずかったのか…。
もうちっと詳しく調べておきます。

PRG±0Editで、タイトルウィンドウを閉じたときの挙動がおかしかったので修正しました。
本当はキャラクターの設定でも作りたかったんだけど面倒で…。

Bomber丸WorldのBGMのページを更新しました。
海辺の町と基本テーマを新たに追加。
密林ダンジョンボスと地下ダンジョンボス2をバージョンアップしました。
基本テーマは実は途中で転調してたりします。
途中で短調になってる部分があるけど、ああいうのってメロディックマイナースケールっていうのかな。
メロディックマイナースケールなんてわかりっこねえって思ってたけど結構自然に入れちゃってたんだな、と。
形式が先にあって音楽がそれにあわせて作られるんじゃなくて、まるっきり逆なのね…。

昔買って今は動かないゲーム&ウォッチ風のゲームを分解していたらガラスで指を切りました。
別に表皮だけなんで血は出ませんでしたが、なんとなく目をこすったら手に付いた油が…。

ミディビ更新ペース

ミディビ更新しました。
2月に1回の割合での更新ですね。
ということは後3回で…急がなければ!

レポート終わんないぃ~!

しまった!!

半導体レーザのレポートがやっとこさ完了しました。
結局ひとつのレポートで合格もらうのに1ヶ月もかかってしまった…。
一応文章の部分はデータとして手元にあるので、気が向けば学習帳にアップするかもしれません。

ミディビの開発をそろそろ再開しようと思って、とりあえず何か音を鳴らそうと考えて、書き始めてから気が付いた。
私はJavaを知らない!
オブジェクトの生成とか、構造体の使えるかどうかとか、基本的なことを。
使ってりゃ何とかなるというポリシーの私ですが、さすがに先立つ知識が何にもないとはじめられそうにありません。

ゲーム記、ちょっとだけ変えました。
文面を微妙に。

ふにゃさん、昨日のはサイズがちょっと小さくてはみ出していたのですが、無事サイズを正常にすることができました。
そんでもって、下に余った部分にいろいろ情報を表示してみようかと思ったのですが、その前にマップのほうをまともに表示できたほうがいいと思って、昨日ピンクになっていたところを0番チップ(背景)に置き換える処理を作りました。
その後さらに置き換えた部分にマップキャラを置くことになるのですが、その辺はまだ作っていなかったので、Cf3MapObjectから作ることにしました。
Cf3MapObjectは、マップ上に表示されるオブジェクト(キャラに限らず)で、いつかはCGameObjectBaseから派生させるといっていましたが、細かいところの実装でこのゲームにあわないようなので、自前のものを作ることにしています。
元々yaneSDKのCGameObjectBaseはある程度自立したオブジェクトを使うためのものなのですが、今回は完全にマップに癒着したオブジェクトなので、マップと関連付けられるオブジェクトが必要だったのです。

ミディビとパスワード

ミディビの具体的な仕様について考えてみます。
まず、掲示板と連携しなければいけないので、アプレットからCGIへとデータの受け渡しをしなければならないのです。
しかし、ブラウザの不調などで、アップロードはできたけど文章の記入ができないなどのトラブルが出てきそうです。
作品投稿→コメント記入→コメント投稿、という流れになるのですが、この途中で終わっちゃったりすることがお絵描き掲示板でも結構あるようなので、アップロードされたMIDIから、この流れを再開できるようにするのが必須だと思うのです。
お絵描き掲示板ではこのあたりどうやっているのかは知らないけど、今回はMIDIの中にパスワードを暗号化して埋め込むという方式を採用しようかと考えています。

反応的なゲーム

ともすればカービィっぽくなりかねないふにゃ。
ふにゃらしさとはどんなものか、考えてみました。
まず、弱いこと。
食欲に任せて危険の中に飛び込んでいくけど、とげとげにぷすっとやられただけでミス。
「ふにゃふにゃ」は強いほうのふにゃにあわせてしまったので今回は除外。
もしかしたらバイタリティ制を導入するかもしれませんが、それでもとげとげに当たれば即ミスです。
そして、反応的であること。
自ら飛び込まない限りは危険はやってこないから、安全な場所で動かなければ寝てても大丈夫なんですね。
そういう意味で言うならアクションゲームっぽさは少し薄いです。
とにかく、プレイヤーからの操作がなければ何も動き出さない。
そういうゲームなんです。
あとは小ステージ構成。
大きなステージを、ダメージを受けたり回復したりしながら突き進んでいくんじゃないんです。
一つ一つの小さなステージにそれぞれテーマがあって、それをクリアすることが目的。
ステージセレクトが比較的簡単に出てくるのもこのためだとか。

ふにゃさんのステージエディタ、ボタンを押したままマウスを動かしてマップが描けるようになりました。
先日のGIF描画にも対応する予定。

Lunascape2がまたバージョンアップしてますね。
やっと使い心地のいい状態になってきたかというところです。

リファラを見る限り、MIDIBは一応それなりに需要はありそうです。
とりあえず次の次の更新はこれで行くかな。

使いそうなクラス

はい。トップがPHPになっているのにお気づきでしょうか。
そんなもん知ったこっちゃありませんね。
以前はSSIからカウンタCGIを呼び出していたのでPerlとCGIの2つのファイルの呼び出しがあったのですが、PHPにしてひとつのファイルにまとめたためかなり軽くなっているはずです。

ミディビ、更新しました。
プログラムには触れてませんけど、手がかりにはなるはずです。
やっぱ2ヶ月もあいてるんでそろそろ更新しとかないとなーということで。

fff終わらず

デモプレイに便利な関数修正。
マウスクリックで複数のシーンが飛んでしまうバグを修正。
パネルを入れ替える関数作成。
これもプログラムの簡略化のため。

チュートリアルの文面とか。

1.基本。パネルの動かし方。消し方。
「基本。パネルの動かし方。消し方。」
それでははじめましょう。
マウスの左ボタンでつかんで
ドラッグ&ドロップで入れ替え。
さて、パネルを消して得点をもらうので、
パネルの消し方を説明します。
横に並べても、縦に並べても、
斜めに並べても、消えません。
パネル4つで四角形を作ると、
ささやかなエフェクトと共に消えます。
実践:マウスのドラッグで移動して
   四角形を作ってパネルを消そう。
お見事!
これにて第1回を終わります。
2.パネル発生と灰色への対処。
パネルがありませんね。
どうやったら出てくるのでしょうか。
待ってても出てきそうにないので
仕方なく自分で出すことにします。
何もないところに線を描く要領で
どわーーーっとやると出てきます。
実践:マウスで線を描くようにして
   パネルをたくさん出してみよう。
あっ、見慣れない灰色が出ましたね。
一体全体何者でしょうか。
実はこれ、四角形にしても消えません。
カラーパネルとは違うのです。
こういうのは普通のカラーパネル8つで
囲むと消すことができます。
実践:灰色パネルをカラーパネル8つで
   囲んで消してしまおう。
よくできました。他にも消す方法は
いくつかありますが今回は扱いません。

fff中編アップ。
結局今日中に終わらなかった・・・・
四月の頭に完結させます。

http://www.geocities.jp/stdmidi/
SMFの構造をわかりやすく解説。
MIDIAPの参考にさせてもらおう。

なんとなく

MIDIAP、はじめました。
MIDI再生についてはhttp://www.ccad.sccs.chukyo-u.ac.jp/~mito/syllabi/mediaProg/midi/(chukyo-u,sccs,Ito Lab 中京大学、情報科学部、伊藤 誠ゼミ)を参考にしてみます。
さすがに学校の教材だけあってわかりやすい。
一応作り始めたんですよ。
これからどうなるのか、自分でも想像付かないんですけど。

ふにゃさん、BGMに特殊効果はつけるつもりだけど、パネルγほど極端にはしない予定です。
なんとなくさっきと曲の雰囲気が違う、というイメージで。

フリーのスクリプトとか

ドラクエ5、あの腹の立つカボチのイベントを無視して勝手にキラーパンサーを仲間にしちゃいました。
カカシとメダルはちょっと惜しいけどメダルはエスタークから無限に取れるらしいし、名産品はもう既にどうでもよくなってきちゃったし、娘エリーさえ元気に育ってくれればそれでいいんだし…

放置気味のTscript、そもそも完全オリジナルにする意味はあるのか、と考えてしまう今日この頃。
いろんなサイトで配布されている掲示板スクリプトは何から何までお膳立てしてくれてるものが多いけど、掲示板のコアとなる、記事の読み書きのみを提供したライブラリは少ないのではないか。
いやいやいや、あったらほしいのだ!
それも著作権フリーで、一部流用許可、パクリ上等、みたいなのを。
いやまて、自分で作って配布してみるのはどうか。
とりあえず考えておこう。

パネルγ、特にゲーム的に変更した部分はなし。
計算すると、連鎖で作ったHUGEが730点、smallによる17連鎖が765点、作る手間はそう変わらないので得点バランスとしては悪くない。
ただ、自由度が非常に高いので、できる人はどこまで行くか皆目見当も付かない。
1万点前後で終わるといいんだけど…
エンドレスのほかの、タイムアタックやプレスブレーカーやプラクティスやらのシステムもある程度構想ができたので、エンドレスの部分から、共通化できそうな部分をこれから探していこうと思います。

MIDIB、できるのできないの言ってるばっかりじゃなんにもできないので、Javaの練習も兼ねて、この製作過程をプログラミングコーナーのネタにしてしまおうかと考えております。
で、動きそうになったらためしに設置してみる、と。

MIDIB中断のお知らせ

やっぱJavaの基礎を固めないことにはMIDIBは無理だな、とひしひし感じる今日この頃。
Java Sound プログラマーズガイドを見てもさっぱりわかんない。

パネルγ、縦に揃わなくなると難度急上昇です。
何しろsmallになりかけの素材が、作らないとできないからコンボを続けるのが非常に困難。
コンボが続かないとプレス機が押し返せないからかなりシビアになるというわけ。
だからシビアさを解消しようと、灰色パネルを、ピンチのとき消えるよう設定。
ぬるい。つまらない。灰色パネルの立場がない。
簡単には消えない、押しても動かない、挙動が読みやすい、という、カラーパネルにはない特徴があるので、安易に消えてもらうと困るわけです。
仕方ないので縦に揃う確率を調整。
縦に揃いすぎるとすぐにsmallができてしまってどんどん消える→smallの元が掃除される→どっちみち素材は少ない、ということなので、少ないながらも素材はでき、なおかつsmallの完成はさらに少ないというのが理想となるわけです。
絶対にsmallが完成しないように、というのは処理効率やらメリットの大きさやらルールの複雑化などの問題でしない方針ですが、それでも揃う確率を半分にするだけでもずいぶんと効果は上がったようです。
スクリーンショットもいくつか追加。

01/28参照

さて、ミディビを作るにあたって、やっぱり気をつけたいことがある。
初めての人でも簡単に扱え、なおかつ音楽的知識のある人ならある程度便利なテクニックが使える。
しかし、前者は五線譜に直接音符を置かせれば充分として、後者は私自身が音楽的知識を持たなければ話にならない。
とりあえずhttp://www.binary-id.net/で勉強中。
しかしテスト勉強もだなぁ…

MIDIB

MIDIを作るアプレットMIDIAを作成中です。
とりあえずEclipseインストールしてアプレットクラスを継承するところまで。

プレス機をちょっと改良しました。
グラフィックの変化と、ピンチ時遅くなる処理(ただし、ピンチになるスイッチが働かないのでノンストップ)。
たくさん同時消ししてもプレス機を押し返せるようにはしたけどあまり当てにはならない。

<前