Windows Phone 7 と XNA の世界

2,509 views
2,450 views

Published on

Windows Phone 7 上で動作するゲームの作成方法を、
簡易的なサンプルと実例を用いて説明したドキュメントです。

- スマートフォン勉強会@関東#14 ドキュメント
http://sumaben.jp/?SPWorkshopKanto14

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,509
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Windows Phone 7 と XNA の世界

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

×