ゲーム開発

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

3
遅延シェーディング-複数のライトを組み合わせる方法は?
私はGLSLから始めて、位置、法線、およびアルベドでGバッファーを出力する単純な遅延シェーディングを実装しました。 簡単なポイントライトシェーダーも作成しました。 次に、ポイントライトの球を描画し、出力をライティングバッファーに入れます。 問題は、複数のライトを描画するときに、ライティングバッファの結果をどのように組み合わせるかです。 たとえば、ポイントライトシェーダーを使用して2番目のライトをライトバッファーに描画する場合、最初のライトをライティングバッファーの2番目のライトに追加するにはどうすればよいですか。つまり、同じ出力バッファから読み書きすることはできませんか?

3
ゲームのロード前の時間とゲームのロード時間の比較
ランダムな迷路を組み込んだゲームを開発しています。 迷路の中に潜むAIの生き物がいます。そして、迷路の形に合わせて、ある道を進んでほしい。 これを実装するための2つの可能性があります。最初の方法(私が使用した方法)は、迷路が作成されたら、必要ないくつかの潜む経路を計算することです。 2つ目は、一度計算が必要になったパスを計算することです。 私の主な関心は読み込み時間です。迷路の作成時に多くの経路を計算すると、プリロード時間が少し長くなるので、必要に応じて計算を考えました。 現時点ではゲームは「ヘビー」ではないので、ゲームの途中でパスを計算することは目立ちませんが、複雑になると心配になると思います。 どんな提案、コメント、意見も役に立ちます。 編集: 今のところ、p事前に計算されたパスの数とすると、クリーチャーは既存のパスではなく新しいパス(パスの計算を意味する)1/pをとる確率があります。 もちろん、パスが完全に計算されるまで、クリーチャーはパトロールを開始しません。そのため、その過程で彼が死亡することを心配する必要はありません。
9 loading  maze 

3
流れる地形を「ランダムに」生成する正しい方法
シンプルなトップダウンRTSゲームを作成しています。必要に応じて、その場で「ランダムに」マップを生成することを計画しています。私はすべて「パス」で機能することを計画しています: 地形をすべての草で埋めます 戻って、砂利のランダムな噴出をいくつか追加します 砂利を丸める 2番目のレイヤーに山の風景を描く 山を丸める などなど さて、以下のこの写真を見てください: 私は自分のマップエディターを使用してこれを手作業で作成しましたが、うまくいけばパス/ステップ3を実行した後の結果になることを計画しています。 砂利を少なくとも不規則な形にして散発的に自然に見えるように、砂利をいつ、どのように配置するかを決めるにはどうすればよいですか? できればありがとう!どんな助けもありがたいです! 補足として: 各パスは、基本的には次のように、すべてのタイルを繰り返し処理します(マップは40x40のタイルに分割されています)。 for (int x = 0; x <= GRIDMAX - 1; x++) { for (int y = 0; y <= GRIDMAX - 1; y++) { //Terrain(x, y, 0) = SomethingHere; } }

3
Bullet Physics / Ogre3Dを使用したRPGでキャラクターをどのように移動しますか?
最近、Ogre3Dゲームでのキャラクターの移動に問題があります。基本的には弾丸のRigidBody->translate()機能でキャラクターを動かしていますが、そうすると壁にぶつかると少し通り抜けて跳ね返ります。壁のある単純な平面タイプの世界で、自分のキャラクター(球の衝突形状を持つ)を移動する別の良い方法があるかどうか疑問に思っていますか? これに関連する私が使用しているライブラリは、「Ogre3D」と「Bullet Physics」です。

4
数百人のプレイヤーによるサーバー側の物理シミュレーション
私は現在、物理をサーバー側でシミュレートしたいシングルプレイヤーの物理指向のゲームに取り組んでいます。これは、ゲームにリーダーボード、永続的なプレーヤーの進行状況などがあり、あらゆる種類の不正行為を防止したいためです。基本的には純粋なクライアントサーバーアーキテクチャであり、クライアントは「ダム」であり、サーバーが表示したいものだけを表示します。 しかし問題は、ゲームがおそらく数百人(おそらく数千人)の人々によって同時に行われることです。何百もの状態を同時に維持する必要がある場合、サーバーの処理能力が失われる可能性が最も高いため、これは私に関係しています。 すべての物理シミュレーションをクライアント側に移動しても問題はありませんが、クライアントシミュレーションの結果が有効かどうかを検証する方法が本当に必要です。しかし、私にはその方法がわかりません。 シミュレーションサーバー側をときどき実行して、クライアントがまだ公平に機能しているかどうかを検証することを考えましたが、サーバーにできるだけ負担をかけないようにしたいのです。 物理学は、Glenn FiedlerによるGDC 2011デモとほぼ同じくらい複雑になるでしょう。ただし、常に衝突するリジッドボディが1つのシーンに含まれ、すべてが同時に表示されます。 Web上のほとんどのリソース(ここでも、Glenn Fiedlersサイトは素晴らしいものです)が小規模なネットワーク化された物理学(Haloのような30プレイヤーのFPSなど)について話すので、私はこの特定のケースへの回答を得るのに苦労しています。 この件に関するアドバイス、ウェブサイト、論文などは非常にありがたいです。 私が回答したい質問の要約: クライアントサーバーモデルはどの程度実現可能ですか?サーバーの処理能力に関する懸念は正当で根拠がありますか? サーバー上のクライアントによって実行される物理シミュレーションを確実に検証することは可能ですか?もしそうなら、どうですか?

3
球と平面の間の衝突応答を計算するにはどうすればよいですか?
シンプルな3Dゲームを作成しようとしています。ゲームの世界の制限内でプレーヤーを制限する必要があります。プレイヤーが世界の側面にぶつかったとき、プレイヤーの船を少し跳ね返らせたいです。 事実、私はプレイヤーをボックス内に閉じ込め、側面から逃げるのを止めようとしています... ゲームワールドの限界を、法線と原点からの距離を持つ平面のコレクションとして定義できました。プレーヤーには球形の境界球があり、このウェブサイトhttp://www.gamasutra.com/view/feature/3383/simple_intersection_tests_for_games.phpから衝突を検出することができました。 衝突が検出されたときにどうすればよいのか、私はまったく理解できません。私が管理できる最高の方法は、プレイヤーが飛行機に詰まっている、まっすぐ進む、または非常に速い速度で繰り返し跳ね返ることです。 常識では、法線を使用して平面からの反射角度を計算し、それをプレーヤーの速度に適用する必要があると言われていますが、まず、プレーヤーが平面を通過したかどうかを確認する必要があります。いい結果になる。

2
開かれた世界の陰謀に関する記事[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 オープンワールドのゲームデザインとライティングプロットに関する記事はたくさんあります。しかし、皆さんはオープンワールドゲームで魅力的なプロットをデザインすることについての記事やブログエントリを見つけましたか?これはどういう意味ですか?TES:Morrowindでは、力学を紹介され、最初の5分以内に「メインクエスト」が与えられます。その後、自由に行き、学び、殺し、やりたいことを何でもできます。私は何百時間もゲームをプレイしてきましたが、「メインクエスト」をやったことがなく、Morrowind、Oblivion、Skyrimなど、多くの人が同じ状況にあると確信しています。多分それはTESゲームの力とそれらがどれほど素晴らしいRPGであるかについての真の証言ですが、私にとってデザイナーとして考えると、それは大規模なデザインの失敗のように見えます。おそらく、対処する必要のある実際の脅威はないという事実です。 頭の後ろにゲームのアイデアがあります。アクションプラットフォーマーを作成したいのですが、「レベルの選択」は、MMOで見られるようなオープンワールドスタイルの「dunegons」になります。これは漠然とした未開発のアイデアなので、集中しないでください。このデザインについてはあまり考えませんでしたが、問題が発生したため、一般的に、プレーヤーにオープンを気にかける方法を理解できません世界的な側面(ローミング、略奪パーティー、特別な鎧を手に入れるためのガントレットランの実行、敵からの水源の除去など)、ゲームの終了を「彼に強制」、ニンジンオンスティック仕方。FFゲームのカットシーンのあちこちを検索する「クレイジー」な人たちがいますが、私は一般の視聴者をターゲットにしています。ゲーム全体を通して人々をゴールまで導くための微妙なシステムを作成し、同時に彼らが望む方法で力を得るオプションを彼らに与えたいです。これも不可能かもしれませんが、質問しても差し支えありません。 この件に関する記事や考察を探しています。解決策ではありません(現時点では設計ドキュメントがなく、直接的な解決策は重要ではないため)。おそらく他のゲームを参考にして、他の人からの考えだけです。

1
ターン制ゲームでの世界の状態とアニメーションの分離
ターン制ゲームでアニメーションと世界の状態の分離をどのように扱いますか?現在、2Dグリッドベースのゲームに取り組んでいます。以下のコードは、わかりやすくするために簡略化されています。 アクターが移動するとき、クリーチャーがアニメートして新しい位置に移動する間、ターンのフローを一時停止したいと思います。そうしないと、画面が世界の状態より大幅に遅れて、奇妙な外観になります。また、ゲームの流れを妨げないアニメーションが必要です。パーティクルエフェクトは、ゲームプレイに影響を与えずに複数のターンにわたって展開できます。 私がやったことは、ブロッキングアニメーションとノンブロッキングアニメーションと呼ばれる2種類のアニメーションを紹介することです。プレイヤーが移動したい場合、実行されるコードは class Actor { void move(PositionInfo oldPosition, PositionInfo newPosition) { if(isValidMove(oldPosition, newPosition) { getGame().pushBlockingAnimation(new MoveAnimation(this, oldPosition, newPosition, ....)); player.setPosition(newPosition); } } } 次に、メインの更新ループが行います。 class Game { void update(float dt) { updateNonBlockingAnimations(dt); //Effects like particle explosions, damage numbers, etc. Things that don't block the flow of turns. if(!mBlockingAnimations.empty()) { …

5
類似したタイルが互いに隣り合って生成される可能性を高める
私はタイルマップシステムに取り組んでいます。これは、ここではこのように見えます(緑は草、空気は白、石は灰色、青は水です)。 単純な乱数ジェネレータを使用して、タイルが草である可能性が45%、水である可能性が30%、石である可能性が25%になるようにします。 とにかく、草/石のブロックが固まり、陸塊を形成する傾向を高め、ウォーターブロックを海に形成することができますか(Minecraftのようなゲームで見ることができるもののようなものですか)?
9 java  algorithm  tiles  maps  lwjgl 

4
n個のオブジェクトのシステムの衝突チェック効率を上げる方法はありますか?
多くの画面上のオブジェクトで構成されるゲームを作成しています。その1つがプレーヤーです。どの反復でもどのオブジェクトが衝突しているかを知る必要があります。 私はこのようなものを作りました: for (o in objects) { o.stuff(); for (other in objects) if (collision(o, other)) doStuff(); bla.draw(); } これにはO(n ^ 2)があり、これは悪いと言われています。これをより効率的に行うにはどうすればよいですか?私はこれをJavascriptで行っています、そしてnは通常30より低くなります、これが同じままなら問題になりますか?

3
2点間の線上の点を取得する
私はJavaScriptで単純な宇宙ゲームを作成していますが、今はベクトルに関して壁にぶつかっています。 ゲームビューは、2Dグリッドでトップダウンです。ユーザーがグリッドをクリックすると、宇宙船がその場所に飛びます。 したがって、2つのポイントセットがある場合: { x : 100.2, y : 100.6 }; // the ship { x : 20.5, y : 55.95 }; // the clicked coordinates ゲームループが1秒あたり60回の反復でティックし、望ましい船の速度が1ティックあたり0.05ポイント(1秒あたり3ポイント)である場合、ゲームループの各ティックごとに船の新しい座標セットを計算するにはどうすればよいですか? ps慣性や船に影響を与える複数のベクトルを考慮したくないので、船は何をしている(つまり、一方向に飛んでいる)のを止めて、クリックした座標に静的な速度で移動したいだけです。

1
WindowsのソースからDoom 3をビルドして実行するにはどうすればよいですか?
エンジンがどのように機能するかをよりよく理解するために、オープンソースリリースからDoom 3をビルドして実行しようとしています。残念ながら、ビルドしたバイナリからゲームを実行することはできません。私はコンソールを手に入れましたが、実際のゲームを実行できません。 これが私がしたことです: ゲームのリポジトリからソースコードをダウンロードした DirectX SDKをダウンロードしてインストールした SteamからDoom 3を購入、ダウンロード、インストール VS2010 SP1を使用して新しいフォルダーでソリューションを開きます プロジェクトを構築した 走った デバッグ設定のデフォルトのDoomソリューションは、デフォルトのSteam Doom3インストールパスを参照するようにコマンドラインを設定します。これは、vstudioからプロジェクトを実行するために使用されるデフォルトのコマンドライン引数です。 + set fs_basepath "C:\ Program Files(x86)\ Steam \ steamapps \ common \ doom 3" + set com_allowConsole 1 + set si_pure 0 これを行うと、次のログでコンソールが開きます。 DOOM 1.3.1.1304 win-x86 Jan 23 2012 00:50:27 1596 MHz Intel CPU with MMX …
9 c++  windows 

2
2つの衝突する物体の侵入を解決する方法
シンプルな3Dゲーム物理エンジンを実装しました。私はすでに適切な衝突検出を行っていますが、今は衝突応答の部分を理解しようとしています。衝突後の速度を計算するために、インパルスベースの方法を使用しています。これはかなりうまく機能しますが、ボディが相互貫通し続けるのを完全に防ぐわけではありません。そのため、ペネトレーションを解決するための追加のコードがあります。現在、私はボディを接触法線に沿って浸透深さの半分だけ移動します-最初のボディは接触法線の方向に、2番目のボディは反対方向に移動します。 これはほとんどの場合問題ありませんが、いくつかの望ましくない影響があります。たとえば、狭い廊下とその中を移動するオブジェクトを想像してみてください。オブジェクトが廊下の壁の1つにぶつかると、透過解像度によって反対側の壁に移動し、次のフレームで最初の壁に戻ります。効果は、オブジェクトが壁の間で本当に速く振動しているようなものであり、きれいではありません。 だから私の質問は、侵入を解決するより良い方法があるかどうかです?おそらくボディを動かさずに、(インパルス計算に加えて)どういうわけか速度を調整して、ボディが互いに近づくのを止め、ペネトレーションが次の数フレームで解決するようにします。私はここで推測しています。何か案は?

1
V8がSDLスレッドで実行されないのはなぜですか?
私は自分のゲームに対してV8をコンパイルしてリンクすることができ、コードの解釈はうまくいきました。ただし、コードを分割したいので、ゲームループは1つのスレッドに存在し、スクリプトエンジンはゲームループと一緒に2番目のスレッドで実行する必要があります。私はSDLを使用しているため、このコードを試して新しいスレッドを生成しました SDL_CreateThread(ScriptingEngine::SpawnMain, NULL); ここで、次のコードは私のテストスクリプトエンジンです。 namespace ScriptingEngine { v8::HandleScope handleScope; v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New(); v8::Persistent<v8::Context> context; void Setup() { // TODO: bind functions to global // ... context = v8::Context::New(NULL, global); } int SpawnMain(void *arguments) { v8::Context::Scope scope(context); v8::Handle<v8::Script> script = v8::Script::Compile( v8::String::New("'Hello World'") ); v8::Handle<v8::Value> result = script->Run(); context.Dispose(); return …

7
著作権で保護されたスプライトをデモに使用できますか?
私は簡単な質問をして、みんなの意見を求めていました。 オンラインで投稿したい履歴書の2Dデモゲームを作成しています。私はプログラマーのポジションとして応募しているので、自分のアートはあまりありません。デモで1つまたは2つのレベルを作成するために、他のゲームのスプライトシートとタイルセットを使用することを計画しています。画面の下部にクレジットを表示し、これらのスプライトは自分のものではないことを述べます。 これは良い考えですか、それとも違法な意味で潜在的に「危険」かもしれませんか?

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