1999/03/23 : オープニングプログラミングその2
再生が終了したら特定シーケンスへ遷移するような仕組みを作りこんだ。 これで、異なる状態からMovieを再生、かつ期待する状態へ戻ることが可能になった。
また、後述の問題点を解決した。AVI 再生する際の注意点。AVIに音声が含まれている場合、DirectSound を開放しておかないと音が鳴りません。これは、再生を開始する前に開放し、再生が終了したら再確保すれば OK。
DirectSound で使うための Waveファイルは読みなおしになりますが、これは仕方が無いですね。
読みなおしを意識しないようにラップする構造にすることはできますが、私は開放、再確保のメソッドを作っただけで ファイルの読みなおしは意識してやってます。
自機第三弾。共通部分以外は新規。
第二弾の自機は機動性を重視したタイプでした。また、実験的にファンネル(笑)を装備した状態で公開しましたが、 今回のタイプにはファンネルはつけていません。また、ブースター部分をちょっとだけ細かく作りこんでみました。
1999/03/22 : オープニングプログラミング
ゲームはやっぱりオープニングがあると盛り上がるよね、ってことで オープニングについて。
小田修紀からサンプルのaviファイルが 届いて触発されてます。いやあ、なんかこういうのって久しぶりの感覚。残念ながら、ファイルが一般的に見て巨大 なので、現時点では公開できませんが、いずれ何らかの形で公開することができると思います。
あ、ちなみに私はこのくらいのサイズではびくともしないので、じゃんじゃんよろしく。小田せんせ。でもまあ、本編が出来ないとオープニングだけ在ってもしかたがないんで、優先順位は低いのですが ファーストインプレッションって大事だし、 コアなユーザに対してはともかくとして、このご時世、良くも悪くも、オープニングデモがあると無いとでは ずいぶんと印象が違うと思うので、できるだけオープニングありの状態も見ることができるようにしたいですね。 (ただし、オープニングを見るためにはファイルサイズを覚悟してください(笑))
で、じゃあ再生しましょうか、ってことで(←本編はどうした) まず小手調べにMCI。んー、簡単に制御できていいなあ。でもフルスクリーンとの整合性の問題あり。
次にDirectX Media SDK 6.0 の CD を引っ張り出してきて インストールしてみたんですが、なぜかサンプルのDirectXフルスクリーン再生が動作しない という事態に。なんだろう。サンプルが動かない状態でテストできようが無いですねえ。
むー、なんかむちゃくちゃ低いレベルのところで八方塞がりになってますね。小田修紀のAVIは、半透明と多重スプライトのフェードイン&フェードアウト&スクロールを駆使したもので、 それをプログラム化するには、かなり動作環境に依存する不安(速度的なもの)がつきまとっていました。 現に、テストでちょっと似せて作ったものは劇的な速度で動作してくれたので 打ちのめされていたところでした。
しかし DirectShow はもう時間的に追求している余裕はない、すでに実装した MCI で何とかできないものか と頭をひねっていました。Video for Windows でストリーム再生するという方向性にもっていかないところも 私らしいが、それはおいといて。
あ、ひらめいた。AVIってGDIサーフェスに描画するんだよね :)
フルスクリーンにダイアログを出すときには何をやったかな...
もう分かりましたね。そう、キーワードは FlipToGDISurface でした。
ということで、AVIをフルスクリーンで再生できました。ただし問題点あり。感の良い人ならもう気づいてますね。Voodoo1/2 では、そのハードウエア構造上からくる制約でちょっと格好悪いことになります。まあそのくらい仕方ないでしょうということで、いまのうちにごめんなさいしておきます。表示できないわけではないので。Bansheeは環境がありますが、まだテストしてません。
1999/03/08 : 自機第二弾
自機第二弾。「拾い物を改造して使っている」という設定があり、敵の機体と似る部分が存在するんですね。 ある意味、製作側に都合がいい設定なのがバレバレですが。
1999/03/07 : 「3Dか2Dか」「現状の問題点」
3Dを利用したゲームをなんとかの一つ覚えだ、と仰っている方も増えていて、あちこちで耳にします。 (耳が痛い。でもなんとかの一つ覚えってのは言葉が悪いですね) しかし、モノは考えようです。これを逆の立場で考えてみましょう。2Dなんて、いつまでも自由な視点変更すら 容易でない表現を云々...、ね? そう言われるようになる時代もあるかもしれませんよ。
単に3D技術の表面のみを使っていて、ゲームの本質?(ってなに?)から逸脱しているゲームが増えてきている ことに対する憤りからきている戒めの言葉だと思いたいですけど、やっぱり 作品で語って欲しいですよね? ハードウエアを使わないソフトウエアレンダリングエンジン搭載したゲームで バランス最高、エフェクト美麗、効果的な3Dの使い方!っていうのを示して「どうだ?」なら分かりやすい。 プログラマならばという限定つきですが。言うだけならだれでもできるんだもの。ちなみに、私は2Dでも3Dでも良いです。適材適所! これにつきます。
いまはやりたいものが3Dモノでいくほうが良策であるというだけ。
あとは、いままであこがれだった技術が容易に扱えるようになってきてうれしくてやっているとか 純粋な技術的興味とか。やっと使えるレベルの技術になって、技術的興味っていうのが一番 大きいんじゃないかな。どうでしょう?自前のレンダリングエンジンを持っていないのに3Dするなという人もいます。 昔からやってきた人がそう思うのも仕方のないことですが。自前でポリゴン描画できないのに 3Dするなとか。2DのBltも自前じゃないとだめとか。 DirectX6.0では、Alpha blt は使えませんから しかたなく自分でAlpha付きBlt作りましたけど。ハードにやらせることができれば、そっちのほうが CPUにやらせるよりも高速であることがわかれば、(私なら)そっちを選びますね。
ハードウエアがアクセラレーションするのも、ライブラリを使うのも別にいいんじゃないですかね。 RMとか。GLUTとか。それを使うことについて恥じることはないと思います。
それらを使ってもゲームを実装することは可能で、実装して目的のものを完成させたら 評価に値すると思います。3Dエンジンを作るのが目的ではなく、モノ(ゲーム)を完成させるのが目的 というだけなのだから。古い話になりますが、PC-98x1 の時代に、だれもEGCを使うことに対して反感持ってませんでしたよね。 逆に使うことで高速化されるのだから、出始めのころはみんなそれに対し誇りがあったわけで。 末期になると使うのは当たり前になりましたが。 問題があるとすれば、EGC使うならGRCGも対応していないと機種の問題があるとか。そのくらい。 なぜハードウエアアクセラレーションされるのが嫌われたりするのかなあ。 苦労無しで高速化できて、製作過程に対して評価されなくなったから? 不明。
作品に対する評価は、完成されたものに対して行うものであって、 その過程に対してではないと思うのですが。
まあ、知っている、知らない、やったことがある、やったことがない、には 大きな違いはありますが。それはあたりまえのことで。
さて。
シューティングの面白さって破壊の爽快感の他に、敵の動きと攻撃のバリエーションってのが あると思ってます。が、現状のidinaloqにはそれがない。問題ですね。 バリエーションが少ないとすぐに飽きてしまいますから、飽きさせない仕組みが必要です。
いま作っているのは3D視点2Dシューティングですが、視点だけではなく、敵の攻撃も ある程度立体的であったほうが動きとして面白みがありますから、今後は敵の動きの実装も そういう方向のものを多く入れておくようになると思います。
産みの辛さを伴うオリジナリティの問題。
アイデア的なものはいくつかありますが、まだシステム的な面に 突っ込んでプログラムしていないので現在、特徴が無いです。早急にアイデア詰め込まなければ。