プロフィール

Na-7

Author:Na-7
SE(システムエンジニア)として約15年間システム系ソフト会社を勤めあげ、2008年3月退社。現在、ゲーム制作会社設立を目指して活動中。


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
劉備
劉備
蜀の君主。宿敵曹操を漢中で破り、漢中王を名乗る。荊州と漢中の両面から曹操を圧迫するが、同盟国である呉の裏切りにより荊州と関羽を失う。劉備は激怒し関羽の弔い合戦を決行するが、夷陵にて大敗。後事を諸葛亮に託して崩御した。演義の主人公。



◎今回のお題

カメラの距離を一定と決めたので、メイン画面の選択肢が増えました。今後幾つかの方式を試していく予定です。今回は、3D画像を取り込んだ2D方式です。

2Dは3Dよりパフォーマンスが早いという利点がありますが、3Dのような存在感や迫力を表現することが難しいという欠点があります。この方式は両者の長所を併せ持つことを目指すものです。



◎ユニット画像の準備

3Dスキンアニメを2D画像に変換します。手順は既に確立済みです。

1.RokDeBone2の連番BMP出力機能でアニメ画像を出力

2.GIMPで背景色を黒に変換

3.「ドラッグ&ドロップ画像変換(フリーウェア)」で
  黒を透過色としてpngファイルに変換

枚数が多いと2の手作業が結構手間です。もし今回の方式を採用するに至った場合、2の手順は一括変換プログラムを作成しようかな。

…いやいや、最終的にはRokDeBone2じゃなくてSoftimageの連番画像出力を目指すべきでしたね(^^;

最終的には8方向の画像を用意したいのですが、今はテストなので1方向だけ用意し、プログラムで反転して2方向だけ表示します。向きを変えると右利きと左利きが変わってしまいますが…細かいツッコミは無しってことでw



◎コンポーネントの実装

連番2D画像を準備したので、アニメーションプログラムを実装します。2Dアニメのコードは作成済みですが、今回はコンポーネントとして実装し、複数ユニットを簡単に管理できるようにします。

…実を言うと、XNAのコンポーネントプログラミングの存在は最近知りました(爆)

こちらのサイトを参考に、2Dユニット管理コンポーネントを実装。特に難しいこともなく、コードが少しすっきりしました。



◎実行結果

3D地形モデルも2D画像に落とし、背景として実行しました。

3D画像取込方式01

おお!結構いい感じじゃないですか~!
静止画ですが、ちゃんとアニメーションします。ユニットと背景の違和感を懸念していたのですが、現段階では見た目の遜色を感じませんね。

ユニットは200体、位置はランダムです。1600×900のフルスクリーンモードで12~15fpsぐらいです。全体のユニット数よりも、手前に大きく表示する数の方がパフォーマンスに影響するようです。



◎パフォーマンスの改善

最終段階で15fpsならともかく、ユニットだけで15fpsは遅すぎるので、条件を変えてパフォーマンスの改善を試みます。

1600×900/FullScreen/200体/画像サイズ1.0:12~15fps
800×600/FullScreen/200体/画像サイズ1.0:15~18fps
800×600/FullScreen/200体/画像サイズ0.5:20~22fps
800×600/Windows/200体/画像サイズ0.5:20~22fps
800×600/Windows/100体/画像サイズ0.5:20~60fps

3D画像取込方式02

う~ん…最後の条件は数十回試した結果、バラツキが激しいことが判明しました。ユニットが重なって描き変える範囲が減ると、fpsが向上するのかもしれませんが、ちょっとイマイチですねぇ…。

試しに画像枚数を半分に減らしたら(40→20)、60fpsで安定しました。あれ?この画像枚数はアニメーションの細かさであって、速度には影響しないと思っていたのですが…まぁ速くなる分にはいいか(^_^;
ただ、このままだとモーションが倍速再生状態なので、再生速度も0.1ミリ秒から0.15ミリ秒としました。

3D画像取込方式03

画像枚数半減前と比べると、アニメが粗くなった分、再生速度を早めてごまかしたような感じです(笑)

この状態だと、200体で35~40fpsぐらいです。メイン画面に同時に表示される部隊数は通常30~50程度と思いますので、現段階におけるパフォーマンステストは合格ですね。画像枚数や再生速度は最終段階で再調整しましょう。



◎部隊ユニットの作成

ユニットを2D画像とした場合、1ユニットの人数を増やして部隊を表現してもパフォーマンスが低下しないという利点があります。これはすなわち「規模(兵数)」と「陣形」の絵画的表現を可能とし、このゲームに大きなメリットをもたらします。

それでは、部隊ユニットを作成し、簡単な移動デモを作りましょう。槍兵には移動用モーションが無いので、槍騎兵の画像を用意します。槍騎兵は複数のモーションがありますが、画像変換が面倒なのでとりあえず1種類2方向だけ(^_^;

さて、複数の槍騎兵の連続画像を取得したいのですが、RokDeBone2では出来ません。Softimageなら出来そうな気がしますが、槍騎兵モーションをSoftimageで作成するのはかなり手間なので、今回は使用しません。というわけで、XNAで複数モデルにモーション付けて、1コマずつハードコピーを取得します。

部隊ユニットの作成



◎移動デモ

簡単な移動デモを作成しましたのでご覧ください。



いかがでしょう?プログラムは2Dですが、3Dのような迫力があると思いませんか?

土煙りが巻き上がるエフェクトや、ドドドーッという地響きの効果音があるとさらに迫力が増すと思いますが、今回はそこまでやってません(笑)

部隊移動の際、方向が変わる時の切り替えが不自然です。これを自然に見せようとしたら、部隊ユニット方式をやめて1体ずつ動かさねばなりません。できればそこまでやりたいのですが、残念ながらパフォーマンス不足なので諦めます。

ラストの「大軍」は、ちょっとやりすぎましたかね…。XNAでは私のPCでもまともに動くんですが、録画が追い付かないようです。雰囲気だけでも感じてください(^_^;



◎地形画像の縦スクロールについて

今回の画面を見て「地形はどうするんだ?」と思った人がいるかもしれません。今回のように奥行き感のある地形画像の場合、縦方向のスクロールは画像を縦方向に移動させただけではダメです。

ではどうするかと言うと、ラスタースクロールとかラインスクロールと呼ばれる手法(若しくは、それに似た手法)で奥行き感を出そう、と考えています。
極端な話、縦1ライン毎に伸縮率を変更し、奥(画面上方)の方は画像を縮小して表示する、というものです。

正射影で用意した画像の奥側を縮小すれば、今の状態に近い画像になるのではないかという期待をこめた案ですが、正直やってみないとわかりません(ー_ー;

…まぁ、ダメだったら正射影方式ってことで(爆)



◎次回予告

開発当初からパフォーマンスを気にしていた最大の理由は「大量に出したかったから」です。今回のデモ動画で、私がこだわっていた理由を何となく感じて頂けたら嬉しいです(^^)

今回の方式は、ビジュアル/パフォーマンス/製作コストのいずれも合格です。メイン画面のアニメモデルに関しては、この方式で確定しても良さそうな気がしますが、何か見落としは無いかなぁ?


…開発が一気に進んだような気がしますが、気のせいじゃないよね?(^_^;
次回は、正射影やラスタスクロールについて調査します。

スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー)



copyright © ゲーム制作の舞台裏 all rights reserved.Powered by FC2ブログ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。