ゲーム開発

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


6
どのGameObjectが衝突を処理するかを決定する方法は?
衝突では、2つのGameObjectが関係していますか?私が知りたいのは、どのオブジェクトに自分が含まれているOnCollision*かをどのように決定するのですか? 例として、PlayerオブジェクトとSpikeオブジェクトがあるとします。私の最初の考えは、次のようなコードを含むスクリプトをプレーヤーに配置することです。 OnCollisionEnter(Collision coll) { if (coll.gameObject.compareTag("Spike")) { Destroy(gameObject); } } もちろん、代わりに次のようなコードを含むスクリプトをSpikeオブジェクトに置くことで、まったく同じ機能を実現できます。 OnCollisionEnter(Collision coll) { if (coll.gameObject.compareTag("Player")) { Destroy(coll.gameObject); } } どちらも有効ですが、この場合、衝突が発生するとPlayerでアクションが実行されるため、Playerでスクリプトを使用する方が理にかなっています。 しかし、私がこれを疑っているのは、将来、敵、溶岩、レーザービームなど、衝突時にプレイヤーを殺すオブジェクトをさらに追加したいかもしれないということです。これらのオブジェクトはおそらく異なるタグを持つでしょう。そのため、プレーヤーのスクリプトは次のようになります。 OnCollisionEnter(Collision coll) { GameObject other = coll.gameObject; if (other.compareTag("Spike") || other.compareTag("Lava") || other.compareTag("Enemy")) { Destroy(gameObject); } } 一方、スクリプトがスパイク上にあった場合、あなたがしなければならないことは、プレーヤーを殺すことができ、スクリプトのような名前を付けることができる他のすべてのオブジェクトに同じスクリプトを追加することKillPlayerOnContactです。 また、プレイヤーと敵が衝突した場合、おそらく両方でアクションを実行したいと思うでしょう。その場合、どのオブジェクトが衝突を処理する必要がありますか?または、衝突を処理し、異なるアクションを実行する必要がありますか? これまでに妥当なサイズのゲームを作成したことはありません。最初にこの種の問題が発生した場合、コードが大きくなり、メンテナンスが難しくなるのではないかと思っています。それとも、すべての方法が有効であり、それは本当に重要ではありませんか? 洞察は大歓迎です!お時間をいただきありがとうございます:)

5
ゲームアーキテクチャ/設計の質問-グローバルインスタンスを回避しながら効率的なエンジンを構築する(C ++ゲーム)
ゲームアーキテクチャについて質問がありました。異なるコンポーネントを相互に通信させる最良の方法は何ですか? この質問がすでに何百万回も聞かれている場合、私は本当に謝罪しますが、私が探している正確な種類の情報を持つものを見つけることができません。 私はゲームをゼロから構築しようとして(重要な場合はC ++)、インスピレーションのためのいくつかのオープンソースゲームソフトウェア(Super Maryo Chronicles、OpenTTDなど)を観察しました。これらのゲームデザインの多くは、(レンダリングキュー、エンティティマネージャー、ビデオマネージャーなどのように)世界中でグローバルインスタンスやシングルトンを使用していることに気付きます。グローバルインスタンスとシングルトンを避け、可能な限り疎結合のエンジンを構築しようとしていますが、効果的な設計の経験不足に起因するいくつかの障害に直面しています。(このプロジェクトの動機の一部はこれに取り組むことです:)) GameCore他のプロジェクトで見られるグローバルインスタンスに類似したメンバーを持つメインオブジェクトを1つ持つデザインを構築しました(つまり、入力マネージャー、ビデオマネージャー、GameStageすべてのエンティティとゲームプレイを制御するオブジェクトがあります)現在読み込まれているステージなど)。問題は、すべてがGameCoreオブジェクトに集中しているため、異なるコンポーネントが互いに通信する簡単な方法がないことです。 たとえば、スーパーマリョークロニクルを見ると、ゲームのコンポーネントが別のコンポーネントと通信する必要がある場合(つまり、敵オブジェクトがレンダーキューに追加されてレンダーステージで描画される場合)は、常にグローバルインスタンス。 私は、ゲームオブジェクトに関連情報をオブジェクトに渡しGameCoreて、GameCoreオブジェクトがその情報を必要とするシステムの他のコンポーネントに渡すことができるようにする必要があります(つまり、上記の状況では、各敵オブジェクトレンダリング情報をGameStageオブジェクトに返します。オブジェクトはすべてを収集し、に返します。レンダリング情報は、レンダリングのGameCoreためにビデオマネージャーに渡されます)。これは、本当に恐ろしいデザインのように感じられ、これに対する解決策を考えていました。可能なデザインに関する私の考え: グローバルインスタンス(Super Maryo Chronicles、OpenTTDなどの設計) GameCoreオブジェクトを、すべてのオブジェクトが通信する仲介者として機能させる(上記の現在の設計) コンポーネントと通信する必要がある他のすべてのコンポーネントへのポインターを指定します(つまり、上記のMaryoの例では、敵のクラスは通信する必要があるビデオオブジェクトへのポインターを持ちます) ゲームをサブシステムに分割する-たとえば、サブシステム内のGameCoreオブジェクト間の通信を処理するマネージャーオブジェクトをオブジェクトに含める (別のオプション? ....) 上記のオプション4が最適なソリューションであると思いますが、デザインに問題があります。おそらく、グローバルを使用するデザインを見てきました。現在の設計に存在する問題と同じ問題を、各サブシステムで複製しているように感じます。たとえば、上記のGameStageオブジェクトはこれをやや試みたGameCoreものですが、オブジェクトはまだプロセスに関与しています。 誰でもここで設計のアドバイスを提供できますか? ありがとう!
28 c++  architecture 

2
テトリスはパブリックドメインですか?[閉まっている]
テトリスのコンセプトはパブリックドメインですか、それともまだコンセプトにロイヤリティを徴収している人がいますか?つまり、もし私がテトリスのバリアントを書くとしたら、誰かにお金を借りなければならないでしょうか?ありがとう。
28 legal 

6
テクノロジーで許可されている場合、視野の変更を許可しないのはなぜですか?
これはゲームの開発を目的とする問題ではなく、その背後にある技術についての詳細です。多くのゲーミングジャーナリストとプロゲーマー(トーナメントとホームエンターテイメントセクターの両方)は、しばしば、一人称または三人称ゲームには視野を変える方法があるべきであるという問題に打ち勝ち、私は彼らに同意します。彼らがこれに言及する主な理由は、非常に多くのプレイヤーが過度に制限された視野でプレイすると、動揺病に関連する頭痛や目の疲れを感じるからです。 予算の制約により、インディー開発者がこれを許可していない場合、エンジンのサポートを追加する必要があるため、理解できます。ただし、多くの開発者は、Frostbite、Unity、Unreal、Cryengineなどの有名なサードパーティエンジンを使用していますが、視野を変更するオプションは提供していません。 テクノロジーで許可されている場合、視野の変更を許可しないのはなぜですか?
28 viewport 

1
モデルをターゲットに向ける
2つのオブジェクト(ターゲットとプレーヤー)があり、両方に位置(Vector3)と回転(四元数)があります。ターゲットを回転させて、プレイヤーの真正面に向けたいです。ターゲットは、何かを撃ったとき、プレイヤーを正しく撃ちます。 私はプレイヤーに強打の多くの例を見てきましたが、増分回転は望ましくありません、私は強打を100%にすることができ、実際に機能する限り、それは大丈夫だと思います。 参考までに、位置と回転を使用して他の多くのことを行うことはできません。この最後の作品を除いて、すべてうまくいきません。 コードサンプルは、Targetのクラスで実行されます。Position=ターゲットの位置、Avatar =プレーヤー。 編集 私は今、彼が提供したMaikのc#コードを使用しており、うまく機能しています!
28 xna  c#  3d  models  quaternion 

2
世界の歴史を手続き的に生成する方法はありますか?
ここにある図は、ある人が作成した想像上の世界の1800年の文化史を表しています。 この種のものは、世界のデザインに関する限り、ゲーム開発に強力な用途があるように思われます。 彼はこの図を手でやったようです。私が興味を持っているのは、この種のダイアグラムをプログラムで作成する方法があるかどうかを見ることです。 ランダムな値から上記のスタイルのダイアグラムを生成するタスクを課された場合、どのように対処しますか?検討する特定のデータ構造またはアルゴリズムはありますか?

6
ゲームの設計-どこから始めますか?[閉まっている]
私の友人と私は、私たちの自由な時間に取り組むために一緒にゲームを計画しています。大規模なゲームではありませんが、単純なゲームでもありません。 彼はゲームの背後にあるストーリーに取り組んでおり、私はグラフィックスとコードに取り組んでいます。 ゲームをどこから始めるべきか本当にわかりません。基本的なゲームの種類とプレイ方法を知っていますが、実際にどこから始めればいいのかわからないです。 Xcodeを開いていますが、最初に何を設計する必要があるかさえわかりません。 この作家のブロックに対するアドバイスは何ですか?ゲームを始めるのに適した場所はどこですか?Xcodeに触れる前に、すべてのグラフィックとレイアウトを設計する必要がありますか?簡単なものに到達する前に、最初に苦労することがわかっていることをプログラムする必要がありますか?

4
2Dマップで「本土」を検出するアルゴリズムはありますか?
このマップでは、「メインランド」は、4つの基本的な方向(北、南、東、西-斜めではない)でマップの中心に接続できるすべての土地です。 本土を検出し、本土の穴を埋めたいと思います。私は3つのことを考えました: パス検索アルゴリズムを使用して、マップの中心に接続できる場合は、すべての非水(暗いセル)セルを検索します。高過ぎ!しかし、これは島ではうまくいく可能性があります。 本土は緑色の塗料でいっぱいです。各穴はペイントで囲まれています... 本土内のすべてのウォーターポイントで隣接関係を確認すると、海岸線に表示されている半島やその他の地理的特徴を削除します。 本土を把握するためのある種のエッジ検出。内側のものはすべて保管し、水であればそれを満たし、外側のものは取り除きます。複雑? おそらく、ゲームの経験豊富な開発者がこれを手伝ってくれて、おそらく既知のアルゴリズムやテクニックの名前を教えてくれるでしょうか?
28 algorithm  maps 

3
マップ生成のランダムシード関数?
マップの視覚的境界が(マップを通過することで)変化するときに、ランダムなタイルベースのマップを生成する関数を探しています。マップを無限に大きくし、迷路のような構造にする必要があります。 ただし、世界が無限である場合、プレイヤーが以前にいた場所に戻ると問題が発生します。ゲームは、そこにあるすべてのものが実際にどのように見えるかを覚えていなければなりません。 だから、私は考えていました-「Minecraftはこの問題をどのように解決するのですか?」そして、シードを持つ何らかの乱数関数を使用する必要があると思いました。それは前方にも後方にも進むことができ、そのようにして、古いインスタンスを正確に、しかし新しいインスタンスで再生成します。 これについてどう思いますか?

2
Androidゲームで使用するスレッドの数はいくつですか?
少なくとも、OpenGL AndroidゲームにはUIスレッドとによって作成されたレンダラースレッドがありGLSurfaceViewます。 Renderer.onDrawFrame()最大のFPSを取得するために最小限の作業を行う必要があります。物理学、AIなどはすべてのフレームを実行する必要はないため、それらを別のスレッドに入れることができます。今、私たちは持っています: レンダラースレッド-アニメーションの更新とポリゴンの描画 ゲームスレッド-ロジックと定期的な物理学、AIなどの更新 UIスレッド-Android UI相互作用のみ UIスレッドをブロックしたくないので、ゲームロジック用にもう1つのスレッドを実行します。たぶんそれは必要ないでしょうか?レンダラースレッドでゲームロジックを実行する理由はありますか?

10
高速化する宇宙船をより速く見せるための効果
私には宇宙船があり、宇宙船を高速化する「ブースト」機能を作成しましたが、高速の印象を作成するにはどのような効果を実装する必要がありますか? 私は自分の宇宙船以外のすべてをぼやけさせることを考えていましたが、何か足りないものがあると思います。何か案は? ところで 私はXNA C#で作業していますが、XNAに慣れていない場合でも、いくつかの効果を説明することは有用です。 ゲームは3Dで、ゲームのプリント画面をいくつか添付しました これは通常モードです(ブーストなし) そして、ここにブーストモードがあります(カメラは通常の速度、ブーストされていない速度で速度を上げながら、船は前方に速度を上げます)


4
ゲームストーリーイベントプログラミング
c / c ++およびDirectXでゲームエンジンを開発しました。 マップ用のタイルエンジン、アニメーションプレーヤー/ NPCスプライト、NPCとの会話、メニュー、およびレベル変更がありますが、ゲームはなく、空っぽです。 私は周りを見回して流行語の答えを聞き続けていますが、ゲームにストーリーを実装する方法を知りたいです。 一部の人々は、ゲームで利用可能なすべてのアクション/状態を管理するフラグを保持する保存ファイルを言っていますが、これはばかげて聞こえます。 それは少し野心的ですが、私は古いポケモン/ファイナルファンタジーゲームのようなゲームを得ることを目指しています。 これらのゲームがどのように機能するか、または理論がどのように使用されるかを知っている人はいますか? 私はしばらく探していましたが、人々からのインプットを本当に感謝しています。
28 c++  directx 

15
インディーズゲーム向けの興味深い/革新的なオープンソースツール[終了]
好奇心から、インディーズゲームにいくつかの興味深い機能を追加できるオープンソースのツールやプロジェクト、できれば大きな予算のゲームでしか見られないものを知りたいです。 編集:共産主義者のダックとジョー・レシュニッヒが示唆したように、私は答えとして例を挙げています。 編集2: PyGame、Inkscape、Gimp、Audacity、Slick2D、Phys2D、Blender(興味深いプラグインを除く)などのようなツールを投稿しないでください。優れたツール/ライブラリであり、優れたゲームを開発するために不可欠であると主張する人もいますが、私はもっと珍しいプロジェクトを探しています。現実的な木や植物を生成したり、動物用の現実的なAIを生成したりするなど、本当に具体的またはニッチなものにすることができます。

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