Upload
satoshi-mimura
View
2.233
Download
3
Embed Size (px)
DESCRIPTION
Windows Phone 7 上で動作するゲームの作成方法を、簡易的なサンプルと実例を用いて説明したドキュメントです。- スマートフォン勉強会@関東#14 ドキュメントhttp://sumaben.jp/?SPWorkshopKanto14
Citation preview
WP7 + XNA携帯でゲームしようぜ!
WP7 + XNA -
@mimura1133
1
自己紹介0三村 聡志 ID : @mimura1133
0 このまえセプキャン行ってきたときに NHK に撮られた。
0ウェブサイトhttp://mimumimu.net/
0ブログhttp://mimumimu.net/blog/
0とりあえず、「 mimura1133 」で何かがヒットします
WP7 + XNA - @mimura1133 2
内容0Windows Phone 7 ってなに0XNA ってなあに0PC でも使える基本的な開発方法0Windows Phone 7 でつかえること。
WP7 + XNA - @mimura1133 3
入る前に。0Windows Phone 7 日本発売
おめでとうございます。
0私も Windows Phone 7 ユーザです。0ついでに Windows 7 ユーザです。
0でも、Windows 7 Phone ユーザではありません。
WP7 + XNA - @mimura1133 4
Windows Phone iPhone≄0iPhone は iPhone なのです。0Windows Phone は Windows Phone なのです。
0多分無いと思いますが、どこかのおばちゃん、おじちゃんのように、
ああ、 Microsoft の iPhone かー
などとは言わないように。0iPhone も WP7 も、良いスマートフォンなのです。
WP7 + XNA - @mimura1133 5
WM6 → Windows Phone 7
0超さくさく動くよ!
0Metro UI の採用でわかりやすいよ!
0ネイティブコード使えないけどいいよね。
0XNA でゲーム書けるよ!
WP7 + XNA - @mimura1133 6
Windows Phone 7 でゲーム0メニュー内の Games の中に入っ
てる。
0現時点で結構な数のゲームがある。
0XNA を使って開発をする。
0Xbox の時ほどのもっさりはない。
WP7 + XNA - @mimura1133 7
XNA とは?0XNA‘s Not Acronymed (XNA は頭字語ではないよっ!
0Microsoft 社の簡単かつ本格的なゲーム開発環境
0PC と Xbox と Windows Phone をターゲットに出来る。
0まさに「3スクリーン+クラウド」の「3スクリーン」ですね!WP7 + XNA - @mimura1133 8
XNA を使う利点0.NET Framework 上となるため、
移植性が高いコードが書ける。
0ゲームを開発していてありがちな、メモリリークを始めとする、メモリの問題をあまり気にしなくていい。
0そもそも C# のパワーを最大限に活かせる!
WP7 + XNA - @mimura1133 9
なんで XNAなの0DirectX なら、ネイティブコードだよ!
→ XNA ならコード量少なく、楽に書けるよ! そこまで遅くないよ!
0XNA にしなくても、Managed DirectX ってのがあるよ?
→ (((; ゚ Д ゚ ))) それ使うとは、尊敬します。
WP7 + XNA - @mimura1133 10
XNAでの開発手法
WP7 + XNA - @mimura1133 11
必要なもの0 気合い、探求心、最後までやろうとする気持ち
0Windows Vista or 703GB 以上のディスクの空き02GB の メモリ0DirectX 10 もしくはそれ以降に対応する
グラフィックスカード0WDDM 1.1 のドライバ
0 分からなければ、DirectX Caps Viewer Tool で調べるといいとおもうよ! WP7 + XNA - @mimura1133 12
開発準備0AppHub (http://create.msdn.com/ja-JP)
から、ツールをダウンロードしよう!
WP7 + XNA - @mimura1133 13
必要条件が揃わない場合0OS が間に合わない場合は、以下で間に合います。
0DreamSpark ( http://www.dreamspark.com/ )
0MSDN AA ( 各学校に聞いて下さい。 )0MSDN Subscription0などなど
WP7 + XNA - @mimura1133 14
始めよう。01. Visual Studio を立ち上げる。02.新規プロジェクトを作る
WP7 + XNA - @mimura1133 15
プロジェクトを作る01. XNA Game Studio 4.0 を選ぶ02. Windows Phone ゲームを選ぶ03.名前設定
WP7 + XNA - @mimura1133 16
ターゲットの設定0Windows Phone 7.1 で問題ないと思います。
WP7 + XNA - @mimura1133 17
(Is Not Windows Phone 7.5)
準備完了!
WP7 + XNA - @mimura1133 18
コードの流れ
起動
終了
Initalize(初期化処理 )
LoadContent(読み込み処理 )
Update(更新処理 )
UnloadContent(解放処理 )
Draw(描画処理 )
起動
終了
ゲーム中
WP7 + XNA - @mimura1133 19
こう書けばいい0LoadContent
画像読み込みとか、モデル読み込みのコード
0Updateコントローラの動きを見て動かすとか、衝突判定とか
0Draw描画命令をどっさりと
0UnloadContentリソースの解放処理を書く。(あれば)WP7 + XNA - @mimura1133 20
さんぷる:画像表示0表示させたい画
像を「~ Content 」に持って行く。
WP7 + XNA - @mimura1133 21
さんぷる:画像表示0 コード上部「 SpriteBatch spriteBatch 」付近に下記を追記Texture2D texture
0 LoadContent の TODO: の下に、下記を追記this.texture = this.Content.Load<Texture2D>(“pics”);
注:読み込んだ名前に合わせる。今回の場合は 「 pics」
0 Draw の TODO: の下に、下記を追記spriteBatch.Begin();spriteBatch.Draw(this.texture, Vector2.Zero,Color.White);spriteBatch.End(); WP7 + XNA - @mimura1133 22
さんぷる:画像表示0表示された。 (ちなみに、私の写真です。)
WP7 + XNA - @mimura1133 23
さんぷる:文字表示0文字を表示するために、フォントを追加する必要
が。
0~ Content を右クリック → 追加 → 新しい項目
WP7 + XNA - @mimura1133 24
さんぷる:文字表示0「スプライトフォント」を選択 → 追加
WP7 + XNA - @mimura1133 25
さんぷる:文字表示0 コード上部「 SpriteBatch spriteBatch 」付近に下記を追記SpriteFont font;
0 LoadContent の TODO: の下に、下記を追記this.font = this.Content.Load<SpriteFont>("SpriteFont1");
注:読み込んだ名前に合わせる。
0 Draw の spriteBatch.Begin(); の下に、下記を追記
spriteBatch.DrawString(this.font, "HELLO WORLD",Vector2.One,Color.Red);WP7 + XNA - @mimura1133 26
さんぷる:文字表示0頭の上に文字が表示された!
WP7 + XNA - @mimura1133 27
簡単だとおもいません?
WP7 + XNA - @mimura1133 28
DirectX とかだと。0画面初期化だけでもかなりの量。0画像読み込みだけでもすごい量。0ああ、解放処理も書かなくちゃ。0いやいや、そのまえに jpg だから、デコーダが。
0あうあうあー
WP7 + XNA - @mimura1133 29
とりあえず、そんなこと考えずにさくっと書けるのが
XNAWP7 + XNA - @mimura1133 30
WP7 + XNA - @mimura1133 31
注意点
DirectX と異なり、右手座標系なので注意です。
覚えておくと良さそう0SpriteBatch2D でお世話になる。
this.spritebatch.Draw()this.spritebatch.DrawString()
をよく使う。
0this.content.Load<[TYPE]>(“[NAME]”);Content に追加した物を読み込む時につかう。
WP7 + XNA - @mimura1133 32
入力デバイス
デバイス名 クラス名
キーボード Microsoft.Xna.Framework.Input.Keyboard
マウス Microsoft.Xna.Framework.Input.Mouse
ゲームパッド(Xbox コントローラ )
Microsoft.Xna.Framework.Input.GamePad
タッチパネル Microsoft.Xna.Framework.Input.Touch.TouchPanel
XNAで標準提供しているデバイス:
WP7 + XNA - @mimura1133 33
Windows Phone 7 上なので、
タッチを使ってみる。
WP7 + XNA - @mimura1133 34
タッチして画像を動かす0コード上部の using… の部分に、下記を追記
using Microsoft.Xna.Framework.Input.Touch;
0Initialize() の TODO: の下に下記を追記
TouchPanel.EnabledGestures = GestureType.FreeDrag;
WP7 + XNA - @mimura1133 35
タッチして画像を動かす0 SpriteBatch spriteBatch; がある箇所に下記を追記:
Vector2 vec;
0 Initialize() の TouchPanel… の下に下記を追記:
this.vec = Vector2.Zero;
0 Update() の TODO: の下に下記を追記:
if (TouchPanel.IsGestureAvailable) this.vec = TouchPanel.ReadGesture().Position – Vector2.One * 100;WP7 + XNA - @mimura1133 36
タッチして画像を動かす0Draw() の
spriteBatch.Draw(this.texture, Vector2.Zero, Color.White);
を
spriteBatch.Draw(this.texture, this.vec, Color.White);
に書き換える。WP7 + XNA - @mimura1133 37
タッチして画像を動かす0ドラッグにあわせて、画像がうごく。
WP7 + XNA - @mimura1133 38
コメント0その他 XNA では 3D をバリバリ使った開発や、Windows Phone 7 をばしばし使った開発、などなどできますが、
私より後の、私よりもはるかにできる方に・・頼みます。(ぉ
WP7 + XNA - @mimura1133 39
すごいゲームができたらどうしよう!
0光の速度で APP HUB に投稿しましょう。
0学生なら無料です。どんどん投稿しましょう。
WP7 + XNA - @mimura1133 40
そんなこんなでまとめ。0やる気とがんばりと、ハードウェアとソフトウェアがあれば、開発できる。
0結構少ない行数でさくっと書ける。
0「俺すげぇ!」になったら、すぐさま APP HUB へ。
0Windows Phone 7 のゲームを作って、学校に持っていって、クラスの人気者になろう!WP7 + XNA - @mimura1133 41
最後に0XNA – ソーサリフォース ( まずはここから )http://sorceryforce.com/xna/
0ひにけに XNA (XNA 最先端情報 )http://blogs.msdn.com/b/ito/
0APP HUB (投稿場所 )http://create.msdn.com/ja-JP
0そんなわけで、どんどん遊びましょう!
WP7 + XNA - @mimura1133 42
余談0IDA Pro とかでバイナリみるの大好きな人0C# で開発するのが大好きな人0DLL Injection とかしちゃうぜ! な人0C は好きだぜって人0Windows API はいいよね! 惚れちゃう な人
0変態行為 (Ex. SUA 使ったお遊び ) 大好きな人
0該当する人 → ぜひとも連絡先教えてください!Twitter : @mimura1133Facebook : Satoshi Mimura
WP7 + XNA - @mimura1133 43