プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
森12
開発中のメイン画面
混成部隊を編成可能とし、7種類の木々をビルボードと方向画像で表示した。兵士の伏兵も可能。



◎懸念事項

前々回のコメントで、yohさんから木のビルボードの提案を受けました。最初にこれをやらなかったのは、以下の懸念事項があるからです。

・兵士の伏兵が難しそう
・木が回転しそう
・パフォーマンスが悪そう

しかし森簡易モデルは見た目が悪い状況なので、とにかく一度試してみましょう。



◎回転対策

というわけで、木をビルボード(円柱)で配置しました。

木01

静止画ではわかりませんが、ビルボードで画像1枚を配置すると、やはり回転します。

そこで、方向画像で木の向きを固定しようとしたのですが、32枚だとカクカクします。64枚でも少しカクカクするので、128枚に増やしたら違和感が無くなりました。

それにしても、木一本の静止画像に128枚とは…。
ここからさらに「木の枝が風にそよぐアニメ」をやろうとしたら、動画4枚でも木一本につき512枚…無理ですね(哀)



◎クラスの継承

木は配置出来たので、種類と本数を増やして森にしたい所ですが、その前にプログラムの整理をします。前々回は画像取得ツールのプログラムを整理しましたが、今回はメインプログラムを整理します。

・モデルの基底クラス作成
・各モデルクラスを継承化
・その他(PJ名、ネームスペースの変更等)

モデルの基底クラスを作成し、個々に作成していたモデルクラスを継承クラスとします。C#に不慣れなため、試行錯誤中の適用は避けていたのですが、実は自前で継承クラスを作るのは初めてだったりします(笑)

クラスの継承はサンプルプログラムでよく見掛けるので、概ね把握してるつもりですが、曖昧な部分もあるのでこちらで勉強させて頂きました。


今回のプログラムの整理で判明したのですが、板ポリゴンモデルをカスタムコンテントマネージャで複製してる箇所がありました。これは不要なので通常方式に修正すると、パフォーマンスが少し改善しました。

プログラムも見違えるほどスッキリしたし、丸1日かけた甲斐がありました(^_^)



◎混成部隊の管理

従来は、個々のモデルクラス内でモデルインスタンスを複製していたのですが、このままでは混成部隊を編成することができません。そこで、ユニットマネージャクラスと個々のモデルクラスの中間にユニットクラスを作成し、ユニット(部隊)内のモデルを個別管理するように改修します。

混成部隊を可能とするために、1つのList型に異なるモデルクラスを格納して管理したいのですが、どうすればC#でスマートに実現できるのかよくわからず、この課題は長いこと避けてました。ですがそろそろC#にも慣れてきたので、ここらで何とかしたいと思います。

C#には幾つかの技法がありますが、自分が望む機能を一番スマートに実装できる技法はどれでしょうか?
抽象メソッド?オーバーロード?インターフェース?う~ん…

こちらのサイトなどで勉強しつつ出した結論は「継承と隠蔽」「仮想メソッドとオーバーライド」の組み合わせでした。
(解説すると長くなるので省略します)

木02

木は7種類からランダムで選んで並べています。ついでに兵士も混成部隊にしたら、後ろの槍兵3人のうち2人が木に隠れたようです。木を密集させれば、伏兵も出来そうですね。

いずれにせよ、昨年からやりたいと思っていた「混成部隊の管理」がようやく実現できましたw



◎板ポリ原点の修正

木を配置したものの、画面をスクロールすると、位置や傾きが微妙にずれる気がします。足元を地面に揃えないと、このような違和感を感じることがありますが、今回は補正値で足元を揃えています。何が悪いのかしばらくわからなかったのですが、その原因が判明しました。

兵士ユニットの場合、向きによっては足元より下に槍が伸びたりするので、足元は画像の中心付近としました。これに合わせて、ビルボードには原点を中心に据えた板ポリを使用しました。

兵士の原点   原点を中心に据えた板ポリ

しかし、この板ポリを木に適用すると、板ポリの配置座標を補正値で足元にずらしても、ビルボードの傾きに微妙な差異が生じるのです。(わかるかな?)

そこで、板ポリモデルの原点を足元に修正したものを別途用意しました。

木の原点   原点を足元に据えた板ポリ

これで違和感が無くなり、綺麗にスクロールするようになりました!(^^)



◎奥行きを増やす

伏兵の際に隠れやすくするために、木の間隔を狭めてみました。

森09   森10

静止画はわりといい感じですが、スクロールすると木の重なり具合が逆になることがあります。ビルボードの影響なんですけど、ちょっと気になります。木の間隔を空けるとこの問題は回避できますが、隙間だらけだと伏兵できません。

…いや待て、半分ずらしながら奥に増やせば良いのでは?

森11

やりました!この森の向こうに兵士が10人いるのですが、殆ど見えませんね!
これで伏兵もバッチリです!


木を何百本も植えるとパフォーマンスに影響してきますが、板ポリなので最後にモデルインスタンシングで高速化できると思います。…たぶんね(笑)



◎次回予告

yohさんの提言通り、ビルボードでうまくいきました(^^)
どうもありがとうございました!


今回は見た目以上にプログラムを大幅改修したので、実はまだ残作業がかなり残ってます(兵士の移動や城のネームプレートなど)。

しかし兵士の移動を実装しても、(混成部隊になったので)槍兵の移動モーションが無いと不自然ですよね。

というわけで、次回は残作業を片付けつつ槍兵の移動モーションを作ります。
できればそろそろ動画UPしたいですね~!

スポンサーサイト

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

コメント

補足

ビルボードの木は元々常にカメラ正面を向くように回転するのが一般的な動作なんですよ(汗)。もちろん、兵馬と同じ手法で違和感がないならそれで構いません。

伏兵とか、木から一定距離以内のユニットはそもそも非表示にしても面白いかも知れませんね。もっともさすがにその辺は、ゲームシステムの方向性によりますが。


最近はプログラム組まずにモデリングばかりやってます…。

回転OKなんですね

>回転するのが一般的
そうでしたか(汗)
画像枚数を減らす時は、真っ先に削減候補とします。

>非表示
そうですね。後日改めて検討します。

>最近はプログラム組まずにモデリングばかりやってます…。
そういう時期なんでしょうね。私も三か月ぐらいSoftimageやってました。

コメントの投稿


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

トラックバック


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



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