

どちらのテクノロジーにも特徴的な利点があり、最終的には同じアプリケーション内で両方のテクノロジーのグラフィックス機能を組み合わせて、作業に最適なツールを使用することが望ましいでしょう。 Windows PhoneでのXNAの変更についてはまだ詳しく調べていないので、過去のXNAゲーム開発の経験に基づいて結論を出します。
一般に、XNAはゲームフレームワークのように育てられたため、XNAではゲームの作成が簡単になります。 また、XNAの設計で行われた多くの決定により、プラットフォームはゲーム以外の他の種類のアプリケーションの開発には最適ではありません。
主なアーキテクチャ上の違いは、各フレームにすべてを描くのではなく、視覚的なツリーです。 Silverlightでは、何かを表示するには、それを子として追加する必要があります。 XNAでは、すべてがすべてのフレームに描画されます。 明らかに何かを描画しなかった場合、何も表示されません。 どちらのオプションが優れているかはゲームによって異なりますが、アクションが多い場合は、「緊急」XNAレンダリングのオプションが最適です。
各テクノロジーの利点のいくつかを見てみましょう(それぞれの側面に多くの利点があると確信しています)。
XNAの利点:
- 優れた3Dサポート
- 多くのアイテムを移動したり、それらを追加および削除する際の優れたパフォーマンス
- 組み込みのゲームループ。
- XNAユーザー入力は一般に、Silverlight入力イベントよりもゲームに適しています。
- XNAデータパイプラインにより、データ配列の処理が容易になります
- より多くの画像タイプのサポート
- Xboxと電話用のゲームを開発できます
- グラフィカルモデルの組み合わせ(Silverlightにはアルファオーバーレイのみがあります)
- 画像ベースのゲームのメモリ消費が少ない
- より統合されたGPUアクセラレーション
- 優れたシェーダーサポート
- 少し簡単に描く
Silverlightの利点:
- ベクターグラフィックス(XNAはシンプルラインをサポート)
- ベクターテキストレンダリング(画像に基づくXNA)
- Webおよび電話用のゲームを作成できます
- ストーリーボードアニメーション
- 視覚状態とさまざまな動作
- ナビゲーションフレームワーク
- コントロール(ボタン、リスト、ユーザーコントロールなど)
- 式設計のサポート
- 開発者により馴染みのあるイベントベースのモデル
- データバインディングは非常に便利な場合があります。
- VisualTreeHelperは、どのアイテムがタッチされたかを判断するのに役立ちます
そのため、ゲームがベクターグラフィックスに基づいている場合、またはボタンやその他のGUI要素などが存在する場合は、開発にSilverlightを選択する方が適切な場合があります。 3Dゲームまたは2Dで多くの動きやパーティクルエフェクトを作成する場合は、XNAを選択します。 これらの2つの技術の間に何かがある場合は、使い慣れたものを選択し、WebまたはXboxでアプリケーションを配布する場所を探します。
両方のオプションが利用可能であり、どちらを使用するかを選択できることは素晴らしいことです。