Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Windows Phone 7 と XNA の世界

2,901 views

Published on

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

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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 />

×