Category: xna game studio

skinned model

comments skinned model はコメントを受け付けていません。
By , 2012年7月20日 (金) 19:12:36

XNAに Skinned Model とか Skinned Model Extensions Tutorial というのがあるので、 モデルのファイルを見てみると fbx。 fbx を読み込んでxnaで動くビューアのようなものと思われる。

softimage mod tool についてく XNAViewer は .xsi を読み込んで xna で動かすビューアなわけだが、 とりあえず fbx を crosswalk で import してみるが、どうも変だ。 前後、つまりz軸座標が反転しているように思われる。 fbx は 3ds max が本家だから、 3ds max 2012 で開こうとするが試用期間切れなので Autodesk Education Community で教育用無償ライセンスを登録。

うーん。 どうも初心者がやるには少し本格的すぎるし、データも重すぎる。 途中で 3ds max が落ちたりする。 私としては比較的手軽に mmd みたいなことができればよいと思っているのだが、 こんなに込み入っていては手がだしにくい。

source sdk ではアニメーションの手付けなどは普通は行わない。 だから、リグとかボーンは使わない。 使うのは deformer という null オブジェクトと、envelope とか skin とか呼ばれるポリゴンメッシュと、 そのポリゴンメッシュの頂点に割り当てられた deformer の重み付けだけだ。

deformer を動かしてアニメーションを手付けするのは不可能ではないかもしれないが、 普通はリグを仕込んでリグでアニメーションを付ける。 ゲームエンジンには既存のアニメーションのライブラリがあるから、それを適当に再利用するのが一般的であり、 したがってアニメーション以外のリファレンスモデルの形状と、テクスチャの描画作業だけでモデルを作れるのである。

最近思うのは source sdk のライセンスを学生に毎年配布して使わせるのはかなり無理があるということだ。 かなりむちゃ。 ゼミ生だけならなんとか。 そこを回避しようと xna だけでやろうとするといろんな煩雑なことに巻き込まれてしまう。

captain modtool

comments captain modtool はコメントを受け付けていません。
By , 2012年7月16日 (月) 01:56:20

softimage の情報は圧倒的に英語が多いから、 検索するキーワードが分かりよいように、メニューも英語表記にしてみた。

xnaviewer に captain_modtool.scn というものがついてくる。 weight paint ツールでブラシでウェイトが塗れない。 どういう設定でそうなっているのかわからない。 weight editor で数値入力すればウェイトを変更することはできる。 謎だ。

それから、captain modtool のポリゴンメッシュをマウスでオブジェクト選択しようとしてもできないようになっている。 いちいち xsi explorer 開いて選択すれば選択できるのだが。

この captain_modtool というやつは何かが変だ。 source sdk のサンプルの scn ではそんなやっかいなことは起こらない。 captain_modtool.xsi を読み込めば問題は起きないが、rig control がないので、 アニメーションの手付けができない。

rig control で関節を回転できるものもあればできないものもある。

deformer が階層構造になってない。 source sdk ではちゃんと親子関係の階層構造になっている。 いちいちわけわからん。

ambocc とは ambient occlusion という意味で、 つまりくぼんだところとかひだになったようなところには環境光が少なくて暗くなるという効果のためのマップということだろう。 surface とは albedo、つまり普通の色(物体の反射係数)であって、 もひとつ法線 (normal) マップ(というかいわゆるバンプマップ)がある。 captain modtool では ambocc、albedo、normal の三種類の画像を同時にテクスチャで使っているのだが(source sdk では softimage上では albedo だけで vmt で normal を付けることもできるが ambocc は使ってない)、これを softimage でテクスチャデカールで見るとなんか変だ。 リアルタイムシェーダが OpenGL になっているせいだと思う。 しかし私の環境では Direct X ではまともに表示できない。 そこが問題なのかもしれん。

あまりにもいろんな問題があってぶちきれそうだ。 だが、xnaviewer そのものはなかなか良いサンプルなので、なんとか授業に活用したいのだが。

xnaviewer を mmd みたいに使おうという野望はかなり萎えた。 あくまで xnaviewer は xna を通じてさくっとキャラクターモデリングやテクスチャの実際を知るのに留めた方がよいか。 当たり前といえば当たり前だが、xna と source sdk では softimage の使い方がかなり違う。

xnaviewer

comments xnaviewer はコメントを受け付けていません。
By , 2012年7月13日 (金) 23:29:39

softimage xnaviewer というものを使い始めたのだが、 まだ何が何やらよくわからん。 ただ、おそらく、softimage mod tool でモデリングして xnaviewer で表示させるくらいは簡単にできるのであろう。

戦闘機

comments 戦闘機 はコメントを受け付けていません。
By , 2010年6月29日 (火) 17:24:00

なぜかグラマンとB29を描いた。 ゲームに使う。 B29があまり似てないのだが。

Grey Shooter

comments Grey Shooter はコメントを受け付けていません。
By , 2010年6月13日 (日) 09:21:24

NASA の画像など使って背景をブラシアップ。 よく見ると北斗七星やオリオン座なども描いてある。

音も付けたし、スコア表示もつけた。 まあこんなもんかな。

一応ソースも公開する。 GreyShooter100613_2.zip

GreyShooter

comments GreyShooter はコメントを受け付けていません。
By , 2010年6月12日 (土) 19:03:14

ゲームには長年かけて培われてきた様式美というものがあって、RPG にしろシューティングにしろ、 レベルというものがあって、だんだんに難しくなる。 各レベルにも雑魚キャラと中堅とボスがいる。 ボスをたおすとレベルクリア。

別に自分がそういうステレオタイプなゲームを好きなわけではないのだが、 教育とは本質的に保守的なものであり、お茶のお点前のようにある種の様式から入るのが何かと都合が良い。 私はともかくとして学生にとってはそうなのに違いない。

そう思うと、私が中学生の頃にサスケvsコマンドーやらムーンクレスタあたりで基本形が表れて、 高校生の時のゼビウスで確立されたシューティングというジャンルが、 未だに世間一般にまるで千古不変の真理のごとく受け入れられているのがなんともまか不思議である。

それでシューティングはゲームプログラミングの基本、というのはなかなか深い含蓄があってだな。 久しぶりにトトロなど見ると背景視差スクロールを三層か四層くらいでやっている。 何が怖いかといって無意識のうちに受容したものほど怖いものはない。 悩みもためらいも反省も拒絶もない。空気を吸うように当たり前なもの。 それが現代人におけるアニメやゲームの視差スクロール (parallax scrolling)。 アニメもゲームも視差スクロールは基本。先人から受け継がれるコツ。 そういうところから淡々と、基本から応用へと、教えていくのが良いのだろうとおもう。 というかそういうものなのだから、そこから敢えてはみ出そうとしても、なかなかうまくはいかない。

それはそうと敵キャラがみんなグレイみたいな顔のシューティングゲームなんで GreyShooter という名前にしてみた。

構造体とクラス

comments 構造体とクラス はコメントを受け付けていません。
By , 2010年6月10日 (木) 16:34:48

たとえばC#で

List<Enemy> enemies = new List<Enemy>();
....
foreach(Enemy enemy in enemies)
{
    enemy.Update();
}

とかってやるじゃないですか。 C#では構造体は値型、クラスは参照型なんだが、 foreach でリスト enemies から取り出してくる enemy はだから当然クラスの場合は参照であり、 構造体の場合は値である。 値はコピーに過ぎないから、enemy.Update() とかってやっても無意味なんだわ。 なんか知ってるようで知らなかった。はまって思い知ったというか。

しかし、参照型とか値型とか、自分でもよくわかってないことを学生に教えるのはどうなのか。

いや、やはり、参照型のクラスとか値型の構造体とかいう仕様のC#もどうなのかと思う。 こんな言語はC#くらいなのだから。

XmlSerializer

comments XmlSerializer はコメントを受け付けていません。
By , 2010年6月10日 (木) 12:59:01

XmlSerializer は便利だ。 クラスや構造体をXMLにして保存したり(serialize)、 XMLをクラスや構造体に読み込んだり(deserialize)できる。

しかし、クラスのメンバにクラスがあったりするとだめ。 つまり参照型とかは使えない。 参照は実体へのポインタに過ぎないからだ。 配列は可能だが、配列の配列や、リストのリストなどもダメらしい。 なるほどなと思った。

comments 敵 はコメントを受け付けていません。
By , 2010年6月9日 (水) 21:56:29

Torque’s Adventure をオープンキャンパスに展示することにした。

敵が出てくるようにした。 敵の配置などはXMLで こちらのように 書けばよろしい。簡単にマップが追加できるところが良い、つもり。

けっこうムズい。

ソースなど。 TorquesAdventure100610。 いろいろ手直ししている。

マップエディタかなんかつけて小学生でも自分のマップを作れるようになればかなり良いのかもしれないが。

torque’s adventure

comments torque’s adventure はコメントを受け付けていません。
By , 2010年5月28日 (金) 18:01:32

授業準備がさらに楽になってきたので手直し。 TorquesAdventure100528

実写使ったマップを追加。

それから、マップをxmlで記述して読み込むようにした。 詳しくは XNAでXMLの書き出し・読み込み

XNA のプロジェクトで XML を追加すると、 XnaContent タグや Asset タグが見つからないと怒られるので、 プロパティのビルドアクションを「コンパイル」から「なし」に変更する。 それで文句いわれなくなる。

using 使えばファイルは自動的にクローズされるんだよね。

マイナーバージョンアップ

comments マイナーバージョンアップ はコメントを受け付けていません。
By , 2010年5月23日 (日) 18:06:45

割とひまだったので、さらにぽんち絵を描いて 2面追加

ああだめだ。 やはり、SAI できちんと筆で書かないと。 やっぱ物理エンジンを直接使ったゲームはごまかしがない分(?)かなりむずい。 絵を描くのもかなりむずい。

Torque’s Adventure

comments Torque’s Adventure はコメントを受け付けていません。
By , 2010年5月23日 (日) 12:50:58

キョロちゃんの冒険はトルクの冒険(Torque’s Adventure) という名前にした。

最新版

とりあえず動けば良いという人は Microsoft XNA Framework Redistributable 3.1と、 ビルド済みのexe等 を持って行けば動くと思う。

レベル2まで作った。 レベルの切り替わり(ロード)のところで数秒フリーズしたようになる。 しかし、これは Platformer でも同じ現象が起きるので、避けられないものかもしれない。 「Now Loading…」くらい表示させたかったのだが。

1280×720 の大きさで適当にマップを描く。 背景は透明で、当たり判定にかかわる部分は不透明で、 それいがいは半透明で描いて PNG で保存すれば、 わりあい簡単にぽこぽこレベルを追加できるところが画期的だと、作者は考えているようです。

ソースは Platformer と Farseer から。 ソースはがっつり依存しているが、グラフィックやゲーム性はわりとおりじなる。 ロコロコに似ているとも言えるが似てないとも言える。 まあしかし、こういう物理エンジン使ってボール転がすゲームというのは昔から割とあったので、 どうということもないのだが、 ボールをトルクで動かすところがやや珍しいのと、 マップを手書きで書けば動くというところと、 あとソースが割とシンプルなので参考になるというのが良いところではなかろうか。 ちなみにこの背景の絵はペンタブ使って SAI のペン入れで書いたのです。

各レベルは

Background:tree
Goal:1200,600
Start:1230,100
Color:100,150,255

とか

Background:moon
Goal:1200,100
Start:100,50
Color:20,20,50

それぞれテキストファイルに記述する。 操作は矢印キーのみ。 コントローラーに対応させてみたが、たいしておもしろくならなかった。 そのほか、F1とF2キーで simulator view の切り替え。

キョロちゃんの冒険(仮称)

comments キョロちゃんの冒険(仮称) はコメントを受け付けていません。
By , 2010年5月19日 (水) 16:46:15

キョロちゃんの冒険(仮称)。 軽い気持ちで作り始めたのだが、けっこうむずい。

なんか面白くなってきた。

#regionなど

comments #regionなど はコメントを受け付けていません。
By , 2010年5月19日 (水) 13:27:37

学生に教えていて気づくことは多いのだが、 学部二、三年生ならソースをがりがり書かせて読ませても良いとは思うが、 同じネタを学部一年生や、場合によっては小学生などにも教えたいという場合には、 余計なコードは極力隠して、 せいぜいパラメータくらいをいじらせたいこともある。

で、 Farseer Samples 2 というものを作ってみたのだが、 ここで気をつかってるところというのは

balls.Add(new Ball(physicsSimulator, graphics.GraphicsDevice, x, y,...));

などと書くのではなく、メソッドを一個かませて

addBall(x, y, ...);

のようにするとちんぷんかんぷん度がかなり少なくなる。 そうなのだ。balls.Add(new Ball()) などと書いた方がわかりやすいなどと思えるのは、 クラスとかコンストラクタとかリストとかその辺をきちんと学んだあとのことなのだ(或いはそれらをきちんとしつける時)。 physicsSimulator や graphics.GraphicsDevice なども Farseer や XNA に慣れ親しんでない人には呪文にすぎない。

ようするに processing がやってるようにやればよい。

#region ... #endregion

で見る必要のない部分を隠してやることで、やはりちんぷんかんぷん度が少なくなる。

質量やインパルスの強さなどのパラメータはメンバ変数(C#で言うところの静的クラスフィールド。そのクラスから生成されたインスタンスで共有される)として公開してやり、クラス定義を書き換えなくても設定できるようにする。

x,y座標などは width / 2 とか 2 * height / 3 などのような相対値ではなくて、 200, 300 などの数値を直接書くようにする。

XNAもFarseerもすべてブラックボックスの中に隠してしまう。 ここまでやってあげれば小学生にもいじれるわな。 プログラマの方がかなり気を使わねばならないわけだが。

そうか、paddle ではなくて flipper というのか。 やれやれ。

XNA4.0

comments XNA4.0 はコメントを受け付けていません。
By , 2010年5月19日 (水) 11:26:49

XNA 4.0 + Visual Studio 2010 はいつ出るのだろうか。 いや、もう出ているのだろうか。 開発ツールを無償提供 Xboxのポータブル版としての性格を持つ など見ると、 「Visual Studio 2010 for Windows Phone」「Expression Blend 4 for Windows Phone」「XNA Game Studio 4.0 for Windows Phone」などが無償提供されるという。 Expression Blend は良く知らないのだが、Silverlight の開発環境か。

Windows Phone というのは Zune の後継機という位置づけらしい。 XNA で開発できる携帯端末、というところがなにやら楽しげではあるのだが、 今のところ私は XNA を PC でしか使ってないし、xbox360 開発は滅多にやらなかったし、 Windows Phone 開発をやるかどうかも良くわからない。

ま、ともかくあまり焦っても仕方ないようだ。

xna creators club online。 うーむ。

Panorama Theme by Themocracy