43
WP7 + XNA 携携携携携携携携携携WP7 + XNA - @mimura1133 1

Windows Phone 7 と XNA の世界

Embed Size (px)

DESCRIPTION

Windows Phone 7 上で動作するゲームの作成方法を、簡易的なサンプルと実例を用いて説明したドキュメントです。- スマートフォン勉強会@関東#14 ドキュメントhttp://sumaben.jp/?SPWorkshopKanto14

Citation preview

Page 1: Windows Phone 7 と XNA の世界

WP7 + XNA携帯でゲームしようぜ!

WP7 + XNA -

@mimura1133

1

Page 2: Windows Phone 7 と XNA の世界

自己紹介0三村 聡志  ID : @mimura1133

0 このまえセプキャン行ってきたときに NHK に撮られた。

0ウェブサイトhttp://mimumimu.net/

0ブログhttp://mimumimu.net/blog/

0とりあえず、「 mimura1133 」で何かがヒットします

WP7 + XNA - @mimura1133 2

Page 3: Windows Phone 7 と XNA の世界

内容0Windows Phone 7 ってなに0XNA ってなあに0PC でも使える基本的な開発方法0Windows Phone 7 でつかえること。

WP7 + XNA - @mimura1133 3

Page 4: Windows Phone 7 と XNA の世界

入る前に。0Windows Phone 7 日本発売

おめでとうございます。

0私も Windows Phone 7 ユーザです。0ついでに Windows 7 ユーザです。

0でも、Windows 7 Phone ユーザではありません。

WP7 + XNA - @mimura1133 4

Page 5: Windows Phone 7 と XNA の世界

Windows Phone iPhone≄0iPhone は iPhone なのです。0Windows Phone は Windows Phone なのです。

0多分無いと思いますが、どこかのおばちゃん、おじちゃんのように、

ああ、 Microsoft の iPhone かー

などとは言わないように。0iPhone も WP7 も、良いスマートフォンなのです。

WP7 + XNA - @mimura1133 5

Page 6: Windows Phone 7 と XNA の世界

WM6 → Windows Phone 7

0超さくさく動くよ!

0Metro UI の採用でわかりやすいよ!

0ネイティブコード使えないけどいいよね。

0XNA でゲーム書けるよ!

WP7 + XNA - @mimura1133 6

Page 7: Windows Phone 7 と XNA の世界

Windows Phone 7 でゲーム0メニュー内の Games の中に入っ

てる。

0現時点で結構な数のゲームがある。

0XNA を使って開発をする。

0Xbox の時ほどのもっさりはない。

WP7 + XNA - @mimura1133 7

Page 8: Windows Phone 7 と XNA の世界

XNA とは?0XNA‘s Not Acronymed (XNA は頭字語ではないよっ!

0Microsoft 社の簡単かつ本格的なゲーム開発環境

0PC と Xbox と Windows Phone をターゲットに出来る。

0まさに「3スクリーン+クラウド」の「3スクリーン」ですね!WP7 + XNA - @mimura1133 8

Page 9: Windows Phone 7 と XNA の世界

XNA を使う利点0.NET Framework 上となるため、

移植性が高いコードが書ける。

0ゲームを開発していてありがちな、メモリリークを始めとする、メモリの問題をあまり気にしなくていい。

0そもそも C# のパワーを最大限に活かせる!

WP7 + XNA - @mimura1133 9

Page 10: Windows Phone 7 と XNA の世界

なんで XNAなの0DirectX なら、ネイティブコードだよ!

 → XNA ならコード量少なく、楽に書けるよ! そこまで遅くないよ!

0XNA にしなくても、Managed DirectX ってのがあるよ?

→ (((; ゚ Д ゚ )))  それ使うとは、尊敬します。

WP7 + XNA - @mimura1133 10

Page 11: Windows Phone 7 と XNA の世界

XNAでの開発手法

WP7 + XNA - @mimura1133 11

Page 12: Windows Phone 7 と XNA の世界

必要なもの0 気合い、探求心、最後までやろうとする気持ち

0Windows Vista or 703GB 以上のディスクの空き02GB の メモリ0DirectX 10 もしくはそれ以降に対応する

グラフィックスカード0WDDM 1.1 のドライバ

0 分からなければ、DirectX Caps Viewer Tool で調べるといいとおもうよ! WP7 + XNA - @mimura1133 12

Page 13: Windows Phone 7 と XNA の世界

開発準備0AppHub (http://create.msdn.com/ja-JP)

から、ツールをダウンロードしよう!

WP7 + XNA - @mimura1133 13

Page 14: Windows Phone 7 と XNA の世界

必要条件が揃わない場合0OS が間に合わない場合は、以下で間に合います。

0DreamSpark ( http://www.dreamspark.com/ )

0MSDN AA ( 各学校に聞いて下さい。 )0MSDN Subscription0などなど

WP7 + XNA - @mimura1133 14

Page 15: Windows Phone 7 と XNA の世界

始めよう。01. Visual Studio を立ち上げる。02.新規プロジェクトを作る

WP7 + XNA - @mimura1133 15

Page 16: Windows Phone 7 と XNA の世界

プロジェクトを作る01. XNA Game Studio 4.0 を選ぶ02. Windows Phone ゲームを選ぶ03.名前設定

WP7 + XNA - @mimura1133 16

Page 17: Windows Phone 7 と XNA の世界

ターゲットの設定0Windows Phone 7.1 で問題ないと思います。

WP7 + XNA - @mimura1133 17

(Is Not Windows Phone 7.5)

Page 18: Windows Phone 7 と XNA の世界

準備完了!

WP7 + XNA - @mimura1133 18

Page 19: Windows Phone 7 と XNA の世界

コードの流れ

起動

終了

Initalize(初期化処理 )

LoadContent(読み込み処理 )

Update(更新処理 )

UnloadContent(解放処理 )

Draw(描画処理 )

起動

終了

ゲーム中

WP7 + XNA - @mimura1133 19

Page 20: Windows Phone 7 と XNA の世界

こう書けばいい0LoadContent

画像読み込みとか、モデル読み込みのコード

0Updateコントローラの動きを見て動かすとか、衝突判定とか

0Draw描画命令をどっさりと

0UnloadContentリソースの解放処理を書く。(あれば)WP7 + XNA - @mimura1133 20

Page 21: Windows Phone 7 と XNA の世界

さんぷる:画像表示0表示させたい画

像を「~ Content 」に持って行く。

WP7 + XNA - @mimura1133 21

Page 22: Windows Phone 7 と XNA の世界

さんぷる:画像表示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

Page 23: Windows Phone 7 と XNA の世界

さんぷる:画像表示0表示された。 (ちなみに、私の写真です。)

WP7 + XNA - @mimura1133 23

Page 24: Windows Phone 7 と XNA の世界

さんぷる:文字表示0文字を表示するために、フォントを追加する必要

が。

0~ Content を右クリック → 追加 → 新しい項目

WP7 + XNA - @mimura1133 24

Page 25: Windows Phone 7 と XNA の世界

さんぷる:文字表示0「スプライトフォント」を選択 → 追加

WP7 + XNA - @mimura1133 25

Page 26: Windows Phone 7 と XNA の世界

さんぷる:文字表示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

Page 27: Windows Phone 7 と XNA の世界

さんぷる:文字表示0頭の上に文字が表示された!

WP7 + XNA - @mimura1133 27

Page 28: Windows Phone 7 と XNA の世界

簡単だとおもいません?

WP7 + XNA - @mimura1133 28

Page 29: Windows Phone 7 と XNA の世界

DirectX とかだと。0画面初期化だけでもかなりの量。0画像読み込みだけでもすごい量。0ああ、解放処理も書かなくちゃ。0いやいや、そのまえに jpg だから、デコーダが。

0あうあうあー

WP7 + XNA - @mimura1133 29

Page 30: Windows Phone 7 と XNA の世界

とりあえず、そんなこと考えずにさくっと書けるのが

XNAWP7 + XNA - @mimura1133 30

Page 31: Windows Phone 7 と XNA の世界

WP7 + XNA - @mimura1133 31

注意点

DirectX と異なり、右手座標系なので注意です。

Page 32: Windows Phone 7 と XNA の世界

覚えておくと良さそう0SpriteBatch2D でお世話になる。

this.spritebatch.Draw()this.spritebatch.DrawString()

をよく使う。

0this.content.Load<[TYPE]>(“[NAME]”);Content に追加した物を読み込む時につかう。

WP7 + XNA - @mimura1133 32

Page 33: Windows Phone 7 と XNA の世界

入力デバイス

デバイス名 クラス名

キーボード 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

Page 34: Windows Phone 7 と XNA の世界

Windows Phone 7 上なので、

タッチを使ってみる。

WP7 + XNA - @mimura1133 34

Page 35: Windows Phone 7 と XNA の世界

タッチして画像を動かす0コード上部の using… の部分に、下記を追記

using Microsoft.Xna.Framework.Input.Touch;

0Initialize() の TODO: の下に下記を追記

TouchPanel.EnabledGestures = GestureType.FreeDrag;

WP7 + XNA - @mimura1133 35

Page 36: Windows Phone 7 と XNA の世界

タッチして画像を動かす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

Page 37: Windows Phone 7 と XNA の世界

タッチして画像を動かす0Draw() の

spriteBatch.Draw(this.texture, Vector2.Zero, Color.White);

spriteBatch.Draw(this.texture, this.vec, Color.White);

に書き換える。WP7 + XNA - @mimura1133 37

Page 38: Windows Phone 7 と XNA の世界

タッチして画像を動かす0ドラッグにあわせて、画像がうごく。

WP7 + XNA - @mimura1133 38

Page 39: Windows Phone 7 と XNA の世界

コメント0その他 XNA では 3D をバリバリ使った開発や、Windows Phone 7 をばしばし使った開発、などなどできますが、

私より後の、私よりもはるかにできる方に・・頼みます。(ぉ

WP7 + XNA - @mimura1133 39

Page 40: Windows Phone 7 と XNA の世界

すごいゲームができたらどうしよう!

0光の速度で APP HUB に投稿しましょう。

0学生なら無料です。どんどん投稿しましょう。

WP7 + XNA - @mimura1133 40

Page 41: Windows Phone 7 と XNA の世界

そんなこんなでまとめ。0やる気とがんばりと、ハードウェアとソフトウェアがあれば、開発できる。

0結構少ない行数でさくっと書ける。

0「俺すげぇ!」になったら、すぐさま APP HUB へ。

0Windows Phone 7 のゲームを作って、学校に持っていって、クラスの人気者になろう!WP7 + XNA - @mimura1133 41

Page 42: Windows Phone 7 と XNA の世界

最後に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

Page 43: Windows Phone 7 と XNA の世界

余談0IDA Pro とかでバイナリみるの大好きな人0C# で開発するのが大好きな人0DLL Injection とかしちゃうぜ! な人0C は好きだぜって人0Windows API はいいよね! 惚れちゃう な人

0変態行為 (Ex. SUA 使ったお遊び ) 大好きな人

0該当する人 → ぜひとも連絡先教えてください!Twitter : @mimura1133Facebook : Satoshi Mimura

WP7 + XNA - @mimura1133 43