ゲーム開発

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

3
Slerping回転ミラー
次のコードを使用して、ターゲットを監視するためにゲームキャラクターを回転させます。 transform.rotation = Quaternion.Slerp(startQuaternion, lookQuaternion, turningNormalizer*turningSpeed/10f) startQuaternionは、新しいターゲットが指定されたときのキャラクターの現在の回転です。 lookQuaternionは、キャラクターが見るべき方向であり、次のように設定されています。 destinationVector = currentWaypoint.transform.position - transform.position; lookQuaternion = Quaternion.LookRotation(destinationVector, Vector3.up); turnNormalizerはTime.deltaTimeインクリメントされるだけturningSpeedで、エディターで指定される静的な値です。 問題は、ほとんどの場合、キャラクターが正常に回転する一方で、180度に近づかなければならないときに問題が発生することです。次に、時々それがジッターして回転をミラーリングします: この不十分に描かれた画像では、キャラクター(右側)が左側の円に向かって回転し始めます。左または右に回転するだけでなく、この「ミラーダンス」が開始されます。 新しいフェーシングに向かって回転し始めます その後、突然同じ角度にスナップしますが、反対側で回転し続けます ターゲットを見るまで、この「ミラーリング」を長時間実行します。これは、四元数、slerping / lerpingなどの問題ですか? EDIT1: どうやら、問題は回転自体から発生するのではありません。より可能性の高い問題は、キャラクターが回転しているときに面に向かって移動することです。キャラクターが動くことを許可されているとき、向きとターゲットの間の角度を制限することで、ジッター/ミラーリング回転が減少し、時には解消されます。 もちろん、これはさらに多くの疑問を投げかけますが、なぜ問題なくキャラクターが同時に移動および回転できないのですか?運動に使用されるコード: transform.Translate(Vector3.forward * runningSpeed/10f * Time.deltaTime);

3
速いものを遅く見えるようにする(Box2D)
私はあなたがトレビュシェットを操作して対戦相手にボールを投げるゲームに取り組んでいます。 「中世の包囲」と呼ばれるゲームのようなものです。トレビュシェットが腕を振っているとき、プレーヤーはボタンを押してボールをリリースする最高の瞬間をつかむ必要があります。その後、ボールは接線角度で飛行します。 私の今の問題は、トレビュシェットの腕が速く振れすぎて、プレーヤーが適切な瞬間を捉えられないことです。その間、それはこれほど速くなければなりません、さもなければそれは十分に投げることができません。また、ボールとトレビュシェットアームをつなぐ小さなひもがあり、アームの動きが遅すぎると、アームが動くときにボールがひもにぶら下がっています。 ステップサイズを切り替えることで問題を解決し、腕を振るたびに、ステップサイズを1/60から1/200に変更します。そして、プレーヤーがボールをリリースすると、それは1/60に戻ります。 これは、私のゲームがネットワーキングを備えたマルチプレイヤー用であることを除いて、かなりうまくいきます。したがって、ステップを変更すると問題が発生する可能性があります。 私が考えることができるもう1つの解決策は、ゆっくりスイングできるようにすることですが、プレーヤーがボールをリリースするとき、方向を維持しながら手動でボールに速度を追加します。私はこのソリューションがあまり好きではないので、見た目が偽になり、ストリングを非常に短くしない限り、ボールがストリングにぶら下がっているという問題がまだあります。 これに少し光を当ててください、ありがとう! 編集 みんなの意見をありがとう、私は腕をゆっくり振って問題を解決し、プレーヤーがボールをリリースするとき、ボールの速度と2倍をつかみます。これは、ステップサイズを変更した場合とまったく同じように見えます。やらなければならないことがもう1つあります。腕の揺れが非常に遅いため、ボールが揺れるのではなく、腕の端にぶら下がっているだけです。私は、スイング期間中およびスイング期間中のみ、ボールに重力と等しい力を加えることによってこれを解決しました。それから、それはもはやそこにぶら下がらず、腕と一緒にスイングします。 @MrCrankyの答えは詳細であり、実行可能であるように見えるので、私はそれを受け入れます。:)

1
光伝搬ボリューム:ボリュームデータの異方性フィルタリング
こことここで詳しく説明するリアルタイムの拡散グローバルイルミネーションに、カスケードライトプロパゲーションボリュームアルゴリズム(間接シャドウイングはまだありません)を実装しました。正常に動作しますが、特に1つのアーティファクトを修正しようとしています。 短い要約 アルゴリズムの動作がわかっている場合は、これをスキップできます。 このアルゴリズムは、3Dグリッドに球面調和関数の形式で照明情報を格納することで機能します。最初にグリッドの各セルのデータは、拡張シャドウマップ(反射シャドウマップ)のレンダリングから取得されます。)深度の他に、色と通常の情報も含まれます。本質的には、光源から見たすべてのピクセルが間接照明の最初のバウンスの原因であるため、シャドウマッピングに使用する通常の深度バッファーと一緒に必要な情報を保存し、すべてのデータをサンプリングして3Dグリッドを初期化します。 。3Dグリッドの情報は、1つのセルの情報を6つの直接隣接セルすべて(上、下、左、右、上、下)に(反復ごとに)伝達することにより、反復的に伝達されます。グリッドの情報を使用してシーンを照らすには、シーンに全画面パスを適用し、ラスタライズされたピクセルごとに、ラスタライズされたサーフェスのワールドスペースの位置を使用できるようにします(たとえば、遅延シェーディングのGバッファーから)。画面上の特定のピクセルがグリッドのどのセルに属しているかを知る。 これはほとんどの部分で正常に機能しています。ここでは、GIがシミュレートされていない、ハードコードされた環境項のみの2つの画像と、その隣にLPVアルゴリズムを使用した画像があります。サーフェス上の色付きの反射、深度の詳細などに注意してください。 問題 ライティングステージでセルを検索する場合、ハードウェアテクスチャフィルターを使用したトリリニア補間を使用して、セルの中心、隣接するセル、および実際に検索されたテクスチャ座標の間のデータをスムーズに補間します。基本的に、この補間は、情報が検索される中心の周りのコンクリートピクセルへのセルの中心の照明情報の伝播を模倣します。さもなければ、照明が非常に粗くて醜く見えるため、これは必須です。ただし、トリリニア補間では、セルにエンコードされた照明情報の光の伝播方向が考慮されないため(球面調和関数であることを忘れないでください)、光がルックアップされたピクセルに誤って伝播される可能性があります。たとえば、セルにエンコードされた輝度が(1,0,0)( " これにより、グリッド内のセルサイズがシーン内のサーフェスと比較して大きい場合、壁から光が不鮮明に漏れます(これは、伝播をできるだけ少なくしてシーンに遠くまで光を伝播するために大きなセルが必要なために必要です)。これは次のようになります。 (右上の影の輪郭から)見てわかるように、シーンは、シーンの左上のどこかにある指向性光源によって照らされています。また、アトリウムの外側と内側を隔てるセルは1つしかないため、光が漏れて左側の壁が誤って照らされます。 実際の質問 著者は、これを修正するために手動の異方性フィルタリングの形式を提案しています。彼は、次のように、表面法線nの方向に向かって放射輝度勾配(現在のセルからサンプリングされたSH係数を想定しています)を与えます。 そして状態 したがって、放射輝度の方向導関数を実際の放射輝度の方向と比較することにより、放射輝度分布がこのポイントのそのトリリニア補間よりもさらに開始するかどうかを計算できます。 私の質問: 方程式では、関数c(x)はポイント(x)でのSH係数のようです。したがって、放射輝度勾配は、点x-(n / 2)およびx +(n / 2)でのSH係数の重み付き差として、通常の数値微分のように計算されるようです。しかし、私のコンテキストではc(x)とは何ですか?現在、私はc(x)がサーフェス位置(x)でトリリニア補間された係数を参照していると仮定していますが、方向についての詳細情報を提供する方法がわからないため、まったくわかりませんSH係数の分布。 そして、その勾配をどのように使用して、セルからサンプリングされたライティングがサーフェスに適用されるかを正確に変更しますか?著者は、「放射輝度の方向導関数を実際の放射輝度の方向と比較する」とだけ書いていますが、これはかなりあいまいです。 彼は「中央差分スキーム」の使用に言及し、SH係数の中央差分についてこれらのスライドを参照し、勾配の導出を示すこの論文も参照していますが、現時点ではそれらから有用な結論を出すことはできません。

2
デモ(および実際のゲーム)保護
数か月以内に、私が取り組んでいる(うまくいけば商業的な)ゲームを公衆(インターネット)に披露する予定です。問題は、スクリーンショットとトレーラー(機能の機能など)に加えて、保護できるデモを適切に作成する方法です。 少し説明させてください。ゲームは一種のクロスプラットフォームRPGです。現在、ゲームをコード化する方法は、ファイルからマップ、キャラクターなどのデータを読み取り、構成ファイルとアセットを追加するだけで世界/ストーリーを拡張できるすべてを決定することです。 つまり、私が心配するのは、ゲームのデモバージョンを作成するかどうかです。つまり、実際のゲームですが、すべてのアセット/構成ファイルなどが削除されるため、最初のマップ/レベルのデモにすぎません。実際のゲームのデータパック(リリースされたとき)を公開した直後に誰かから保護する方法はありますか?突然、デモEXEを持つ誰もが実際のゲームをプレイできますか? デモの保護は、実際のゲームがリリースされる前にしばらくデモを公開したいので、私の最優先事項です。私はいつでも実際のゲームから選択する保護方法をいつでも(リリース前に、ただし後で)決定することができます。 結局のところ、とにかくゲームを保護する実際の方法はあると思います(このゲームはクロスプラットフォームであり、インターネットでプレイする必要がないため、ユーザーがオンラインチェックを行う必要がないように制限したくありません)。私がやりたい最後のことは、合法的なユーザーを混乱させることです。そして、可能であればアセットを開いたままにしておきたいのですが、それは単にフォルダーに簡単にパッチを適用し、改造者が少し混乱することを可能にすることを意味します。 つまり、基本的なキーライセンスシステムをセットアップしても、1人のユーザーがキーとゲームのコピーをどこかにアップロードすることを本当に妨げているのでしょうか。バイナリを変更してゲームを再クラックする必要があるように、頻繁に更新することについて人々が話しているのを見てきました。しかし、合法的なコピーを1つ取得してそれを広めることができるときに、誰がゲームを解読する必要があるのでしょうか。 何かが足りないのかどうかはわかりませんが、間違いがないことを確認しようとしています。それは本当に次のように要約されますか? 基本的なキーライセンス保護を平手打ちします。 デモからアセット/構成ファイルを削除する 最善の結果を期待します どんなアドバイスでも大歓迎です!私はこのすべてに非常に新しいです。-;) これが重複している場合は申し訳ありません!デモのコンセプトについてはあまりわかりませんでした。

5
GM Studioでピクセルアートをぼかさずに拡大するにはどうすればよいですか?
ピクセルアートを使用するゲームをGame Maker Studioで作成しています。ゲームを起動すると、すべての拡大されたテクスチャが本当にぼやけています。(小さなものには起こりません。) たとえば、この画像 このようにゲームでレンダリングします: とにかく、ぼやけたピクセルの代わりに小さなピクセルを大きなピクセルにサイズ変更することはありますか?

1
2Dゲームに最新のOpenGLを使用する方法
3D用の「モダンな」OpenGL(3.0+)チュートリアルをたくさん見つけましたが、2Dゲーム開発にそれを使用する方法に関する情報を探したところ、ほとんど何も見つかりませんでした。2D gamedevにOpenGLを使い始めるにはどうすればよいですか? 具体的には、以下のトピックに対する回答を得ることに興味があります。 さまざまなマトリックスを正投影に設定するにはどうすればよいですか? シェーダーは2Dアプリケーションで3Dアプリケーションと同じくらい頻繁に使用されますか?もしそうなら、2D設定での目的は何ですか? 2Dゲームに明らかに必要な膨大な数のテクスチャをどのように処理すればよいですか? 比較的幅広い質問をお詫び申し上げますが、検索に長い時間を費やしており、最新のOpenGLに適用される有用な情報はほとんど見つかりませんでした。
9 opengl  2d 

3
多くの小さなポリモーフィッククラス(プロパティ、メッセージ、イベントとして使用)の柔軟な代替手段C ++
私のゲームには本当に役立つ2つのクラスがありますが、徐々に面倒になっていきます。メッセージとプロパティ(プロパティは基本的にコンポーネントです)。 どちらも基本クラスから派生しており、静的IDが含まれているため、システムは必要なものにのみ注意を払うことができます。それは非常にうまく機能しています...を除いて... ゲームを拡張するにつれて、常に新しいメッセージタイプとプロパティタイプを作成しています。2つのファイル(hppとcpp)と大量のボイラープレートを作成する必要があるたびに、本質的にclassIDと1つまたは2つの標準データ型またはポインターを取得します。 新しいアイデアを試したり試したりすることが実際の雑用になり始めています。新しいメッセージまたはプロパティタイプを作成したいときは、次のように入力できるようにしたい ShootableProperty: int gunType, float shotspeed; ItemCollectedMessage: int itemType; ヘッダーとcppファイルを作成する代わりに、親クラスなどを含むコンストラクターを作成します。 私の心の中で論理的に1行か2行ということを行うには、20行から40行(ガードやその他すべてを含む)程度です。 これを回避するためのプログラミングパターンはありますか? (私は何も知らない)スクリプトについてはどうですか?ほとんど同じである一連のクラスを定義する方法はありますか? 以下は、1つのクラスの外観です。 // Velocity.h #ifndef VELOCITY_H_ #define VELOCITY_H_ #include "Properties.h" #include <SFML/System/Vector2.hpp> namespace LaB { namespace P { class Velocity: public LaB::Property { public: static const PropertyID id; Velocity(float vx = 0.0, float vy = …

2
3Dゲームワールドのスケーリング係数を選択するにはどうすればよいですか?
私はいくつかの物理シミュレーションで3Dタンクゲームのプロトタイプを作成しています。C++を使用しています。私が下す必要がある決定の1つは、現実との関係におけるゲームの世界の規模です。たとえば、ゲーム内の1つの測定単位は、実際には1メートルに相当すると考えることができます。これは直感的に感じますが、何かが足りないかもしれません。 次のことを潜在的な問題と考えることができます。 3Dモデリングプログラムの互換性。(?) 数値の精度。(これは問題ですか?)特に大規模な場合、Battlefieldなどのゲームはどのように巨大なマップを持っていますか:実世界のスケールで1:1マッピングを使用する場合、浮動小数点表現は大きいほど精度が低下する傾向があるため、数値精度を失わないようにしてください。数値(たとえば、レイキャスティング、物理シミュレーション) ゲームプレイ。-9.8 m/s^2重力のように現実世界のほとんどの値を使用しているときに、ユニットの動きが遅くなったり速く感じたりしたくありません。(これは主観的な場合があります。) インポートされたアセットをスケールアップ/ダウンしても大丈夫ですか、それとも元のスケールの世界に最適ですか? レンダリング性能。同じ頂点数の大きなメッシュはレンダリングに時間がかかりますか? これを複数の質問に分割する必要があるかどうか疑問に思っています...

2
三角形の隣接データの構築
三角形のインデックスのリストが与えられた場合、それをジオメトリシェーダーの隣接性を持つインデックスのリストにどのように正確に変換しますか? ここでは厳密にインデックスについて話していることに注意してください-頂点は存在しますが、浮動小数点比較やイプシロンに入る必要なしにそれらを使用して重複した頂点を一致させることができるため、インデックスのみに焦点を当てます-その仕事はすでに行われています。 リスト内の特定の三角形について、インデックス{0、1}、{1、2}および{2、0}(または{n、n + 1}、{n + 1、n + 2}、{ n + 2、n}必要に応じて)エッジから形成されます。インデックスリストは整形式であり、曲順を正しく順守します。 このようなエッジの場合、リスト全体を検索して、それらのインデックスのうちの2つを使用する別の三角形を検索できます。その三角形の3番目のインデックスは、そのエッジの隣接する三角形を完成するために使用するインデックスです。 隣接リストでは、元の三角形はそれぞれ6つのインデックスで表され、元のインデックスはスロット0、2、4に挿入されます。隣接関係を完了するための新しいインデックスはスロット1、3、5に移動します。エッジ{0、1}に対して完了するインデックスはスロット1に移動し、エッジ{1、2}に対して完了するインデックスはスロット3に移動します、インデックスエッジ{2、1}を完了するためにスロット5に入ります。 私は何を試しましたか? 私はそれを総当たりにしてみましたが、そうです、それでうまくいきますが、私はもっとエレガントなアプローチを求めています。 Eric Lengyelのエッジリストビルダーを試してみましたが、(1)元の三角形の順序が考慮されていないようです(2)曲がり順が考慮されていないようです(3)どこに行くか泥のように明確です次に、エッジリストを作成した後、(4)「triangleIndex」と「faceIndex」のような明白な明白なエラーがあるサンプルコードの疑いがあります。作成者もコードをコンパイルしたので、実行しないでください。確認しますか? だから-これからの提案やポインタは?


2
World Bounds-(0、Size)または(-HalfSize、HalfSize)?
オブジェクトを移動、描画、衝突させるゲームスペースを作成するときは、(0,0)ポイントまたは(0,0,0)ポイントをスペースの真ん中に置いて、ワールドの境界は(-halfSize、halfSize)ですか、それともスペースの端にある方が良いので、境界は(0、サイズ)ですか? それぞれの長所と短所は何ですか?それぞれにどのような問題がありますか?それとも本当に重要ではないのですか? 細かいことのようですが、見落としている可能性のある大きな問題があるかどうかを確認したいと思いました。

1
2番目のゲーム内カメラから録画し、後でビデオファイルにエクスポートするにはどうすればよいですか?
UnityでPCホラーゲームを作成しています。ゲーム内でカメラ録画シミュレーションを行いたいので、いつでも不気味な場所を離れることができます。探索中にカメラで録画したものをテープに収めることができます。 技術的には、2つ目のカメラ(ハンドカメラ)をキャラクターの手に取り付け、プレーヤーにボタンを押してビューファインダーを覗かせます。しかし、どの位置でも、ハンドカムはその時点でフォーカスされているすべてのもの(床、階段、ゴミなど)を記録する必要があります。手の高さで下げても、プレーヤーの視点に合わせて上げてもかまいません。 ゲームが終了したら(プレーヤーが去るか死ぬか)、記録したテープをビデオファイルに保存するオプションが必要です(これが不可能な場合は、いくつかの保存ファイルに保存します)。 ゲームにそのような機能を実装するにはどうすればよいですか?特別なUnityのトリック、またはアドオンと追加のモジュールはありますか?アクティブなトリガーで装飾やシーンを保存したり、画面からビデオを取得したりしますか? 以下は、私が意味することの簡単なMSPaintの概念です。

5
スキル対運、比率とその測定
ゲーマーの仲間、運と比較して、ゲームの変動のレベルを表す用語はありますか。プレイヤーがゲームに影響を与えることができないので、カードゲームの戦争は0のスキルと1.0の運を持つでしょう。スキルが1.0の物は思いつきません。最初はスペリングビーと思っていましたが、各競技者に選ばれた言葉はランダムに選ばれ、運が関係しているようです。このような比率を正確に測定するためにどのような指標を使用できますか?誰かが1.0のスキルのゲームを思いついたら、ぜひ聞いてみたいです。 質問を明確に繰り返します。そのような測定値はありますか。さらに、この測定の対象には用語があるので、名詞を使って議論することができます。 編集:運という用語は、勝者、つまりランダムなイベントが、勝者に影響を与える効果のレベルを表すために使用されます。皆様のご意見をお待ちしております。

1
初心者モバイルゲーム開発者| 私たち自身または出版社で公開していますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 これで、Androidで開発された最初のインディーゲームがほぼ完成しました。私たちはゲームに潜在能力があると信じています。 今、私たちは何を始めるべきかを考えていますか?Google Playアカウントを購入して自分で立ち上げることはできますが、うまく宣伝して大きな成果を上げることができるかどうかはわかりません。 または、出版社に連絡して、取引について話し合うこともできます。 どっちがいいですか?両方の長所と短所は何ですか?これは私たちの最初のゲームにすぎないことを考えると、私たちはさらに多くのものを作るつもりです。また、私たちがまだ学生だけであることを考慮します。そこから収益を上げたいと思っています。 出版社に連絡する最良の方法は何ですか?それらにどのようにアプローチして対処しますか? あなたの親切な助けに感謝します!

3
手続き型ダンジョン生成:これらの部屋すべてを最小限の廊下を使用して接続することを確認する簡単なアルゴリズムはありますか?
廊下をあまり持たずにすべての部屋をつなぐハイブのような構造にすることは可能ですか?(1つの部屋から来る3-4以上の廊下が多すぎる) 以下は、私の部屋がどのように見えるかの出力です。基本的にはランダムに配置されています。 廊下ごとに実現したいこと。

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