ゲーム開発

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

4
A *戦術RPGのアルゴリズム?
私はC ++で非常に貧弱な戦術RPGを書くことに手を出しました。これまでのところ、2Dタイルマップがあり、ウィキペディアの擬似コードに基づいて機能するA *アルゴリズムを取得しました。 しかし、実際の戦術RPGは、平面上で最適なパスを見つけてそこに移動するだけではありません。通常、移動範囲は限られているため、登り降りする必要があります。Final Fantasy Tacticsをプレイしたことがある場合、これらはMoveとJumpの統計の影響を受けます。これは私が迷子になる場所です。ターゲットへの最適なパスを見つけるようにA *アルゴリズムを変更する方法はありますが、パスは非常に多くのタイルだけです。高さの違いを考慮して統計をジャンプするにはどうすればよいですか?ギャップを飛び越える方法を実装するにはどうすればよいですか? 役立つ場合は、現在、私のマップはタイルオブジェクトのベクターで表されています。各タイルには、北、南、東、および西のタイルへのポインターがあり、マップの端に沿ってタイルが存在しない場合、またはタイルが非通過可能に設定されている場合、nullptrに設定されます。

1
「IHV」とは何ですか?
ここで、略語を定義せずに、「IHV」、たとえばこれを参照するいくつかの質問を見ました。 A Google検索の提供「インター人間のウイルス学、」と、ダウンいくつかのリンク、「含んでWikipediaの曖昧さ回避ページ独立系ハードウェアベンダー確かに、」そうです、私はここに「IHV」を見てきている状況により適切に、しかし、私はそれについて確信がありません。


8
クールダウンメカニックへの応答として、待機とタートルを防止/バランスする方法
私はクラスでターンベースのRPGに取り組んでいます。魔法使いクラスの1つに標準的な魔法のポイントを持たせたいが、別のクラスには時間制限のある能力を持たせたい。 リアルタイムのN分ごとに能力を使用する 戦闘のNターンごとに能力を使用する 1日1回またはN回機能を使用します(スリープ状態に戻す、または昼夜サイクルを待つ) 「チャージ」を回復できる修復アイテムがあります。これらの能力は通常の呪文よりも強力ですが、制約があります。このスペルキャスティングクラスはバースターです。大きなヒットを与えますが、制限があるため、めったにありません。パーティーは、ジャムに乗るまで、またはボスにぶつかるまで、荷物としてそれらを運び、ハンマーを解き放ちます。私は深さを追加するオプションとしてそれを気に入っており、面白いスピードランの可能性を持っています。 最後の1つは、パーティが町に戻って充電するために寝なければならない場合にバランスを取るのに十分簡単ですが、昼夜のサイクルがあります。私が見ている問題は次のとおりです。 リアルタイム/ 1日あたりN回 プレイヤーはただ待つことができます。私は期間を罰することができますが、それはユーティリティを大幅に減らします。また、プレーヤーがゲームをプレイしていないことを意味します。これは結局、エンターテイメントに関するものであると考えられます。楽しくない。 戦闘でNターンごとに プレイヤーは、バーストで別の大きなダメージを与えるまで、すべてのキャラクターをラウンドごとに防御/回復させることができます。私は実際にこれが実行可能であることを望んでいますが、それが戦闘にとって明らかに最良の戦略になることは望んでいません。これまでのところ、キャスターはビッグバンがリチャージするまで、より少ない力を循環するだけなので、大きな問題ではないようです。初期のゲームでは大雑把ですが、それはバランスの一部です。問題は、私がうまくやれないようにするのに苦労しているということです。 キャンプ/ターリングを軽減するためにこれらのメカニズムのバランスをとる方法に関する提案はありますか?

5
RPGでの戦闘を超えて、どのような種類の紛争解決が楽しいでしょうか?
1桁のファイナルファンタジーゲームとAD&Dで育った人として、RPGの問題を戦いのように楽しく解決する方法はほとんどありません。さまざまな達成の流れ(オブジェクトの獲得/作成、スキルツリー、パズル、プレイヤーの戦略、チームの組み合わせ/相乗効果など)はすべて、数分の熱狂的なアクションに入り、ゲームの進行に応じて達成感と進捗状況が向上します。 とはいえ、正当な理由から、RPGプレーヤーを殺人犯として特徴づける傾向があります。殺すことを奨励するとき、すべての問題があなたの剣で打つ何かのように見え始めるのはそうすぐではありません。そして、釘付けされていないものを盗むことができたら、どうしてそれをしないのですか? 他の種類の紛争解決は、その要素があれば楽しい場合があります(何かを構築する感覚の農場/市民/シムゲーム、器用さや悪用のスパイ/忍者/暗殺者ゲーム、キャラクターをロールプレイするためのソーシャルゲーム、または考え抜く他の人)、彼らはしばしば彼らの非常に狭い会場の外で楽しくありません。(少なくともシングルプレイヤーゲームでは)コンピューターとの会話に限定されているため、ソーシャルゲームは会場全体を探索することさえできません。 私は、攻撃や盗みがデフォルトの行動手段ではなく意識的な選択になるような方法で、殺すな、盗むなという社会的理想を適切にゲーミングする方法を見つけようとして頭を悩ませています。 ..しかし、同時に、格闘/盗みのゲームと同じ多様な楽しみの入力を維持します。ほとんどのゲームは結果をコーディングするだけです。タウンガードは、あなたまたは/または一部の派factがあなたに対処する気がなくなった後に送られます。しかし、これは不自然に感じられ、システムのさらなるゲームを誘うだけで、最後にはより良い殺人犯を生み出します。 そうする理由は?私のゲームの主なテーマは、ポストポスト黙示録で道徳がどのように展開するかについての非常に哲学的なテーマです(中途半端なXenosagaを考えてください)。殺すことと盗むことはその一部ですが、ゲーマーとしての私たちの自然な傾向は、この質問を「公正に」行うことを許さないと思います。 他の形態の紛争解決と真に平等な競争の場で殺害と窃盗を行う方法についてのアイデアはありますか?

4
特定のエリアの建物を手続き的に生成する
私とチームは、ゲームの開始時にプレイヤーにランダムなファクトリーを提供するファクトリービルダーゲームに取り組んでいます。「公平性」の感覚を確保するために、ランダムに生成されたファクトリーは、(プレースホルダー値)30の数単位以内の領域を持つことが理想です。 これらの仕様を満たすために基本的なランダム長方形ジェネレーターを書くのは比較的簡単ですが、私たちの目標は、おそらく2、3、または4つの交差する長方形で構成される工場をより複雑にし、より複雑な形状を生成することです(L U、およびO形の建物)。 ランダムな長方形を生成し、基本的な代数を使用して2番目の長方形を埋めようとしましたが、これまでのところ2つ以上の長方形を実装することはできませんでしたが、それでも2つの長方形のデザインの結果に満足できませんでした。 より関連性の高い情報:2Dトップダウンメカニックの一部はファクトリースタイルであるため、部屋には適切な長さと幅を持たせて、現在JavaとLuaで使用できるようにします(必要に応じて、いずれかの組み込みライブラリを使用できます) 前もって感謝します! 編集:「良い」または「悪い」出力を言うと、悪い出力は、プレーヤーが使用できないスペースがある出力になります。工場の形状は、プレーヤーがコンベアベルトなどの工場の機械を配置できる場所を制限します。理想的には、工場には幅が1〜2ブロックしかない領域はなく、形状は1〜2ブロックの線が1辺に「垂れ下がる」1つまたは2つの大きな長方形であってはなりません。適切な出力は、すべての床面積が「実行可能」であるため、すべての領域が少なくとも3〜4ブロック幅です。優れた出力は必ずしも複雑である必要はありません(1つまたは2つの長方形でも構いません)が、1-2を超える長方形で構成される場合は、かなりのチャンスがあるはずです。

2
どのゲームパッド機能を想定できますか?
ゲームパッドのサポートを提供するとき、最も簡単な解決策は、XBoxコントローラーを想定し、最も頻繁なゲームパッドを同様のレイアウトにマップするライブラリーを使用することです。 顧客の苦情を最小限に抑えたい場合、すべてのボタンを(賢明な方法で)使用できますか、それともいくつかの一般的なコントローラーにないために避けるべきものがありますか? 質問は主にPC(Linux / Windows / Mac)についてですが、モバイルデバイス用のゲームパッドを検討する場合、答えは変わりますか? 私が知っていることの1つは、ユーザーがLTとRTを同時に押す必要がある入力スキームを使用できないことですが、その制限はXBoxコントローラーにも影響します。
15 mobile  pc  gamepad 

9
ティーンエイジャー向けのゲーム開発実務経験[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 2年前に閉店。 10代の息子がいて、年をとってからゲームの開発とデザインに携わりたいと思っています。私たちは、仕事を探す際の経験の重要性を説明するいくつかの会議に参加しました。また、新しい開発者に頻繁にインタビューするIT開発者でもあるため、経験がどれほど重要かを知っています。それで、私たちは彼を夏休みの数週間にわたってロンドンのGames Dev会社で仕事をしてみようと探していましたが、どこにもありませんでした。 私の息子は非常に頭がよく、高学年の8つ以上のGCSE(古いマークの7つ以上のA / B)を取得することが期待されており、Aレベルを取得してから大学でコンピューターサイエンスを勉強する予定です。彼はPythonでプログラミングの経験があります。彼が望んでいるのは、仕事の経験だけです。彼がゲームの開発プロセスに何らかの形で関わっている限り、用事をしてコーヒーを作るだけで済むなら。また、彼は実際に支払いを受けることを期待していません(ただし、それはボーナスになります)。 私はいくつかの会社に詳細と履歴書を提出しましたが、それらからの返信はありませんでした。これらの企業は、ここで失うものを何も持っていないように思えますが、彼らの時間の少しを除けば、これは私には奇妙に思えます。 だから私の質問は、このような状況でティーンエイジャーを雇うゲーム会社を止めるものはありますか?その他の適切なアドバイスを歓迎します。
15 career 

1
流れるGPU計算水
私は土木工学のバックグラウンドを持ち、水理および水文解析を定期的に実行しています。彼らはそのようなことのために学位を売りますが、それは実際にロケット科学ではありません。私は最近、GPUの地形に水文および油圧プロセス全体を実装することを思いつきました。コンピューティングシェーダーを習ったのはごく最近のことなので、現在、並列GPUワークフローを設計するよりも、エンジニアリングの方が優れていることにこだわっています。 次の式を使用して、降雨イベント中に生成された水の量を計算できます。 Q (CF/S) = c * I (in/hr) * A (acres) 私は、最初の領域の「面積」の計算を超えて移動するのが困難です。 現在の実装の概要: 地形は、1ユニット間隔の頂点の規則的なグリッドです ハイトマップには、頂点ごとに1つのR32高さ値が含まれます 現在、私は4つの基本方向(対角線なし)のフローのみを許可しています Texture2D [int]を、既に分析した頂点のステンシルとして使用しています 現在のアルゴリズム: 地形ツールがアクティブで、現在はそうではないとき... 「ステンシル」をクリアします。 標高が最も低い地形全体をスキャンします。 その単一ポイントは、CS_Floodへの初期入力です。 CS_FloodはX軸パスを作成します。 各入力頂点は、X方向とX +方向の両方に最大2048回投影されます。 OOB座標で隣接する頂点を見つけると、この方向の地形のエッジが示されます。CurrentPointがBoundaryPointsバッファーに追加され、その方向の投影ループが終了します。これは簡単で、毎回うまく機能しました。 高さ> =現在の頂点の高さを持つ隣接する頂点は、ステンシルでマークされ、NextPassバッファーに追加されます。 高さ<現在の頂点の高さを持つ隣接する頂点は、リッジのピークを示し、投影ループを終了します。塗りつぶしの将来の反復があります、それの「裏」側まで、尾根のベースの周りに流れ、同じ尾根をもう一度検出します。 この目的のために、複数回検出されたピーク/リッジポイントはBoundaryPointにはなりません。 一度だけ検出されたピーク/リッジポイントはBoundaryPointsに追加され、その方向の投影ループは終了します。 CS_Floodは、X軸パスによって生成されたポイントを入力として使用して、同じコードでZ軸パスを作成します。 現在、CS_Floodは2つの方向を無期限に交互に継続します。最終的に、CS_Floodが完了し、NextPassバッファーが空になるたびに、ループ全体を終了します。 理想的には、その時点で、BoundaryPointsには、自然の排水分割で発生する各頂点が含まれます。境界内に着弾した水滴は、最終的に同じ低地点に流れます。水滴が着地すると、境界は「どこか他の場所」に移動します。 次に: ステンシルをクリアせずに、地形を再スキャンして、ステンシルのない最も低い頂点を探します。 CS_Floodを繰り返します。 ステンシルがいっぱいになるまで(または同様の)を繰り返します。 3Dはこれらの色を認識するのが困難です。これは、積分高度で等高線を示します :(エッジ近くのバームに囲まれた穴) 頂点を越えて排出する約10のユニークな方法があります。それぞれにユニークな色を与えます:( 目に見える円形のツールマーク、「リッジ」がきれいに表示されます) これは、CS_Flood、境界、またはそれ以外で生成されたすべてのポイントをPOINTLISTとして表示します。 アルゴリズムは常に ほとんど機能します。時には、それも正しく動作します。その他の場合、アルゴリズムは正しい形状に明確に含まれていますが、無期限にポイントを出力し続けます。3番目のスクリーンショットに見られるように、時々混乱します。私が見落としていた別の状況/要因がなければなりません。私の見落としや、問題を攻撃するためのより簡単な方法および/またはよりエレガントな方法の提案を見つけるのに役立つことを感謝します。 MissingPoint!検出されたすべての新しいBoundaryPointをNextPassバッファーに追加するアルゴリズムを帯域支援することで含めることができます。次のパスでは、そのバンドエイドによって生成されたポイントの99%がわずかなGPU時間を浪費し、どこにも行けず何もしないと判断します。最初のパスでは、LowestPointを他のNextPassポイントと一緒に送信することも、この特定のシナリオを処理します。 私はそれがもっともらしいことを知っています、そして、十分な時間を与えられれば、私が望むことをするのに十分それをバンドエイドすることができます。できれば、より良く、よりスマートに、より速くそれをしたいのですが、まだ十分な経験がありません。

6
C#を使用してUnity3Dでシングルクリックとダブルクリックを適切に区別する方法は?
ここで理解し、学習しようとしているのは非常に基本的なことです:C#を使用して、Unityの3つのメインマウスボタンのシングルクリックとダブルクリックを適切に区別する最も一般的で洗練された方法は何ですか? 言葉を適切に強調することは、何の役にも立ちません。このウェブサイトでこれが一度も聞かれたことがないことに驚きましたが、もちろん、UnityのフォーラムやUnityの質問/回答ページで同様の質問を数多く見つけました。ただし、これらのリソースに回答が投稿される場合が多いため、それらはすべて明らかに間違っているか、少なくとも少しアマチュアすぎるように見えました。 説明させてください。提案されたソリューションには、常に2つのアプローチと対応する欠陥のいずれかがありました。 クリックが発生するたびに、最後のクリックからの時間差を計算し、それが所定のしきい値よりも小さい場合、ダブルクリックが検出されます。ただし、このソリューションでは、ダブルクリックが検出される前にクイックシングルクリックが検出されます。これは、シングルクリックアクションとダブルクリックアクションの両方をアクティブにするため、ほとんどの状況で望ましくありません。 大まかな例: float dclick_threshold = 0.25f; double timerdclick = 0; if (Input.GetMouseButtonDown(0) { if (Time.time - timerdclick) > dclick_threshold) { Debug.Log("single click"); //call the SingleClick() function, not shown } else { Debug.Log("double click"); //call the DoubleClick() function, not shown } timerdclick = Time.time; } アクティブ化されるシングルクリックの待機遅延を設定します。つまり、クリックごとに、最後のクリックからの遅延時間が所定のしきい値を超える場合にのみ、シングルクリックアクションをアクティブにします。ただし、シングルクリックが検出される前に待機に気づくことができるため、これは結果が遅くなります。さらに悪いことに、この種のソリューションは、OSレベルでのユーザーのダブルクリック速度設定の速度や速度を考慮していないため、マシン間の不一致に悩まされています。 大まかな例: float …
15 c#  unity  mouse 

1
GLEWとは何ですか?
初心者向けの説明を探しています。公式ウェブサイトの説明は短すぎて、答えよりも多くの質問に私を導きます: GLEWとは? GLEW開発者のページによると: OpenGL Extension Wrangler Library(GLEW)は、クロスプラットフォームのオープンソースC / C ++ 拡張ローディングライブラリです。GLEWは、ターゲットプラットフォームでサポートされているOpenGL拡張機能を決定するための効率的なランタイムメカニズムを提供します。 しかし、拡張機能ロードライブラリとは何ですか? OpenGLのウィキは言う OpenGLロードライブラリは、実行時、コア、および拡張機能でOpenGL関数へのポインタをロードするライブラリです。 OpenGL関数へのポインターを読み込むとはどういう意味ですか? 拡張機能とは何ですか? 「コアおよび拡張機能」とはどういう意味ですか?
15 opengl  glew 

1
*呼び出し* =(または* =呼び出し*)は、個別の関数を書くよりも遅いですか(数学ライブラリ用)?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 4年前に閉鎖されました。 算術関数が次のように見えるいくつかのベクトルクラスがあります。 template<typename T, typename U> auto operator*(const Vector3<T>& lhs, const Vector3<U>& rhs) { return Vector3<decltype(lhs.x*rhs.x)>( lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z ); } template<typename T, typename U> Vector3<T>& operator*=(Vector3<T>& lhs, const Vector3<U>& rhs) { lhs.x *= rhs.x; lhs.y *= …

2
機能クリープにどのように準備しますか?
運用前に機能のクリープを準備するにはどうすればよいですか? 機能のクリープは、生産段階にあり、「これが機能であるとすればクールだ!」これにより、考慮されなかった開発時間がn時間増加し、Blizzardでない限り、時間がありません。この機能は運用中にのみ検出されるため、運用前にクールな機能になるとは予想できません。 機能のクリープを説明、防止、または準備するために、運用前に何をすることができますか? 機能のクリープを許可し、あまり望ましくない機能をカットする必要がありますか?または、アーキテクチャが新機能用に設計されていないため、これにより問題が発生しますか?既存のアーキテクチャに収まらない限り、機能はありませんか? 私はこれが広範な質問であることを知っていますが、そのように閉じられないことを望みます。これはゲーム開発における大きな問題であり、考慮されるべきです。


3
オブジェクトがサーフェスの近くにあるときに点灯するシェーダーを作成するにはどうすればよいですか?
で、このオーバーウォッチゲームプレイ映像、キャラクターのシールドは、他のオブジェクトのジオメトリの近くにある地域で白点灯します。 床、壁、柱の近くの青いシールドの白い縁に注意してください。 シールドには独自のモデルがあり、効果はシェーダーで行われると思いますが、「近さ」の概念をシェーダープログラミングに変換する方法を理解しようとしていません。

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