ゲーム開発

プロおよび独立系ゲーム開発者向けのQ&A

4
エンティティコンポーネントシステム-ゲームの進行
私はゲーム開発(プログラミングではなく)に非常に慣れていないので、世界間の通信を処理するための最良の方法を理解しようとしています。私が言っているのはこれです: 私はエンティティコンポーネントシステム(ECS)と、人々がさまざまなワールド/スペース(http://gamedevelopment.tutsplus.com/tutorials/spaces-useful-game-object-containers--gamedev-14091)の使用をどのように提案するかについて読んでいますゲームのサブセクション。たとえば、HUD、インベントリ、または戦闘/移動は、それぞれ異なるワールド/スペースを取得します(それらは異なるグラフィックスと基礎となるロジックを持っているためです)。 しかし、たとえば戦闘中など、別のスペース/ワールドによってヘルスが処理される場合、インベントリまたはHUDがプレーヤーのヘルスをどのように知っているのかと思いました。 これは、ゲームの進行状況にも適用されます。たとえば、NPCとのダイアログ(ダイアログはポップアップ画面であるため別のスペースになります)ですが、ダイアログで行われた選択(または状態)を他のスペース/ワールドにどのように伝えますか。 。または基本的に、さまざまなスペース/世界でのゲームの進行に影響を与える他のタイプのイベント(健康、マナ、クエスト、ダイアログ、戦闘、インベントリ、hudなど) この種の設計をどのように処理するでしょうか?このような情報をすべて保持する(実装の)シングルトンオブジェクトが必要ですか?それは奇妙なことです。それは、components2回物事をしているように感じる(プログラミングのメインDRYに反対する)このシングルトンオブジェクトに各変更を伝える必要があるからです... 私はここでデザインの点で途方に暮れています。 ---編集--- だから私はコメントで提案された他のいくつかの投稿を読んで、可能性についての一般的な考えを得ましたが、それらのそれぞれには、それらを正しくないようにする1つの大きな欠点があるようです。これらの欠点を解決する詳細を監督している可能性が非常に高いため、自由に修正してください。概要と、いくつかの質問に対する回答を示します。 スペース間でデータを「共有」する3つの主要なオプションが表示されます。ほとんどの投稿はシステム間でのデータ共有に関するものですが、システム間でのデータ共有にも同じことが当てはまると思います。 1.クエリ 例:HUDワールドがプレーヤーの現在のヘルスを知る必要がある場合、HUDワールドは別のワールドを照会して現在のヘルスを要求できます。 欠点:世界はお互いを知る必要があります。これは依存関係の大きな問題であり、デカップリングに反対しています。 2:ダイレクトメッセージング(同期および非同期) 例:戦闘中にプレーヤーのヘルスが変更された場合、この変更について知る必要がある他の世界にメッセージ(同期と非同期、必要なものは何でも)を送信できます。 欠点:それでもデカップリングの問題:世界はお互いについて知る必要があります。 3:間接メッセージング(同期および非同期) <-最適なオプション 例:戦闘中にプレーヤーのヘルスが変化した場合、プレーヤーはメッセージ(同期と非同期、必要なものは何でも)を一般的なメッセージハブに送信できます。この変更について知る必要がある他の世界/システムは、特定のメッセージチャネルにサブスクライブされ、メッセージを読み取ります。 利点:完全に分離され、管理と拡張が容易です。 欠点/不明確:メッセージチャネルは、メッセージを削除する必要があることをいつ知っていますか?または、サブスクライブしているシステムがメッセージを(それ自体のみ)既読としてマークし、新しいメッセージを待つ->しばらくするとメッセージボックスが巨大になる。ワールド/システムはどのように順序を処理しますか?たとえば、フレーム中:HUDがすでにヘルスメッセージをポーリングし、その後ヘルスが変化した場合、次のフレームでHUDが更新されます。一部のアプリケーションでは、これは正しい方法ではない場合があります。 Q:1つのゲームオブジェクトが複数のスペースに存在できます 私は組み込みスペース(ワールドと呼ばれます)に付属しているArtemis ECSフレームワークを使用しています。各エンティティ(およびそれとともにコンポーネントの形式のデータ)はワールド上に作成されるため、ワールド間で共有することはできません。

2
Vulkan vkEnumeratePhysicalDevicesが予期しないデバイス数を返す
私が実行しているマシンには、2つのGTX 980 Tiがあります。vkEnumeratePhysicalDevices2つの物理ディスクリートグラフィックカードがあるにもかかわらず、物理デバイスカウントを照会すると、常に1が返されます。vulkaninfoリストされている唯一のデバイスを使用する場合、GPU0それはDISCRETE_GPU/ GTX 980 Tiです。 これは、Windows 10およびGNU / Linux 4.5で、Vulkan API 1.0.11と独自のNvidiaドライバーを使用して発生します。 これは通常の動作で、APIを正しく使用していませんか、それともバグですか?私は明白な間違いを犯したように感じますが、それについてのVulkan仕様には何も見つかりません。 わかりやすくするために、これは物理デバイス数を照会する方法とまったく同じです。 auto deviceCount = uint32_t{0}; instance.enumeratePhysicalDevices(&deviceCount, nullptr); // At this point deviceCount is 1 また、OSがカードを認識していることを確認するには: ウインドウズ10: C:\Users\matt>wmic path win32_VideoController get name Name NVIDIA GeForce GTX 980 Ti NVIDIA GeForce GTX 980 Ti Linux 4.5: +------------------------------------------------------+ | …
8 vulkan 

1
Unityで偽者を手動で作成する方法を学ぶ-カメラが見るものではなく、テクスチャーにオブジェクトをレンダリングする方法?
Unityで詐欺師を作る最もパフォーマンスの高い方法を、既製のソリューションを使用せずに手動で学習しようとしています。 私の最初の推測は、RenderTextureと2番目のカメラを使用して、オブジェクトのさまざまな角度のさまざまな「スナップショット」を撮影することで実現できると思います。パフォーマンスの面でより良い代替手段がある場合は(実装するのがより難しい場合でも)、ぜひ聞いてみたいと思います。 それが唯一のパスである場合は、スクリプトからカメラからテクスチャにレンダリングする方法を学びましたが、次の方法を理解することができませんでした。これは、最初に行う必要があることです。レンダリング方法-カメラの背景なしで特定のオブジェクトをテクスチャリングするには(つまり、テクスチャの残りの部分を透明にして)、パフォーマンスを向上させますか? ポインタ、提案、または少なくともリンクの推奨は素晴らしいでしょう。 前もって感謝します。

5
タイルベースの滑らかな照明を実装するにはどうすればよいですか?
私は2Dタイルゲームに取り組んでおり、ハードエッジのライティングを実装しました。 少し滑らかにしてほしい。影などは必要ありません。単純な照明だけです。私はそれを次のように見せたいです: 私の現在のシステムは、世界の各タイルの光レベルを使用しており、タイルが配置または削除されると、それらは再計算されます。batch.setColor(...)タイルの陰影に使用しています。この滑らかな照明を実現する良い方法は何ですか? ライトマップオーバーレイメソッドを使用したくありません。すでに試してみましたが、結果に満足できませんでした。ブロックを通過できる光の量を設定できるようにしたい。たとえば、ダートブロックは光の一部を吸収する必要がありますが、ガラスブロックは光を遮るべきではありません。これは、ライトマップオーバーレイメソッドでは実際には不可能でした。更新:私はこの方法が実際に何であるかを誤解しました。今、私は分かる。私は間違った方法で考えていました。ごめんなさい!
8 java  2d  libgdx  tile 

3
Factorio modでのログのデバッグ
私はFactorio modを書いていて、それが機能しない理由を理解しようとしています。ある種のエラー/デバッグログをどこかで実行できますか?手動(変数を出力する)と単純なエラー報告(存在しないプロパティにアクセスする)の両方が素晴らしいでしょう。player.printメソッドについては知っていますが、オブジェクトではなく文字列リテラルを出力するためにのみ取得できます。 script.on_event(defines.events.on_player_created, function(event) pcall(function() local player = game.get_player(event.player_index) player.print("Hi player") -- works player.print(player) -- does not work. Any error message would be nice end) end) アプリケーションフォルダーのログファイルとさまざまなデバッグモード(ゲームではF5 / F6)も試しましたが、これまでのところ、有用なものは何も見つかりませんでした。
8 modding 

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 

2
水の法線ベクトルから水の流れ方向ベクトルを取得する
私はゲームの水の重要な詳細の開発に行き詰まりました。 水の典型的な3Dの世界が重力に向かう傾向がg=(0,-1,0)あり、水面の法線があるとn=(x,y,z)考えると、それに基づいて水の流れ方向ベクトルをどのように計算できますか? 例として、このうまくできていないグラフを考えてください(ただし2Dで) 更新:非常に単純化された水面を検討しています(平面のみ:波紋、波、圧力などはありません)。それらのいずれかを適用する必要がある場合、答えは通常よりも多くの要因に依存します。

1
自分のUnityアプリでGearVRメニューをアクティブにする方法は?
マーケットプレイスからダウンロードできる通常のGearVr-Appsでは、[戻る]ボタンを長押ししてGearVrメニューをアクティブにし、明るさなどを制御できます。しかし、これは、GearVrのUnityで作成したすべてのアプリでは機能しません。プロジェクトにインポートする必要がある特別なものはありますか?

2
Diamond-Squareアルゴリズムの出力はランダムでノイズが多い
C ++でダイヤモンドスクエアアルゴリズムの大まかな解釈を実装して、半現実的なフラクタル地形を作成しましたが、出力は滑らかな岩の形状ではなく、各ポイントでランダムなy値のように見えます。パラメータを変更しましたが、コードの外観を見て問題を理解するのに役立つかもしれません。次に出力の例を示します。 高さの変化を下げたビットマップ(トップダウン)として: それがどのように見えるべきか(これはファイルからロードされます): コード: //Diamond-square algorithm HeightMap::HeightMap(float maxY) { //type = GL_POINTS; //type = GL_LINES; numVertices = RAW_WIDTH*RAW_HEIGHT; //256^2 squares => 257^2 vertices numIndices = (RAW_WIDTH - 1)*(RAW_HEIGHT - 1) * 6; //each square is 2 triangles (6 indices) vertices = new Vector3[numVertices]; textureCoords = new Vector2[numVertices]; indices = …

1
R9 380 GPUのフラグメントシェーダーで画面がちらつく
私のゲームで2人のプレーヤーがフラグメントシェーダーを使用すると画面がちらつくという問題が発生していますが、これはR9 380 GPUを使用するプレーヤーでのみ発生しているようです。これは、ゲームでは次のようになります。 プレーヤーの1つを操作した後、シェーダーを使用するように絞り込みましたが、呼び出し元のコードで適切に行われていない可能性があります。シェーダーは次のようになります(まだGLSLを学習しています)。 uniform sampler2D lightTexture; uniform sampler2D targetTexture; uniform sampler2D backgroundTexture; uniform vec2 tileSize; vec3 SaturationBrightness(vec3 color, float brt, float sat) { // Increase or decrease theese values to adjust r, g and b color channels seperately const float AvgLumR = 0.5; const float AvgLumG = 0.5; const …
8 c++  2d  glsl  sfml 

1
同じ明るさの色を循環
OK。だから私は色のついた粒子の束で取り組んでいるゲームを持っています。それらのそれぞれは独自の色を取得しますが、それらはすべて特定の色合いに近いです。 HSV色空間を使用していることをよりよく説明すると、0〜360(H)で循環するグローバル変数があり、特定の粒子のそれぞれがランダムな量を追加または減算します。 HSVを使用しているのは、Hを変更するだけで色を切り替えるのが最も簡単な方法だからです。 これは非常に見栄えがよく、すべてのものですが、パーティクルは着色された純粋な光であると想定されています。現在、それらはすべてシェードで色付けされた円ですが、後でグローエフェクトやその他のシェーディングテクニックを追加する可能性があります。 問題は、すべての色合い(HまたはVをいじらない)が、私たちの目で見た明るさの点で同じであるとは限らないことであり、これが問題を引き起こします。たとえば、それらすべてが青の色合いである場合、かなり暗く見えます。 明らかに、シェーダーでこれらのHSVカラーをRGBカラーに変換する必要があり、いくつかの計算を行うと、何が問題なのかがすぐにわかりました...色の輝度が等しくありませんでした! 私が理解しているように、輝度はおおよそ(0.2126*color.r + 0.7152*color.g + 0.0722*color.b)であり、それがすべてがオフになっている理由です。 高輝度を維持しながら、さまざまな彩度(ホイールの度の色)をすべて取得できるようにする方法はありますか?おそらく、HSVとは異なる種類の色を使用する必要があるのでしょうか、それとも、カラーホイール上のxの次数で、yの輝度を持つ色を見つける式ですか? どうもありがとう!
8 shaders  color 

1
(比較的)線形のダンジョンパスを生成するにはどうすればよいですか?
アクションサイドスクローラーのコンセプトを開発しています。必要なのは、(比較的)まっすぐなマップを生成する方法です。これはつまり… このマップが少しずれていても、1つの単純なルートに従っていることは明らかです。これで、迷走経路(ショートカット、または秘密の通路)も実装します。そのため、おそらく、3番目の円で囲まれた領域から4番目の領域に移動するには、メインパスと、より強力な敵で満たされた、より高速でより高い報酬が得られる秘密の通路があります。 ここで行き詰まりに達しました。いくつかのオプションを調査していますが、実際には何も進歩していません。この種のパスを生成するためにどのようなアプローチを使用できますか?これまでのところ、Java、C#、およびC ++で実験してきたので、プログラミング言語に縛られることはありません。同様に、特定のゲームエンジンに対する現在の依存関係もありません。

7
ゲームデザインレキシコン:宝石などの用語[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 ヒーローがゲームで彼の富に追加する宝石やコイン、またはその他の「収集品」を拾うとき、それらは一般に何と呼ばれ、それらはゲームデザイン用語で一般的にどのように呼ばれますか?

3
Unity 5でUIテキストオブジェクトを動的に作成する方法
私はシンプルなものを探していましたが、Unity 5のドキュメントはかなり古くなっています。私が達成したいのは、スクリプトから完全に、つまり完全に動的にUIテキストを作成できるようにすることです。実際のアプリケーションでは、事前定義されていない反復回数のループでそれを行います。 Googleを使用して検索すると、その方法に関する非常に多くの例が見つかりますが、すでに廃止されている(Unityバージョン5より前の)メソッドを使用しているか、単に間違っている(ここで驚きません...)方法を使用しています。最初にCanvasをプロジェクトに追加し、次にusing UnityEngine.UIC#コードに含める必要があること、およびのようなUIテキストを宣言できることはすでに知っていText _guitextます。 ただし、以下のコードは機能しません。つまり、クラッシュするのではなく、何も表示されないということです。 using UnityEngine; using System.Collections; using UnityEngine.UI; public class MyClass: MonoBehaviour { Text _guitext; // Use this for initialization void Start () { _guitext.text = "testing"; } // Update is called once per frame void Update () { } } さらに悪いことに、ゲームがプレイされている間、オブジェクト階層リストに新しいオブジェクトが表示されないようです。 ここで正しい方向に私を指摘していただけませんか?ありがとう。
8 unity  gui  text 

3
Steamは、ゲームを購入/ダウンロード/インストールしたときに、ゲームにJavaが必要であることをユーザーに通知しますか?
私の仲間と私はSteam向けのゲームを作るつもりです。私はプログラマーとしてJavaを使いたいと思っています。Javaが現在私のお気に入りの言語だからです。知っておく必要があるのは、Steamがゲームを購入/ダウンロード/インストールするときに、ゲームにJavaが必要であることをユーザーに通知することですか?
8 java  steam 

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