2011年2月1日火曜日

進捗情報(ホーミングやパーティクル等)

2Dシューティングに機能追加しました。

2011/2/1

今回の主な追加機能

  • 2D向けのパーティクルシステムを追加しました。
  • 敵の直線レーザーを追加しました。まだレーザー用画像が粗いことや、重ねあわせがいまいちなので改善が必要です。
  • 敵のホーミングミサイルを追加しました。慣性有りのものや、慣性無しのものをいくつか追加しましたが、動画では慣性無しのものを表示しています。
  • イベントから、ステージ開始(Stage1 Start)やステージクリアなど、任意のテキストを画面表示できるようにしました。
  • 仮の自機パワーレベルを反映しました。

今回の動画は、上のテストが主な目的で、直線レーザー、ホーミングミサイル、中ボスや敵の影表示などがうまく行くかの確認です。なお、自機にレーザーやミサイルが当たったときのエフェクトは検討中です。あと最後に仮中ボスを表示していますが、スターソルジャーしかり、同時破壊でボーナスなど、いろいろボーナス案を検討中です。

あと、画面左側の縦方向バーがパワーです。ショットを発射する事に、パワーレベルが少しずつ落ちていき、レベルが変わるとショット形態が変わるような感じを考えています。また、ある地上物を倒すことで現れるパワーは回復する予定で、パワーを維持するためには、定期的にパワーを取得する必要があるようなことを考えてます。このあたりの仕様をよく考えて、サバイバルモードみたいなものを用意できたらいいなと思ってます。

後で、強力な特殊ショットを追加し、そのかわりパワーレベルが1レベルさがるなども考えてます。三国無双っぽく、パワーレベルが少なく死にかけの場合は、連続して特殊ショットが使い放題とかも思っていますが、まだ頭の中で、仕様がゴチャゴチャです。

3D(2.5)シューティング側も更新してなさげですが、2D側で作成した機能は3D側に少しづつ反映していってます。


2D用パーティクル

基本はApp HubのXML particleをほぼそのまま使用させて頂きました。App Hubの日本語ページは英語版の更新になかなか追いつかないので、英語ページからしかXNA4.0版をダウンロードできません。みなさんも、サンプルを探すときは英語ページから検索することをおすすめします。
とりあえず日本語ページからサンプルを検索して、該当するページを見つけたら、ブラウザのアドレス入力の ja-JP/ を en-us/ にして表示して、英語版の最新サンプルが無いか確認するのがよいかもしれません。

肝心の2D用パーティクルシステムなのですが、元が3D用なので、与える座標が3Dの位置になります。パーティクルを追加するごとに、毎回CPU側で2D-3D座標変換するのは遅そうなので、シェーダー側で行うようにしました。2D-3D変換後のシェーダー内のパーティクル処理は、そのまま使用しています。後すこしシェーダーを変更した箇所はありますが、ほぼ変更なしで、そのままサンプルを使用しています。

CPU速度やc#コンパイラの効率が良いPC版ではほとんど影響でませんが、XBOX版では1回のマトリクス変換でさえ、CPUの処理を減らさないと後々キツそうに思います。

このXMLパーティクルサンプルは、生存期間確認のみCPU側で行い、パーティクル処理はすべてGPU側で行うようになっています。GPUを使うというのはこういうことなんだなとかなり勉強になりました。これからHLSLプログラムを始める方も一度目を通されることをオススメではないでしょうか。


オーディオマネージャ

XNAのオーディオマネージャは、本当に簡単に使用できるのですが、これに関連した本当に見つけにくいバグが出てしまいました。

というか、まさが原因がオーディオマネージャが関連しているとはとても思えないバグが発生してしまい、ソースをしばらく追ってもわからずじまいで、TortoiseSVNで少しずつソースを巻き戻してようやく分かったという次第です。

結果としては、無事解決したのですが、同じ現象に見舞われる方も今後出てくるかもしれないので、いつか別途メモしたいと思います。

 

おまけTortoiseSVNのご紹介

もし、ソース管理を使用していないという方がいらっしゃたら、TortoiseSVNは是非オススメしたい一品です。大まかな使い方は、ここに分かりやすく書かれてありますが、サーバーを使用した説明っぽいので初めての方には、それでも分かりにくいかもしれません。(私も色々試して、ようやく分かりました)。ひとりでローカル(自分のHDD)で管理する方法の日本語動画があればよいのですが、YouTubeにも無いみたいなので、気が向いたら簡単にな説明動画をアップするかもしれません。

TortoiseSVNを使いたくなる売りをいくつか書いておきます。

  • ソースを過去にさかのぼって閲覧したり、ソースを過去に戻したりできます。
    ちょっとソースを変更したら、プログラムが動かなくなった場合など、過去のソースと比較できます。比較もGUIで分かりやすく行うことができます。
  • プロジェクト全体のある時点のソースを取得できます。
    例えば、ひとまず安定した現時点のソースに名前をつけて保存。後でそのソースを取り出せます。安定ソースをZIPで保存したりしている方には適した機能です。
  • 必要ならネットワーク上でソース管理して、複数人でソース管理できます。
  • バイナリも履歴管理できます。少し前のグラフィックやサウンドに戻すことも簡単です。
  • 差分で保持されているため、管理容量は小さいです。バックアップは管理しているフォルダを圧縮してUSBメモリに保存するなど簡単です。

 


動画の処理落ち

余談ですが、やっぱり動画の録画がかなりフレーム落ちしてしまいます。今回のようにミサイルなど細かいものがいっぱい画面を動くものを録画すると、恐ろしく処理落ちしてしまいます。

一年の内の数ヶ月は自宅にいないため、ノートPCを選択していますが、逆に言うとほぼ自宅にいるので、この際デスクトップPCの導入を考えてもよいかと検討中です。いまはGTX580搭載のBTOでも13万ぐらい(ただしH67マザー)で買えることを考えたら、かなり安いですし。近々また自宅に戻れない環境になりそうなので、戻ったら一度検討しようと思ってます。

正直ゲームもしないし、GTX580なんかいらない気もしますが…。新しいPCを検討するのは、ちょっとうれしいものですね。

0 件のコメント:

コメントを投稿