ゲーム開発

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


1
モニターを暗くせずに夜景を作る
3Dシーンを暗い夜のように見えるようにする良い方法は、モニター上で暗くて物を見るのが難しいほどではないことです(特に明るい部屋で遊ぶ場合)。 私は自然の中で光を青みがかったものにしようとしており、かなり暗いアンビエントコンポーネントと明るいディフューズコンポーネントを使用して実験を行ってきましたが、正確なパラメーターに応じて、結果が少し欠けているか、まだ暗すぎます。 勉強する良い例はありますか?

5
ゲームボットは、ゲームの世界や他のエンティティをどのように認識していますか?
この質問はしばらくの間私の頭にありました...主に、WoWなどのあらゆる種類のゲームのボットを見ているからです。私の質問は ボットは、画面に表示されているものをどのように知るのですか?私はWoWをプレイしないので、私の例は間違っているかもしれませんが、たとえばモンスターがいる場合、ボットはどのようにしてそのモンスターが画面上のどこにあるのか、どのようにそれと対話するのかを知るのですか? これを任意のゲームに適用できますか、それとも各ゲームに固有ですか?質問が明確でない場合は申し訳ありません...そしてボットの作り方を尋ねるのではなく、画面上で物事をどのように検出するのかを私に非常に魅力的に尋ねています! 前もって感謝します :)
52 bot 

3
手続き的に生成された地形における降雨+河川作成のアルゴリズム
私は最近、手続き的な地形でできることに魅了され、世界の構築を少し実験し始めました。さまざまなマップをメッシュ化することで作成されたバイオームを使用して、ドワーフ要塞のような世界を作りたいと思います。 最初のステップが完了しました。ダイアモンドスクエアアルゴリズムを使用して、素敵なhieghtmapを作成しました。次のステップでは、いくつかの水の機能を追加し、それらを雨によって多少現実的に生成します。マップの高いポイントから開始し、最下の隣接ポイントまで「ステップダウン」し、海面まで下がるにつれてプール/侵食するなど、いくつかの異なるアプローチについて読みました。 これに関する文書化されたアルゴリズムはありますか? どんなアドバイス/考えも好きです。

4
シーン間でデータを処理する適切な方法は何ですか?
私はUnityで最初の2Dゲームを開発していますが、重要な質問と思われるものに出会いました。 シーン間でデータを処理するにはどうすればよいですか? これには異なる答えがあるようです: PlayerPrefsの使用に言及している人もいれば、画面の明るさなどのその他のものを保存するために使用すべきだと他の人から言われました。 誰かが私に、シーンを変更するたびにセーブゲームにすべてを書き込み、新しいシーンがロードされたときに必ずセーブゲームから情報を取得するようにすることだと言った。これはパフォーマンスが無駄に思えました。私は間違っていましたか? もう1つのソリューションは、これまでに実装したものですが、シーン間で破壊されず、シーン間のすべてのデータを処理するグローバルゲームオブジェクトを用意することです。したがって、ゲームが開始されると、このオブジェクトがロードされる開始シーンをロードします。これが終了すると、最初の実際のゲームシーン(通常はメインメニュー)が読み込まれます。 これは私の実装です: using UnityEngine; using UnityEngine.UI; using System.Collections; public class GameController : MonoBehaviour { // Make global public static GameController Instance { get; set; } void Awake () { DontDestroyOnLoad (transform.gameObject); Instance = this; } void Start() { //Load first game scene (probably main menu) …
52 unity 

6
複数のアーティストと作業する際に芸術的な一貫性を維持するにはどうすればよいですか?
私は、一人では作成できない実用的な量の芸術的コンテンツを必要とするゲームを作っているので、追加のアーティストの助けを求めました。 問題は、各アーティストに独自のスタイルがあり、すべてのアーティストが作成したコンテンツを混合すると、非常に一貫性のない体験になることです。これは、音楽コンテンツだけでなくグラフィックコンテンツにも当てはまります。 バックグラウンドアーティスト、スプライトアーティスト、グラフィックデザイナーなど、各アーティストがコンテンツのまったく異なる部分で作業することを試みましたが、アートボリュームが増加したり、状況によっては置き換えが必要な場合、これは明らかにスケールしませんアーティストであり、音楽などのコンテンツにつまらないものではありません。 任意の数のアーティストと協力しながら、ゲーム全体で芸術的な一貫性を維持するにはどうすればよいですか? 補遺:現在の回答では、アートスペックの作成に言及していますが、有用であり、おそらく必要であるとしても、それだけでは不十分です。 プログラミング用語では、「アートスペックの作成」は「テックスペックの作成」に似ていますが、これは間違いなく良いことですが、スペック自体はコード全体の品質を向上させることはありません。 アートディレクターを持つ場合も同様です。プログラミング用語で言うと、「リードプログラマーを獲得する」というのは、「チームのコード品質を向上させるにはどうすればよいのか」という非常に有用な答えではありません。 芸術的一貫性の分野で特定の一般的な問題を解決する方法に関する具体的な詳細な回答を探しています。例えば: ラインアートを行うときは、フリーハンドではなくベクトルツールを使用して、あらかじめ決められたブラシパラメーターを使用して、誰もが同じような線になるように描画します。 グラデーションツールを使用する人もいれば、ぼかしツールを使用する人もいます。その結果は非常に異なるため、グラデーションに同じテクニックを使用するようにしてください。 音楽の場合、パーカッションとコード進行が設定されたら、誰が曲を終了するかは重要ではありません。そのため、すべての音楽のパーカッションとコード進行が同じ人によって書かれていることを確認してください。 私はこれらを作成したばかりなので、それらが機能するかどうかはわかりません。私は、人々ように、この質問をしていない作品は私の芸術的な一貫性を改善する方法について具体的なヒントを与えることができます知っています。 私の特定の場合、まだ問題はありませんが、現在計画しているプロジェクトには比較的大量の音楽が必要です。手伝いたいミュージシャンが2人いますが、彼らのスタイル(およびスキルレベル)はまったく異なります。両方に彼らが望むように音楽を作らせた場合、私はかなり一貫性のない結果になり、彼らが音楽を書き始める前にそれを避けたい。 また、私はたくさんのキャラクターの絵が必要になります。私は2人のアーティストを助けたいと思っていますが(私も)、私たちの絵のスタイルは非常に異なっています。特に、これは各アーティストが同じキャラクターを描く方法です: 同じパレットで同じキャラクターを描いているにもかかわらず、結果は大きく異なり、「すべてアーティストBのスタイルで描画する必要がある」と伝えることは、ほとんど効果的ではないことに注意してください。



10
ゲーム状態「スタック」?
ゲームの状態をゲームに実装する方法を考えていました。主なものは次のとおりです。 半透明の上位の状態-一時停止メニューから背後のゲームまで見ることができる OO-Iの何かは、これをより簡単に使用し、背後にある理論を理解し、組織化を維持し、さらに追加することに気付きます。 リンクリストの使用を計画しており、スタックとして扱いました。これは、半透明のために以下の状態にアクセスできることを意味します。 計画:状態スタックをIGameStatesへのポインターのリンクリストにする。一番上の状態は独自の更新コマンドと入力コマンドを処理し、その下の状態を描画するかどうかを決定するメンバーisTransparentを持っています。 それから私はできました: states.push_back(new MainMenuState()); states.push_back(new OptionsMenuState()); states.pop_front(); プレーヤーの読み込みを表すために、オプションに移動してから、メインメニューに進みます。 これはいいアイデアですか、それとも...?他の何かを見るべきですか? ありがとう。

9
浮動小数点の非決定論に直面して決定論的ゲームはどのように可能ですか?
ネットワーク化されたRTSのようなゲームを作成するために、ここでゲームを完全に決定論的にすることを提案する多くの回答を見ました。次に、ユーザーのアクションを相互に転送するだけで、次のフレームがレンダリングされる前にすべてのユーザーの入力を「ロック」するために、表示されているものを少し遅らせるだけで済みます。その場合、ユニットの位置、ヘルスなどのようなものは、ネットワーク上で常に更新される必要はありません。すべてのプレイヤーのシミュレーションはまったく同じだからです。また、リプレイを行うために提案された同じことを聞いたことがあります。 ただし、浮動小数点の計算はマシン間、または同じマシン上の同じプログラムの異なるコンパイル間でも非決定的であるため、これは本当に可能ですか?その事実が、ゲーム全体に波及するプレイヤー(またはリプレイ)間の小さな違いを引き起こすのをどのように防ぐのでしょうか? 一部の人々は、浮動小数点数を完全に避けint、分数の商を表すために使用することを提案することを聞いたことがありますが、それは私には実用的ではありません-たとえば、角度の余弦を取る必要がある場合はどうなりますか?数学ライブラリ全体を真剣に書き直す必要がありますか? 私は主にC#に興味があることに注意してください。私が知る限り、この点ではC ++とまったく同じ問題があります。

7
2D Platformer AABBの衝突問題
AABBの衝突解決に問題があります。 最初にX軸を解決し、次にY軸を解決して、AABB交差を解決します。これは、このバグを防ぐために行われます:http : //i.stack.imgur.com/NLg4j.png 現在のメソッドは、オブジェクトがプレーヤーに移動し、プレーヤーを水平方向に押す必要がある場合に正常に機能します。.gifでわかるように、水平スパイクはプレーヤーを正しく押します。 ただし、垂直スパイクがプレーヤーに移動しても、X軸が最初に解決されます。これにより、「スパイクをリフトとして使用する」ことができなくなります。 プレーヤーが垂直スパイクに移動すると(重力の影響を受けて落下します)、最初はX軸にオーバーラップがなかったため、Y軸に押し込まれます。 私が試したのは、このリンクの最初の回答で説明した方法でした:2D長方形オブジェクト衝突検出 ただし、スパイクと移動オブジェクトは、速度ではなく位置を変更することで移動します。Update()メソッドが呼び出されるまで、次の予測位置を計算しません。言うまでもなく、このソリューションも機能しませんでした。:( 上記の両方のケースが意図したとおりに機能するように、AABBの衝突を解決する必要があります。 これは私の現在の衝突ソースコードです:http : //pastebin.com/MiCi3nA1 このバグは最初からずっとエンジンに存在していたので、誰かがこれを調べることができれば本当に感謝しています。これは真剣に衝突コードを見て夜を過ごし、「楽しい部分」に到達してゲームロジックをコーディングするのを妨げています:( XNA AppHubプラットフォーマーデモと同じ衝突システムを実装しようとしました(ほとんどのものをコピーアンドペーストします)。ただし、私のゲームでは「ジャンプ」バグが発生しますが、AppHubデモでは発生しません。[ジャンプバグ:http : //i.stack.imgur.com/NLg4j.png ] ジャンプするには、プレーヤーが「onGround」であるかどうかを確認し、Velocity.Yに-5を追加します。 プレーヤーのVelocity.XはVelocity.Yよりも高いため(図の4番目のパネルを参照)、onGroundは本来あるべきではないときにtrueに設定され、プレーヤーを空中でジャンプさせます。 プレーヤーのVelocity.XがVelocity.Yよりも高くなることはないので、AppHubデモではこれは起こらないと思いますが、間違っている可能性があります。 これを解決する前に、まずX軸で解決し、次にY軸で解決しました。しかし、それは私が上で述べたようにスパイクとの衝突を台無しにします。

4
ゲームに帽子があるのはなぜですか?
私は多くのゲームが帽子を持っている傾向があることに気付きました。なぜだろうか?ゲームに帽子を追加するのは、ある種の伝統ですか?この傾向がゲーム開発でこれほど人気が​​あるのはなぜですか?

7
現実的な星座のある夜空がないのはなぜですか?
アマチュアのスターゲイザーとして、夜のシナリオを持つ多くのゲームは、星が完全にランダムに配置されているように見える夜空のテクスチャを使用していることに気付きました。星図を見ずにゼロからアーティストによって作成されたようです。星が実際の夜空のように配置されている夜空テクスチャを使用して、よく知られている星座を作成してみませんか? ファンタジーやサイエンスフィクションのシナリオで行われるゲームは明らかに言い訳になりますが、なぜ地球上で行われるゲームはリアリズムに多くの労力を費やしますか?現実的な夜空を作成するには?

5
GameManager神オブジェクトを回避する方法は?
ゲームコードの構造化に関する質問の答えを読んだところです。ユビキタスGameManagerクラスについて、そしてそれが本番環境でどのように頻繁に問題になるのかと思いました。これについて説明しましょう。 まず、プロトタイピングがあります。素晴らしいコードを書くことを誰も気にせず、ゲームプレイが積み重なるかどうかを確認するために何かを実行しようとします。 その後、グリーンライトがあり、物事をきれいにするために、誰かがを書きますGameManager。おそらく、たくさんのを保持するために、おそらくGameStatesいくつかを保存するためGameObjectsに、実際には大きなものはありません。かわいい、小さな、マネージャー。 プリプロダクションの穏やかな領域では、ゲームはうまく形成されています。コーダーには、適切な睡眠の時間と、素晴らしいデザインパターンを使用して物事を構築するための多くのアイデアがあります。 その後、生産が開始され、もちろん、すぐにクランチタイムがあります。バランスの取れた食事はなくなり、バグトラッカーは問題を抱えて割れ、人々はストレスを感じ、昨日ゲームをリリースする必要があります。 その時点で、通常、GameManagerある本物のビッグ(滞在丁寧に)混乱。 その理由は簡単です。結局のところ、ゲームを作成するときは、すべてのソースコードが実際にゲームを管理するためにここにあります。この小さな追加機能またはバグ修正をに追加するだけで、他のすべてがとにかく保存されます。時間が問題になると、別のクラスを記述したり、この巨大なマネージャーをサブマネージャーに分割する方法はありません。GameManager もちろん、これは古典的なアンチパターン、つまり神オブジェクトです。それは悪いことであり、合併する痛み、維持する痛み、理解する痛み、変革する痛みです。 これを防ぐために何を提案しますか? 編集 名前のせいにするのは魅力的だと思います。もちろん、GameManagerクラスを作成することはそれほど素晴らしい考えではありません。しかし、同じことがクリーンに起こることができるGameApplicationか、GameStateMachineまたはGameSystem、ダクトテープの好きなプロジェクトの終わりまでになってしまうこと。命名に関係なく、ゲームコードのどこかにそのクラスがあります。これは現時点では単なる胚に過ぎません。どのモンスターになるかはまだわかりません。したがって、「ネーミングのせいにする」という答えは期待していません。これが発生しないようにする方法、コーディングアーキテクチャ、および/またはチームが本番のいずれかの時点で発生することを知って従うことができるプロセスが必要です。1か月間のバグ修正と土壇場での機能が、それらがすべて1つの巨大な保守不能なマネージャーになったという理由だけで、言うのを捨てるのはあまりにも悪いことです。

5
ハック&スラッシュゲームでキャラクターを動かすための良いテクニックを探しています
ハック&スラッシュゲームを作っているので、たとえばTorchlight、Diabloなどでキャラクターを動かしたいです。現在、フロアのすべての歩行可能な領域にノードのセットを生成しています。どこかをクリックすると、プレイヤーはノードの補間パスを通過します。これはあまり自然に見えません。プレイヤーはロボットのように動きます。敵もこのノードシステムを移動に使用し、同じ問題を共有していますが、もう1つ問題があります。敵がプレイヤーを発見すると、彼らは最短距離で彼に向かいます。時々、彼らは同じパスを使用し、プレイヤーを囲むのではなくプレイヤーに並ぶことがあります。敵に異なる経路を選択させ、プレイヤーを囲む方法を知りません。この問題を解決する方法を知っていますか?キャラクターの動きに別のアプローチを使用すべきでしょうか? 私の現在のテクニック: 懐中電灯のスクリーンショット: - -更新 - - これらの状況に対処する方法を知りたい: 状況1、途中で動的/静的な障害が発生する 状況2、敵にはプレイヤーへの道があります(私たちと戦うためにキューに入ります)
51 ai  rpg  movement 

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