ゲーム開発

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

6
紛失してから再起動するまでの遅延は、バーンアウトに対する防御として機能しますか、それとも中毒マシンですか?
スーパーヘキサゴンやエバーウィングなどのゲームでも、リスタートボタンが表示されるのを待ったり、押したりするなど、負けてから最初からやり直すまでに非常に短い遅延があります。 これはプレイヤーのバーンアウトに対する防御ですか?あるゲームと次のゲームの試行を分ける一時停止がない場合、ゲームは終わりのないものと感じ、プレーヤーをすぐに燃やしてしまう可能性があります。 それとも、プレイヤーを夢中にさせる方法ですか?Everwingでよくこれを疑っていました。なぜならそのゲームはその貪欲な性質についてほとんど恥ずかしがり屋ではないからです。プレイヤーが再びプレイできるようになるまで、プレイヤーを待たせることには心理的な効果があるかもしれません- 習慣の渇望部分を構築するような? または、おそらくこの遅延の欠如は、いわば、フローを継続することですか?Ori and the Blind Forestは、Ginso Treeレベルで同様のことを行います。非常に高速な再起動があり、ボタンも何もありません。また、死亡してもBGで再生中の音楽は再起動されません。その結果、死がゲームの流れを壊すことはなく、それにもかかわらず、レベル全体がシームレスに感じられます。 それで、これに関する研究はありますか?それらを除いて、逸話?どこにも何も見つかりませんでした。

4
2Dサイドスクロールゲームで「部屋」を検出するにはどうすればよいですか?
Terrariaが「居住」を検出する方法など、ゲームで作成できる特定の種類の建物や部屋を認識するシステムを作成したいと考えています。そのゲームでは、一連の条件を満たすブロックのゾーンを構築することにより、タイルベースの世界で家を構築できます。 ゾーンは、プレイヤーが配置したブロックによって「外側」から完全に隔離されています。 ゾーンは5x7の長方形に収まります。 囲まれたエリアには、少なくとも1つのテーブル、1つの光源、椅子があります。 ゾーンから出るドアがあります。 Terrariaには、前景と背景の両方のタイルレイヤーがあります。ゾーンの背景全体をプレイヤーが配置したブロックで埋める必要があります。 プレーヤーが適切なサイズのエリアを構築したことを効率的に検出するにはどうすればよいですか?また、エリアに必要な家具/コンポーネントがすべて含まれていることを効率的に確認するにはどうすればよいですか? すべての住宅の要件を満たすインテリアゾーンの例:

4
Visual Editorを最小限/使用せずにUnityでゲームをビルドするにはどうすればよいですか?
完全にC#でゲームを作成したいと思います。エンジンを検索したところ、Unity3Dが見つかりましたが、チュートリアルとドキュメントはすべて、ビジュアルエディターと、クリックしてポイントしてシーンやスクリプトを作成するUnity IDEについて説明しています。 私はそれをしたくありません。デザイナーが私から離れて物事を抽象化するよりも、完全なコードカバレッジを好む。純粋なC#コードをゼロから作成するか、必要に応じてUnityスクリプトを追加としてのみ作成したいと思います。そうすることについての説明や文書が見つかりませんでした。Unityを使用してビジュアルエディターを最小限(またはまったく)使用せずにゲームを構築するにはどうすればよいですか?
24 c#  unity 

2
クォータニオンの使用:それらで何ができますか?(数学なし)
私はゲーム開発者であり、数学を勉強していません。そのため、ツールとしてクォータニオンのみを使用します。また、3D回転を使用するには、クォータニオンを使用する必要があります(またはマトリックスですが、この質問ではクォータニオンに留まりましょう)。多くの開発者がそれらを使用することが重要だと思います。それが私の知識を共有し、できれば私が持っている穴を埋めたい理由です。今… だから私が理解した限り: クォータニオンは2つのことを説明できます。 3Dオブジェクトの現在の向き。 オブジェクトが実行できる回転変換。(rotationChange) クォータニオンでできること: 乗算: 四元数endOrientation =四元数rotationChange *四元数currentOrientation; たとえば、3Dオブジェクトは左に90°回転します-そして、私の回転は、右に180°回転し、最後に3Dオブジェクトは90°回転します。 クォータニオンrotationChange =クォータニオンendRotation * Quaternion.Inverse(startRotation); これにより、rotationChangeを取得し、これを別のOrientationに適用できます。 Vector3 endPostion = Quaternion rotationChange * Vector3 currentPosition; たとえば、次のようになります。私の3Dオブジェクトは位置(0,0,0)にあり、乗算する回転は180度右への回転であり、終了位置は(0、-50,0)のようなものです。そのクォータニオンの中には、軸とその軸の周りの回転があります。ポイントをその軸のY度に向けます。 Vector3 rotateOffsetVector = Quaternion rotationChange * Vector3 currentOffsetVector; 例:開始方向はUP-(0,1,0)を示し、乗算した回転は右に180°回転し、終了方向は下を示しています。(0、-1,0) ブレンド(LerpとSlerp): クォータニオンcurrentOrientation = Quaternion.Slerp(startOrientation、endOrientation、interpolator) 補間器が1の場合:currentOrientation = endOrientation 補間器が0の場合:currentOrientation = startOrientation Slerpはより正確に補間し、Lerpはより多くのパフォーマンスを補間します。 私の質問: 今まで説明したことはすべて正しいですか? クォータニオンでできるのはそれだけですか?(obv。not) 他に何ができますか? 2つのクォータニオン間のDot製品とCross製品は何に適していますか? …

4
このコードの「デルタ」のポイントは何ですか?ゲーム開発の標準的なものを反映していますか?
私はゲームのプログラミングについてほとんど知りませんが、もっと学びたいです。このゲームのコードを理解しようとしています。私はコードがShipcontrols.jsに「デルタ」を渡している理由を理解しようとしています。これはユーザーの入力に基づいて船の方向を変更します。 基本的に、ゲームはループごとに「デルタ」を計算します... これは、1つのループを介してデルタを使用するスタックの短縮バージョンです... var delta = now - this.time; this.time = now; this.current.render.call(this.current, delta, this.renderer); ここへのステップ... ctx.manager.add("game", scene, camera, function(delta, renderer) { if(delta > 25 && this.objects.lowFPS < 1000) this.objects.lowFPS++; var dt = delta/16.6; this.objects.components.shipControls.update(dt); ここへのステップ... bkcore.hexgl.ShipControls.prototype.update = function(dt) { var pitchAng; var yaw; var roll; if (undefined != hand){ …

7
Unityでタイトなスクリプトカップリングを回避するにはどうすればよいですか?
しばらく前に、Unityの使用を開始しましたが、依然として密結合スクリプトの問題に苦労しています。この問題を回避するためにコードをどのように構成できますか? 例えば: 健康と死のシステムを別々のスクリプトに入れたいです。また、プレイヤーキャラクターの移動方法を変更できるさまざまな交換可能なウォーキングスクリプトが必要です(マリオのような物理ベースの慣性コントロールと、スーパーミートボーイのようなタイトでぴくぴくしたコントロール)。ヘルススクリプトは、プレイヤーのヘルスが0に達したときにDie()メソッドをトリガーできるように、デススクリプトへの参照を保持する必要があります。デススクリプトは、使用中のウォーキングスクリプトへの参照を保持して、ゾンビにうんざりしている)。 私は考え、通常のように、インターフェースを作成しIWalking、IHealthそしてIDeath私は自分のコードの残りの部分を壊すことなく、気まぐれで、これらの要素を変更することができるように、。たとえば、プレーヤーオブジェクトの個別のスクリプトでセットアップしますPlayerScriptDependancyInjector。おそらく、そのスクリプトにはpublic IWalking、IHealthおよびIDeath属性があり、適切なスクリプトをドラッグアンドドロップすることで、レベルデザイナがインスペクタから依存関係を設定できます。 これにより、ゲームオブジェクトにビヘイビアを簡単に追加でき、ハードコードされた依存関係を心配する必要がなくなります。 Unityの問題 問題はユニティで、私はインスペクタでインタフェースを公開することができないということである、と私は私自身の検査官を書いた場合、参照が連載を取得文句を言わない、そしてそれは、不必要な多くの作業です。だからこそ、密結合されたコードを書くしかありません。私のDeathスクリプトは、スクリプトへの参照を公開していInertiveWalkingます。しかし、プレイヤーキャラクターにきめ細かく制御させたい場合、TightWalkingスクリプトをドラッグアンドドロップすることはできませんDeath。スクリプトを変更する必要があります。ひどい。対処できますが、このようなことをするたびに魂が泣きます。 Unityのインターフェイスの代替として望ましいものは何ですか?この問題を修正するにはどうすればよいですか?私はこれを見つけましたが、すでに知っていることを教えてくれ、Unityでそれを行う方法を教えてくれません!これも、どのように行うべきかを説明するものであり、方法ではなく、スクリプト間の密結合の問題に対処するものではありません。 全体として、ゲームデザインのバックグラウンドを持ってUnityに来た人のために書かれたものだと感じています。Unityには通常の開発者向けのリソースはほとんどありません。Unityでコードを構造化する標準的な方法はありますか、それとも独自の方法を見つけ出す必要がありますか?
24 c#  unity  scripting 

8
OpenGL、SFML、SDLには、ソフトウェアレンダリングと比べてどのような利点がありますか?
フレームワークなどを使用せずにCasey Muratoriがゲームエンジンを作成するHandmade Heroストリームを見始めました。昨日、私は彼が画面に画像が描かれる方法を示した部分に着きました。私が理解した限り、彼は描画したい画面のサイズと同じ大きさのメモリを割り当てました。そして、彼はビットマップを作成し、それを割り当てたバッファメモリに渡し、OS固有の関数を使用して画面に描画しました。 これは非常に簡単です。GameMakerを使用し、Love2Dに変更し、Sprite Kitで少し作業しましたが、この時々混乱するレイヤーの下で実際に何が起こっているのか常に疑問に思っていました。 それを考えると、単にバッファを割り当て、ビットマップを渡して画面に描画するだけでよいのに、なぜグラフィックライブラリ(OpenGL、SFML、SDLなど)を使用する必要があるのでしょうか。 その後、画面に明確なものを描画したい場合は、ビットマップに書き込むだけで、バッファに渡されます。私はプログラミングを始めたばかりですが、これは非常に簡単に思えます。私が間違っている場合は修正してください。


1
私のゲームは録音ソフトウェアと互換性がないようです。これは何が原因ですか?
大学向けの小さなGame-Devプロジェクトを終えたばかりで、提出に伴うビデオを録画する必要があります(ソースが機能しない場合に備えて)。基本的に、FRAPSまたはBandicamがアタッチしようとすると、ゲームがまったく機能しません。エラー報告コードから黒い画面とGL INVALID OPERATIONメッセージのストリームが表示されます。Dxtoryはまったく正しくフックできないようで、FPSカウンターなどは表示されません。私のゲームロジックはデバッグトレースから正しく実行されているように見えますが、glライブラリの呼び出しがすべて壊れているようです。 私はこれらのプログラムがどのように動作するかについて膨大な量を知らないので、これを引き起こすために私が何をすることができるかを本当に知りません。OpenGLフレームバッファーから読み取ると聞いたので、何か間違っているのでしょうか。GLFWとGLEWにすべての低レベル初期化を行わせていますが、同じセットアップおよび記録ソフトウェアでプロジェクトを正常に記録しました。 本質的に、これまでにこのような何かに遭遇したことはありますか、またはこれらのプログラムがどのように機能し、問題の原因についての手がかりを得ることができるかについて何か知っていますか?

7
マルチスレッド2D重力計算
私は宇宙探査ゲームを構築しており、現在重力に取り組んでいます(XNAを使用したC#で)。 重力はまだ調整が必要ですが、それを行う前に、物理計算でパフォーマンスの問題に対処する必要があります。 これは100個のオブジェクトを使用しており、通常、物理計算なしで1000個のオブジェクトをレンダリングすると300 FPS(私のFPSキャップ)をはるかに超えますが、10個以上のオブジェクトがゲーム(および実行される単一スレッド)を物理計算を行う際のひざ。 スレッドの使用状況を確認したところ、最初のスレッドはすべての作業から自分自身を殺していたため、別のスレッドで物理計算を行う必要があると考えました。ただし、別のスレッドでGravity.csクラスのUpdateメソッドを実行しようとすると、GravityのUpdateメソッドに何も含まれていなくても、ゲームはまだ2 FPSになります。 Gravity.cs public void Update() { foreach (KeyValuePair<string, Entity> e in entityEngine.Entities) { Vector2 Force = new Vector2(); foreach (KeyValuePair<string, Entity> e2 in entityEngine.Entities) { if (e2.Key != e.Key) { float distance = Vector2.Distance(entityEngine.Entities[e.Key].Position, entityEngine.Entities[e2.Key].Position); if (distance > (entityEngine.Entities[e.Key].Texture.Width / 2 + entityEngine.Entities[e2.Key].Texture.Width / 2)) …

1
経路探索アルゴリズム?
最初にこの質問をスタックオーバーフローに投稿しましたが、そこにビデオゲームに興味がある人はいないと思います... すべてのタイプのゲームで使用されるパス検索アルゴリズムにはどのようなものがありますか?(とにかく、キャラクターが移動するすべてのタイプの)ダイクストラはたくさん使われていますか?実際にどこかに行くための手順を追跡していないので、そうは思わないでしょう?私がそれを正しく理解しているなら、どのオブジェクトが最も近いかを決定するだけです。私は何もコーディングするつもりはありません。ただいくつかの研究を行っていますが、擬似コードまたは何かを貼り付けると、それは問題ありません(JavaとC ++を理解できます)。基本的に、一般的なパス検索の簡単な概要を探しています。 A *は2Dゲームで使用するアルゴリズムのようなものです。それは素晴らしいことですが、グリッドベースではない2Dゲームについてはどうでしょうか?Age of EmpiresやLink's Awakeningのようなもの。移動するための明確な正方形のスペースはありませんが、何をしますか? 3Dゲームは何をしますか?この話題のhttp://www.ai-blog.net/archives/000152.htmlを読んだことがありますが、これは主題に関する素晴らしい権威であると聞きましたが、メッシュが設定されると、実際にはどのように説明するのか、パス検索が完了しました。A *が使用するものである場合、3D環境でそのようなことはどのように行われますか?また、角を丸くするためにスプラインはどのように機能しますか?

2
ゲームの権利はどのように購入しますか?
WorldRacing / HiOctane / Constructor / anyotherのように、一度は放棄された古いゲームをいくつか見てみましょう。チームと私が言ったゲームを再活性化し、大きな変更をせずに2011年に持ち込み、それから改善に取り組みたい(例えば、マルチプレイヤーを追加したい)と言います。また、ゲームの精神、資産、ストーリー、音楽を維持することも重要です。したがって、基本的にはゲームは同じままですが、良くなります(DOSゲームをWin7に適合させるなど)。 私の質問は「それは通常どのように作られていますか?」からです。エリア: タイトルとゲームのアセット(グラフィック、サウンド、音楽、ストーリーライン)の権利を購入するにはどうすればよいですか。誰に連絡し、どのような購入オプションが可能ですか?ソースコード、設計文書を入手することは可能ですか? さまざまなプラットフォームをどのように扱うか、複数のプラットフォームがある場合にどのプラットフォームを使用できるかという契約条件ですか? 他の言語でのローカライズの処理方法は、他の会社から入手するのですか、それともマスターパブリッシャーに属しますか? たとえば、上記のゲームの合理的な価格はいくらですか? ゲームをオープンソースとしてリリースするために所有者を追跡することは可能ですか? Heroes of Might and MagicはNew World Computingによって所有されていましたが、後にその所有者をNivalに変更しました。そのようなプロセスに興味があります。

6
隠された統計は良い考えですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 プレイヤーが自分のキャラクターの正確な統計情報を知らないRPG、FPSまたはターンベースのゲーム(実際には問題ではない)を考えています。もちろん、それらはゲームエンジン内の正規分布のランダム変数として存在します。したがって、HPバー、レベル、ATKまたはDEFは表示されません。人生の兆候(気分がよく、疲れ、死にかけ、死んでいるなど)によってのみ、その状態を判断できます。呪文のキャスティングに関しては、マナが少なくなると、呪文を唱えられなくなる可能性が高くなります(補充のために次のガソリンスタンドを見つける必要がある場合、「ゼロ」ポイントはありません)。スキルを測定するために、常に固定された(ただし未知の)統計を持つモンスターと戦うことができます。 統計は使用するにつれて向上しますが、各キャラクターはランダムなタレントセットを持っているため、他のスキルよりも簡単にスキルを向上させることができます。 ゲーム開発者とゲーマーへの私の質問は、あなたのキャラクターの本当の自分をミステリーにするのは良いアイデアですか? 更新: 回答から、ゲームのジャンルに大きく依存しているようです。 RPGの場合、あなたのキャラクターにとって何が良いかを見つけるのは楽しいと思いました。回答から、プレイヤーは通常確立されたプレイスタイルを持ち、あらゆるコストでキャラクターからそれを強制しようとするため、それほど面白くないようです。 私が夢見ていた実際のゲームのアイデアは、ポケモンゲームシリーズにやや似たゲームのようなマネージャーです。メインキャラクターには複数のチャンピオンがおり、仮想世界をさまようほか、HOMMのようなファッションでアリーナで他の人と戦います。そして、それらのチャンピオンには隠された統計があります。この特定のゲームコンセプトに関する回答を偏らせたくないため、元の質問ではこれについて言及しませんでした。 プレーヤーへのフィードバック(両方の場合):チェスプレーヤーが持っているelo評価と同様の評価があります。1つは近接攻撃、近接ブロック、遠隔攻撃、遠隔ブロック能力、もう1つは魔法能力です。敵が近接攻撃のヒットをブロックした場合、敵が剣で攻撃すると近接攻撃のレーティングが上がります。敵が剣で当たった場合、近接攻撃の場合と同様に、近接ブロッキングのレーティングが低下し、成功した場合は増加します。魔法のスキルについては、少し注意が必要です。高い魔法能力とは、呪文を唱えるのが簡単で、呪い呪文の影響を受けにくく、魔法の呪文の影響を受けやすいことを意味します。 ヒットポイント、タフネス、強さ、魔法の力などの標準的な能力は、チャンピオンのパフォーマンスから推定されます。これらは、ヒット成功時に与えられる実際のダメージを決定します。固定された既知の統計を持つ「標準チャンピオン」が存在し、他のチャンピオンの統計をそれらに対して測定してシステムをブートストラップすることができます。 そのため、プレイヤーがチャンピオンのすべての側面を試してみると、チャンピオンが持っているスキルセットを見つけることができます。 更新2: 簡単に言えば、すべての統計をプレイヤーにすぐに提供するのではなく、あなたのキャラクター/チャンピオンを知るという概念にゲームの中心を置くのは楽しいでしょうか? それはフットボール選手に似ています。コーチは、プレーヤーがさまざまなポジションでどのようにパフォーマンスするかを見て、彼らに最適なポジションに彼らを割り当てる必要があります。そのため、彼はそれぞれをゴールキーパー、ディフェンダー、またはフォワードとして試す必要があります。いくつかの試合の後、どのポジションが彼らにとって良いかは明確になります。

9
すべてのゲームオブジェクトを単一のリストに保存することは、許容できる設計ですか?
作成したすべてのゲームについて、すべてのゲームオブジェクト(行頭文字、車、プレーヤー)を単一の配列リストに配置し、ループして描画と更新を行います。各エンティティの更新コードは、そのクラス内に保存されます。 私は疑問に思っていましたが、これは物事を進める正しい方法ですか、それともより速く、より効率的な方法ですか?

9
GPLからどのように逃れますか?
免責事項ライセンスについて何も知らないふりをしません。実際、以下で私が言うことはすべて完全に間違っているかもしれません! バックストーリー: 最近、私はまともなゲームエンジンを探していましたが、私は本当に好きなもの、Cafu Engineを見つけたと思います。 ただし、デュアルライセンスプランがあり、商用ライセンスの料金を支払わない限り、エンジンで作成したものはすべてGPLの下で強制されます。私はそれが悪いエンジンだと言っているのではなく、彼らはライセンス料についてとてもリラックスしているとさえ言っています。しかし、それがGPLにさえ関係しているという事実は私を怖がらせます。 私の質問は基本的に、GPLからどのように逃れるのかということです。 次に例を示します。QuakeエンジンまたはDoomエンジンとも呼ばれるid Techエンジンは、人気のあるSourceエンジンのベースでした。ただし、id TechエンジンはGPLの下でリリースされており、Sourceエンジンは独自仕様です。Valveは別のライセンスを取得しましたか?それとも、彼らはGPLから逃れるために何かをしましたか?GPLから逃れる方法はありますか?または、GPLのソースコードを別のプロジェクトのベースとして使用する場合、GPLの使用を強制され、ソースコードを世界中で利用できるようにします。ランダムな人がid Techエンジンを使用して、認識のポイントを超えて変更し、それを商用製品の独自のエンジンとして使用できますか?または、彼らはそれをオープンソースにする必要があります。 最後に、一般にオープンソースに関してはまったく問題ありません。しかし、オープンソースにはその場所があると感じていますが、それはブッシーの世界にはありません。
24 licensing 

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