ゲーム開発

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

5
なぜ現代のゲームは余命を延ばさないのですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 80年代後半から90年代初頭に、ほとんどのゲームには余分なライフメカニックがありました。プレイヤーは限られたライフ(多くの場合3)でスタートし、死にかけたプレイヤーの1人を使い果たしました。まだいくらか残っている場合、最後のセーブポイントでリスポーンします。すべてのライフが使用されると、ゲームは終了し、最初から始めなければなりませんでした。プレイヤーはゲーム中に追加のライフを獲得できます。 このメカニズムは非常に広く使用されていたため、ゲームで使用されなかった場合は例外でした。これは、今でも最も有名なビデオゲームの決まり文句の1つです(上記の画像は無数のシャツに印刷されています)。 今日、このメカニズムは忘れられているようです。 ほぼすべての現代のゲームでは、最後のセーブから無限の再試行がプレイヤーに与えられます。多くの場合、クイックセーブメカニズムを使用して、プレーヤーに独自のセーブポイントを作成させます。異なろうとする少数の人々は、もう一方の極端に向かう傾向があります。「ローグライク」メカニックは、プレイヤーに再試行を与えません。 余命があったという中盤はどうなりましたか?ゲーム業界にこの機能を放棄させたゲームデザインの革命は何ですか? この質問への回答を提案するときは、この投稿が「あまりにも意見に基づいている」領域に引きずられるのを避けるために、引用と事実的で客観的な証拠でできるだけ回答をバックアップしてください。「何が」起こったのか、「いつ」の具体例に焦点を当てます。

5
1秒あたりのフレーム数を制限する利点は何ですか?(もしあれば)
私はOpenGLでシンプルなゲームに取り組んでおり、ディスプレイの初期化と入力にSDLを使用していますが、タイミングに関しては2つの選択肢があります。最適なTimePerFrame-theTimeTakenToRenderでスリープ状態にある1つ目は、最適なTimePerFrameの秒数= 1 / theFramerateCapです。(vsyncを使用するのと同等であるため、これが必要かどうかは完全にはわかりません。これはより正確かもしれません。私の仮定が正しい場合、SDL + OpenGLがデフォルトでvsyncを持っているかどうかを教えてください。もう1つは、最後のフレームがレンダリングされてからの時間を測定し、それに応じて移動を調整することです。(フレームのレンダリングにかかる​​時間が短いほど、そのフレーム内でのエンティティの移動が少なくなります)。パフォーマンス、およびフリッカーの減少などに関して、これら2つの方法の長所と短所は何ですか?
13 opengl  sdl  frame-rate  vsync 

3
グリッド上でA *を使用して自然に見えるパスを作成する方法は?
私はこれを読んでいます:http : //theory.stanford.edu/~amitp/GameProgramming/Heuristics.html しかし、私が理解していないこともいくつかあります。たとえば、この記事では、対角線の動きを伴う経路探索に次のようなものを使用するように記述されています。 function heuristic(node) = dx = abs(node.x - goal.x) dy = abs(node.y - goal.y) return D * max(dx, dy) 記事のようにDを設定して自然なパスを取得する方法がわからない、それを言ったようにDを隣接するスクエア間の最低コストに設定し、ヒューリスティックなものに関する意味がわからない4 * Dであり、何も変わらないようです。 これは私のヒューリスティック関数および移動関数です。 def heuristic(self, node, goal): D = 5 dx = abs(node.x - goal.x) dy = abs(node.y - goal.y) return D * max(dx, dy) def move_cost(self, …

1
平面反射を行う際の波の説明
私はSDKからNvidiaの例、特にIsland11プロジェクトを研究してきましたが、波の高さの状態に応じて反射を上下に補正するHLSLコードの一部に興味を持ちました。 当然、コードの短い段落を調べた後: // calculating correction that shifts reflection up/down according to water wave Y position float4 projected_waveheight = mul(float4(input.positionWS.x,input.positionWS.y,input.positionWS.z,1),g_ModelViewProjectionMatrix); float waveheight_correction=-0.5*projected_waveheight.y/projected_waveheight.w; projected_waveheight = mul(float4(input.positionWS.x,-0.8,input.positionWS.z,1),g_ModelViewProjectionMatrix); waveheight_correction+=0.5*projected_waveheight.y/projected_waveheight.w; reflection_disturbance.y=max(-0.15,waveheight_correction+reflection_disturbance.y); 私の最初の推測は、垂直の摂動(波)を受けたときに平面反射を補正し、反射ジオメトリを何もない場所にシフトし、水が空または空だけのようにレンダリングされることでした: さて、それは私たちが地形の緑/灰色/黄色がかった反射が水の基線で折り返されるのを見るべき場所を反映している空です。問題は、その背後にあるロジックを正確に特定できないことです。波/水ジオメトリのポイントの実際のワールド空間位置を投影してから-.5fを掛けて、同じポイントの別の投影を取得します。今回はy座標を-0.8に変更します(なぜ-0.8?)。 コード内の手がかりは、冗長性があるため試行錯誤で派生したことを示しているようです。たとえば、著者は投影されたy座標の負の半分(w除算後)を取得します。 float waveheight_correction=-0.5*projected_waveheight.y/projected_waveheight.w; そして、2番目のポイントについても同じことを行い(肯定的なだけで、何らかの違いを得るために、私は推測します)、それらを組み合わせます: waveheight_correction+=0.5*projected_waveheight.y/projected_waveheight.w; 2による除算を削除しても、品質の改善に違いは見られません(誰かが私を修正したい場合は行ってください)。それの核心は、投影されたyの違いのようです。なぜですか?この冗長性と-.8fと-0.15fの一見arbitrary意的な選択により、これはヒューリスティック/推測の組み合わせであると結論付けられます。これには論理的な根拠がありますか、それとも単なる必死のハックですか? これは、コードフラグメントが修正する初期問題の誇張です。最低のテッセレーションレベルで観察します。うまくいけば、それは私が見逃しているアイデアを引き起こすかもしれません。-.8fは、平面反射されたジオメトリレンダリングをサンプリングするテクスチャ座標を乱す量を推定する基準高さであり、-。15fはセキュリティ対策である下限です。

2
私の膨大な数の画像のために、またはそれにもかかわらず、スプライトシートを使用する必要がありますか?
2Dゲームを開発していますが、たくさんのスプライトがあります。3Dアニメーションとモデルを使用して2Dにレンダリングし、「フォールアウト」または「ディアブロ」に見えるようにしました。また、手で描くよりも簡単です(笑)。 私はすでにフレームレートを15fpsに削減しなければなりませんでした。これは、フレームをぎこちなくすることなく下げることができる最低のフレームレートでした。しかし、24フレームが非常に滑らかに見えたために悲しかったです。 これを行った理由は2つあります。 1)HDDスペースを削減します。画像が少ないほど、ゲーム全体が小さくなります。 2)RAMの消費を削減します。ロードする画像が少ないほど、RAMの制限を膨らませる問題を回避できる可能性が高くなります。 ただし、HDDスペースとRAMの両方でイメージを圧縮する方法があれば、それを行います。以前にテストしたことがありますが、ほとんどの場合、RGBA8888からRGBA5555に変換しても品質に変化はなく、TexturePackerプログラムでRGBA4444に変換してもほとんど影響を受けません。SFMLは、.PNGイメージのタイプに関係なく、同じ量のメモリを使用するように見えるため、現在これを行いません。異なる方法でロードする方法を調査しましたが、このテーマについては何も見つかりませんでした。 2Dビデオゲームの処理方法について多くの記事を読みました。コンセンサスは圧倒的です。優れたパフォーマンスのために、スプライトをより大きなテクスチャに詰め込みます!そこで、TexturePackerを使用して、小さなスプライトを非常に大きなスプライトシートにパックします。 ただし、キャラクターごとに10〜15のアニメーション、5つの移動方向、およびアニメーションごとに15〜40のフレーム(おそらく平均24)を用意する予定です。15アニメーション、5方向、およびアニメーションあたり平均24フレーム。つまり、1文字あたり1800個の個別フレームです。スプライトシートにパックされている場合、代わりに75個の画像のみです。(アニメーションごと、方向ごとに1つのスプライトシート。15* 5) ゲーム内の1人の巨大なボスキャラクターの場合、スプライトシートを使用できず、一度に1つのイメージを単純に読み込む方法をプログラムする必要があります。パフォーマンスのためにこれを行うことができるかどうかはまだわかりません。 キャラクターについては、すでにスプライトシートにパックしています。1人のキャラクターが歩き回る場合、これはほとんどの場合うまくいくようですが、時々失速します。ただし、そのキャラクターのすべてのテクスチャをプリロードするのではなく、テクスチャをスワップアウトする悪い考えのコードに起因します。 テクスチャをプリロードする場合、スプライトシートには意味があります。各キャラクターに1800個の小さな画像をプリロードするのは悪い考えだと想像するだけです。 ただし、一度に1つずつメモリにストリーミングしたり、メモリからストリーミングしたりするのは非常に高速であるため、一度に1つの画像をメモリに保存するだけで済みます。これは、特定の瞬間に各キャラクターが45 + MBではなく数KBしか消費しないという意味ではないでしょうか? ストリーミングは信じられないほど高速(1秒間にメモリとレンダリングに出入りする15枚の画像)が必要であり、画像は非常に小さいものの、キャラクタースプライトシートをロードすることをお勧めします。代わりにメモリに。しかし、とにかく大きなボスキャラクターのために、単一画像ストリームのようなレンダリングシステムをコーディングする必要があります。 私は実験してきましたが、単純なプロセスではありません。特に、現在グラフィックスを処理していないゲームエンジンの他の部分に取り組んでいるという事実を考えると。

6
MMOでリアルマネー取引を禁止する必要があるのはなぜですか?
まもなくMMOゲームを公開する予定です。現在、プレイヤーが従うことを期待する利用規約の作成を進めています(宣誓、スパム、不正行為はありません...ポイントを獲得します)。 私のゲームでは、プレイヤーは希少なアイテムを互いに交換することができます。 取引を行うほとんどすべてのオンラインゲームには、通常、プレイヤーがゲーム内アイテムまたはゲーム内のお金を実際の通貨と交換することを明示的に禁止する使用条件の条項があります。 私はこの規則の理由について疑問に思っていました。MMOでリアルマネー取引を禁止する必要があるのはなぜですか?

3
このフラットシェードの外観の再作成
短くしておきます。下の画像に描かれている効果をどのように達成しますか?リアルタイムで実行することは可能ですか?一見シンプルに見えますが、おそらくそうではありません。この外観を実現するためのシェーダーのプログラミングに関する詳細情報を取得するために検索できるキーワードはありますか?ありがとう。

3
配列のオブジェクトまたはオブジェクトの配列?
Roller Coaster Tycoonのラインに沿った、管理シムゲームを作成しています。パフォーマンスを最大化するために、ワールドオブジェクトを構造化する最善の方法を知りたいです。 私のゲームには5,000人の人がいるとしましょう: オブジェクトを作成し、そのような配列に保存します。 class person() { this.x = 0; this.y = 0; this.thirst = 15; this.hunger = 15; // etc.. add methods: public findPath(int destX, int destY) { // and so on } people = new person[5000]; for (int = 0; i < 5000; i++) { people[i] = …

5
ユーザーがガンマ補正を調整して「暗い」領域から「チート」するのを防ぐ方法はありますか?
ユーザーが環境と対話する方法を変更するように設計された暗い状況を含む、私が出くわしたほとんどすべてのゲームでは、望ましい効果を打ち消すためにモニターのガンマ補正を上げるプレイヤーが常にいます。 ユーザーがチャレンジから抜け出すためにガンマ補正を調整して「チート」するのを防ぐ方法はありますか?(闇) ユーザーのモニターの現在のガンマ補正を確実に取得できれば、それを使用して、通常のユーザーに不便さを与えずに付与される利点を多かれ少なかれ防ぐことができると思います。

1
PS4ゲームを作成するプロセスは何ですか?
ソニーは開発者がPS4用に自己公開できると言ったので、より多くの人々がそのプラットフォーム用のゲームの作成に興味を持つようになると確信しています。 PS4のSDK、ドキュメント、テスト環境を取得するプロセスは何ですか?

1
ピクセレーションなしで画像サイズを縮小する方法は?
滑らかなエッジキャラクターと高解像度の画像を使用したゲームをたくさん見ていますが、キャラクターの画像を64x64に縮小しようとすると、ピクセル化された混乱が発生します。64x64のキャンバスから始めても、ピクセル化されたエッジが生じます。 OpenGLでスケーリングする必要がありますか?または、おそらく私が知らないフォトショップやピクセンでいくつかのテクニックがありますか?

4
16進マップで等しい領域を生成する
たとえば、大きな(X x Y)ヘックスマップを使用して、国をシミュレートするために、それを接続されたヘックスのN領域に分割するにはどうすればよいですか? 目標は、形状は異なるがサイズが等しい国を含む現実の地図のように見える16進マップを生成することです。

4
プレイヤーにプレイ方法をエレガントに教えるにはどうすればよいですか?
パズルプラットフォーマーがプレイヤーにプレイ方法を教える方法について考えてきました。 私はスーパーミートボーイ、特に教えられていることに気付かずに教える方法が好きです。それは私を興奮させ続けました。単純でレベル設計によって明確に強制されている場合でも、自分で何かを理解することに満足があります。 それぞれの新しいスキルやルールを教えるための「チュートリアルレベル」以外に、他の方法はありますか?それぞれのメリットとコストは何ですか?

3
正式に登録された会社がなくてもゲームをリリースする
会社を正式に登録せずにiOSゲームをリリースすることを考えています。会社を作りたいかどうかさえわかりません。 ITunesは私のタイトルの著作権者を知りたいと思っています。これに関して2つの質問があります。 1)自分の(既に存在する場合は既に決定されている)会社名を使用し、後で(必要に応じて)登録することはできますか? 2)または、後で会社を正式に登録するかどうかに関係なく、自分の名前を著作権者として使用する必要がありますか?
13 legal  copyright 

2
2つのツリー構造の比較
私はこれを正しい用語で説明しようとするのに苦労しているので、できるだけ多くの詳細を提供し、誰かが私がやろうとしていることを知っていることを願っています=-) 2つのノードツリーを比較して、それらが構造的に類似/異なるかどうかを判断しようとしています。以下の図では、両方の例に同じ数の子、孫などがあります。例1では、Rootには2つの子を持つ子がありますが、例2では、​​rootにはありません。 再帰的にループする方法を見つけて、各レベルの数を数え、それを比較して、ツリーがどれほど似ているかを知ることができますが、それだけで同じように見えますが、実際にはそうではありません。 誰でもこれについて知っていますか?それとも、これが何であるかを表す専門用語ですか? 編集:また、これはC#であり、これらのオブジェクトとその子を保存するためにリストを使用しています。 例1 例2

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