XNA 3.1とXNA 4.0の比較


7

XNAとそのスムーズな学習について学び始めました。しかし、4.0ではなく3.1を学んで、自分の足を撃っているのだろうか?

私はまた、Microsoftがこの問題に明らかに対立していることも知っています。更新する回数が増えるほど、販売するVisual Studioのコピーも増えます(Expressは無料ですが、一部はProになるでしょう)。したがって、MSの従業員からの「今すぐ大規模な新機能をアップグレードする」タイプのブログの行の間を読む必要があります。

私は何が新しいのかを知っています:http : //msdn.microsoft.com/en-us/library/bb417503.aspx、そしてそれはほとんど電話、インターフェース、ビデオ機能のようです-私はあまり興味がありません-私は中核となる3D作業をより多く行う。

難しい点は、私はVisual Studio 2008の専門家を既に持っており、4.0でのゲームのプログラミングにほとんど違いがない場合は、VS 2010を取得したくないということです。

世界は前進しましたか?3.1で学んでいることは冗長になるのでしょうか?

ライブラリにもコードの違いがありますが、それらはメジャーではありません。それらの多くはここで確認できます:http : //www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet/、例えば、これはリーマー・ツットと比較して理解しなければならなかったものです:

XNA 4.0

 protected override void Draw(GameTime gameTime)
 {
     device.Clear(Color.DarkSlateBlue);

     RasterizerState rs = new RasterizerState();
     rs.CullMode = CullMode.None;
     device.RasterizerState = rs;

     effect.CurrentTechnique = effect.Techniques["ColoredNoShading"];
     effect.Parameters["xView"].SetValue(viewMatrix);
     effect.Parameters["xProjection"].SetValue(projectionMatrix);
     effect.Parameters["xWorld"].SetValue(Matrix.Identity);
     foreach (EffectPass pass in effect.CurrentTechnique.Passes)
     {
         pass.Apply();

         device.DrawUserPrimitives(PrimitiveType.TriangleList, vertices, 0, 1, VertexPositionColor.VertexDeclaration);
     }

     base.Draw(gameTime);
 }

XNA 3.1

protected override void Draw(GameTime gameTime)
{
    device.Clear(Color.DarkSlateBlue);

    device.VertexDeclaration = new VertexDeclaration(device, VertexPositionColor.VertexElements);
    device.RenderState.CullMode = CullMode.None; // TODO only for testing!
    device.RenderState.FillMode = FillMode.Solid;

    effect.CurrentTechnique = effect.Techniques["ColoredNoShading"];
    effect.Parameters["xView"].SetValue(viewMatrix);
    effect.Parameters["xProjection"].SetValue(projectionMatrix);
    effect.Parameters["xWorld"].SetValue(Matrix.Identity);

    effect.Begin();
    foreach (EffectPass pass in effect.CurrentTechnique.Passes)
    {
        pass.Begin();
        device.DrawUserIndexedPrimitives<VertexPositionColor>(PrimitiveType.TriangleList, vertices, 0, 5, indices, 0, indices.Length / 3);
        pass.End();
    }
    effect.End();

    base.Draw(gameTime);
}

PCやXBOX360向けに開発しようとしても、それほど問題はありませんが、VS2010 Expressを入手して4.0を使用してみませんか?
TravisG

違いはほとんどありません。
共産主義者のアヒル

前回チェックしたとき、MSは3.1アプリの受け入れを停止しました。
3Dave

@Davidは明確にすることができます-3.1アプリの配布を停止するのは何ですか?(利点があります。私のクライアントベースには4.0よりも.Net 3.5 SP1がはるかにあります)。私はあなたがいくつかのXBoxアプリマーケットタイプのことを意味していると思っています-私は今のところPCでのみゲームを書く方法を学んでいます。
markmnl

1
@Feanor(申し訳ありません-ウムラウトは入力できません)Windows用の3.1アプリの配布を妨げるものは何もありません。ただし、XBoxまたはWP7アプリをApp Hubに送信する場合(XBox Liveディストリビューションの場合)、それは4.0以降である必要があります。ところで、VS2010は2008年より1桁優れたIMHOです。一見の価値があります。MSDNサブスクリプションにアクセスできますか?
3Dave

回答:


8

XNA 4.0の使用をお勧めします。

たぶん、3.1で4.0でできることは何でもできるはずですが、かなり進歩しています。あなたの参照に加えて、たとえばこの投稿:Breaking Changes in XNA Game Studio 4.0のようなShawn Hargreavesのブログもご覧になるとよいでしょう。または、基本的に2010年3月、4月、5月のブログを彼のブログで確認できます。XNA4.0の変更点がたくさんあります。

また、3.1を使用すると、古いテクノロジーに悩まされることにも注意してください。最終的には、DX11のサポートなどのためにXNA 5/6にアップグレードする必要があります。それまでのプログラムの規模や複雑さによっては、いくつかの変更を行う必要があるため、4.0にアップグレードするのに時間がかかる場合があります。


私は確信していません-EddieV223それは正しいです-言語はいくつかのよく文書化されたapi呼び出しを除いてまったく同じです-変換に長い時間はかかりません。学習のために、内部で何かが変更されたかどうかは関係ありません。(私は熟練したプログラマーなので、プログラミングを学んでいた場合、APIの変更によってスローされる可能性があります-しかし、そうではありません-通常は、調べる前に別のAPI呼び出しを推測できます)。
markmnl 2011年

2
誰もが「今より古いバージョンを学ぶつもりです。後でコードをアップグレードするだけです」と言うのは奇妙に思えます。WP7またはXBox360を使用するために後でアップグレードする必要があるときに、古いものを学ぶのに時間を無駄にするのはなぜですか?現在XNAを学んでいるという事実は、今何かを学ばないように十分なインセンティブであり、後で再学習する必要があるはずです。
Jonathan Connell

はい、しかし私はなぜ各バージョンのニュアンスに悩むのかを学んでいるので-XNAでの3Dプログラミングの学習は同じバージョン3または4のjsutの異なるapi呼び出しです-疑いなく数年でバージョン4と5について同じことが言えます-あなたは持っていますどこから始めても時間の無駄ではありません。いくつかの異なるapi呼び出しを除いて同じです。これは、私が見ることができるものから、3ですでに可能な特定のことをショートカットするための糖衣です。とにかく、私は過半数の投票された答えを答えはありますが、引き続き学習します3-この議論は、同じ難問を持つ他の人を助けることができます。
markmnl 2011年

2

プログラマにとって、3.1と4はほとんど同じです。主な変更点は、デバイスとスプライトバッチの作成です。そして、コンテンツマネージャーがある場合は、ソリューション内の独自のプロジェクトに移動します。他のすべてはほとんど同じです。これらの変更は、ほんの数行のコードの違いです。さまざまなdirectx api呼び出しを使用していますが、舞台裏では。

だからあなたの質問に答えるためにあなたはまったく自分を足元に撃っていない。XNAを使用しても、1.0のバージョンでさえ、プログラマーの観点からはそれほど変わっていません。

このような3.1-4.0の変換に関する簡単な回答を探すには、ネット上にたくさんのチートシートがあります。http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet /


1
3.1を学習して4.0を再学習する価値があると言うのは、まったくの虚偽です。混乱するだけで、プログラマは同じことを学ぶためにより多くの時間を費やすことになります。
AttackingHobo

@AttackingHobo im確信していません-EddieV223それは正しいです-言語は、いくつかの十分に文書化されたAPI呼び出しを除いてまったく同じです-変換に長い時間はかかりません。学習のために、内部で何かが変更されたかどうかは関係ありません。(私は熟練したプログラマーなので、プログラミングを学んでいた場合、APIの変更によってスローされる可能性があります-しかし、そうではありません-通常は、調べる前に別のAPI呼び出しを推測できます)。
markmnl '06 / 06/19

言語はC#なので同じです。しかし、XNA 3を使用すると、特定の古いライブラリやエンジンを使用する必要がある場合を除き、それは時間の無駄XNA 3の詳細を学ぶのではなく、直接XNA 4を学んでXNA 4とは異なっている
AttackingHobo

「XNA 3はXNA 4とは異なります。特定の古いライブラリやエンジンを使用する必要がある場合を除きます」-ただし、そうではありません。ライブラリは同じですが、一部は更新されています-それらはまだ同じ名前で、多くの場合同じメソッドを持っています-それらを呼び出す/使用する方法が少し異なるだけで、私の例のように簡単に理解できます質問中!確かに、私が見逃してしまうDirectX10の機能がいくつかあるかもしれません-しかし、再び学ぶために待つことができます!
markmnl

3
@Fëanor「待つことができる学習のために!」。VS2010とXNA 4.0をダウンロードしてインストールするのに「無駄な時間」をかけたくありませんが、古いものを学ぶのに時間を無駄にしてもかまいませんか。奇妙な...
ジョナサン・コネル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.