ゲーム開発

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

4
隣接する三角形を作成するためのアルゴリズム
一度クリックしてシーンにノードを配置できるシステムがあります。3つのノードを配置すると、三角形が形成されます。将来のノードを配置すると、そのノードを2つの最も近い既存のノードに結合することにより、新しい三角形が作成されます。 これはほとんどの場合正常に機能しますが、2つの最も近いノードの1つは多くの場合使用すべきものではないため、非常に鋭角な三角形の近くで使用すると欠陥があります。 たとえば、次の画像を参照してください。マゼンタの三角形が最初に配置されます。次に、Xとマークされた位置をクリックすると、青いオーバーレイがある新しい三角形が表示されます。私が欲しいのは、緑のオーバーレイがある新しい三角形です。(つまり、この例では、マゼンタの三角形と対称です。明確化:緑とマゼンタの三角形は重なりません-緑の三角形は青の三角形の下で左端のノードまで延びています) 三角形がこのように重ならないように、新しい三角形を作成するときに使用する既存の2つの頂点を決定するにはどうすればよいですか? 編集:最も近いエッジを検索すると、より良い結果が得られますが、完璧な結果は得られません。この状況を考慮してください: 「最近傍」テストはあいまいで、ABまたはACを返すことができます(両方のXに最も近い点がAにあるため)。望ましい結果はACになり、エッジが重ならないACX三角形を形成します。この結果をどのように確認できますか?(可能な場合、浮動小数点の精度の問題を考えると、最も近いエッジテストでは必ずしも2つが正確に等距離にあるとは限らないので、タイブレーカーとして個々のエッジオーバーラップテストを実行する必要はありません。)


5
特定のコンテキストでいくつかのオブジェクトとの衝突を無視する
私はUnityで車を使ってレースゲームを作っています。車にはブースト/ニトロパワーアップがあります。ブースト中、ゾンビと衝突するときは逸脱したくありませんが、壁と衝突するときは逸脱したいと思います。 一方、私はゾンビとの衝突を無視したくありません。なぜなら、私はゾンビを衝突時にヒットさせたいからです。 これをどのように処理すればよいですか?基本的に、特定のオブジェクトと衝突したときに車が回転しないようにしたいです。

2
24未満の頂点を持つキューブを構築することは可能ですか
Minecraftのようなキューブベースの世界があり、24個未満の頂点を持つキューブを構築してメモリ使用量を削減する方法があるかどうか疑問に思っています。 私には2つの理由で不可能だと思われます。法線が正しく出ないことと、面ごとのテクスチャが機能しないことです。 これは事実ですか、それとも間違っていますか?たぶん助けることができるいくつかの派手な新しいDX11技術がありますか? 編集:明確にするために、2つの要件があります:適切な照明を行うために各キューブフェースの表面法線が必要であり、各キューブフェースのテクスチャ配列の異なるインデックスに対処する方法が必要です

5
RogueLikeゲームでさまざまなアクション速度を管理する方法は?
RogueLikeゲームでさまざまなアクション速度を管理する方法は? つまり、ターンベースのゲームでは、アクションやその他の特性に応じて、異なる「速度」で行動する俳優がいる場合があります。アクターは、スピードが速いかどうかによって、他のアクションよりも効果的にアクション/ターンを行います。 アクターが行動できるようになる時期を決定する方法(スケジューリングを変える?) それを行うにはさまざまな方法があるように見えますか?アルゴリズムでいくつか説明できますか?
14 roguelikes 

2
3D RTSでグループ形成を実装するにはどうすればよいですか?
私は単一のユニットのパスファインディングの仕事を得ることができ、エージェントとエージェントの衝突を回避することができましたが、エージェントのグループをある場所に送信できるようにする必要があります。 これはこれまでの私のセットアップです: ウェイポイントパスファインディング 2つのノード間の最小距離は、エージェントに許可されている最大の境界球半径よりも少し大きいです。 エージェントは、clearpathに基づいてステアリング動作を行うことにより、他のエージェントとの衝突を回避します。 そのため、エージェントをグループ内のどこかに送る必要があります。グループリーダーを作成し、他のユニットに彼の位置にオフセットを与えることだと言っているいくつかの投稿を読みました。 しかし、問題は、グループ形成が達成できない場合はどうでしょうか?たとえば、長方形を形成したいが、ターゲットの位置に長方形のセットアップを作成できない構造が近くにあります。
14 path-finding  rts 

4
プレイヤーがオンラインFPSでウォールハッキングするのを防ぎますか?
なぜマルチプレイヤーの一人称シューティングゲームのウォールハッカーに文句を言うのですか? サーバー側のすべてのプレイヤーに対してオクルージョンカリングを実行することはできませんか?たとえば、プレーヤーがクライアントの錐台に表示され、オブジェクトによって遮られていない場合にのみ、プレーヤーxyz情報をクライアントに送信しますか?衝突ジオメトリが非常に単純化されていても、ほとんどの場合、不正行為者は戦術情報を受け取りません。 なぜこれをしないのですか?

2
レベルエディター+ゲーム->レンダリング/ゲーム固有のコードを複製しますか?
ゲームのコードを設計する方法について読んでいます。私が理解できなかったことの1つは、ゲームからコードを「コピー」せずに、ゲーム外レベルのエディター(「ゲーム内レベルのエディター」ではない)をどのように管理するかです。たとえば、所有できるさまざまな種類のエンティティに関するすべてのコードをコピーする必要がある場合があります。ゲームのレンダリングコードを追加する必要があります。 私の推測では、これはゲームの「エンジン」部分からDLLを作成することで実現できます。次に、実際のゲームとレベルエディターの間で共有します。 または、これを行うためのより良い/簡単な方法はありますか?
14 xna  map-editor  2.5d 

2
データ駆動型のアニメーション状態
編集:私の質問が正確に何であるかを明確にするために:これは、コンテンツの作成/管理に注目してゲームエンジンでアニメーション/アニメーション状態を処理する良い方法ですか?この方法で行うことの欠点は何ですか?また、それを行う別の方法は何ですか?-私の答えはコメントの中で部分的に答えられましたが、それが進むべき道のようです。 アニメーションをハードコーディングせずに、2Dゲームエンジンの趣味プロジェクトでアニメーションを処理しようとしています。アニメーションの状態をハードコーディングすることは、よくあることですが、非常に奇妙な現象のように思えます。 少しの背景:コンポーネントがデータの袋であり、サブシステムがそれらに作用するエンティティシステムを使用しています。ポーリングシステムを使用してアニメーションの状態を更新することにしました。 アニメーションを述べて私は意味: "walking_left"、 "running_left"、 "walking_right"、 "撮影"、... アニメーションを処理する私のアイデアは、データ駆動型モデルとして設計することでした。データはxmlファイル、rdbmsなどに保存できます。また、ゲーム/レベル/の開始時にロードすることもできます。この方法で、コードをどこにでも変更することなく、アニメーションとトランジションを簡単に編集できます。ゲーム。 例として、念頭に置いたデータ定義の xmlドラフトを作成しました。 非常に重要なデータの1つは、単にアニメーションの説明です。アニメーションには一意のID(わかりやすい名前)が付けられます。画像への参照IDを保持します(異なるアニメーションは異なるスプライトシートを使用する可能性があるため、使用するスプライトシート)。アニメーションを実行する1秒あたりのフレーム。ここでの「リプレイ」は、アニメーションを1回または無限に実行する必要があるかどうかを定義します。次に、四角形のリストをフレームとして定義しました。 <animation id='WIZARD_WALK_LEFT'> <image id='WIZARD_WALKING' /> <fps>50</fps> <replay>true</replay> <frames> <rectangle> <x>0</x> <y>0</y> <width>45</width> <height>45</height> </rectangle> <rectangle> <x>45</x> <y>0</y> <width>45</width> <height>45</height> </rectangle> </frames> </animation> アニメーションデータは、アニメーションリソースプールに読み込まれて保持され、それを使用しているゲームエンティティによって参照されます。画像、音、テクスチャなどのリソースとして扱われます... 定義する2番目のデータは、アニメーションの状態と遷移を処理する状態マシンです。これは、ゲームエンティティが存在できる各状態、移行できる状態、およびその状態の変化をトリガーするものを定義します。 この状態マシンは、エンティティごとに異なります。鳥には「歩く」と「飛ぶ」という状態があるかもしれませんが、人間には「歩く」という状態しかありません。ただし、複数の人間がおそらく同じ状態になる可能性があるため(特に、モンスターなどの一般的なNPCを定義する場合)、異なるエンティティで共有できます。また、オークは人間と同じ状態になる場合があります。この状態定義は、ゲームエンティティの選択グループによってのみ共有される可能性があることを示すためだけです。 <state id='IDLE'> <event trigger='LEFT_DOWN' goto='MOVING_LEFT' /> <event trigger='RIGHT_DOWN' goto='MOVING_RIGHT' /> </state> <state id='MOVING_LEFT'> …
14 animation  state  fsm 

3
自分のゲームのプレイテスト-客観的になるには?
私は現在、iPhoneゲームに取り組んでいますが、プレイテストで問題が発生しており、ゲームのどの部分が楽しく、どの部分を作り直す必要があるかを見つけています。さまざまなイテレーションをプレイするために座っていると、ゲームの同じ部分を何度も何度も繰り返していくにつれて、ゲームプレイとメカニックに対する私の気持ちが変わります。私が非常に楽しいと思ういくつかの部分は、ゲームを初めて使う人には退屈かもしれませんし、逆もまた同様です。私の目標は、ゲームを始めたばかりの人のために、良いペース、進歩、スキルの進歩を維持するゲームを作成することですが、それをテストする方法はわかりません。 私は客観的な考え方を維持しようとし、品質保証技術者(妻)が1人いますが、彼女は私とほぼ同じくらいゲームをプレイしているため、その「初心者」の考え方を失います。サードパーティのテスターを見つけて使用するリソースはまだありませんが、クローズドベータテストを行う前に、ゲームをより完成した状態にしたいと考えています。 私のゲームが本当に楽しいかどうか、または1000ラウンド後にトリックをプレイするだけの心なのかどうかを知るためのヒントやアイデアはありますか?

1
グラデーションフォグオブウォーを作成するにはどうすればよいですか?
教育目的でトップダウンの2D RTSゲームを作成しています。現在、私は本当にStarcraftのデザイン/アイデアをコピーしています。Fog Of Warも実装する必要があると判断しました。 私の期待: 現在探索されているエリア(ユニットがあります)を点灯する必要があります。 事前に探索されたエリア(ユニットがあった)はより暗くなりますが、ユニットがそこにあったときに何があったかを示します。 探索されていないエリア(ユニットが行ったことのないエリア)は完全に黒である必要があります。 各タイプから勾配の変化があるはずです(たとえば、以前に探索されたものから探索されたもの)。下の図を参照してください。 大まかな詳細:どうすればいいですか?
14 2d  xna-4.0  rts  fog-of-war 

3
タイルの間に線があるのはなぜですか?
トップダウンXNAゲームを作成しています。マップはタイルによって作成されます。私が最近気づいた問題は、タイル間の線の「グリッド」です。カメラの位置に応じてのみ表示されることがあります。XNAにポジショニングを処理させますが、これらの行が表示されるのはなぜですか? 以下に線のある画像を示します。 ただし、カメラを少し動かした後、魔法のように表示されるはずの状態に戻ります。 助けてくれてありがとう! 編集: これは私がソースコードに対してできる最善の方法です。これは非常に大きなプロジェクトであり、レンダリングは複数の領域で行われます。 メインレンダリングループ タイルなどの動的要素の場合: spriteBatch.Begin(SpriteSortMode.Deferred, Nothing, SamplerState.LinearClamp, Nothing, Nothing, Nothing, Matrix.CreateTranslation(CameraX, CameraY, 0)) Mode.Render(spriteBatch, False) For Each j As [Delegate] In DynamicInjectionList j.DynamicInvoke(spriteBatch) Next DynamicInjectionList.Clear() spriteBatch.End() Mode.Render: For x As Integer = 0 To GRIDMAX - 1 For y As Integer = 0 To GRIDMAX - …

7
変化するデザイナーデータと変化するプレーヤーデータを管理する方法
プレイヤーが何らかの方法で世界を形作るオンラインゲームを持っています-例えば。世界地図の特定の部分に直接家を建てることができるウルティマオンラインの住宅。これらは、永続的な世界の一部として時間とともに持続する必要がある変更です。 同時に、デザインチームは新しいコンテンツを追加し、古いコンテンツを修正して、新しいプレーヤーのためにゲームを改善および拡張しています。彼らは最初にテスト中に開発サーバー上でこれを行い、その後、ライブサーバー上のプレイヤーの「作業」に自分の作業をマージする必要があります。 ゲームデザインの問題を修正すると仮定します。プレーヤーは指定された領域でのみ構築できるため、デザイナーの編集と地理的に衝突することはありません- 新しいデザイナーデータが新しいプレーヤーデータとマージされるときに競合を避けるためにデータを処理したりデータ構造を配置する良い方法は何ですか? 例1:プレーヤーが新しいタイプのアイテムを作成すると、ゲームはそれにID 123456を割り当てます。そのアイテムのインスタンスはすべて123456を参照します。ゲームデザイナーが同様のシステムを持ち、デザイナーが123456という番号の新しいアイテムを作成するとします。これを回避するにはどうすればよいですか? 例2:誰かがすべてのドラゴンにフランス語のアクセントを与える人気のあるMODを作成します。これには、新しいassignFrenchAccentドラゴンオブジェクトに新しい音声アセットを割り当てるために使用する、新しいオブジェクトと呼ばれるスクリプトが含まれています。しかし、同じ名前のオブジェクトを持つ「ナポレオン対スマウグ」DLCを展開しようとしています-多くの顧客サービスの問題なくこれを行うにはどうすればよいですか? 私は次の戦略を考えました: 2つの個別のファイル/ディレクトリ/データベースを使用できますが、読み取り操作は非常に複雑です。「すべてのアイテムを表示」では、デザイナーDBで1回の読み取りを実行し、プレーヤーDBで1回の読み取りを実行する必要があります(それでも2を区別する必要があります)。 1つのストア内で2つの異なる名前空間を使用できます。文字列を主キーとして使用し、接頭辞に「DESIGN:」または「PLAYER:」を付けますが、これらの名前空間の作成は簡単ではなく、依存関係は明確ではありません。(たとえば、RDBMSでは、文字列を主キーとして効率的に使用できない場合があります。整数を使用して、特定の数(100万など)未満のすべての主キーをデザイナーデータに割り当て、そのポイントより上のすべてを割り当てることができますただし、その情報はRDBMSからは見えず、外部キーリンクは「分割」を通過します。つまり、すべてのツールとスクリプトは明示的に回避する必要があります。 同じ共有データベースでいつでもリアルタイムで作業できますが、パフォーマンスが低下したり、プレーヤーのデータが破損するリスクが高まる場合があります。また、異なるワールドデータを持つ複数のサーバーで実行されるゲームには適用されません。 ...他のアイデアはありますか? これは主にオンラインゲームの問題ですが、開発者がゲームにパッチを適用すると同時にコミュニティがMODを作成するMODにも概念が適用される可能性があります。新しいパッチがリリースされたときにmodが壊れる可能性を減らすために、ここで使用されている戦略はありますか? また、これを「バージョン管理」としてタグ付けしました。これは、あるレベルでは、これが何であるかということです。マージが必要なデータ開発の2つのブランチです。おそらく、その方向からの洞察がいくつかあるかもしれません。 編集-問題を明確にするために、上にいくつかの例を追加しました。この問題は、実際にはネームスペースの1つであり、複合キーを介してストアに実装できると考え始めています。これにより、少なくともマージ戦略が簡素化されます。しかし、私が見ていない選択肢があるかもしれません。

4
半径内のすべてのエンティティを効率的に継続的に見つける方法は?
非常に多数のエンティティ(ユニット)があります。各ステップで、各ユニットは近くのすべてのユニットの位置を知る必要があります(距離は定数Rより小さい場合)。すべてのユニットは連続的に移動します。これは3Dです。 平均すると、特定の制約を持つ他の特定のユニットの近くに、合計ユニット数の1%が存在します。 ブルートフォースなしでこれを効率的に行うにはどうすればよいですか?

5
スプライトのサイズが不均一なスプライトシートを処理するにはどうすればよいですか?
不均一なスプライト寸法を持つスプライトシートの場合、どのように境界矩形を取得できますか個々のスプライトの(つまり、次の画像の青いボックス/いくつかの例を描いただけですか)。 私が決定したいのは: offset_x, offset_y, width, height これまでのところ、すべてのスプライトのサイズが同じであるスプライトシートのみを使用しました。その場合、特定のスプライトを取得するには、xオフセットとyオフセットを指定するだけです。ただし、不均一な寸法のスプライトシートでは、これは機能しません。 編集:コメントと回答を読んだ後、質問をより包括的にするために言い換えました。ゲームでスプライトシートを使用する実際のプロセス。以前は、この質問には、人々が不均一な寸法のスプライトシートを作成する理由と、その対処方法が含まれていました。

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