ゲーム開発

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

2
グラフノード間にエッジをランダムに生成する良い方法は何ですか?
私は4X宇宙ゲームのランダムマップジェネレーターをやっています。 ゲームの各ノードは、2Dグリッド上のランダムな(x、y)座標に配置されます。ノードは、別のノード(ワームホールを表す)への1つ以上の双方向エッジを持つことができます。すべてのノードに少なくとも1つのワームホールがあり、すべてのノードが同じグラフに属している必要があります。 理想的には、ワームホールが最大長を超えないようにし、可能であれば、ワームホールが互いに交差しないようにする必要があります。 私の素朴な実装は、すべてのノードを反復処理し、最も近い3つのノードへのノードリンクを持つことです。ただし、最終的には多数のサブグラフが表示されます。ノードのエッジを生成する良い方法は何ですか?

1
Android開発を行うときにアニメーションを作成する最良の方法は何ですか?
私は最初のAndroidゲームを作成しようとしています。現在、アニメーションを作成するための最良の方法は何かを(図面を作成する人と別のプログラマーと)理解しようとしています。(キャラクターの動きなどのアニメーション) 最初に、デザイナーはオブジェクト/キャラクターを描画し、フラッシュでそれらをアニメーション化できるため、アクションのすべてのフレームを描画する必要がないと述べました。他のプログラマーと私はFlashをあまり知らないので、Flashアニメーションからすべての画像を抽出し、アニメーションが始まるときに次々と表示されるようにすることを提案しました。 彼はそれがCPUのリソースを使い過ぎる結果になると私は同意する傾向があると彼は言った、しかし私はハードウェアにあまりにもハードでなく、可能な場合にはそれなしでスムーズなアニメーションを作る方法が本当にわからないデザイナーはAdobe Illustratorですべてのフレームを描画します。 経験豊富なAndroidゲーム開発者がこれを調整して、アニメーションを作成する最良の方法がわからないので、ゲームの他の部分に進むことができますか?

3
Pythonゲームは複数のプラットフォームで動作しますか?
私はPythonとおそらくいくつかのSQLでゲームを書く計画があります。私がプログラムを完成させたときのプログラムの多様性が心配です。理想的には、Windows、Mac、Android、iPhoneで実行したいのですが、電話がこれに制限されていると感じています。一種のこと。複数のプラットフォームで実行されるプログラムを作成するにはどうすればよいですか?これは初心者プログラマにとっても実現可能ですか?

2
どのOpenGLテクスチャフォーマットがネイティブでサポートされているかをどのように検出しますか?
たとえば、ビデオカードが「bgr8」をサポートしていないかどうかを検出し、ソフトウェアモードで「rgba8」などの別の形式に変換する方法。 更新:混乱してすみません。状況の詳細この質問私は設定internalFormatでglTexImage2Dを「bgra8」のようなものではなくvideodriver内部で「RGBA8」のように、別の形式にデータを変換します。

3
スクリプトはエンジンの抽象化と相互作用する必要がありますか?
私はJavaとJythonを使用していますが、いくつかの調査の結果、スクリプトがエンジンインターフェイスに直接アクセスできるようにすると、2つが密接に結びつくため、間違いになる可能性があることがわかりました。 MODがエンティティを作成および管理できるようにするほとんどのスクリプトは、なんらかの抽象化を介して行われているようです。これらの抽象化はこの理由のためにそこにありますか、それとも非プログラマーがゲームを変更するためのより直感的な方法を提供するだけですか?
10 java  python  scripting 

3
ゲームエンティティの破棄を処理する適切な方法
エンティティのロードとロードが常に動的にロードされるゲームの世界を想像してみてください。それをエンティティのリストとして表すことができますが、それらを削除することはどうでしょうか? 追加するとき、新しいエンティティを押し戻すことができますが、コンテナ内の任意の場所を削除する必要がある場合があります。要素を検索して削除する位置を見つけるのを避けるには、どのような選択肢がありますか? エンティティIDをコンテナ内の位置として保存して、直接削除するためのパスを作成できると考えましたが、何らかの相互依存関係「障害」を生成しませんか? 私は正しい方法がList.RemoveAt(whereToRemove);のようなものになることを知っています。しかし、エンティティのみがいつ死ぬべきかを知っている場合はどうでしょうか? それとも私は何かが欠けているのですか?リストコンテナはオブジェクトが破壊されたときにそれを知って自分のサイズを減らしますか?

3
リアルタイム戦略ゲームのネットワーキング
現在の最先端のネットワークリアルタイム戦略ゲームとは何ですか? 数年前、一部のAAAタイトルがプレイヤーの入力のみを送信したことを思い出しているようです(Starcraft 1、Age of Empires)。これはあなたが他のすべてを完全に決定論的に保つことを要求するので、これはまだ実行可能なオプションですか?乱数ジェネレータを同期させることは実行可能に思われますが、FPU実装などの微妙な違いはどうですか? または、戦略ゲームはアクションゲームネットワークに近いものを使用しており、個々のエンティティが代わりに送信されます(何らかの形の予測と(デルタ)圧縮を使用して)? もしそうなら、発射体のような揮発性アイテムはどのように扱われますか? クライアント/サーバー対ピアツーピアはどうですか?私はこれらすべてが強く相互に関係していると思います。 お時間をいただきありがとうございます!

3
ランダムマップの生成-ランダムノードの分散/クラスタリングの戦略
私は、単純な4Xストラテジーゲームを空間で実行しています。各ノードは、目的点(惑星、小惑星など)です。 マップをランダムに生成するには、以下の手順に従います マップが持つ各ノードのタイプの数を決定します(たとえば、5つの地球のような惑星、10の不毛の惑星など)。 各タイプのノードをマップに配置します。 ステップ2では、各ノードタイプを均等に分散させたいと思います。したがって、たとえば、私はすべての地球のような惑星を配置することから始めます。単純にrand(map.width、map.height)を実行して位置を決定すると、すべての地球に似た惑星が一緒にクラスター化し、その領域から開始するプレーヤーにメリットをもたらす可能性があります。 さまざまなグラフ関数やノイズ関数を使用するなど、相互に広がる一連の(x、y)座標を生成できる方法はありますか?同様に、互いに近い座標を生成する方法はありますか?

1
ゲームに基づくstatistics statsのツールのためのアルゴリズム(League of Legends)
ゲーム(League of Legends)のシミュレーター(基本的にテスト目的)を作成したいと思います。 ゲームの基本: あなたはいくつかの統計を持つヒーローを持っています: 健康ポイント 攻撃ダメージ 攻撃速度 鎧 装甲貫通 移動速度 ヒーローは4つのスキルを持つことができます(各レベルで1つのスキルポイントを取得します)(ほとんどの場合、手動でアクティブ化され、クールダウン、ダメージ、攻撃力/攻撃力のスケール比、およびスキルレベルがあります)+パッシブスキル 敵のヒーローやニュートラルモンスターを殺すことができます。それらは同じステータスを持っています: 健康ポイント 攻撃ダメージ 攻撃速度 鎧 私がしたいこと: 特定のアイテム、または特定のステータスの増加があなたの殺害力/スピードをスピードアップするかどうかをテストするツールを作成します。 地図: http //evtron.com/Evtron-Alpha/wp-content/uploads/2011/02/Summoners-Rift.jpg 統計の例: HP:420 広告:55 攻撃速度:0.613(攻撃/秒-> 1 / 0.613秒のすべての攻撃) 装甲貫通力:25 キャラクターは1 / attackspeedで敵をオートアタックし、attackdamageでダメージを与えます(ダメージを計算する公式はありますが、このフェーズでは重要ではないと思います)。一度死んだら、movingspeed(あなたはマップ、黄色の頭蓋骨でキャンプを見ることができます) 私はアルゴリズムについて考えていました: i = 0からi = 30000(ミリ秒を数える)でforを作るだけだと思ったので、ミリ秒ごとに敵のhpとhpをチェックするだけでいいことがわかりました(かなりCPUが重いため、その中にランダムを入れるため、1k回の反復を合計できるはずですが、これは不可能です) 第二に、私はi = 1から30までforを実行し、毎秒チェックし、最後の1秒間に何が起こったかをチェックする必要があると思いましたが、ニュートラルモンスターの一部は大きなキャンプ(最大4モンスター)にいます、そしてこのようにして、コードはますます複雑になりました。 プレイヤー/モンスターごとにスレッドを作成し、死んだら調べ終わったら、プレイヤーのHPを下げます。 私の質問、これは正しい方法ですか? TLDR:統計値の増加によりキャラクターがより速いニュートラルモンスターを殺すゲームについての分析(1kを繰り返し、平均を計算)を作成するツールを作成したいと思います。 私はjavaを好みますが、atmはアルゴリズムに行き詰まっています。 @Karoly S:ええ、それは私の悪いです、.com-> .eu 私はこれに取り組んできました: …
10 algorithm 

3
XNAで大規模な地形をレンダリングする効率的な方法
プレイヤーに大きなスペースを必要とするXNAゲームを作成しています。現在、私が使用しているテスト高さマップは4096x4096で、4ビットBMPとして保存されています。 私がやろうとしているのは、その巨大なハイトマップファイルを取得して、ゲームでレンダリングすることです。私が遭遇している問題は、利用可能なメモリの大部分を使用するため、テレイン全体を一度にメモリにロードするのは非効率的であるという事実です。 私が遭遇したもう1つの問題は、XNA内でハード制限が設定されているため、1つのプリミティブでテレインをすべてレンダリングできないことです。 そうは言っても、私はいくつかの解決策に出くわしましたが、それらすべてを以下にリストしました: 現在のユーザーの位置に基づいたレンダリング-基本的に、ユーザーが世界中のどの方向を向いているかに関係なく、ユーザーの周りに正方形を描画します。ユーザーが表示しないスペースをレンダリングしているため、これも私が望んでいたものとは異なります。 ユーザーの向きと位置に基づいたレンダリング-ハイトマップのどのピクセルがレンダリングされることになっているはずの三角形を取得する式を見つけましたが、これは非常に難しいことが判明しました。 テレインを複数のチャンクに分割し、どのチャンクがユーザーに最も近いかをレンダリングします-まだ人々に表示されないチャンクをレンダリングしているため、まだあまり効率的ではありません。そして、高さマップをいくつかに分割する必要があり、スケーラビリティが大きな問題になるため、これは作業集約型です。 それらの解決策を試した後、私は何をすべきかについての考えが新鮮です。人々がこれらの複雑なアルゴリズムを実行するように言われているいくつかの回答を受け取りましたが、私はそれらを行う方法にさえどうしてもわからないだけです。 したがって、基本的に私はXNAで巨大な地形を最大限の効率でレンダリングするシンプルで簡単な方法を求めています。 私はゲーム開発全般については初心者ですが、それが有望であると思われる場合は、調査に応じます。 更新1: geoclipmappingメソッドを調査した後、私はそれでコーディングを始めました。私はすべての数学を終えて、ゲームが実行されます。しかし、それは非常に非効率的です-これはおそらく私の側の悪いコーディングです。それは2FPSで実行され、私のCPUのコア全体を使用します。コードを改善するつもりですが、さらにサポートが必要になると思います。TerrainマネージャークラスのコードのPastebinを次に示します。より効率的になった場合は、後でさらに結果を投稿します。
10 c#  xna 

2
ポピュラスのジオメトリシステム:始まり[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 4年前休業。 ポピュラス:友達との始まりのようなゲームを開発したいと思っています。しかし、彼らが世界に使用したジオメトリのタイプを見つけることはできませんでした。 すべてのタイルは同じサイズです-すべてのタイルは正方形です つまり、三角形が存在するため、正二十面体になることはできません。また、すべてのタイルが同じサイズであるとは限らないため、標準的な球のジオメトリになることもできません。 誰かが私を助けてくれますか?
10 3d  geometry 

1
列挙型と スキル値の整数
基本的なスキルと属性のシステムを実装していますが、どうすればよいかについて考え直しています。 たとえば、SkillType列挙型を使用してキーを表すDictionary / HashMapと、値を表す整数値を使用できます。しかし、これを行うべきですか? public class Skills { public IDictionary<StatType, Int> skills; //StatType is enum, being the key; the int //is the value. } vs. public class Skills { public int LongBlade, Armor, Marksman; //...etc } 基本的な整数だけを使用するのではなく、ここで型安全の利点を知りたいのですが。何かお勧めですか?
10 c# 

1
シーングラフにするかしないか?
ゲームにシーングラフを実装するかどうかの決定に苦労してきました。このようなツールを必要とするユースケースはいくつかありますが、実装の詳細の一部を取得できませんでした。 背景:モバイルプラットフォーム(主にAndroid)をターゲットにしたスペースシューティングゲームを書いていて、コードはほぼ完全にC ++です。私はミドルウェアを使用していません。特にレンダリングエンジンと物理エンジンは私自身の作品です。私の物理エンジンは、力と衝撃に基づいてオブジェクトの場所を更新します。私はまだアニメーションシステムを持っていませんが、いつかこれにアクセスする可能性があります(このディスカッションとは関係ない場合もあります)。 まず、良いユースケースについて説明します。複数の個別のパーツで構成されたボスがあり、それぞれが個別に損傷/破壊される可能性があります。たとえば、ボスエンティティの残りの部分とは無関係にダメージを受けるアームを持つボスがあるとします。腕が破壊されると、ボスの肩にある火の粒子の効果は、腕が破壊されたことを示している可能性があります。 現状では、物理エンジンの制約を使用してこのような問題を解決し、このような複合オブジェクトをまとめてみることにしました。そのような制約の1つは自由度0を提供し、本質的に変換行列です。これは、以下に説明するように、最終的に最初にシーングラフを無効にする問題を回避する試みです。 シーングラフの使用を拒否した主な理由は、物理世界とレンダリングシーンの両方でネストされたオブジェクト(親から変換を継承するオブジェクト)を保持する効率的な方法が見つからなかったためです。レンダリングのシーンには親空間のオブジェクトが必要ですが、物理世界ではオブジェクトがワールド空間(または少なくとも同じ空間)にある必要があります。両方のスペースで位置を追跡することは役立つかもしれませんが(避けられないかもしれません)、パフォーマンスに関連するだけでなく、それ自体の懸念を引き起こします。 ただし、上記のようなユースケースを考えると、親スペースで「作業」できることが非常に重要になると思います。制約を使用して物理エンジンにこれらの関係を維持するように強制しようとすると問題が発生します。 上記のユースケースと苦境を踏まえて、あるオブジェクトから別のオブジェクトに変換を渡すためにグラフ構造を使用する必要がありますか?もしそうなら、私の物理エンジンはどのように新しい場所を計算し、異なる空間にあるオブジェクトの交差テストを実行する必要がありますか?

3
コンポーネントエンティティシステム-更新と呼び出し順序
コンポーネントがすべてのフレームを更新できるようにする(そしてこの機能を必要のないコンポーネントから除外する)ために、UpdateComponentコンポーネントを作成するというアイデアを得ました。MovableComponent(速度を保持する)などの他のコンポーネントは、IUpdatable抽象クラスを継承します。これによりMovableComponent、Update(gametime dt)メソッドへのポインタとへのポインタをRegisterWithUpdater()提供するメソッドの実装が強制されUpdateComponentますMovableComponent。多くのコンポーネントがこれを実行し、誰が何であるかを気にすることなくUpdateComponent、すべてのUpdate(gametime dt)メソッドを呼び出すことができます。 私の質問は: これは、正常または誰かが使用しているもののように見えますか?この件については何も見つかりません。 物理学などのコンポーネントの順序を変更してから位置を変更するにはどうすればよいですか?これも必要ですか? フレームごとに処理する必要があるコンポーネントが実際に処理されることを保証する他の方法は何ですか? 編集 私はエンティティマネージャに更新可能なタイプのリストを与える方法を検討していると思います。次に、そのタイプのすべてのコンポーネントを、エンティティごとに管理するのではなく更新できます(とにかく、私のシステムのインデックスにすぎません)。 まだ。私の質問は引き続き有効です。これが理にかなっているのか、通常のことなのか、他の人が何をする傾向があるのか​​はわかりません。 また、不眠症の人々は素晴らしいです! /編集 前の例のコードを煮詰めました: class IUpdatable { public: virtual void Update(float dt) = 0; protected: virtual void RegisterAsUpdatable() = 0; }; class Component { ... }; class MovableComponent: public Component, public IUpdatable { public: ... virtual void Update(float dt); private: ... …

2
解像度に依存しないシステムにする方法を教えてください。
私はこれを消している。もちろん、端にものを固定することができます。これにより、UIの解像度が独立します。グラフィックが小さすぎるほど変化するまで。必要なときに適切にスケーリングするにはどうすればよいですか?スケーリング中にグラフィックスを正しい比率に保つにはどうすればよいですか?他の解像度とは対照的に解像度が16:10のように異なる場合、それらを引き伸ばしたくありません。 これに対する真のテスト済みのアプローチはありますか?この問題のため、ビデオプレーヤーに黒い境界線が表示されますが、これは適切に解決できませんか?
10 xna  resolution 

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