ゲーム開発

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

9
ボス戦はどのように重要ですか?
現在の形でのボス戦のポイントは何ですか?ほとんどのゲームでは、ボスとの遭遇は通常次のとおりです。 ボスの弱点が明らかになったときに把握する必要がある、ある種のパズル。 体力がより高く、より強く攻撃するか、または特別な攻撃を行うことができる敵。 適切なタイミングで適切なボタンを押す必要があるスクリプト形式の戦い。 ステージがあなたに教えようとしていたことをどれだけよく学んだかを見るためのテスト。(IE能力)など。 後で一般的になる敵。 彼らは通常、通常よりも長い戦いをしています。一部のゲームには、実際にストーリーにとって意味のある興味深いボスがいますが、それでも実際には実質的ではありません。 なぜボス戦はゲームでそれほど普及しているのですか?ボス戦の重要性を示す研究はありますか?設計の観点から、ゲームでどのような機能を果たしますか?

3
ゲームエンジンでユニットテストを行う方法
残念なことに、適切な単体テストを作成したことはありません。テストが成功した後に破棄する小さな未編成のテストプログラムのみを作成しました。ゲームプロジェクトで単体テストをどのように実行すべきかについて、明確な考えはありません。(私の言語はC ++です。) エンジンのサブシステムごとに個別のプロジェクトとそれに関連するテストを用意し、実際のエンジンを構築するより大きなプロジェクト/ソリューションを用意する必要がありますか?たとえばevent、エンジンにモジュールがあるとします。どのように処理すればよいですか?

3
有限状態マシンをコンポーネントベースのアーキテクチャに配線する方法は?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 ステートマシンは、コンポーネントベースのアーキテクチャで有害な依存関係を引き起こすようです。 具体的には、状態マシンと状態関連の動作を実行するコンポーネントとの間の通信はどのように処理されますか? 私がいる場所: コンポーネントベースのアーキテクチャは初めてです。 私は格闘ゲームを作っていますが、それは重要ではないと思います。ステートマシンを使用して、「クラウチング」、「ダッシュ」、「ブロッキング」などの状態を切り替えることを想定しています。 この状態管理手法は、コンポーネントベースのアーキテクチャにとって最も自然なシステムであることがわかりましたが、これまでに読んだ手法とは矛盾しています: 可変動作文字の動的ゲームオブジェクトコンポーネントシステムすべてのコンポーネントをアクティブ化/非アクティブ化することをお勧めしますアクティベーションの条件を継続的にチェックすることにより、自分自身。 「実行中」または「ウォーキング」などのアクションは状態として理にかなっていると思います。これは、https://gamedev.stackexchange.com/a/7934で受け入れられている応答とは一致しません。 これは便利ですが、あいまいです。コンポーネントベースのゲームアーキテクチャに動作を実装する方法は?ステートマシンのみを含む別のコンポーネントを使用することをお勧めします。ただし、これには、ステートマシンコンポーネントと他のほぼすべてのコンポーネントとの間に何らかの結合が必要です。このカップリングがどのように処理されるべきか理解できません。これらはいくつかの推測です: A. コンポーネントはステートマシンに依存します。コンポーネントは、列挙定数を返す ステートマシンコンポーネントへの参照を受け取りますgetState()。コンポーネントは定期的に自身を更新し、必要に応じてこれを確認します。 B. ステートマシンはコンポーネントに依存します。 ステートマシンコンポーネントは、監視しているすべてのコンポーネントへの参照を受け取ります。getState()メソッドを照会して、どこにいるかを確認します。 C. それらの間のいくつかの抽象化 イベントハブを使用しますか?コマンドパターン? D. コンポーネントを参照する個別の状態オブジェクト状態 パターンが使用されます。コンポーネントのセットをアクティブ化/非アクティブ化する個別の状態オブジェクトが作成されます。状態マシンは状態オブジェクトを切り替えます。 アスペクトの実装としてコンポーネントを見ています。彼らはその側面を実現するために内部的に必要なすべてを行います。コンポーネントは、他のコンポーネントに依存せずに、単独で機能する必要があるようです。いくつかの依存関係が必要であることは知っていますが、ステートマシンはすべてのコンポーネントを制御したいようです。

2
アニメーションブレンドの基本
走ったり歩いたりすることができ、もちろん静止しているキャラクターのフレームワークがあるとします。 アニメーションブレンドは、実行時に動的なアニメーションを生成することにより、これらの間をスムーズに移行するプロセスだと思いますか? もしそうなら、これがどのように機能するかの基本的な理論は何ですか、どのように実装しますか?
23 c++  animation 

1
ビヘイビアツリーのコード例
http://altdevblogaday.org/2011/02/24/introduction-to-behavior-trees/ 明らかに、私がこのウェブサイトで見つけた最も興味深い記事。あなたはそれについてどう思いますか ? それはいくつかのコード例を欠いています、あなたは少しも知りませんか?また、ステートマシンはビヘイビアツリーに比べてあまり柔軟ではないことも読みました...その上、ステートマシンと状態パターンの間に真のリンクがあるかどうかはわかりません...
23 ai  state  tree  behavior 

1
等尺性レンダリングとピッキング?
私は、ダイアモンド型の世界で等尺性タイルをプロット(world-> screen)およびマウス選択(world-> screen)するための式を探していました。私が試したものは常に、うまくいっているように見えます。これを行うための通常/正しい方法は何ですか?


2
「ダブルジャンプ」を正しく実装する
私はCoronaを使用して2D iPhoneゲームに取り組んでいます(試用版なので、フォーラムを使用できません)。このゲームでは、キャラクターが空を落ちていくので、私はキャラクターに「ダブルジャンプ」を実装しようとしています。私はコロナの物理ライブラリを使用してキャラクターを倒しましたが、これまでのところ、彼にジャンプさせる最良の方法は垂直インパルス法を使用することです object:applyLinearImpulse(0, -0.4, object.x, object.y) 私が直面している問題は、キャラクターが始まったばかりのとき(垂直速度が遅い)、彼は本当に高くジャンプし、しばらく落ちているとき(垂直速度が高い)、ジャンプは無視できることです。速度に関係なくジャンプを同じにするために、入力として速度を使用したある種の方程式を使用することが最善の解決策であると推測していますが、その方程式がどうなるかはわかりません。 さて、それで私の考えはすべてです。最後の質問は、物理学で二重ジャンプをどのように正確に実装するのですか?私の問題に適切な方程式はありますか?別のアプローチを取るべきですか?スマッシュブラザーズなどのゲームで以前に行われたことがありますので、再現可能なソリューションがありますよね?
23 2d  physics 

4
再起動しないテストワールドを実装する方法
次のことを行う方法についてのアイデアを探しています。Javaで単純な「世界」を書きたいです。既存のオブジェクト間のさまざまな動作をシミュレート/観察するために、後から新しいオブジェクトを開始してから追加できるもの。その後、古いオブジェクトをしばらく見てから新しいオブジェクトをコーディングし、それらを既存の世界にロード/ドロップします。問題は、一度世界を開始または停止して再起動したくない、数週間実行したいが、オブジェクトをドロップして、やり直し/書き換え/削除/作成/変更する機能が必要なことです再起動を必要とせずに時間をかけて。世界は、世界を視覚的に表すタイルマップGUIを使用して、X / Yロケーションの100 x 100配列のようにシンプルにすることができます。オブジェクトを監視し、それぞれに「行動するチャンス」を与えるために、何らかの種類のティックタイマープロセスが必要であることを知っています 例:月曜日にWorld.javaをコーディングし、実行したままにします。それから火曜日に、Rock.javaと呼ばれる新しいクラスを作成します(動かない)。次に、既に実行中のワールドにロード/ドロップします(ワールドアレイ内のランダムな場所にドロップし、移動することはありません)。それから水曜日にCat.javaという新しいクラスを作成し、再びランダムに配置して世界にドロップしますが、この新しいオブジェクトは(時間単位で)世界中を移動でき、木曜日にDogというクラスを作成します。また、移動しますが、隣の場所にある場合は別のオブジェクトに「作用」することができ、逆もまた同様です。 ここにあります。将来の(および現在存在しない)オブジェクトを検出/ロード/追跡する方法を知るために、実際のワールドクラスをコーディングするのにどのような構造/設計が必要かはわかりません。 Javaを使用してこのようなことをどのように行うかについてのアイデアはありますか?

6
ユーザーフレンドリーでありながら柔軟なコンポーネントベースのエンティティシステムにはどのような設計がありますか?
私はしばらくの間、コンポーネントベースのエンティティシステムに興味があり、その上で数え切れないほどの記事を読んでいます(Insomiacゲーム、かなり標準的なEvolve Your Hierarchy、T-Machine、Chronoclast ...など)。 それらはすべて、次のようなものの外側に構造を持っているようです。 Entity e = Entity.Create(); e.AddComponent(RenderComponent, ...); //do lots of stuff e.GetComponent<PositionComponent>(...).SetPos(4, 5, 6); そして、共有データのアイデアを取り入れると(これは、どこでもデータを複製しないという点で、これまで見た中で最高の設計です) e.GetProperty<string>("Name").Value = "blah"; はい、これは非常に効率的です。ただし、読み取りまたは書き込みが最も簡単なわけではありません。それはとても不格好で、あなたに対して働いているように感じます。 私は個人的に次のようなことをしたいと思います: e.SetPosition(4, 5, 6); e.Name = "Blah"; もちろん、この種の設計に到達する唯一の方法は、Entity-> NPC-> Enemy-> FlyingEnemy-> FlyingEnemyWithAHatOnのような階層に戻ることですが、この設計は回避しようとします。 この種のコンポーネントシステムの設計を見たことがありますが、これはまだ柔軟性がありますが、ユーザーフレンドリーなレベルを維持していますか?それに、データストレージ(おそらく最も難しい問題)を良い方法で回避できますか? ユーザーフレンドリーでありながら柔軟なコンポーネントベースのエンティティシステムにはどのような設計がありますか?

6
2Dゲームの滑らかな地形を生成する最も簡単な方法は何ですか?
「Moon Buggy」や「Route 960」などの2Dゲームで滑らかな地形を生成する最も簡単な方法は何ですか? stackoverflow.comで、ランダムな高さの配列を生成し、後でそれらをぼかすことについての回答を得ました。はい、大丈夫です。しかし、いくつかのポイントを与えて、滑らかな曲線を取得する方が良いでしょう。

4
Diablo / WoWスタイルのタレントツリーには、どのデータ構造を使用する必要がありますか?
World of Warcraftで見られるものと同様のオンラインRPGにタレントツリーシステムを実装することを検討しています。スキルを取得すると、ツリーの下にある次の「ティア」のロックが解除されます。 誰もがこれをデータベース/コードに構造的に実装する最良の方法を知っていますか?

7
重力計算の最適化
互いに引き寄せられるサイズと速度がさまざまなオブジェクトがたくさんあります。更新するたびに、すべてのオブジェクトを調べて、他のすべてのオブジェクトの重力による力を加算する必要があります。それはあまりうまくスケールせず、ゲームで見つけた2つの大きなボトルネックの1つであり、パフォーマンスを改善するために何をすべきかわかりません。 パフォーマンスを改善できるはずだと感じています。常に、システム内のオブジェクトの99%がオブジェクトに与える影響はごくわずかです。もちろん、オブジェクトを質量でソートすることはできず、力は質量よりも距離によって大きく変化するため、上位10個の最大オブジェクトまたは何かのみを考慮することができます(方程式はに沿っていますforce = mass1 * mass2 / distance^2)。何かに影響を与えないかもしれない世界の反対側にある何百もの小さな岩の断片を無視して、最大のオブジェクトと最も近いオブジェクトを考慮することは良い近似だと思いますが、どのオブジェクトが最も近い私はすべてのオブジェクトを反復処理する必要があり、それらの位置は絶えず変化しています、それで私が一度だけできるのではない。 現在、私はこのようなことをしています: private void UpdateBodies(List<GravitatingObject> bodies, GameTime gameTime) { for (int i = 0; i < bodies.Count; i++) { bodies[i].Update(i); } } //... public virtual void Update(int systemIndex) { for (int i = systemIndex + 1; i < system.MassiveBodies.Count; i++) { GravitatingObject body …

2
毎日新しいゲームのアイデアでブログを1年間保持したのは誰ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 2年前に閉店。 このインディーズゲーム開発者は、1年間毎日ゲームの新しいオリジナルアイデアを考え出そうとしましたが、彼は自分の考えをすべてウェブサイトに載せました。正しく覚えていれば、これまでに+200のアイデア。 私は彼のサイトへのURLや著者の名前を覚えていません。誰が私が話しているのか知っていますか? [この投稿がここに属さない場合は削除してください!見つけたならブログスレッドに追加したかっただけです]

3
HTML5 Canvasゲームのダブルバッファリング?
私のシンプルなキャンバスゲームは、Chromeでは正常に動作し、Mac / LinuxではFFで動作するようです。スマートフォンやWindows環境でテストする機会はまだありません。ダブルバッファリングは使用しませんが、それを使用するJS Canvasの例をいくつか見ました。 ダブルバッファリングの使用はいつ推奨されますか?特定のブラウザでのみ違いがありますか?重大なパフォーマンスヒットはありますか? ありがとう!

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