2008-09

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

XNA Animation Library 0.1

海外のゲーム開発会社なのか個人なのかわかりませんが、Bruno Pereiraによるスキンアニメが可能なXNA向けライブラリのバージョン0.1だそうです。使うのが簡単!というのがウリのようですが、機能面ではまだまだのようです。サンプル付きということでスキンモデルのサンプルがほしい人もいいかも。
Bruno Pereira Evangelita


他にもこんな感じのデモも作っていらっしゃるようです。日本のアニメ文化にも興味があるんでしょうか?

スポンサーサイト

パフォーマンスの検証(まだやってる)

先日の結果だけでは納得がいかなかったので、まだ検証しています。具体的にどの部分が処理を食っているのかがハッキリしていなかったので、その辺を検証してみました。まず、どうやって検証するか?なんですが、以前購入したXNAの本に載っていた方法が素敵でした。具体的にはこんな感じ。

Stopwatch sw;
sw = new Stopwatch();
sw.Start();
// ここに計りたい処理を入れる
sw.Stop();
float Time = (float)sw.Elapsed.Ticks / 10000.0f;

Timeにはミリ秒が入ります。(事前にusing System.Diagnostics;が必要)
んで、計ってみるとゴブリンさん13匹のモーション更新(約30階層)が3ミリsec掛かっているほか、プレイヤー(エッジ込みで約6000ポリ)の描画に1.8ミリsec、ゴブリン(エッジ込みで3000ポリ)は1体で0.45ミリsec(13体で5.85ミリsec)、背景(2200ポリ)が1.3ミリsecでした(全部XBOX360です)。
秒間60フレームだと16.66…ミリsecですので、
背景やプレイヤーが重いのはテクスチャーのサイズと数が原因かと思います(それにしても重い)。モーション更新で3ミリsec掛かっていますが、行列→クォータニオン→キーフレームの線形補間→行列となっているところをゴッソリ削ったところ3割ほど減りました。ということはキーフレームはあらかじめクォータニオンに変換しておけば結構高速化できそうですね。
ところで計測中に気づいたんですが、文字列以外の変数を文字列に変換するとGCヒープを消費してしまいます。マルチスレッドにしてもスレッド作るたびに消費するようですし、メインループ中にGCしないゲームってのはXNAでは無理なんですかね…。少なくとも私の脳内では白旗上がってますww

現状、ポリゴン数はネックになりそうなところを直したら300万/秒までいきました。背景とかは別の理由があるっぽいので、単純なポリゴン数だけなら先日chitoさんがおっしゃていたように400万ポリ/秒も夢ではなさそうですね。

モーション作成の日々

先日作成したゴブリンのモーションにさらに追加しまくっております。現状ゴブリンの基本モーションだけで30近くあり、プラス攻撃モーションで合計40モーション近く行きそうです。さすがに全敵キャラ同じようにはいきませんが、ゴブリンぐらいはモーションを厚く用意しておきたいですね。同様にプレイヤーの方も着手しないと…。
それと平行して仕様の方も詰めています。どこぞのWIKIでチクチクやっています。そのうちココからもリンクしますが、しばらくは秘密です。まだ全然できていないのに、夢ばかり語るのも恥ずかしいので…。α版が形になってきたら…かな?
そうなんです。来年の5月に向けてα版完成を目指そうと思います。ちょうどそこがこのプロジェクトが本格始動してから1年に当たります。1面だけしっかりと作って、遊んだ感じとかがわかるところまで詰めたいと思います。以降は要素を追加していきβに進んでいければと考えています。まずはαです! ザコキャラにボス、背景、エフェクト、2D、サウンド、BGM、アイテム周り…あぁ結構あるなぁ~。まだ半年以上あるから! きっと大丈夫。

ゴブリン君のモーションを作成中

今日は娘と高尾にあるトリックアート美術館に行ってきました。駅前からしていい寂れっぷりで、館内もいい感じの子供だまし感でした。それでも娘さんは歪んだ部屋や飛び出て見える絵を前にとても楽しそうに遊んでいました。私はいちいち詰めの甘い部分に突っ込みたい気持ちを抑えながら、娘のリアクションを楽しんできました。
さて、ゲームの方はメモリリーク問題がどうにか解決したっぽいので、ゴブリンさんのモーションを始めました。今までもチョコチョコ作っていたので、だいぶできあがった感じです。後はダメージ系のモーションと攻撃ももうちょい追加しようかと思っています。ゴブリンさんは序盤キャラということで、攻撃を失敗することがあります。現在はダウンさせちゃってますが、これは尻もちの方がプレイヤーに攻撃チャンスが明確になるかもしれませんね。

メモリ周りはなんとか解決しました

メインループ中にメモリ確保していたため、まれにガベージコレクトされていた問題ですが、なんとか原因が特定できました。どうやらList< T>のAddとClearのようです。毎フレームやるべきものではなさそうですね…。大きめの配列を用意してやりくりするように変更しました。最初はモーションブレンドやキーフレームの補間あたりが怪しいと思っていたのですが違ったようです。この辺は自前で実装した分、どうにも怪しいんですよね~。
今週はこの辺の問題で大きく時間を取られましたが、実はもう一つ問題が出ていました…。それは、近隣住人の無線LANとの干渉です。最近になって近所の方々も無線LANを導入したのか、アクセスポイントが一気に2~3箇所増え、しかも全部802.11g! もうどのチャンネルに設定しても干渉しまくりで全然速度がでません…。そもそもルーターからPCまで距離がある上、間に電子レンジ挟んでいるため、ここ数日は最悪の状況でした。ルーターもPCも802.11aに対応しているので、そっちにしたいのですが、設定できるチャンネルがかみ合わないため繋がらなかったのです。どうにか解決できないかとネットで調べたりもしたのですがわからずじまい。あきらめかけていたそのときに、PC側のドライバーと一緒にチャンネルアップデートなるユーティリティを発見。藁をもすがる思いで落としてみたところ…(この数メガ落とすのに3時間近く格闘しました…)なんと、日本の802.11aはチャンネルが増えたらしく、これを解決してくれるユーティリティでした! 結局、PC側は古い仕様のままで、ルーター側は増えたチャンネルのみ対応、という状況だったようです。というわけでなんとか802.11aで接続でき、晴れて快適なネット環境が戻ってまいりました。ホントPCとXBOXをクロスケーブルで繋ごうか迷いました…。

XBOX360でXNA速度テストその2

昨日に引き続きXNAの実機での速度テストをしています。適当に作った酷いソートアルゴを削除したら一気に軽くなったのを受けて、他にも重い処理がないか調べていたら…ありました! キーフレーム補間やモーションブレンドの処理で、行列→クォータニオン→Slerp補間→行列に変換ということをしています。最初からクォータニオンにしておけば高速化が見込めるんじゃないかと思い、とりあえず補間処理をコメントアウトして、DestMatrixを返しておいたのですが…速度的にまったく差が出ませんでした。行列からクォータニオンへの変換ってあんまり処理食わないのかな?? 私の脳では変換に何msかかるかどうかもわからないのに…。ていうか1日かけても変換できない。
まぁ、それよりもショックだったのは2~3分に1回くらいの割合でGCが発生していたのにはまいった…。タル壊すとさらに頻度が増しちゃったりして見てらんない。この辺の整備も早めに対処したいなぁ…。

そういえば、行列での補間はLerpで、クォータニオンの補間はSlerp(Lerpもありますが)となっています。どういう意味なんだろうと思って辞書で引いたみたら全然引っかからない。ググってみたらありました! Spherical Linear intERPolationの略だったんですね。プログラマな方には常識かもしれませんが、私には目から鱗でした。てっきり普通の動詞かと思ってました。

XBOX360でスピードテスト

先日の記事でchitoさんからいただいたコメントを受けて、速度面について早速テストしてみました。結論から言うと想像を絶するヤバさでした。現状(シングルスレッド)だとリリースビルドでだいたい220万ポリゴン/秒ぐらいという散々な結果! もちろん、まだ最適化していない部分が多いので、もっと出るとは思いますが…。
ざっと要素を並べると、主人公モデル3000ポリ(エッジがあるので約2倍)、タル90ポリゴン×5個、背景2400ポリ、敵キャラ1300ポリ(エッジがあるので2倍)×11体となります。合計すると37,450ポリゴンでこれを1秒間に60フレーム描画すると2,247,000ポリとなります。ちなみに単独で起動すると(デバッガと非接続状態)+敵3体分(約45万ポリ/秒ぶんに相当)多く出ました。
モデルは即座に描画するのではなく、一度キューにためてカメラからの距離でソートした後に、まとめて描画しているのですが、このソートアルゴがかなり適当でした。コメントアウトしたら60万ポリ/秒ぶん早くなりましたwww 酷い話ですね~あはは…。やっぱ背景、エフェクト、サウンドだけでも別スレッドにするかな…。

XBOX360は今のところ順調に動作しています。初期不良問題は過去の問題なんですかね。それにしても、最初に入っているパッドがワイヤレスなのに充電できないってどういうつもりなんでしょう…。いまどきの仕様とは思えないですね。リチャージ用のケーブルとバッテリー2000円+無線LANアダプタ8000円で、結局1万円余分に掛かりました。私はそれにワイヤレスパッドをPC用でも使えるようにする受信機(まだ使ってない)も買ったので、さらに出費がかさみましたが…。ほんと、リモコンいらないから、無線LANはつけてほしかったです。

XBOX360買いました

先日安くなった通常版(60GB29、800円)を購入。一度ビックカメラで売り切れていたのですが、数時間後には即入荷してました。かなり売れている様子。さて、買ったはいいけど無線LANアダプターが売り切れていたので近所のレンタルビデオに併設されたゲーム屋やジャスコを回ってみたのですが、XBOXの売り場自体がなくて吹いた。まぁ、今までの実績(XBOXとPS2)を見ればXBOXは切り捨てられてもしょうがないよね。PSPは売れてるようだからPS3は置いてあるんでしょうか。これからの盛り返しで、この辺の棚が変わってくるといいですね。
しかし、この360の箱の重さといったら何なんだ!? 試供品のミネラルウォーターでも入っているんですか? 2リットルぐらい。まぁ、中身がほとんどパソコンだから当然なんですが…これは酷い…。自転車の前カゴに360、後ろに娘という重量オーバーな状態で家に帰り早速セットアップ。インプレスか何かの記事で『以前に比べて静かになった!』とか書いてあったんですが、電源を入れた瞬間の轟音に『静かになったはウソだろ』と思いました。充分うるさいです。
XBOXでXNAやるには納税が必要というのは知っていたのですが、具体的にどうすれば良いのかはよくわからないまま購入しちゃいました。んでてっきりゴールドメンバーシップってヤツかと思い、危うく買うところでした。ネットで納税できるんですね。スゴイ嫌だったけどクレジットカードの番号を登録して納税完了。(何が嫌って娘が私がいない間に変なゲームを買わないか心配です…)
さて、早速作成中のゲームを360で動かすためにプロジェクトを360用にコンバートする。当たり前のように大量のエラーが出る。なにやら参照関係でエラーが出ている。エラーコードでググってみるも、同じような症状は(日本語では)見当たらない。日本語訳されているエラーメッセージを英訳して再度ググってみたら見事にヒット。BBSで同じような問題でぶちあたっている外人さんが質問している。回答の英文を一生懸命訳してみたところ、どうやらそういう問題はリビルドで解決することが多いとのこと。やってみた。一発解決。なんじゃそりゃ! これで1時間近くロス。ビルドは通ったので、360と接続する。MixedPlatformsの状態で360に配置する。エラーが出る。今度はファイル名が40文字を超えているそうです。超えているのは…ってXNA関連のDLLじゃないですか。これまた検索するとまたまた困っている外人さん発見。返答はXNA開発の人。『それは360にコピーしないでOK。カスタムパイプライン関連での対処方法に関しての詳細はノーマルマップのサンプルを見てね。』とのこと。早速、見てみる。よくわからない。ていうか対処法は書いてないでしょ?これ。困ったな~と思って依存関係やら、構成マネージャーなどをいじくりながら、スキニングサンプルとノーマルマップサンプルに設定を合わせてみたが、やはりエラーは消えない。さぁ困った。もう1回リビルドしてみるか~。エラー0。そうですか…良かったですね~。はぁ…意味不明なバグに2時間近くロスしてグッタリです。まぁ、おかげさまでなんとか360上で作成中のゲームが動作するようになりました。開発環境の近くにあるテレビはものすごく小さいブラウン管なので、うまくボケて、すごくクオリティが高く感じます。後で娘が寝たら居間のハイデフなテレビでも確認してみます。スゴイがっかりするだろうな…。

ゴブリンとブルーミング

製作中のゴブリンくんにジョイントやらリグやらを入れて適当に立ちモーションを作りました。早速XNA上に乗せてみた。ついでにブルーミングも入れてみた。また一歩ゲーム画面ぽくなってきましたよ!
ブルーミングはおじくんさんのページを参考に(というかほぼパクリ)させていただきました。パラメータを適当に弄っていたら随分とほんわかした雰囲気になりました。気に入ったので、しばらくはこのままにしておきます。ステージごとに変えるといいかもしれませんね~。
ゴブリンもスケールを小さくしたので、画面での収まりがよくなりました。また、口の中も作ってあるので、せっかくだからパクパクさせています。つぎは、モーションをある程度作って戦えるようにしてみようと思います。楽しみだ~!
080911_Goblin_Blooming.jpg

プールで疲れた

今日は娘と今年最後のプールに行った。最後といっても幼稚園でもらった招待券が切れただけです。8月中に行きたかったのですが、タイミングが合わずに今日となってしまいました。今日は雲こそあれ30度を越える陽気なので、プールには最適でした。たっぷり4時間近く遊んじゃいましたよ。んで、ウォータースライダーというのを人生初体験しました。そういえば今まで乗ったことなかったな~と思いながら、ただの水が流れる高速滑り台程度に思っていたのですが、昭和記念公園レインボープールのウォータースライダー(チューブ状のヤツ)は中が暗いんです! 暗いっていうか闇、いや漆黒の空間でした。専用の浮き輪に乗って暗黒のチューブでスペースマウンテンでした。唐突に予想外の方向にGが掛かるので、大人でもビックリします。5歳の娘には可愛そうなことをしたなぁ…と思いました。ごめんなさい。終わったときはかなり呆けておりましたが、むしろ帰り道の雷の方が怖かったらしいです。最近雷多いですよね。首都圏。帰りはズブ濡れで水着のまま帰った方が良かったと思えるほど濡れ、疲れに疲れました。
まぁ、そんな感じで今日はもう切り上げて寝ます。一応、昨日の続きでゴブリンさんのテクスチャーを塗りました。後は武器と鎧ぐらいです。手首の腕輪と、足首の包帯は、作業を簡略化するために付けました。なぜ簡略化に繋がるのか? それはその部分がUVの境目だからです。UVの境目はうまい具合にピクセルを合わせないといけないんですが、結構手間なんです。そこで手間を省くためにデザインを変更しちゃいました。
080907_Goblin02.jpg
ある~日、森の中~、ゴブリンに~出会~った、ゴツン!

最初の敵ゴブリン君と、ポニョの歌

そろそろ樽壊すのも飽きてきたので、最初の敵キャラを作ることにしました。ゴブリン君です。このゲームで一番多く、そして一番最初に出てきて殺されることになるであろう可愛そうなヤツです。時間を優先して一気にモデリングしたので、腕の筋肉が変だし、細部はまだポリゴン数を稼げそうですが、この辺で切り上げて作業を進めちゃいます。現状でだいたい1300ポリゴンぐらいです(エッジモデルがついてさらに倍)。これに512のテクスチャーを貼り付けます。テクスチャーは最悪256ピクセルにするかもしれませんが、現状は512で進めていきます。だいたいの場合テクスチャーは倍の解像度で作って縮小した方が品質は上がります。ですが、1024ピクセルはノートPCでやるにはデカすぎて…、気が引けるんですよね。なので、512で行きます。個人的印象では256はメモ帳、512はB5、1024はA4、2048はポスターという印象なんです。メモ帳に細かい絵を描くのは好きなんですが、A4にビッシリ細かい絵を描くのは気合がいります。2048になるともう勘弁してほしいです。
goblin01

娘がポニョの主題歌を歌いまくっている。あの歌は本当にインパクトがありますね。オリジナルを歌っている女の子の声がまたいい味だしてますね。聞いていると音が外れないかハラハラしちゃいます。あの危うい感じも狙ってるんだとしたらスゴイと思います。NHK教育の『いないいないばぁっ!』も小学校低学年の子が一生懸命歌っている姿がなんとも心に来るんですよね。でもポニョはそれ以上です。あの宮崎映画の主題歌ですからね~。娘がしつこいからYouTubeで検索したら生で歌っている動画がありました。これが、また見てらんないです。ちょっと涙でちゃいましたよ。記者会見の場で歌っているんです。これは緊張したろうな~。自分の娘だったら(っていうのもありえないですが)と思うと涙なくして見てられません…。でも、何回も聞きたくなるような歌ではないですね…。

パラメータ調整環境整備

今までベタベタに書いていたコリジョン周りもだいぶ整理できたので、一緒にプレイヤーの技周りの仕組みを整備しました。このゲームでは技の種類を多くしたいと考えています。なので、技の追加・調整がしやすいようにしました。C#はプログラム実行中でも停止状態ならソースの改変ができます。これを利用して停止中にコリジョンなどのパラメーターを変更し(あらかじめこれらパラメータはひとまとめにしてあります)、ゲーム再開後に更新ボタン1つでゲーム上のパラメータを更新できるようにしました。攻撃していてこの位置で当たらないのは気にいらないな~なんてときにはチョイチョイとパラメータを変更して即確認。というやりとりができます。最近ビルドが重くなってきたので(まだリソース全然積んでないのに…)、こういう仕組みは大変便利です。

そういえばXBOX360が国内でも値下げ決定しましたね。通常版で29,800円だそうで。そろそろ買おうかと思います。XNA納税も含めて。9月11日からだそうですが、なんとなく360に追い風が吹いている印象で、すんなり買えるのか微妙です。スクエニの新作RPGやら、品薄状態からの値下げ発表といい、なかなか頑張ってますねMSも。PSPも今後の先行きが明るい印象ですし、WiiとDSの時代から徐々に変化が出てきているんでしょうね。そうした流れの中でXNAのゲームが世にでていくと良いのでしょうが…、私のゲームはきっと360終焉の頃にようやく完成とかいってるんだろうなぁ~。トホホ…。

NEW ENTRY «  | BLOG TOP |  » OLD ENTRY

プロフィール

Karu_gamo

Author:Karu_gamo
<メールアドレス>
karu_gamo#hotmail.co.jp
#を@に置き換えてえてください。

<自分リンク>
かるがも研究所【新】
YouTubeチャンネル
公開素材置き場
仕様書
旧ブログ(見るとこないです)
管理者ページ

リンク

YouTube動画

FC2カウンター

カテゴリー

Twitter

 

月別アーカイブ

RSSフィード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。