Tech.Days 筆記 : Windows Phone 7 遊戲開發 - 使用 XNA

Tech.Days 筆記 : Windows Phone 7 遊戲開發 - 使用 XNA

  • Windows Phone 7 的硬體支援
    • 800 * 480 的解析度
    • 多點觸控 (目前支援四點)
    • ARMv7 CPU
    • Back, Start, Search 硬體按鍵
       
  • Windows Phone 7 上的遊戲開發
    • Silverlight (支援事件驅動)
    • XNA
    • XBOX Live (撰寫線上遊戲)
       
  • XNA 4.0 的功能與特性
    • 整合遊戲平台, 開發工具與類別庫開發
    • 包含 :  (1) Microsoft Cross-Platform Audio Creation Tools 3 (XACT3)  聲音的編輯工 (2) XNA Framework Remote Performance Monitor (用來記錄遠端裝置的效能監視器)
    • 可支援發展 Windows, XBox/XBox 360, Zune/Zune HD, Windows Phone 7 開發 ( 可輕鬆複製專案並發行 )
    • 要發佈 XBOX 360 遊戲需要加入 XNA Creator Club, 每年 US $99 或是每季 US $49
    • 要發佈 XBOX 360 遊戲, 主機需要買硬碟版本而非無線網路版
       
  • XNA 4.0 的優勢
    • 可以降低 Garbage (支援 Garbage Collection )
    • 最佳化 Math 函式庫 (透過 MathHelper 類別) , 用於 3D 圖形運算支援
    • 效能較好的 API
       
  • 支援的 Content Pipeline
    • 3D 模型
    • 2D 圖形
    • 音效/音樂
    • 字型
       
  • XNA 遊戲程式的基本 Life Cycle:
    1. 遊戲開始 (建立 Game)
    2. 初始化 (建立 GraphicsDeviceManager, 就是管理螢幕畫面的類別)
    3. 載入內容 (呼叫 LoadContent 方法)
    4. 遊戲進行 (呼叫 Update 與  Draw 方法)
    5. 不斷重複 Step 4. 直到遊戲結束
    6. 釋放資源 (呼叫 UloadContent 方法)
    7. 遊戲結束  (呼叫 Exit 方法)
       
  • Update 方法的呼叫時機
    • 預設為 fixed-step 模式, IsFixedTimeStep 為 True
    • Game 的 TargetElapsedTime 預設為 1/60, 原則上每 1/60 秒呼叫 Update 和 Draw 一次
    • PC 和 XBOX :  1/60 秒
    • Zune 與 Windows Phone 7 : 1/30 秒
    • 如果 1/60 秒內沒有辦法完成 Update, 則 IsRunningSlowly 會被系統設定為 True. 之後, 僅會呼叫 Update 而不呼叫 Draw 以讓系統跟上更新的頻率
    • 如果始終無法跟上, 則放棄 1/60 秒
       
  • 只緣身在迴圈中
    • Update 與 Draw 就是迴圈型態在執行
    • 了解是否有必要在 Update 與 Draw 內寫迴圈 (會形成迴圈中的迴圈, 常常不是開發人員想要的畫面效果)
       
  • Update 方法的呼叫時機 Cont.
    • variable-step 模式
    • 不斷地呼叫 Update 與 Draw
       
  • Contenet Pipeline 的處理流程
    • 可支援型態的檔案類型, 會透過 Importer 載入 Content DOM
    • 經過 Processor 的 Content Compiler 處理後, 會變成 .XNB 檔案由 Content Manager 在執行時期管理
       
  • Contenet Pipeline 支援格式
    • .fbx
    • .fx , .x
    • 字型描述檔案 .spritefont
    • 圖片檔 (紋理 texture) : .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, .tga
    • XACT 建立的聲音檔 (.xap), .mp3, .wmv, .wma
    • 不支援格式會造成執行時期 LoadContent 失敗, 無法進行遊戲
    • 不支援格式需要字型撰寫 Importer
       
  • XNA 常用類別
    • 2D 與 3D : Texture2D, Model
    • 座標 : Vector2(二維 xy ), Vector3(三維 xyz), Vector4
    • 碰撞偵測 : (1) BoundingBox 建立元件的邊框模型, 缺點是比較不精確 (雖然是 2D 下使用, 但是需搭配 Vector3 z軸填 0 ) (2) BoundingSphere : 3D邊框模型, 比較貼和元件
    • 遊戲核心 : Game , GameComponent
    • 音效與音樂 :  (1) SoundEfffect (簡易版, 播放後無法在控制) (2) SoundEffectInstance (3) MediaPlayer
    • 載入控制 :  (1) KeyBoardState 鍵盤 (2) TouchState 觸控 (3) MouseState 滑鼠 (4) GamePadState 遊戲搖桿
    • 3D 模型 : Matrix, ModelMesh, ModelBone, BasicEffect
    • 其他 :  (1) GameTime (記錄遊戲開始至結束的時間狀態) (2) SpriteBatch (繪圖) (3) SpriteFont (繪文字) (4) MathHelper (數學運算)