タグ付けされた質問 「xna」

XNAはMicrosoftによるゲームフレームワークで、Windows、Windows Phone、Xbox 360への展開を可能にします。


2
XNA「XBox 360 Project」はWindowsでも動作しますか?
XBox 360のXNAプロジェクトでは、専用バージョンの.NET Compact Frameworkを使用することを理解しています。しかし、XBox 360とWindowsの両方でリリースしたいとしましょう。 Xboxバージョン(コンパクトフレームワークを使用)は、Windows用に配布された場合でも動作しますか、それとも配布するために通常のフレームワーク(または非Xbox CF)に対して再構築する必要がありますか?
12 xna  windows  xbox360 

5
コンポーネントベースのゲームで衝突を適切に処理する方法は?
コンポーネントを中心に設計されたゲームで衝突を適切に処理する方法に頭を悩ませようとしています。 多くの例ではPhysicsComponent、エンティティのコンポーネントのリストに何らかの種類の追加が加えられていますが、実際の実装では混乱します。 これPhysicsComponentが機能するためには、周囲の世界にアクセスする必要があります。これは私には直感的な意味がありません。コンポーネントは、そのコンテナ(エンティティ)だけでなく、そのコンテナのコンテナ(世界)を認識すべきではありませんか? 私には、レベルまたはシーンがこれらのエンティティのリストを維持し、ゲームが更新されるたびに、エンティティをループしてどのコリジョンを決定するように聞こえます。 私の質問は、第一に、これが良い設計であるかどうか、そして第二に、どのエンティティが衝突できるかを決定する方法です。ソリッドエンティティは空のIRigidBodyインターフェイスを実装できるので、レベルはリスト内のどのエンティティが衝突をサポートするかを決定できます。しかし、これはコンポーネントの設計を壊していますか? 代わりに、空のRigidBodyコンポーネントを含める必要がありますか?常に空であるとは限らず、このアプローチはより将来性があるため、これは実際により良い場合があります。これに関する唯一の問題は複雑さです。シーンは、すべてのエンティティだけでなく、すべてのエンティティのコンポーネントもループして、このRigidBodyコンポーネントがあるかどうかを判断する必要があります。 第三に、それらが衝突した場合、両方のエンティティに何らかの方法で通知する必要があり、これを達成する方法については確信がありません。 両方のエンティティにHealthComponentが含まれていて、衝突すると両方のヘルスが任意の値5減少するとします。2つのエンティティ間の衝突を検出した場合、これを処理するのはシーンの責任です。 しかし、その後、シーンはあまりにも責任がありますか?エンティティがアクセスしてはならない(?)ものの多くをシーンが担当している場合、これが手に負えなくなり、扱いにくくなるのを見ることができました。 編集:詳細が更新された質問。


4
プレーヤーをスムーズに階段に登らせる
私は2Dプラットフォームのゲームを持っています。プレイヤーは常に右側に走りますが、地形は常に水平ではありません。例: プレイヤーボックスと他のブロックとの交差をチェックするだけで境界ボックス衝突システムを実装しました。大きなブロックに遭遇した場合にプレイヤーが実行されないようにして、ジャンプする必要がありますが、階段を置くときは、水平な地面と同じようにスムーズに走ります。衝突システムでは、階段を飛び越えて通過する必要があります。 階段の端の間に線を引いて、その線にプレイヤーの動きを課すことを考えました…どう思いますか?もっと賢いことはありますか?

1
プレーヤーがサインインしているかどうかを知る方法は?
「プレーヤー」がサインインしているかどうかを知る方法はあるのだろうかと思っていましたか? このようなもの: if (GamePad.GetState(PlayerIndex.Two).IsConnected && !Gamer.PlayerTwo.IsSignedIn) コントローラーが接続されて使用できるようになりますが、プレーヤーはアカウントにサインインしていません。推測のようなもの。

2
XNA / MonoGame用のポータブルバッファーキーボード入力?
予備的な解決策として、私は現在、バッファーされたキーボード入力のためにC#/ XNAゲームプロジェクトでNuclexフレームワークを使用しています。悲しいことに、nuclexはSlimDX.Directinput.dllに依存しているため、私の知る限り、Windows OSでのみ使用できます。しかし、私は他のプラットフォーム(Linux、OSXなど)をターゲットにするためにMonoGameを使用しているため、すべてのプラットフォーム間でバッファキーボード入力を統合するポータブルな方法を探しています。何かありますか?

6
グラフィックなしでXNAゲームを実行する
何も表示せずにXNAゲームを実行する方法があるかどうか疑問に思います。 私は、1人のプレーヤーがホストであり、他の人が彼のゲームに接続できるクライアントサーバーセットアップで実行される動作中のゲームを持っています。 グラフィックカードのない専用サーバーでホストとしてゲームを実行できるようになりました。基本的に、Draw()ロジックはまったく実行したくありません。 ゲーム全体を実行し、XNAへの参照をすべて削除する必要がありますか? 人々はこれをどのように行いましたか? 編集:私がこれをしたい理由は、ゲームにクライアントサーバーセットアップが機能していて、別個の「ヘッドレス」サーバープログラムを作成したくないためです。
11 xna  xna-4.0 

4
ゲームでタイムストップまたはバレットタイムをコーディングする方法
XNA 4.0でシングルプレイヤーRPGプラットフォーマーを開発しています。時間を「停止」または減速させ、プレイヤーキャラクターのみを元の速度で移動させる能力を追加したいと思います(Baldur's GateシリーズのTime Stopスペルに似ています)。正確な実装ではなく、いくつかの一般的なアイデアとデザインパターンを探しています。 編集: 素晴らしい入力をありがとう。私は次の解決策を考え出しました public void Update(GameTime gameTime) { GameTime newGameTime = new GameTime(gameTime.TotalGameTime, new TimeSpan(gameTime.ElapsedGameTime.Ticks / DESIRED_TIME_MODIFIER)); gameTime = newGameTime; またはこれらの線に沿って何か。このようにして、プレーヤーコンポーネントに別の時間を設定し、残りの時間に別の時間を設定できます。このようなワーピング時間が中心的な要素となるゲームで機能するのに十分なほど普遍的ではありませんが、このケースで機能することを願っています。メインのUpdateループが少し不快であるという事実はちょっと嫌いですが、それは確かにそれを実装する最も簡単な方法です。それは本質的にテッセローデが提案したのと同じだと思いますので、私は彼に緑のダニを与えます:)
11 xna  time-travel 

6
2,000万タイルのマップでゲームのメモリが不足します。どうすれば回避できますか?
余分な巨大なマップをロードしているときに、ロードメソッドがメモリ例外をスローし、マップタイルの新しいインスタンスが作成されます。少なくともサーバーアプリ(および可能であればクライアント)でマップ全体を処理してもらいたいのですが。この問題を解決するにはどうすればよいですか? UPD:ここでの問題は、使用する空きメモリがまだあるときにゲームがクラッシュしないようにする方法です。チャンクでマップを分割することに関しては、それは良いアプローチですが、私の場合には望みのものではありません。 UPD2:最初に私は行って、タイルクラスのすべての新しいインスタンスにテクスチャを割り当てました。今では、約4分の1のスペースで済みます。皆さんのおかげで、今はまだ塊に分割することを考えずに巨大なマップを実行できます。 UPD3:コードを書き直して、タイルプロパティの配列がより速く機能するか、メモリ消費が少ないかどうかを確認した後(オブジェクトプロパティとしての各タイルのプロパティよりも)、それを試すのに多くの時間がかかっただけでなく、パフォーマンスは向上せず、ゲームのデバッグが非常に困難になりました。

2
Microsoft XNA Platformerの例、衝突検出は正確に実装されていますか?
Microsoftが提供する例では、衝突の検出(私が確認できることから)に小さなエラーがあるようです。ユーザーが通過不可能なタイルと衝突すると、交差の深さが計算されます。奥行き値XとYの小さい方を使用してユーザーの位置を固定し、タイルと衝突しないようにします。しかし、ユーザーが斜めに移動している場合、これにより、ユーザーが最初にタイルと最初に衝突するポイントに正確に到達しない可能性がありますか? 私はおそらく間違っているが、それは私がそれを見る方法に過ぎない。 private void HandleCollisions() { // Get the player's bounding rectangle and find neighboring tiles. Rectangle bounds = BoundingRectangle; int leftTile = (int)Math.Floor((float)bounds.Left / Tile.Width); int rightTile = (int)Math.Ceiling(((float)bounds.Right / Tile.Width)) - 1; int topTile = (int)Math.Floor((float)bounds.Top / Tile.Height); int bottomTile = (int)Math.Ceiling(((float)bounds.Bottom / Tile.Height)) - 1; // Reset …

2
ワールドツープレイヤーインベントリシステムを作成する方法は?
XNA内に在庫システムを実装しようとする問題に直面しています(実際には問題ではなく、どのプラットフォームでもかまいません)。ここに私が頭を抱えようとしている問題があります: どのようにして世界からアイテムを入手し(あなたがモンスターを殺すと鎧を落とすと思います)、それを私のプレイヤーのインベントリに入れることができますか? インベントリが単なるアイテムのリストである場合、技術的には、クラスに複数の処理を行わせずに、世界からスチールソードをプレイヤーのインベントリに入れるにはどうすればよいですか? 私は現在、一意の16進数値、そこにあるアイテムの数(積み重ね可能、矢印など)、インベントリ内のレンダリング用のテクスチャ、およびその他の重要でないプロパティ(名前、説明など)を含むアイテム構造体を持っています。 既存のアイテムクラスを変更して、ワールドポジションと衝突検出(アイテムが地球を通り抜けてほしくない)を格納する必要がある場合は、設計が悪いでしょう。 考慮事項をありがとう!
11 xna  c#  2d 

1
XNAデモのインストーラーを作成するにはどうすればよいですか?
VS2008を使用してXNA3.1でコーディングされたデモがあります。私はこれをPCで誰にでも送信でき、VSや.Netフレームワークなどをインストールすることなく、インストールして実行できるようになりたいです。 公開のオプションになると思いましたが、少し混乱しています。誰かがその問題についていくつかの光を当てることができますか? 前もって感謝します。

1
XNAが「焼き付け」効果でクレーターを(GPU経由で)追加する
私は現在、XNAの2Dワームクローンに取り組んでおり、機能の1つは「変形可能な」地形です(たとえば、ロケットが地形に衝突すると、爆発が起こり、地形のチャンクが消えます)。 私が現在これを行っている方法は、中心に近づくにつれて赤の値が徐々に高くなるテクスチャを使用することです。その「変形」テクスチャのすべてのピクセルを循環し、現在のピクセルが地形ピクセルと重なり、十分に高い赤の値を持っている場合は、地形を表すカラー配列を透明に変更します。現在のピクセルの赤の値が十分に高くない場合は、地形の色を黒くします(赤の値がしきい値に近づくほど黒くなります)。この操作の最後に、SetDataを使用して地形テクスチャを更新します。 これは、パイプラインの停止などについて読んだだけでなく、同時に多くのクレーターが追加されている場合にかなり遅延する可能性があるため、これを行うには良い方法ではないことに気づきました。ターゲットになることと変更するテクスチャとの間でレンダーターゲットの「ピンポン」を使用する代わりに、GPUでクレーター生成を作り直したいと思います。それは問題ではありません、私はそれを行う方法を知っています。問題は、この方法で火傷効果を維持する方法がわからないことです。 現在、焼き付け効果は次のようになります。 誰も私が同様の火傷効果を作成する方法を考えていますか(形成されたクレーターの周りのエッジを暗くします)?私はシェーダーに完全に不慣れですが、それが必要な場合は、誰かが私にその方法を説明してくれれば本当に感謝します。他にも素晴らしい方法があれば。
11 xna  textures  effects 

4
解像度に依存しないテキストのレンダリング
ゲームで解像度に依存しないテキストを描画する方法が必要です。つまり、テキストを拡大表示して、ピクセルアーティファクトを表示しないようにする必要があります。 誰も私がそれについてどうやって行くことができるかについて何か提案をすることができますか?
11 xna  2d  3d  text 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.