忍者ブログ

[PR]

2025年09月29日
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

無題

2008年05月26日
ボス戦専用のカメラワークと移動系のルーチンを実装してみたりして。

17cd3f7d.jpeg

ボス戦では、通常ステージの時と違い、ボスと正面から対峙するようにカメラが回転します。
見た目が派手になるし、3Dステージにした効果が出せるしベロシティマップのエフェクトがいい感じになるし、実においしいです。
操作面の観点から見ても、ボス戦では真ん中に照準を合わせていれば自動的にボスを狙う感じになってくれるので、避けることに集中しやすくなってます。

だいぶゲームとしての体裁が整ってきたので、そろそろ1面のステージとボスと通して遊べるようにしてみたいです。
PR

無題

2008年05月25日
d9ca211f.jpg

新しいステージとオプション関係を作ってました。
今回はマウス使うので、フルスクリーンの方が色々とやりやすいです。

あと、弾のスピードに関してですが、当初の構想よりだいぶ遅くなりそうです。
敵の弾が速いと避けるので精一杯になってしまい、照準を合わせるのが辛いためです。
というより、照準を合わせてるときに速い弾が来ると、気付いたときにはもう当たってるというケースが多々ありました。
避ける時と狙う時の意識の切り替え時間がないと辛い感じです。
まぁ、上手い人なら全く問題なくやっちゃうんだろうとは思いますが。

頂点バッファの整理中

2008年05月23日

あまり進んでない感じですが、描画用ポリゴンのデータ群を整頓して、描画コールを抑えようと色々いじってました。
DirectXを触ったことがある人なら分かると思いますが、DirectXは描画コールがやたらと重くてそれがかなりのオーバーヘッドになります。
テクスチャを切り替える場合とかは仕方ないですが、可能な限りポリゴンをまとめて一度の描画コールでたくさん描けるようにプログラムを組んであげるといい感じになるのです。
しかし、ソートなどに処理を割きすぎるとCPUの方に負荷が掛かりすぎるので、その辺のバランスを見ながら調整していく感じです。

0a347396.jpeg

ゲーム仕様の方は、ボムに相当するシステムを実装。
といってもダメージは与えられないし弾消しもありません。
カーソル位置に一瞬で転移する緊急回避アクションになってます。
弾を撃ってくる相手の背後に一瞬で回りこんでボコボコに出来たりするとかっこいいかもしれません。

無題

2008年05月10日
2ec764e2.jpg 


ようやく敵の攻撃を実装完了。
ステージ作成なんかもそろそろ進めたいですが、とりあえずその前に、オプションやメニュー関連を実装しとこうと思います。

綺麗な弾幕も好きですが、とりあえず避けてて楽しいものを目指したいです。
尤も、ステージ全体のプレイ時間をこちらで制御できないので、普通のSTGとは感じがずいぶん変わってしまうだろうとは思いますが。

弾幕制御

2008年05月10日

弾幕というほど弾は出ませんが。
ちょっとこんがらからないうちに仕様を整理してみます。(つまりチラシの裏)

敵とその攻撃オプションの構造体定義は以下の4種

・敵の種類ごとの定数パラメータセット

  リアルタイムでは変動しない、ライフやアニメーションの参照データ。
  外部ファイルに定義されたパラメータをメモリ内にストックする。

・攻撃オプションの定数パラメータセット

  弾の画像、スピード、Way数などの基本値、及び1ループ内におけるその変動値のパラメータ。

・個別の敵オブジェクトデータ

  ライフ、位置など、リアルタイムで変動する敵データを保持。
  初期化時にパラメータセットのポインタをセットし、以降はそれを参照する。
  攻撃オプションは複数を保持し、スレッドステートのON/OFFを切り替えることで攻撃を制御する。

・個別の攻撃オプションデータ

  敵オブジェクトに配列として内包され、弾の発生を直接的に制御する。
  基本パラメータは上記のパラメータセットにあるので、タイムカウンターやスレッドステートのみを持つ。


敵パラメータ

敵オブジェクト
 L 攻撃オプション
   |
  オプションパラメータ

敵、攻撃オプションの基本パラメータはステージの変更時にステージスクリプトにしたがってロード。



……書いてみるとすごい単純だ…
コーディングしてるとポインタが蜘蛛の巣のごとく張り巡らされてるような感覚になってしまうんですけどねー。
実装し終わったら、一度コードを整理しないと後々面倒なことになりそうです。

とりあえず、これらの実装は一通り終わっているので、後は攻撃オプション内部の弾生成を実装すれば敵の弾が出てくる…と思う(不安)

デコードおわた

2008年05月08日
PSPとSO2SE買ってきました。

138cfbd3.jpg

やっとogg再生のカプセル化が終わった・・・
基礎知識が少ないためめちゃくちゃ苦労しました。
サイズの小さい効果音とかならともかく、BGMなんかはサイズがでかすぎてVRAMの確保が失敗するので
やむなくストリーミング再生を実装する羽目に。
実装にあたっては、vox.dllというoggvolbis再生用dllのソースコードを参考にさせて頂きました。

それにしても、oggのデコードはやっぱ重いです。
マルチスレッドにして負荷を分散させてるんですが、それでも目に見えてスリープ時間が減ってます。
ネットで配布する場合は仕方ないですが、CDなんかで配布する場合はwav形式を使った方が動作そのものは快適かもしれません。
フレームレートが下がってる訳じゃないので許容範囲内ではあるんですけどね。

ちなみにマルチスレッドは、これまではなんかデットロックが怖くて敬遠してきたのですが、今回色々勉強できたので幾つか他の処理系にも組み込んでみました。
効果が大きいのはやはり読み込み関連の処理で、今までは大きな画像ファイルを読み込むときに一瞬固まるような感じになっていたんですが、今回の変更で大幅に改善されました。

具体的には、メインスレッドから画像のロードを要求された時に、一旦画像メモリのポインタを内包したクラスを生成して返還し、内部の読み込み処理は別スレッドで独立して行われるような流れになってます。


それにしても、やっぱ音があると臨場感が段違いに変わりますね。特にアクション要素のあるゲームは。
さて、続き頑張ってこよう。

連休きたよー

2008年04月30日
01f4a55d.jpg

まとまった時間が取れそうなので、集中したかった音関係の実装をやってみようかと思ってます。
前回の音関連処理は、かなりDirectMusicに補助してもらっていたのですが、今回はogg形式を利用したいこともあり
いい機会なので音関係のコーディングについて勉強してみようと思ってます。
敵の移動ルーチンや攻撃オプションなんかも少しずつ進めてますが、見た目の変化がないのでもどかしいです。

気合いれよう

2008年04月19日
4a862fa3.jpeg

まとまった時間がないと中々製作が進みません。
作業がぶつ切りになるのが苦手っぽいです。頑張らねば。

現在、敵の移動、攻撃のルーチンをどの程度までハードコーディングすべきか検討中です。
敵の数や拡張性を考えて、幾つかのタイプを組み合わせていく感じになると思いますが。


アクセス数が異常に跳ね上がってたのでびっくりしたのですが、確認してみたら窓の社さんが再び時計塔のひみつを紹介して下さったようです。
かなり細かく、しっかり中身をやりこんでいることが分かる記事になっていて有難いです。