プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
複数ユニット表示方式変更後   複数ユニット表示方式変更後ズームアップ
開発中のメイン画面
部隊ユニットの表示方式を変更し、単体画像で人数分表示するようにした。画像やプログラムも併せて調整し、滑らかな画像と解像度を実現した。パフォーマンスも良好。



◎右利きと左利き

前回は取得した画像を全て使用しましたが、画像を反転すれば半分近く減らせますね。

でもちょっと待てよ?
画像を反転すると、武器を持つ手が急に切り替わって不自然に見える角度が出来てしまいます。これでは、画像切り替えの不自然さを軽減するために画像数を増やす意味が無い気がします。

というわけで、当面は反転画像を使用しません。



◎Immediateモード

画像取得プログラムを実行すると、何枚か画像取得に成功した後でエラーが発生することがあります。

保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。

発生場所は spriteBatch.End() です。再度実行すると、問題無く全画像取得できたりします。

時々発生するということは、タイミングの問題かもしれないと思い、レンダーターゲットを戻した後でウエイトを入れてみましたが、現象変わらず。

ウエイトを入れる場所が悪いのかなぁ?
それとも、レンダーターゲットとスプライトバッチの相性?

結局、spriteBatch.Begin() の引数の SpriteSortMode を Immediate → Deferred としたら、以後エラーが発生しなくなりました。レンダーターゲットを変更する際は、Immediate モードを使用しない方が無難なようです。



◎あちこち修正

槍兵の複数ユニット画像を取得してメインプログラムに組み込み、ついでにあちこち修正しました。(試行錯誤中のコードを整理したら5分の1ぐらいになりました(^_^;)

槍兵蜂矢の陣

実際に表示すると、気になることが出てきました。


1つは陣形。騎兵用の陣形は槍兵に相応しくないですね。

とりあえず槍兵は2列横隊にしましたが、陣系数が増えると画像数がさらに増えることになります。

容量低減のために、解像度を800×600→320×240に変更しました。ファイルサイズが4分の1ぐらいになりました。

32方向×10枚×約12KB×4陣形×10種類=約160MB

まだちょっとデカいですが、一応現実的なレベルになってきました。


もう1つ気になったのは、ユニットが浮いて見えること。

単体ユニットの時に同様の問題が発生しましたが、その時は板ポリの原点を中央最下部に設定しました。単体ユニットは通常その辺が足元になるのでうまくいきましたが、複数ユニットの場合、真ん中の兵士の足元の位置を原点とする必要がありそうです。

結局、ユニットの種類ごとに補正値を比率で設定するようにしました。また、単体ユニットの画像も32方向で取得して混在表示できるようにしました。

槍兵横陣   槍兵横陣ズームアップ

解像度を落としたので、カメラをズームアップするとちょっと厳しいですが、モデルが動いているので何とか耐えられるレベルです。



◎複数ユニットの表示方式について

単体ユニットを表示してちょっと驚いたのですが、単体ユニット32方向の画像切り替えは全然カクカクしないので、普通の3Dモデル表示と比べても全く遜色ありません。ここまで違うと、複数ユニットのカクカクを何とかしたくなってきました。

複数ユニットがカクカクするのは、各兵士の表示位置がずれるからです。画像数はこれ以上増やしたくないので、単体画像を人数分表示するようにしたいですね。

問題はパフォーマンスです。draw回数が10倍増えるわけですからね。でも解像度を落としたから何とかなるかも…?

試しに槍兵1000体表示してみました。

槍兵1000体表示テスト

さすがに12fpsでちょっとキツいですが、ゲーム中の1画面に部隊がこれほど集中することは滅多に無いので、結構イケそうな気がしてきました。



◎実装

というわけで、複数ユニットの表示方式を単体画像で人数分表示するようにしました。ついでに、1部隊の表示人数を1~10人の範囲で指定できるようにしました。



おお~凄い!
全くカクカクしません!パフォーマンスも出てます!画像を240×240でギリギリ収まるように調整したのでアップもOK!
ついにここまで来たか~!!

ちなみに、陣形を増やしても画像数を増やす必要が無くなったので、ファイルサイズも低減しました!

32方向×10枚×約8KB×10種類=約25MB



◎次回予告

今回は画像取得プログラムの大活躍で調整が一気に進みました。(「出力→テスト実行→プログラム修正」を数十回繰り返しました。手作業でやったら死んでますw)

ゲームを作り始めてはや1年。解像度と滑らかさとパフォーマンスに四苦八苦してきましたが、ようやく満足できる状態になりました。応援して頂いた方々、どうもありがとうございました!

次回は城画像の取得、表示、地形の立体化などを行う予定です。今後も焦らず地道に頑張りますよ~!

スポンサーサイト

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

コメント

進みましたね~

次はいよいよ城や柵ですね。期待しています。

>draw回数が10倍増えるわけですからね。
ご存知かも知れませんがシェーダ・インスタンシング技法というのもあるにはあります…。私自身使ったことがないので何とも言えませんが。

こんにちは~

いろいろアドバイスなど頂きましてありがとうございました。
今後ともよろしくお願いします。

>シェーダ・インスタンシング技法
単純なモデルが多数存在する場合に効果的らしいので、かなり期待してます。シェーダーのバージョンによって幾つかあるようなので、重くなってきたらいろいろ試してみようと思います。

コメントの投稿


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

トラックバック


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



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