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

More Related Content

More from Satoshi Mimura

おうちで簡単ハードウェアセキュリティ
おうちで簡単ハードウェアセキュリティおうちで簡単ハードウェアセキュリティ
おうちで簡単ハードウェアセキュリティSatoshi Mimura
 
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようEdomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようSatoshi Mimura
 
Visual Studio で TeX 編集
Visual Studio で TeX 編集Visual Studio で TeX 編集
Visual Studio で TeX 編集Satoshi Mimura
 
3本指ジェスチャでの 仮想デスクトップ機能を Windows に実装した話
3本指ジェスチャでの仮想デスクトップ機能を Windows に実装した話3本指ジェスチャでの仮想デスクトップ機能を Windows に実装した話
3本指ジェスチャでの 仮想デスクトップ機能を Windows に実装した話Satoshi Mimura
 
アプリ作者と Windows XP
アプリ作者と Windows XPアプリ作者と Windows XP
アプリ作者と Windows XPSatoshi Mimura
 
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。Satoshi Mimura
 
マシン語によるコード実行
マシン語によるコード実行マシン語によるコード実行
マシン語によるコード実行Satoshi Mimura
 
Iron python と c sharp
Iron python と c sharpIron python と c sharp
Iron python と c sharpSatoshi Mimura
 
Unix と windows 世界の融合
Unix と windows 世界の融合Unix と windows 世界の融合
Unix と windows 世界の融合Satoshi Mimura
 

More from Satoshi Mimura (13)

Inside wsl
Inside wslInside wsl
Inside wsl
 
Inside wsl
Inside wslInside wsl
Inside wsl
 
おうちで簡単ハードウェアセキュリティ
おうちで簡単ハードウェアセキュリティおうちで簡単ハードウェアセキュリティ
おうちで簡単ハードウェアセキュリティ
 
某Ctf にて writeup
某Ctf にて writeup某Ctf にて writeup
某Ctf にて writeup
 
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようEdomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみよう
 
Visual Studio で TeX 編集
Visual Studio で TeX 編集Visual Studio で TeX 編集
Visual Studio で TeX 編集
 
3本指ジェスチャでの 仮想デスクトップ機能を Windows に実装した話
3本指ジェスチャでの仮想デスクトップ機能を Windows に実装した話3本指ジェスチャでの仮想デスクトップ機能を Windows に実装した話
3本指ジェスチャでの 仮想デスクトップ機能を Windows に実装した話
 
WHAT_A_KERNEL_IRQL
WHAT_A_KERNEL_IRQLWHAT_A_KERNEL_IRQL
WHAT_A_KERNEL_IRQL
 
アプリ作者と Windows XP
アプリ作者と Windows XPアプリ作者と Windows XP
アプリ作者と Windows XP
 
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
 
マシン語によるコード実行
マシン語によるコード実行マシン語によるコード実行
マシン語によるコード実行
 
Iron python と c sharp
Iron python と c sharpIron python と c sharp
Iron python と c sharp
 
Unix と windows 世界の融合
Unix と windows 世界の融合Unix と windows 世界の融合
Unix と windows 世界の融合
 

Recently uploaded

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 

Recently uploaded (11)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

Windows Phone 7 と XNA の世界