ゲーム開発

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

5
シンプルなコントロールで苦労しているプレイヤーに対処する方法は?
Phaser 3で作成したHTMLゲームがありますが、コントロールをどうするか決められません。それらを数回変更しましたが、今では使いやすさと楽しさのスイートスポットを見つけたような気がします。しかし、私はまだ人々が苦しんでいるのを見ます。 このゲームでは、パチンコを持った少年が引き戻され、敵の頭をノックするために発射されます。画面の両側には、キャラクターを回転させるためにタップされる2つの仮想ボタンがあります。スリングショットが唯一のメカニックであり、ゲームを指示なしでピックアップしてプレイできるように、キャラクターを自動的に回転させることを検討しています。しかし、私はこれが敵を回して撃つために高速であることのすべてのポイントを破壊すると感じています。 私のような単純なゲームには指示が必要ですか、それともユーザビリティがより重要ですか?

2
GPUはテクスチャとVRAMをどのように処理しますか?
実際には、相互に関連する一連の質問です。 圧縮パイプライン(dxt5 / dxt1など)は、レンダリングパイプラインを通過するときに完全に解凍されますか? 最初の質問の答えが正しい場合、いくつかの大きな非圧縮テクスチャのメモリはどのように管理されますか? フレームバッファーは最新のGPUのVRAMとは異なりますか?
18 textures  gpu  memory 

2
RTSゲームユニットの構造
moveToやAttackアクションなどを複数回プログラムすることなく、多くの異なるユニットを作成する方法が欲しい 私の見方では、これを行うには2つの方法があります。 できること/できないことを指定するフラグを持つ単一の汎用ユニットクラス(その後、静的配列でインスタンスを作成し、必要に応じてそれらを取得します) (Attack、Harvest、Patrol)のようなユニット固有のアクションの抽象メソッドを持つ抽象ユニットクラス。これらは、ユニットが実際に何も取得できない場合でも、すべてサブクラスで実装する必要があります。 これを行う最初の方法は最も簡単に思えますが、ほとんどのユニットで多くのコードが使用されないことになります。 2番目の方法も機能します。しかし、リソースを収穫できる2つの異なるユニットを使用することにした場合、2つの異なるクラスにまったく同じコードを使用することになります。これは正しい方法とは思えません。 これはこの問題への正しいアプローチですか? AoEのようなゲームでは、すべてのユニットが、私が推測するもの、アクション/注文のリストのようなものを持っています。次に、そのアクションを必要とするすべてのユニットにそれを与えます。 はっきりしない(もっともらしい)場合、または探しているものに関する詳細情報が必要な場合は、コメントでお尋ねください。
18 unity  c#  architecture  rts 

1
なぜこの手続き型コンテンツ生成が他のものではないのですか?
私はオンラインの手続き型コンテンツ生成の本を読んでいます。第1章の2ページには、PCGの例とPCGの例があり、それらを区別することはできません。 これは彼らによるとPCGです: ゲーム世界に植物が急速に生息するゲームエンジンミドルウェア 彼らによると、これはPCGではありません。 自動生成された植生を統合できるゲームエンジン また、1ページ目では、ゲームエンジンPCGを考慮しないと明示的に述べています。 ここで重要な用語は「コンテンツ」です。私たちの定義では、コンテンツはゲームに含まれるもののほとんどです:レベル、マップ、ゲームルール、テクスチャ、ストーリー、アイテム、クエスト、音楽、武器、乗り物、キャラクターなど。ゲームエンジン自体はコンテンツとは見なされません。私たちの定義では。 私の推測では、PCGの例は、ゲームマップを認識し、それに応じて植生を入力するゲーム内のコード(または任意のゲームに適応するコード)であると思われます。私にとってPCGではない例は、開発者がユーザーインターフェイスを介してオフラインで植物を追加できる場合に、ゲームエンジンから利用できるオプションのようになります。 最後の1つは私から非常にワイルドな推測です。一見PCGのように聞こえるので、私は間違っていると確信しています。それらを区別してください。


4
UnityでC#は違いますか?
この投稿を改善したいですか?引用や回答が正しい理由の説明など、この質問に対する詳細な回答を提供します。十分な詳細のない回答は、編集または削除できます。 Unityは異なるバージョンのC#を使用していますか、それともすべて同じですか?見た目は通常のC#とは異なりますが、通常のC#要素がいくつかあります。
18 c#  unity 

5
環境のような巨大で静的なオブジェクトは、最新のマルチプレイヤーゲームでサーバーからクライアントに送信されますか?
信頼できるシステムがあり、プレーヤーが試合に参加すると、既にスポーンされたすべてのオブジェクトを取得します-それ自体(クライアント)でスポーンされます。 次のようになります。 Client アクセストークンを Server Client から受け入れを受け取ります Server Client シーンをゲームシーンに切り替えます Serverプレイヤー、クレート、やり取りできるオブジェクトを送信して、clientそれらを生成して表示できるようにします。 しかし、地上オブジェクトはどうですか?今のところ、サーバーとクライアントにまったく同じシーンがあります-1つの静的なプレーンがフロアとして機能しています。現在、私は新しいもの、木、階段を追加し、一緒に物を作ります。 私は思った-私たちは良いです。しかし、環境も同期すべきではありませんか?どういうわけかネットワーク化されていますか?サーバーが所有していますか? 取りましょうLeague of Legends: 静的な環境で、おそらく1つのメッシュ(階段、草、壁、店)を組み合わせたものです。しかし、それは本当にクライアントに保持されているのですか、それともロード画面の間にサーバーによって送信されたのですか?
18 unity  networking  maps 

5
ミップマップされていない遠くのテクスチャに発生するグラフィック効果とは何ですか?
誰もがmip-mappingについて知っています。テクスチャがさらに離れると、テクスチャの品質が低下します。 ミップマッピングを行わないと、ここの山の頂上のように、テクスチャが「ちらつく」ように見えます。 特定の名前はありますか? 「___効果を解決するためにミップマッピングを適用した」、または「これは___として知られ、ミップマッピングを使用しない場合に発生する」のような文を書きたい。

3
ゲーム以外の要素をゲームに追加する目的は何ですか?
例として、Jetpack Joyrideの科学者を参照します。 科学者を殺すことができるか、オタク忌避剤を持っているという科学者の功績があることは理解していますが、私はそれらのどれについても尋ねていません。 ゲームにそのような要素を含める非常に重要な理由があるかどうかを理解したいと思います。(少なくとも最初は)それはまったく取るに足らないように見えるからです。 より正確には、科学者(またはゲーム内の同等の、明らかに重要でない「俳優」)の存在は、プレイヤーに何らかの心理的影響または影響を及ぼしますか?それとも、ゲームのプレイ中にプレイヤーの感情や態度にほとんど変化をもたらさない、ゲームの小さな小さな機能として単に存在するのでしょうか?

2
起動時に大量のメモリを割り当てて解放すると、「メモリをクリーンアップしますか?」
ブックコンプリート、第4版コーディングゲーム、第5章(ゲームの初期化およびシャットダウン)、セクションのメモリーをチェックするには、この興味深いコードサンプルが含まれています。 bool CheckMemory(const DWORDLONG physicalRAMNeeded, const DWORDLONG virtualRAMNeeded) { MEMORYSTATUSEX status; GlobalMemoryStatusEx(&status); if (status.ullTotalPhys < physicalRAMNeeded) { // you don’t have enough physical memory. Tell the player to go get a // real computer and give this one to his mother. GCC_ERROR("CheckMemory Failure: Not enough physical memory."); return false; } …
18 c++  memory 

12
コードが1回だけ実行されるようにするにはどうすればよいですか?
コードをトリガーする状況が複数回発生する可能性がある場合でも、一度だけ実行したいコードがあります。 たとえば、ユーザーがマウスをクリックしたときに、次のものをクリックします。 void Update() { if(mousebuttonpressed) { ClickTheThing(); // I only want this to happen on the first click, // then never again. } } ただし、このコードでは、マウスをクリックするたびにクリックされます。一度だけそれを実現するにはどうすればよいですか?

3
手続き的に生成された世界のチャンクを他の世界のチャンクに一致させる
ロジャー・ゼラズニーの 『アンバーのクロニクル』を読んだことがありますか? 自分が3人称MMOゲームでプレイしていると想像してください。あなたは世界に出現し、さまよい始めます。しばらくして、マップを学習したと思ったとき、あなたはその場所にいること、今まで見たことのないことを悟ります。あなたが知っていると確信していた最後の場所に戻り、それはまだそこにあります。しかし、世界のその他の地域は変化しており、あなたはそれがどのように起こったかにさえ気づきませんでした。 手続き型の世界世代について読んだことがあります。パーリンノイズとオクターブ、シンプレックスノイズ、ダイアモンドスクエアアルゴリズム、構造プレートのシミュレーションと水の侵食について読みました。手続き型の世界生成における一般的なアプローチについて、漠然と理解していると思います。 そして、この知識があれば、上記のようなことをどのように行うことができるかについてはわかりません。私の頭に浮かぶすべてのアイデアは、いくつかの理論的な問題に遭遇します。ここに私が考えることができるいくつかのアイデアがあります: 1)入力としてシード番号といくつかの完全に記述されたチャンク番号を持つ「リバーシブル」世界世代 私はそれが可能でさえあるとは思いませんが、シードを受け取り、チャンクが構築される数のマトリックスを生成する関数を想像します。また、一意の番号ごとに一意のチャンクがあります。そして、この一意のチャンク番号を取得し、この番号を含むシードを生成する2番目の関数。私は下の写真のスキームを作成しようとしました: 2)チャンクを完全にランダムにし、それらの間にトランジションを作成します。 Aracthorが示唆されました。このアプローチの利点は、それが可能であり、魔法の機能を必要としないことです:) 私の意見では、このアプローチの短所は、多様な世界を持つことはおそらく不可能だということです。群島と大陸の両方が1つの数字で表され、隣接するチャンクであるとすると、チャンクのサイズは大陸と等しくなりません。そして、チャンク間で見栄えの良い遷移を行うことができるとは思えません。何か不足していますか? つまり、手続き的に生成された世界を持つMMOを開発しているということです。しかし、1つの世界を持っている代わりに、あなたは多くを持っています。ワールドを生成するためにどのようなアプローチをとり、プレイヤーが遷移に気付かないで、ある世界から別の世界へのプレイヤーの移行をどのように実装しますか。 とにかく、私はあなたが一般的な考えを持っていると信じています。どうしましたか?

2
Unityのインスペクターでキーと値のペア(辞書など)を編集する方法は?
私が作成しているスペルシステムは、次のとおりです。 各呪文は独立したプレハブです。これには、インスペクターで変更できるいくつかのプロパティ(基本ダメージ、持続時間など)を持つスクリプトが含まれています。 ゲームロジックで使用されるコード内のすべての可能なスペルをリストするSpell列挙型があります 呪文を唱えたいとき、この呪文のプレハブを取得してインスタンス化し、その情報を読むことができる必要があります 各アクター(プレイヤーであれ、敵であれ)には、呪文の可能なアニメーションのリストが必要です。 私が実装しようとしている方法の問題は次のとおりです。 各アクターのアニメーションをリストするにはDictionary<Spell, Animation>、を使用できますが、辞書はインスペクターでサポートされていないため、複数のアクタータイプを簡単に編集することは困難です。 対応する列挙型からスペルプレハブに簡単にアクセスする方法が必要です。ここでも辞書を使用できますが、コードではなくインスペクターでプレハブのみを参照できます。つまり、この辞書を埋めることはできません スペル列挙型を対応するプレハブとアニメーションに簡単に関連付ける方法を探しています


3
メモリー不足状態にどのように準備しますか?
これは、明確に定義された範囲のゲームにとっては簡単ですが、問題はサンドボックスゲームについてであり、プレイヤーは何でも作成および構築できます。 可能なテクニック: 上限のあるメモリプールを使用します。 定期的に不要になったオブジェクトを削除します。 回復メカニズムとして後で解放できるように、最初に余分な量のメモリを割り当てます。約2〜4 MBです。 これは、16 GB PCとは異なり、メモリが通常制限されているモバイル/コンソールプラットフォームで発生する可能性が高くなります。メモリの割り当て/割り当て解除を完全に制御でき、ガベージコレクションが関与していないことを前提としています。これが、これをC ++としてタグ付けする理由です。 私が話していないですので、予めご了承ください効果的なC ++項目7「メモリ不足の条件のために準備して、」それは、関連だにもかかわらず、私はより多くのあなたが、通常は何をより詳細に制御を持っているゲーム開発に関連する答えを見たいのですが、ハプニング。 質問をまとめると、メモリコンソール/モバイルが限られているプラ​​ットフォームをターゲットにしている場合、サンドボックスゲームのメモリ不足状態にどのように対応しますか?

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