ゲーム開発

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

2
ショートカットグラス効果を実装するにはどうすればよいですか?
Rocket LeagueやFIFAなどのゲームのスクリーンショットを見てきました。 そして、私は1つが近道草効果を達成するだろうと思い始めました。 シェーダーですか?実際のジオメトリですか?それとも、テクスチャ付きのクワッドですか?誰かが私を方向に向けることができれば、それは大歓迎です。

3
鏡面シェーディングでR(phong)の代わりにH(blinn)が使用されるのはなぜですか?
この理由はどこにもありません。phongで使用される反射ベクトルは、物理学の基礎が単純です。しかし、blinnで使用されるハーフベクトルは、一見合理的な根拠がなく、適切な反映を構成していません。それにもかかわらず、いわゆる「物理ベース」のシェーディング機能すべてで使用されています。それに物理的な基盤があれば、知りたいのですが。 私が見つけることができたのはいくつかの理由です: それは速いです -これについてはさまざまな情報がありますが、それでも1998年には大きな理由だったでしょう。 これは90度よりも高い角度をより適切に処理します。これが唯一の理由である限り、フォンの用語が不適切に使用されているためです。反射とビューのドット積は、-1〜+1の角度を与えます。通常、この角度は0〜1に固定されており、これが90度問題の直接的な原因です。角度を固定するのではなく再正規化すると、180度の完全なカバレッジが得られます。私は、単純なx * 0.5 + 0.5の操作がグラフィックスの世界を40年間逃げていたとは信じません。 エッジをより適切に処理します -エッジの「問題」もblinnソリューションにわずかに存在します。主な原因は、ターミネーターでのエリア照明の不適切なシミュレーションです。これは、「物理ベースの」シェーダーに不可欠です。しかし、より単純な状況でも、シグモイド関数はソフトターミネーターラインを正しく近似できます。ランバート項への乗算は、鏡面反射項を不適切に減衰させるため不正確です。これにより、フレネル項がキャンセルされ、さらなるエラーが発生する可能性があります。 エッジに長い反射があります -異方性反射は現実的かもしれませんが、blinnはエッジにのみ表示されるため、それらを実装する正しい方法ではないようです。H項のエラーが偶然現実的に見えるのは、単なる幸せな偶然です。 これらの理由はどれも満足のいくものではありません。この狂気を整理したいと思います。 私はブリンとフォンの話ではないのですということを明確にしたい、特に、代わりにこれらのシェーダだけでなく、他の人のための基礎として使用されているベクトル成分HとR、程度。

5
粒子を発光させ、周囲に光を当てるにはどうすればよいですか?
私は現在、暗い森でホタル効果を作ろうとしています。レベルには非常に低い光があり、プレーヤーは数少ない光源の1つです。プレイヤーにレベルを見やすくさせるために、輝くホタルがマップ上にランダムに表示されるようにしています。1つの方法は、パーティクルシステムを使用することです。しかし、私は粒子が周囲に光を投​​げかけることはできません。これを行う方法はありますか?

4
ゲーム通貨の個々のユニットに一意のIDを割り当てる必要がありますか?
現在、MMORPGを作成しています。 現時点では、ゲームの通貨部分に取り組んでいますが、生成された通貨のすべてのユニットに一意のシリアル番号を割り当てる必要があるかどうか混乱しています。 このシステムを使用して仮想通貨の誤用を追跡したいと思っていますが、これは一般的な慣行ですか?
22 mmo 

4
ゲームプレイの統計やフォーミュラを隠すことにより、どのようなゲーム体験が培われますか?
プレイヤーにキャラクターの能力に関する情報を提供する度合いはさまざまです-プレイヤーのキャラクターの統計や、全ダメージ、ダメージ軽減などの公式にどのように結びつけるかなど、これらに限定されません。これらの数値と公式が完全に提供される場合舞台裏の数字を気にしすぎてゲームを楽しむだけで損なう可能性のある最適なビルドを作成するために、多くの最小マックス/作業につながります。 ゲームデザインの観点から、私は以下に関する洞察を探しています。 すべてではないにしてもほとんどの情報がプレイヤーから隠されている統計システムの設計に関する個人的な経験。非表示にするものとプレーヤーに表示するものについて行った決定の種類、およびそれらの決定の背後にある理由と、プレーヤーがゲームをプレイする方法にどのように影響したかを含めます。 情報を非表示にすることに反対したため、プレーヤーにできるだけ多くの情報を提供することを積極的に選択した個人的な経験。この決定に導いた思考プロセスと、プレイヤーがゲームをプレイする方法に与えた影響について説明してください。 プレーヤーからほとんどの情報を隠す統計システムの設計にさまざまなゲームがどのように近づいているか、およびその設計がプレーヤーのゲームのプレイ方法にどのように影響したかに関するリファレンス/リソース

11
本当にグラフィックスAPIを使用する必要がありますか?
3Dゲームでハードウェアアクセラレーションを取得するには、グラフィックスAPIを使用する必要がありますか?OpenGL、DirectX 、CUDA、OpenCLなどのグラフィックスカードAPIへの依存関係をどの程度まで解放できますか? ゲーム用に独自のグラフィックスAPIまたはライブラリを作成できますか?たとえ難しい場合でも、3Dアプリケーションが独立してグラフィックスドライバーに接続し、GPUですべてをレンダリングすることは理論的に可能ですか?

3
保存データにテキストファイルを使用する必要がありますか?
私の質問は、テキストファイルを使用してゲームデータを保存する必要があるかどうかです。これを行う上でいくつかの基本的な懸念があります。 データを保護する方法は本当にありません。したがって、ユーザーがデータに触れた場合、ユーザーはすべてを台無しにする可能性があります。 それはおそらく私のデータを保存する最も効率的な方法ではありません(それはたくさんあります) ただし、テキストファイルを効果的に解析/書き込みする方法は知っているので、プロトタイプを作成するためには素晴らしいものでした。開発の終わり近くで顔を痛めないように、私は切り替えに何を考えるべきかを未来に見たいだけです。 テキストファイルを使用しない場合、何を使用すればよいですか?C ++と互換性のあるものが必要です。

1
色収差をどのように実装しますか?
シェーダーで色収差の影響をどのように実装しますか? 色ごとに異なる焦点距離を使用して世界をレンダリングすると、問題は解決しますか(1つの深度レンダリングパスのみを使用する場合)。
22 opengl 

2
深度テストを使用していなくても、ピクセルを破棄するパフォーマンスを失いますか?
破棄命令を最初に検索したとき、破棄を使用するとパフォーマンスが低下するという専門家がいます。ピクセルを破棄すると、zBufferを適切に使用するGPUの機能が破損するため、GPUは両方のオブジェクトに対してフラグメントシェーダーを最初に実行して、カメラに近いものが破棄されるかどうかを確認する必要があると述べました。現在作業中の2Dゲームの場合、depth-testとdepth-writeの両方を無効にしました。私はすべてのオブジェクトをその深さでソートして描画していますが、それはすべてです。GPUが派手なことをする必要はありません。今、フラグメントシェーダーでピクセルを破棄するのはまだ悪いのではないかと思っています。

8
迷惑なユーザーなしのチュートリアルテキスト?
チュートリアルテキストがあります(後でボイスオーバーで補強する予定ですが、VOアクターとはまだ契約していないので、今のところテキストにする必要があります)。 テキストは、つぶやきのようなダイアログに表示されます(各140文字未満)。テキストは大きくて読みやすいです。 テキストには、次に何をするかをユーザーに指示する重要な指示が含まれています。プレイテストでは、ユーザーはテキストを読まずに[OK] [OK]を押すだけです。最終的なダイアログは消え、ユーザーは指示を読んでいなかったため、何をすべきか手がかりがありませんでした。ゲームは彼がちょうど求めたタスクを実行することを期待しており、彼はそれが何であるかを知りません。 私は試した: カウンター(3)、(2)、(1)を入れ、カウンターが消えたら[OK]を押します。カウンターが迷惑だ/気が散ると思う テキストのダイアログごとに2〜3秒経過するまでボタンをグレー表示/無効化する テキストのダイアログごとに2〜3秒が経過するまで[ok]ボタンを完全に非表示にします ダイアログを閉じる前にチュートリアルのテキストを読んでいないユーザーのこの問題をどのようにうまく処理できますか?
22 tutorials 

3
LibGDXでビデオを再生する
LibGDXでビデオを再生する方法はありますか? Androidでスプラッシュスクリーンとしてビデオを配置したいのですが、Android SDKを使用したくありません。
22 android  libgdx  video 

3
多くのユニークな武器/呪文/力のコードを構成する方法
私は、Pythonを使用してFTLの「ローグライクのような」ゲームを作成する経験の浅いプログラマーです(まだテキストのみを扱っているため、PyGameはまだありません)。 私のゲームには、ユニークな能力を生み出す多数の武器(初心者には約50個)が含まれます。オブジェクトコードを構造化する方法を理解するのに苦労しています(強力な(武器に根本的に異なる効果を持たせることを可能にする)点で)拡張可能な(たとえば、フォルダーにそれらをドロップすることによって後でより多くの武器を簡単に追加できるように) )。 私の最初の本能は、BasicWeaponクラスを持ち、そのクラスから異なる武器を継承することでした。しかし、これは私には問題があるようです:BasicWeaponクラスを基本的に役に立たないようにする必要があります(すべての武器に共通する機能は名前とタイプ(ピストル、aなど)のみです)、またはすべてを予測する必要があります独自の効果を考え出し、BasicWeaponにコーディングします。 後者は明らかに不可能ですが、前者はまだ機能します。しかし、それでは疑問が残ります。個々の武器のコードはどこに置けばいいのでしょうか? plasmarifle.py、rocketlauncher.py、swarmofbees.pyなどを作成し、それらをすべてゲームにインポートできるフォルダーにドロップしますか? または、eval / execに頼らずに、各武器の一意のコードを何らかの形で含むデータベーススタイルのファイル(Excelスプレッドシートのような単純なもの)を作成する方法はありますか? 後者のソリューション(データベース)に関して、私が苦労している根本的な問題は、コードとデータの分離を維持することが望ましいことを理解している一方で、武器が「コード」の境界を曖昧にしているように感じることだと思いますおよび「データ」を少し。それらはゲームで見られる多種多様な類似物を表しており、その意味ではデータに似ていますが、ほとんどの場合、他のアイテムと共有されていない少なくともいくつかのユニークなコードが必要です。コード。 このサイトの他の場所で見つけた部分的な解決策は、BasicWeaponクラスに空のメソッドの束(on_round_start()、on_attack()、on_move()など)を与え、各武器のそれらのメソッドをオーバーライドすることをお勧めします。戦闘サイクルの関連フェーズで、ゲームはすべてのキャラクターの武器に適切なメソッドを呼び出し、メソッドが定義されているもののみが実際に何かを実行します。これは役立ちますが、それでも各武器のコードやデータをどこに配置する必要があるかはわかりません。 ある種のハーフデータ、ハーフコードのキメラとして使用できる別の言語やツールはありますか?優れたプログラミングプラクティスを完全に実行していますか? 私はありません回答いただければ幸いですので、OOPの私の理解では、最高の状態で大ざっぱですあまりにもコンピュータ科学-yと。 編集: Vaughan Hiltsは、下の投稿で、私が本質的に話しているのはデータ駆動型プログラミングであることを明らかにしました。私の質問の本質は次のとおりです。データにスクリプトを含めることができるようにデータ駆動設計を実装し、メインプログラムコードを変更せずに新しい武器で新しいことを行えるようにする方法はありますか。

4
ボクセルゲームでブロックを選択するためにレイをキャストします
ブロックで作られたMinecraftのような地形でゲームを開発しています。これで基本的なレンダリングとチャンクの読み込みが完了したので、ブロック選択を実装したいと思います。 したがって、私は一人称カメラが直面しているブロックを見つける必要があります。シーン全体を投影解除すると聞いたことがありますが、それはハッキリと聞こえ、正確ではないので、私はそれに反対しました。どういうわけか、視線方向に光線を投げることができましたが、ボクセルデータ内のブロックとの衝突をチェックする方法がわかりません。もちろん、ゲームロジック操作を実行するには結果が必要なので、この計算はCPUで実行する必要があります。 それでは、どのブロックがカメラの前にあるかをどのようにして見つけることができますか?それが望ましい場合、どのように光線を投じて衝突を確認できますか?

4
ベジェ曲線で均一な移動速度を実現する方法は?
ベジェ曲線に沿って画像を移動しようとしています。これは私がそれを行う方法です: - (void)startFly { [self runAction:[CCSequence actions: [CCBezierBy actionWithDuration:timeFlying bezier:[self getPathWithDirection:currentDirection]], [CCCallFuncN actionWithTarget:self selector:@selector(endFly)], nil]]; } 私の問題は、画像が均一に移動しないことです。最初はゆっくりと動き、その後徐々に加速し、最後には本当に速く動きます。この加速を取り除くにはどうすればよいですか?


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