ゲーム開発

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

1
マップを生成する方法
小さなゲーム用に、単純な「ランダムに」生成されたマップを作成したいと考えています。 ゲームは、陸地と海域のある世界のトップダウンビューで構成されています。たとえば、世界の簡単なアウトラインマップを考えてください。 私が今まで見た中で最も近いと思うのは、古いSimCityゲームのレベルジェネレーター、または多くの島などに対して単一の大陸を優先的に設定できるCivシリーズです。 どのようなアルゴリズムが適していますか?マップは適度にズーム可能である必要があるため、「全世界」ビュー、さらにズームインしたローカルビューを使用できますが、後で整理するつもりです。 最初は、高さの概念は必要ありません。2つの領域(陸と海)だけです。後で拡張することもあります。
27 algorithm 

4
Facebookゲーム開発に参加するにはどうすればよいですか?[閉まっている]
Facebookのようなプラットフォームで面白いゲームを作るかもしれないと思ういくつかのアイデアがあります。それらはソーシャルでカジュアルです。従来のC ++ゲーム開発のバックグラウンドからFacebook開発に参加する方法について、アドバイスはありますか?APIの複雑さなど、他のWebベースのゲームの開発とFacebookゲームの開発を区別する特別なものはありますか? これから始めるには、おそらくある種の専門的な企業ではなく、趣味のレベルになるでしょう。インディーレベルのFacebookゲームの作成について知っておくべきことはありますか?
27 facebook 


4
トップダウンRPG運動w /修正?
ゼルダ:過去へのリンクをプレイしたことを願っていますが、間違っている場合は修正してください。しかし、そのような2D、トップダウンのキャラクターの動きを少し修正してエミュレートしたいと思います。他のゲームでも行われていますが、この参照が最も簡単に関連していると思います。より具体的には、私が話している動きと修正の種類は次のとおりです。 ポケモンなどのタイルベースの動きに限らず、動きパッドを1回タップすると、その基本方向に1マス移動するフローティング動作。このフローティング動作は、斜めの動きを実現できるはずです。 西を歩いていて、北東/南西方向に斜めの壁に来ると、コントローラーの左(西)を押し続けても、南西​​の動きに修正されます。これは、両方の方向で修正する両方の対角線で機能するはずです。 ドアや廊下に向かって真っ直ぐ歩いて数ピクセル離れている場合、廊下を歩いたり廊下を歩いたりするように修正されます。つまり、角にぶつかるとホール/ドアに押し込まれます。 私はこれを達成するための効率的な方法を探しましたが、運がありませんでした。明確にするために、私はNPCの動きではなく、人間のキャラクターの動きについて話しています。この種の運動に関する彼らのリソースは利用可能ですか?Wikiまたは何かで説明された方程式またはアルゴリズム? XNA Frameworkを使用していますが、これを支援するものはありますか?
27 xna  2d  rpg  movement 

8
ゲーム内チュートリアルの決定
私は、エネルギー貯蔵や冷却水温度などの混乱を招くメカニズムでゲームに取り組んでいます。新しいプレーヤーをすぐに習得させる最良の方法は何ですか?ゲーム内のさまざまなチュートリアル方法の長所と短所は何ですか?私は注釈付きのスクリーンショット付きのチュートリアルを考えていましたが、それは科学の教科書のように聞こえます(「アクティブタワーはエネルギーを消費し、熱を発生させるタワーです」)。その他の方法は次のとおりです。 プログラミングがやや難しいゲーム内チュートリアル ゲーム内およびゲームオーバー後に表示されるヒント エネルギーと冷却剤なしで難易度を下げる

12
角度の比較と違いの解決
角度を比較して、それらの間の距離を把握したいと思います。このアプリケーションでは、度単位で作業していますが、ラジアンや卒業生でも動作します。角度の問題は、モジュラー演算、つまり0〜360度に依存することです。 1つの角度が15度、1つの角度が45度であるとします。差は30度で、45度の角度は15度の角度よりも大きくなります。 しかし、これは、たとえば345度と30度の場合に破綻します。それらは適切に比較されますが、それらの差は正しい45度ではなく315度です。 どうすれば解決できますか?アルゴリズムコードを書くことができます。 if(angle1 > angle2) delta_theta = 360 - angle2 - angle1; else delta_theta = angle2 - angle1; しかし、私は比較/分岐を避け、完全に算術に依存するソリューションを好むでしょう。


7
動く球体間の衝突を検出するための良いアルゴリズムは何ですか?
(衝突検出の目的で)3Dオブジェクトが球体でゲーム内で表現される場合、球体間の衝突を検出するための良いアルゴリズムは何ですか? 各オブジェクトに最後のフレームの位置と新しい(望ましい)位置がある場合、球体が前のフレームで交差せず、2番目のフレームで交差しない衝突を識別するための優れたアルゴリズムは、しかし、それらはその間のどこかで交差しましたか?

8
球を作成するためのアルゴリズム?
誰もが、la緯度線、lo経度線、および半径の量で球を手続き的に作成するアルゴリズムを持っていますrか?Unityと連携するために必要なので、頂点の位置を定義してから、インデックスを使用して三角形を定義する必要があります(詳細)。 編集 私はコードを統一して機能させることができました。しかし、私は何か間違ったことをしたかもしれないと思います。を上げるとdetailLevel、頂点とポリゴンを移動せずに追加するだけです。何か忘れましたか? 編集2 法線に沿ってメッシュをスケーリングしてみました。これは私が得たものです。私は何かが欠けていると思います。特定の法線のみをスケーリングすることになっていますか?

8
高価なソフトウェアなしでFlashゲームを開発するにはどうすればよいですか?[閉まっている]
私は暇なときにフラッシュゲームを書いて遊んでいますが、ここまでは、Adobe Flash Professionalの試用版を使用していました。私はFlashDevelopを知っていますが、FlashDevelopを使用して純粋に開発するワークフローに関しては、それらのドキュメントは基本的に存在しません。 FlashDevelopだけでFlashゲームを開発するための優れたチュートリアルを知っている人はいますか? あるいは、Flash Professionalの代わりに使用する他の無料/安価なソフトウェアの推奨事項はありますか?


1
このジオメトリシェーダーがプログラムをそれほど遅くするのはなぜですか?
OpenGLプログラムを使用しており、地形メッシュをレンダリングしています。頂点バッファーで頂点を移動しますが、フラグメントシェーダーではまだ実際に色付けしていません。ジオメトリシェーダーを1つずつ追加します。 ジオメトリシェーダーを追加する前に、パイプラインのフラグメントと頂点のシェーディングステップをプログラミングしていたとき、約30+のフレームレートを取得していました。ちょっぴり気付かないくらいでした。ジオメトリシェーダーを追加すると、1秒あたり約5フレームになります。どうして?これは、ジオメトリシェーダー全体です。 #version 420 layout (triangles) in; layout (triangle_strip, max_vertices = 3) out; void main() { for (int i = 0; i < gl_in.length(); i++) { gl_Position = gl_in[i].gl_Position; EmitVertex(); } EndPrimitive(); } これは、ジオメトリシェーダーなしでOpenGLが行っていたこととまったく同じではありませんか?
27 opengl  glsl 

2
クアッドツリーとグリッドベースの衝突検出
私は4人のプレイヤーが協力するrタイプのゲームを作成しており、衝突検出コードを実装しようとしています。衝突検出の処理方法に関する多くの記事や資料を読みましたが、何をすべきかを考えるのに苦労しています。クワッドツリーが最も一般的な方法であるように見えますが、一部のリソースではグリッドベースのソリューションに言及しています。前のゲームで検出にグリッドを使用したことで、私はそれに満足していますが、実際には四分木よりも優れていますか?どちらが最高のパフォーマンスを提供するかわかりません。また、少しベンチマークを実行しましたが、両方のソリューションに大きな違いはありません。 一方が他方より優れていますか?またはよりエレガント?どれを使うべきか本当に分かりません。 どんなアドバイスも大歓迎です。ありがとう。

2
Unityで正しく線を引く方法
私は、より正式に言われている単一のポイントから数本の線を引く必要があるゲームに取り組んでいます 座標がx、yの点Aが与えられた場合、i行目にxi、yiという名前の座標があるn本の線を描画します。Unity3D内のLineRenderer機能を考えると、ポリラインのみをレンダリングするため、特定のポイントから複数のラインを描画できませんでした。 現在、行を正常にレンダリングするDebug.DrawLine()メソッドを使用しています。Unityの例に示されているGL.Begin()を使用してみましたが、線が描画されているのが見えません。 私の質問は、これを行う他の方法はありますか?そうでない場合、再生モード内でDebug.DrawLine()で描画されている線を表示する方法を教えてください。私はGizmos.DrawLine()を使用できることを見てきましたが、その使用法をよく理解していませんでした。
27 c#  unity 

2
接続されたパスを持つ手続き型2Dマップのアルゴリズム
解決すべき問題:すべての部屋が接続されているタイルベースのゲームのランダムな2Dダンジョンマップを生成します。 現在のソリューションよりも優れたソリューションを探しています。 私の現在の解決策は、2つのアルゴリズムを実行することです。最初の部屋ではダンジョンを生成します。2番目は、すべての部屋が接続されていることを確認します。私は他の解決策が存在するかもしれないと思っています。より高速および/または簡単など。速度は実際には問題ではありませんが、実際のコストをかけずに速度を上げることができれば、それは良いことです。さらに重要なことは、私と他の読者は、問題にアプローチして解決するさまざまな方法を学ぶことができるということです。 以下は私の現在の実装です。現在、部屋には出口がないか、2、3、または4方向に出口があります。 ダンジョンルームの生成 セットアップ:現在の部屋を左上の部屋に設定します。 部屋の有効な部屋タイプを取得します(有効な部屋タイプとは、ダンジョンの出口がなく、上の部屋と左の部屋の出口に一致する出口があるタイプです。以下の手順2のために残されました)。 部屋を置いて、x座標を1ステップ進めます。X座標がダンジョンの幅を超える場合、X座標を0に設定し、Y座標を1ステップ進めます。y座標がダンジョンの高さを超えている場合、完了です。 #1から繰り返します。 次に、すべての部屋が接続されているかどうかを確認します。すべてが接続されていない場合は、2番目のアルゴリズムを実行します。接続されるまで。 すべての部屋が接続されているかどうかを確認する セットアップ:パスを表す整数の2Dマップを作成し、エントリを「未処理」(まだ通過していない)-1に初期化します。現在のパスを追跡する開始パスインデックス整数を1に設定します。チェックする部屋のスタックに追加することにより、現在の部屋を左上の部屋に設定します。 スタックにチェックするルームが含まれる場合、ポップしてルームのパスインデックスを現在のパスインデックスに設定します。スタックに部屋が含まれていない場合は、パスインデックスを増やし、まだ処理されていない部屋を取得するまで、列ごと、行ごとに進めて部屋を取得してください。部屋が見つからない場合は、完了です。 部屋の左側に出口があるかどうかを確認します。まだそこにない場合、スタックに左の部屋を追加している場合。 下方向、右方向、および上方向について手順2を繰り返します(部屋を上方向から時計回りに移動するスタックを使用しているため)。 手順1から繰り返します。 パスインデックスのカウントが1より大きい場合、接続されていない部屋があります。 接続されていない部屋がある場合は、パスインデックスで部屋をグループ化し、最大のパスのインデックスを取得し、他のすべての部屋をそれらの部屋に接続します。これは進行中の作業ですが、私の(現在の、「強烈な」)計画は、部屋グループ(最初の部屋を除く)の各部屋を通過して、biggeset部屋グループへの水平または垂直パスがあるかどうかを確認することです。その場合、間に部屋を挿入/更新することにより、そこに水平/垂直パスを作成します。すすぎ、繰り返します。glyい、はい、しかしそれは視覚的なパターンの点で目立たないものなので、その意味で機能します。

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