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

とりわけ、Windows、Mac、Linux、Android、iOS用のMicrosoft XNA 4のオープンソース実装。

3
チームはソースファイルの上書きをどのように防止しますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 4年前に閉鎖されました。 たとえば、ゲームエンジンなどが複数の人によって同時に処理されているときに、上書きをどのように防ぐことができるのか、ということが起こりました。 開発者1が作業してAudio.cppおり、開発者2も作業をしているとしましょう。Audio.cppこれは、一般的に大規模なチームで上書きに対処するためにどのように管理されていますか?(つまり、開発者2がファイルを開くのを停止して、開発者1が終了するまで)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

2
XNA 2dカメラスクロール-マトリックス変換を使用する理由
レベルを常にスクロールさせるテストゲームを作成しています。この効果を作成するために、vector2の位置と列挙方向を保存するだけのカメラクラスを確立しました。また、単に移動する位置を固定レートで変更する「移動」するパブリックメソッドも含まれています。次に、描画時にタイルの配列をループするときにこの位置を使用します。これはすべて正常に動作します。 ただし、カメラを移動するには変換行列を使用する必要があり、スプライトバッチを開始するときにこれを指定する必要があると言われました。私は少し混乱していますa。)これがどのように機能するのですか?スプライトバッチが開始されたときにのみそれを与えているかのように、どのように位置を変更し続けることがわかりますか?b。)タイルをループするときにカメラ位置が必要なのはなぜですか? 現時点では機能しませんが、それがどのように機能するかを完全に理解していないので、それは驚くことではありません。現在、私の試み(コードに従う)では、描画されるタイルが変更されます。つまり、カメラの位置は変更されますが、ビューポートの位置は変更されません(つまり、カメラの原点)。どのように使用されるべきかについてのアドバイス/ガイダンスを本当に感謝しますか? カメラ: class Camera { // The position of the camera. public Vector2 Position { get { return mCameraPosition; } set { mCameraPosition = value; } } Vector2 mCameraPosition; public Vector2 Origin { get; set; } public float Zoom { get; set; } public float Rotation { get; …


8
モノゲーム用のスプライトフォントを生成する方法
私は次のものを使用して画面にテキストをレンダリングしたいだけです: モノゲーム3.0 MS Visual Studio 2010 C#エクスプレス XNAでは、非常に簡単にコンテンツパイプラインにフォントを追加できました。しかし、これはモノゲームでは当てはまらないようです。を使用Content<SpriteFont>.Load()したTTFファイルの読み込みは機能しません。XNAをインストールせずに、フォントデータを含む* .spritefontファイルまたは* .xnbファイルを生成またはダウンロードする方法はありますか?
14 xna  monogame 

2
XNA / MonoGameでフレームレートのロックを解除すると、コードの効率がわかりますか?
MonoGameのフレームレートのロックを解除する方法は次のとおりです。 this.graphics.SynchronizeWithVerticalRetrace = false; base.IsFixedTimeStep = false; そして、それをゲームでの更新と描画の効率の基礎として使用します。 解像度では240×160、フレームカウンタを除いて描かれたり更新されて何も私はFPSの値を取得9000に11,000 FPSを。 コードをすべて追加すると、約1,100 FPSになります。 これは、コードがGPUの速度を大幅に低下させている(10倍)ことを示す良い兆候ですか?ゲームは60 FPSで実行されるので、私はまだそれからかなり離れていますが、ロック解除されたフレームレートのどの時点で心配する必要がありますか? GPU:AMD FirePro W5000(FireGL V)

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

4
「任意のボタンの押下」の検出
プレーヤーが任意のボタンを押してメインページから続行できるようにしようとしています。これを行うには、ボタンのリストを作成し、ボタンをループして、ボタンの1つがダウンしていないかどうかを確認しました。しかし、私はこのコードがちょっと醜いと感じ、私が考えていないより簡単な方法があるかどうか疑問に思いますか? これが私のコードが今どのように見えるかです: if (GamePad.GetState(PlayerIndex.One).IsConnected) { var buttonList = new List<Buttons>() { {Buttons.A}, {Buttons.B}, {Buttons.Y}, {Buttons.X}, {Buttons.Start}, {Buttons.Back}, {Buttons.RightShoulder}, {Buttons.LeftShoulder}, {Buttons.RightTrigger}, {Buttons.LeftTrigger} }; foreach (var button in buttonList) { if (GamePad.GetState(PlayerIndex.One).IsButtonDown(button)) ExitMainMenu= true; } }
10 xna  monogame 

3
MonoGame APIと基になるグラフィックAPIの両方を使用すると、どのような問題が発生する可能性がありますか?
MonoGameでゲームを作成していて、基礎となるグラフィックAPIへの呼び出しも開始した場合、どのような問題が発生する可能性がありますか? たとえば、MonoGameが必ずしもサポートしていないMonoGameプロジェクトで何かをしたい場合、または適切なドキュメント/例が見つからなかったが、OpenTKでそれを行う方法の例を見つけることができた場合、他の場所でMonoGame APIを使用しているときにOpenTKを使用して直接実装すると、問題が発生しますか?具体的には、これが原因である可能性がある既知の大きな問題があり、非常にまれなケースで発生する不明瞭な問題がないかどうかを調べています。 GoogleとGD.SEサイト自体を介して少し調べてみましたが、あまり見つけることができませんでした。MonoGameがそのベースのほとんどを本当にカバーしているかもしれませんが、未解決の問題またはまだ実装されていない機能の1つを手動で回避したい場合はどうなりますか? もしそうなら、どのような問題が発生する可能性があり、これらの問題を軽減するのに役立つ方法はありますか?
10 monogame 

4
MonoGame用GUIライブラリ[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 6年前休業。 MonoGameで動作するGuiLibraryはありますか?XNA用のいくつかのGUIライブラリがあることは知っていますが、ほとんどのものがMonoGameでは機能しないと思います。 ボタンや入力フィールドのような単純なものでも私を助けてくれるでしょう... ありがとう。
10 monogame 

2
2D City Builderで高価な関数のパフォーマンスを向上させる方法
すでに回答を検索しましたが、高価な関数や計算を処理するための最良のアプローチを見つけることができませんでした。 私の現在のゲーム(2dタイルベースの都市の建物)では、ユーザーは建物を配置したり、道路を構築したりできます。すべての建物は、ユーザーがマップの境界に配置する必要があるジャンクションへの接続を必要とします。建物がこのジャンクションに接続されていない場合、「道路に接続されていません」の標識が影響を受ける建物の上にポップアップ表示されます(それ以外の場合は、削除する必要があります)。ほとんどの建物には半径があり、互いに関連している可能性があります(たとえば、消防署は半径30タイル以内のすべての家を助けることができます)。これは、道路の接続が変更されたときにも更新/確認する必要があることです。 昨日、パフォーマンスの大きな問題に遭遇しました。次のシナリオを見てみましょう。ユーザーはもちろん、建物や道路を消去することもできます。したがって、ユーザーがジャンクションの直後に接続を切断した場合、同時に多くの建物を更新する必要があります。最初のアドバイスの1つはネストされたループを避けることです(これは間違いなくこのシナリオの大きな理由です)が、私は確認する必要があります... 道路タイルが削除された場合に建物がまだジャンクションに接続されている場合(私はその道路によって影響を受けた建物に対してのみそれを行います)。(このシナリオでは小さな問題である可能性があります) 半径タイルのリストと、半径内の建物を取得します(ネストされたループ-大きな問題!) 。 // Go through all buildings affected by erasing this road tile. foreach(var affectedBuilding in affectedBuildings) { // Get buildings within radius. foreach(var radiusTile in affectedBuilding.RadiusTiles) { // Get all buildings on Map within this radius (which is technially another foreach). var buildingsInRadius = TileMap.Buildings.Where(b …

5
速度でぼやけてレンダリングされるスプライト
ゲームにベロシティを追加した後、テクスチャがぴくぴく動いているように感じます。最終的にスクリーンショットでキャプチャするまで、それは私の目だと思いました。 左側はゲームでレンダリングするものです。右側は元のスプライトを貼り付けたものです。(これは6倍に拡大したPhotoshopのスクリーンショットです。) エッジがエイリアシングしていることに注意してください。サブピクセルレンダリングのように見えます。実際、整数値を使用して描画するように私のスプライト(intとして位置と速度を持っている)を強制しなかった場合、MonoGameが浮動小数点値で描画していることを誓います。しかし、そうではありません。 これらがぼやけて表示される原因は何ですか?速度を適用しないと発生しません。 正確には、私のSpriteComponentクラスにはVector2 Positionフィールドがあります。を呼び出すときDraw、私は基本的new Vector2((int)Math.Round(this.Position.X), (int)Math.Round(this.Position.Y))にポジションに使用します。 以前、静止オブジェクトでさえジッターするバグがありPositionましたints。これは、直線ベクトルを使用し、値をに丸めなかったためです。ラウンドの代わりにFloor/ を使用するCeilingと、スプライトはシンク/ホバーします(いずれの方法でも1ピクセルの違いがあります)が、ぼやけて描画されます。

2
Monogame(XNA)で大量のタイルを効率的に描画する
明確な答えが見つからないため、この質問をします。 まず最初に、ゲームといくつかのことについていくつか述べておきます。ゲームは、シンプレックスノイズを使用して手続き的に生成された世界に設定されたRTSになる予定です。世界は64 x 64のスプライトで作られた16 x 16のサイズのチャンクで構成されています。チャンクを動的にロードおよびアンロードできましたが、これは問題なく動作します。世界はRimworldのように見えるので、さまざまなレイヤーのスプライト(最初に地形、トランジションスプライト、木、デカールなど)を上から下に見ていきます。新しく生成された世界には、環境に影響を与える可能性のあるエンティティ(たとえば、町になった村)が含まれている場合があり、それによってチャンクが含まれる場合があります。これはある種の関数を使用して計算できると確信していますが、注意する必要があります。 主な問題私は持っているが、私はズームアウト時に、より多くのタイルがひどく、性能に影響を与える描かれています。スプライトが約30000の場合、描画セクションにかかる時間は8 msで、60 FPSで実行するのに必要な時間の半分です。そして、それは単なる地形です。テクスチャアトラスを使用して描画カウントを制限しています(6カウントで描画される30000スプライト)。 目標は、国全体を見ることができることに、町/村/都市レベルからすべての方法をズームアウトすることができることです。これは動的に行う必要があります(たとえば、ミニマップアイコンをクリックするのではなく、Supreme Commanderのようにスクロールバックするだけです)。 私はこの問題に関する多くの記事を読みましたが、それが機能する場所の明確な例を見つけたり、見たりしていません。これが私が見つけたテクニックのリストであり、うまくいくはずです: ここで説明するように汚れた長方形。ここでは新しいものだけを描画し、残りはバックバッファに保持します。これは非常に理にかなっていますが、Monogameでこれを実装する方法については無知です。 ここで説明するように、私が優先する選択は、RenderTargetを幅広く使用することです。ここでは、RenderTargetに描画し、それをテクスチャとして保存します。私の場合、64 x 64で構成される16 x 16チャンクは、1024 x 1024テクスチャを作成します。これがパフォーマンスの点で機能するかどうかは本当に疑わしいですが、結果は非常に詳細なテクスチャで構成され、ほとんどが静的(地形/木など)であり、それほど変化しないという事実を考えると使用に最適です。ただし、これは、チャンクに変更が加えられるたびに、SetDataを使用してTexture2Dを変更する必要があることも意味します。これは、私が経験したことから、CPUにかなりの負荷がかかります。ただし、テクスチャが16 x 16の場合、実際に機能する可能性があり、それ自体のメモリとディスク使用量も削減されます。 SpriteBatchでSourceRectangleを指定してテクスチャをティルします。巨大な草原/海では、1つのスプライトしか描画されないため、これはプラスです。ただし、さまざまな色とさまざまなスプライトが混在する詳細な地形(バイオームとバイオームの遷移)の場合、大きな違いは生じないと思います。 詳細を損なう私の独自のソリューションは、標準の白い64 x 64タイルを使用して、周囲の4つのタイルの色を指定し、次に、前の4つのタイルを覆うように拡大縮小することでした。ここでの違い(無地のタイルを除く)は、風景が目に見えて変化したことです。また、森林は完全に正方形ではないため、個別に描く必要があることにも触れておきます。 誰かがこの問題に取り組む方法についてアイデアを持っている場合、たとえそれが特定のことを妥協することを意味するとしても(ディテール、または16 x 16スプライトの使用など)、それを聞いてみたいと思います。

2
Unity3dを介して新しいc#スクリプトを追加するときにVS soution Explorerを強制的に再読み込みしますか?
私はC#スクリプトを作成する(ときCreate -> C# Script)を介しUnity3d やからそれを削除Unity3d- Visual Studioショー私の警告ウィンドウ。 気に障る。 ウィンドウなしでソリューションエクスプローラーで「ReloadAll」を強制する方法はありますか?
8 unity  visual-studio  unity  google-play-services  google-play  physics  simulations  c#  unity  raycasting  unity  virtual-reality  savegame  arcade  c++  steam  ios  objective-c  databases  storage  opengl  vbo  vao  libgdx  scene2d  unity  animation  c#  path-finding  roguelikes  opengl  c++  glsl  2d  physics  phaser  selection  3dsmax  unity  collision-detection  c#  tilemap  isometric  unity  c#  2d  sprites  mouse  scripting  grid  c#  unity  libgdx  java  unity  playstation4  c#  c++  directx  dll  c++cli  libgdx  overlap2d  multiplayer  node.js  websocket  animation  unity  textures  unity  terrain  physics  unity  rotation  movement  transformation  monogame  windows  installer  shaders  unity  virtual-reality  unity  performance  frame-rate  profiler  google-play  appstore  trademark  java  android  libgdx  unity  unity-networking  unity  physics  software-engineering  unity  savegame  physics  2d  unity  unity  c#  unity-networking  textures  geometry  unreal-4  3d-modeling  java  android  libgdx  android  collision-detection  libgdx  rotation  legal  localization  patents  opengl  cubemap  sampler-state  2d  transformation  unity  c#  opengl  glsl  lighting  opentk  c++  collision-detection  physics 

3
方向を変更すると、オブジェクトが遅くなり、新しい見出しで加速するはずです(2Dグリッドベース)。
私は2Dゲームにある種の偽の宇宙物理学を実装しようとしています。宇宙船を真上から見下ろしています。方向を変えて速度を最大に設定すると、船のエンジン加速量に応じてその方向に船が加速します。 船がゆっくりとその方向に動き始め、最高速度に達するまで速度を上げていくコードをうまく機能させています。 更新 答えは少し役に立ちましたが、それでも私の最終的な解決策にたどり着けません。理論を実用的なコードに変換することはできません。さらにいくつかのパラメータがあります: 2Dグリッドで作業しています 船のエンジンは1つで、出力を0から1に設定して、全出力を示すことができます。 エンジンに最高速度があります 偽の宇宙摩擦があり、船に電力を供給しなくなった場合、最終的に停止します。 問題 私が抱えている問題は、方向を変えるときです。300の速度で1つのヘディングで移動している場合、ヘディングを反対に変更すると、減速してその方向にその速度に戻るのではなく、設定された速度で瞬時に移動します。 望ましい状態 現在のコード public void Update(Consoles.Space space) { var GameTimeElapsedUpdate = (float)SadConsole.Engine.GameTimeElapsedUpdate; Graphic.PositionOffset = viewPortMaster.Position; // Update the engine ShipDetails.Engine.Update(); // Degrade the current velocity with friction?? if (velocity.Length() < 0f) { var accelerationFrame = ShipDetails.Engine.GetAccelerationFrame(); if (velocity.X > 0) velocity.X …
8 xna  c#  physics  monogame 

2
2D AABBと複数の衝突の解決
わかりました、これは私がかなり長い間理解しようとしてきた問題です。Mineは2Dプラットフォーマーゲームで、ワールドは(通常)不動のタイルとモバイルスプライトで構成され、どちらもAABBを使用してヒットボックスを表します。このゲームは、タイルのレイヤーの移動に伴う複雑さのため、グリッドベースではありません。 衝突を検出し、衝突の深さを簡単に把握できます。「最短軸メソッド」を使用して、スプライトとタイルの間の衝突を解決する方法を決定します。スプライトが垂直よりも水平に深い場合、解決する方向は上または下になります。スプライトが水平よりも垂直に深い場合、解決する方向は左または右です。 これは非常に単純で、かなりうまくいきます。つまり、スプライトが複数のタイルと衝突するまでです。その性質上、各衝突は個別にチェックする必要があるため、衝突が異なると解決する方向も異なる場合があります。たとえば、スプライトがタイルの行を横切って移動しようとしている場合、1つのフレームで次のタイルと交差します。水平深度が垂直深度よりも短いこと。衝突が「左に解決」と言っているので、それは押し戻され、コーナーにスタックします。 私はかなり長い間この問題を何度も何度も検討してきましたが、いくつかの解決策が思い付きましたが、すべてに欠陥があります。特定の側面を到達不能としてマークすることもできますが、グリッドベースのエンジンがないと、「到達不能」の判定は非常に複雑で、特にタイルのレイヤーの移動は常に可能です。 別の可能な方法は、衝突が発生する前に衝突を予測し、衝突のポイントまで移動を「ワークバック」することですが、私はその数学がどのように機能するのかわかりません。 特に80年代のゲームはすでにこの問題を解決しているので、私には信じられないほど明白なものが欠けているように感じます。

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