問題タブ [game-engine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
game-engine - ublas::bounded_vector<> のサイズが変更されていますか?
まじめな話ですが、Boostフェローの話なので悪口は控えます。このように物事を見るのは私の間違いに違いありませんが、理由が理解できないので、ここで質問します。多分誰かがこの問題で私を啓発することができます. ここに行きます:
uBLAS には、bounded_vector<>
固定サイズのベクトルを作成するために使用される、この優れたクラス テンプレートがあります (または、私はそう思いました)。
有効な uBLAS wiki から ( http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Effective_UBLAS ):
デフォルトの uBLAS ベクトルおよび行列タイプは可変サイズです。多くの線形代数の問題には、固定サイズのベクトルが含まれます。2 要素と 3 要素は幾何学では一般的です! 固定サイズのストレージ (C 配列に類似) は、動的ストレージに関連するオーバーヘッド (ヒープ管理) を伴わないため、効率的に実装できます。uBLAS は、ベクトル/行列の基になるストレージをデフォルトの「unbounded_array」から「bounded_array」に変更することにより、固定サイズを実装します。
わかりました、このことは、ベクトルの基になるストレージを指定されたサイズの にbounded_vector<>
指定することから解放するために使用されます。bounded_array<>
ここで私はあなたに尋ねます: この有界ベクトルは固定サイズのように見えませんか? まあ、それはありません。
最初はwikiに裏切られた気がしましたが、「限界」の意味を再考し、それを通過できると思います. しかし、私のように(私はまだ確信が持てません)、これが理にかなっているのかどうかまだ疑問に思っている場合、私が見つけたのは、bounded_vector<>
実際にはサイズを変更できるということです。
- まず最初に、実際の >>固定<< サイズのベクトルまたは行列型を作らない正当な理由があったと思いますか?
- 固定サイズとは対照的に、この有界のベクトルを私のライブラリのユーザーに「固定サイズ」のベクトルの代替として「販売」しても問題ないと思いますか?効果的な uBLAS wiki はありましたか?
- この目的のために固定サイズのベクトルを何らかの方法で実装する必要があると思いますか? もしそうなら、どのように?(申し訳ありませんが、私は uBLAS に本当に慣れていないので、今日試してみました)
- 私は3Dゲームを開発しています。これに関連する計算に uBLAS を使用する必要がありますか ("hey, geometry!"、Effective uBLAS wiki による)。そうでない場合、どのような代替品を提案しますか?
- 編集
念のため、はい、次の警告を読みました。
これは、uBLAS が vector3 に使用するストレージのみを変更することに注意してください。uBLAS は、同じアルゴリズム (可変サイズを想定) を使用して vector3 を操作します。実際には、これは速度に悪影響を及ぼさないようです。上記は、uBLAS を使用しない手作りの vector3 と同じくらい速く実行されます。唯一のマイナスの影響は、vector3 が常に「サイズ」メンバーを格納することです。この場合は冗長です [またはそうではありませんか? つまり......]。
可変サイズを想定して同じアルゴリズムを使用していることがわかりますが、操作が実際にサイズを変更する場合は、停止する必要はありませんか (アサーション)。
おいおい、これはただの裏切りじゃないか?
c# - 後で手動編集するためにオブジェクトをリストにリンクする(ゲームエンジン/フレームワーク-エンティティ管理部分)
まず、こんにちは、これが私の初めてです。私は若いコーダー(15)であり、今回はゲームをさらに整理しながら、ゲーム(実際には、再利用可能なゲームエンジンとフレームワーク全体、呼び出し方法がわからない、多分GDK?)を作成する2回目の試みです。
重要な注意:私はXNAフレームワークを使用しているため、ゲームエンジンは純粋に低レベルのDirectX管理ではありません。事前定義されたクラスでXNAを拡張しようとしています。これにより、どのゲームにも簡単に挿入して、後で管理できるようになります。
エンティティをWorldManagerのリストに入れ、後で直接変更するためにエンティティを取得して、リストに戻す方法を見つけるのに行き詰まりました(したがって、Updateメソッドで使用されます)。
私のアイデア(および質問)は次のとおりです。
考えられる最善の解決策は、エンティティをリストにリンクさせることです。これにより、唯一のエンティティオブジェクトを更新すると、リスト内でも更新されます。残念ながら、私はそれを行う方法がわかりません、そしてこれは最良の答えかもしれません。
また、最初に作成したエンティティを編集してから、findを使用してリストで検索して更新することも考えました。問題は、findメソッドがどのように検索するかわからないことです。何か変更を加えると、メソッドがまったく新しい別のオブジェクトであると見なすことができるとしたらどうでしょうか。(findは実際にどのように検索しますか?)
私が行ったのは、IDをリストに追加した瞬間にエンティティに追加して、編集後に元の場所に戻すことができるようにすることでした。問題は、removeメソッドもあることです。インデックスを変更する場合は、エンティティを削除するたびにIDを再更新する必要があるため、インデックスが変更されるかどうかはわかりません。それは非常に非効率的だと思います。では、List <>。Removeはインデックスを変更しますか?(私はそうなると思います)
これらは実際には1つに3つの質問があり、これらのいずれかに答えていただければ幸いです。もちろん、一番上の質問への回答はもっと高く評価されます。
すべてがどのように機能するかを理解するためのコード:
どのようにアクセスしますか:
私はそのコードを使用しません。これは私の考えの単なる例です。
私の紛らわしい英語を許してください(あなたがそれを紛らわしいと思うなら)、私はセルビア人です。
前もって感謝します。
c# - 変数を必須にする-NullReferenceExceptionを回避するには?
[解決済み]-間違いは私のもので、World(world_)をエンティティにリンクしなかったため、nullでした。みなさん、説明ありがとうございます!
ご存知かもしれませんが、私はゲームエンジン/フレームワークを作成していて、相互に参照するものをリンクするのに行き詰まっています。
例:
レンダラーにコンポーネントを追加する行は、NullObjectExceptionで失敗します。私の考えは、それがクラス実装内にあるためです(オブジェクトがまだ定義されていない場合)が、そのようなことは次のコードで機能しました:
コードのその部分もTGSGameクラスの実装内にあります!
誰かがこの例外をどのように克服できるか考えていますか?
wpf - WPF <-> XNA-これら2つのテクノロジーを組み合わせる方法は?
XNAとWPFを組み合わせることが可能であるということは、すでにいくつかの場所で読んだことがあります。私が個人的に必要としているのはゲーム/マップエディタです。これは実際にはゲーム自体です(エンジンはバックグラウンドで実行されます)。マップシステムはシリアル化されたバージョンのオブジェクトをXMLに書き込み、後でロードされるためです。
私の問題は、エンジンをバックグラウンドで実行し、ユーザーがフロントエンドから作成するときにゲームアセットを作成し、後でそれらをシリアル化してXMLに変換する標準アプリが必要なことです。
これも便利です。ゲームからWPFを実行できる場合、UIの場合、誰かがこれを経験したことがあれば、共有していただければ幸いです。
簡単に言うと、XNAコードがコントロールの1つで、バックグラウンドで実行されているWPF(またはwinforms)アプリを作成するにはどうすればよいですか?
c++ - アプリケーションが使用している .dll を検出する方法
グラフィックス アプリケーションで Crystal Space API を使用しようとしています。 クリスタルスペースのウェブサイト
アプリケーションは正常にコンパイルされますが、dll (ダイナミック リンク ライブラリ) に問題があります。コンパイルされたアプリケーションが実行時にクラッシュします。必要な dll が見つからないことが原因であると思われます。
私が現在持っている唯一の解決策は、アプリケーションの実行可能ファイルを、必要なすべてのライブラリを含むフォルダーにカット アンド ペーストすることです (約 300 MB)。
アプリに必要な dll を見つけてコピーできるようにする方法はありますか?(すべての dll を使用する代わりに)
どんな助けでも大歓迎です。
PS: 私は g++ と codeblocks ide を使用しています
デオ博士から
d - D言語用の無料の3Dゲームエンジンを探しています
DevMaster.net では、RealmForge しか見つかりませんでした。これが唯一の選択肢ですか?C/C++ ゲーム エンジンは D に適していますか? はいの場合、彼らと協力するにはどのような困難を克服する必要がありますか?
oop - モジュラーゲームエンジンの例?
これは非常に興味深い読み物でした: http://www.devmaster.net/articles/oo-game-design/
著者は、「うわー、これは慎重に実装すれば素晴らしいかもしれません。これは未来です!」と繰り返し言っています。まあ、あまり役に立ちません。コードが必要であり、何よりも、この種の設計が実際に機能するという証明が必要です。
この記事で説明した概念のいくつかを実装する例を知っていますか? たぶん、研究できる小さなオープンソースのゲームでしょうか? または、少なくとも、同様の概念が議論される場所ですか?
multithreading - 滑らかに変化する浮動小数点値の読み取り/書き込み競合状態を無視しても安全ですか?
ゲームエンジンのアニメーション更新機能と物理シミュレーションを別のスレッドに入れて実行しようとすると、ライタースレッド(アニメーション、物理)間のいくつかの浮動小数点値(オブジェクトの位置など)の潜在的な競合状態に気付きます。 )とリーダースレッド(レンダラー)(両方のスレッドが同時に値にアクセスする場合)。
私の質問は、浮動小数点の割り当てでさえアトミックではないことを考えると、そのような読み取り/書き込みの競合状態は、リーダーから見た元の滑らかに変化する値の有線/突然の変化をもたらす可能性がありますか?
さらに、私の状況では、そのようなエラーは次のレンダリングフレームに蓄積されないため、少量のエラーを許容できます。
winforms - 2 つの連続する KeyDown イベント間の長い遅延
私はちょっとしたゲーム エンジンを書いているようなものです。これらが内部からどのように機能するかを純粋に理解するためです。私は現在、OpenGL や DirectX をいじりたくないので、GDI+ とそのすべての WinForms でコントロールを描画することに固執しています。
明らかに、入力を処理する必要があります。具体的には、キーボード イベントです。ただし、これには問題があります。
このコードは (コントロール パネルのキーボード アプレットで最小の繰り返し遅延を設定した場合でも)、次のようになります。
ご覧のとおり、0.25 秒あります。最初の 2 つのイベント間の遅延。これにより、画面上のオブジェクトの動きが鈍くなります。明らかに、最初はわずかに右に移動し、次に目に見える瞬間に一時停止してから続行します。
その問題を解決するにはどうすればよいですか? これは純粋な WinForms で実行できますか、それとも DirectInput (または最近のコーシャの方法は何ですか?) ルートに行く必要がありますか?