ゲーム開発

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

1
グリッド内のノードのシーケンスを検出する
下の画像から、ボード上で最も最適なシーケンス(緑色の線)を検出する必要があります。青/赤の線は可能性を表していますが、最高の動きではありません。 ルールは次のとおりです。 同じタイルで、隣のタイルに移動できます(斜めが有効です) 一度タイルにアクセスすると、再度アクセスすることはできません。 各ノードをループし、その隣接ノードを調べ、再帰的に通過することを考えました。可能な動きを見つけたら、それを構造に入れることができます。すべての可能な動きが見つかったら、ノードの数が最も多い動きを選択します。ノードに一致する複数のネイバーがある場合、より困難になります。 だから、私が使用できるアルゴリズムはありますか?ある種の洪水を考えていましたが、それはルール#2を満たしていません。 要求に応じて、ここに同様のゲームプレイのビデオがあります。http://youtube.com/watch?v=eumnCTG0AE8
12 algorithm 


2
クワッドツリーの地形分割-わかりません
私が読んだ論文のほとんどは、地形を何らかの形で四分木に基づいています。38ページでこれを参照してください。 http://www.slideshare.net/repii/terrain-rendering-in-frostbite-using-procedural-shader-splatting-presentation?from=ss_embed 最初の点は下の2つと矛盾していませんか?葉ごとに33x33の固定された頂点グリッドをどのようにして、クアッドツリーの適応分割について説明できますか?用語は紛らわしく、これについて明確に理解していただければ幸いです! 私の仮定は次のとおりです。 クワッドツリーの変更がヒットするたびにパッチを再配置しますか? 地形の境界から始まる四分木。 観測者の位置まで繰り返します。 制約バージョン(隣人間のレベル差は1以下) 錐台カル。 結果の各リーフに地形パッチを配置します。スケールは異なりますが、解像度は常に33x33です。

1
トゥームレイダーのような登山システムのプログラミング
墓侵入者/未踏で見られるような登山システムをプログラムする方法を知っている人、または知っている人がいるのだろうかと思いました。 ゲーム世界のすべての登山可能な位置にバウンディングボックスを置いて、衝突をチェックすることを考えていました。プレーヤーが箱の中にいた場合、彼らは端から「ぶら下がっています」。誰より良いアイデア/改善がありますか? 私はすでにdirectx9を使用してレンダリングをセットアップしており、後でアニメーションを心配することになりました。

3
XNAでピクセル完璧な衝突検出を得る良い方法はありますか?
XNAでピクセルパーフェクトコリジョンを検出するためのよく知られた方法(またはおそらく再利用可能なコード)がありますか? これは、最初のパス、衝突のクイックテストにポリゴン(ボックス/三角形/円)も使用し、そのテストが衝突を示した場合、ピクセルごとの衝突を検索すると想定しています。 スケール、回転、透明度を考慮する必要があるため、これは複雑になる可能性があります。 警告:以下の回答のリンクのサンプルコードを使用している場合、十分な理由でマトリックスのスケーリングがコメント化されていることに注意してください。スケーリングを機能させるためにコメントを外す必要はありません。

2
OpenGLの最も一般的な3Dモデル形式
私は、AndroidデバイスでOpenGL ESを使用し始めたばかりの初心者です。OpenGLを練習するために、私は小さなゲームエンジンを作成したかったので、最高の3Dモデルファイル形式はどうなるかと考えていました。 同じ形式の無料モデルにも興味があります。 何を指示してるんですか?
12 opengl  3d  models 

4
宝石をちりばめたようなゲームの背後にあるロジック
私がやっているプロトタイプには、宝石をちりばめたようなミニゲームがあります。2D配列のグリッド(int[,])を使用すると、ユーザーがいつマッチを形成したかを知ることができますか?私は水平方向と垂直方向のみを気にします。 私は頭のてっぺんから、それぞれの方向を見るだけだと思っていました。何かのようなもの: int item = grid[x,y]; if(grid[x-1,y]==item) { int step=x; int matches =2; while(grid[step-1,y]==item) { step++; matches++ } if(matches>2) //remove all matching items } else if(grid[x+1,y]==item //.... else if(grid[x,y-1==item) //... else if(grid[x,y+1]==item) //... もっと良い方法があるはずです。ある?


2
GUIでは、ボタンが押されたときまたは離されたときに入力を処理する必要がありますか?
ゲームのメニューシステム(レベル、オプションなどの選択)では、プレーヤーはゲームパッドのaボタンを押して次の画面に進みます。メニューシステムをコーディングして、ボタンが放されるまで待機してからアクションを実行します(つまり、次の画面を表示します)。最近のプレイテストのフィードバックでは、ボタンを押したらすぐにアクションを起こすという逆の方法を提案しています。私は興味があります、これが処理される標準的な方法は何ですか、そしてそれは違いを生みますか?
12 input  gui 

4
今日のPHPはブラウザゲームにどの程度関連していますか?
私は数年前に適度に成功した2つのブラウザゲームの主任開発者でしたが、まもなく新しいゲームに取り組む予定です。当時、私はそれらを純粋なPHPで作成しました(テンプレートエンジンなどはありません)。 新しいゲームの開発を始めたいのですが、しばらくの間、Web開発の世界から離れていました。読み返してみると、Rails、Django、Node.jsなどについて多くのことを聞いていますが、Python、Javascript、およびその他についての私の方法はよく知っていますが、経験はありません。 私の質問は次のとおりです。古い方法でPHPを使用する場合、自分で物事を難しくしているでしょうか。もっと「トレンド」なものを選ぶことは、私の開発に本当の影響を与えるでしょうか? さらに、これらのより新しいツールを使用してブラウザゲームを具体的に開発することに関連する指針はありますか?

3
粒子を滑らかなブロブとして描く
ゲーム/グラフィックスの開発は初めてで、パーティクル(2D)で遊んでいます。液体/水のように、粒子を互いにブロブとして近づけたい。ブロブが滑らかではない(そして大きすぎる)ため、大きな円を重ねて描画したくありません。物理学はあまり知りませんが、表面張力に似たものが欲しいと思います。 stackexchangeやGoogleで何も見つかりませんでした(正しいキーワードがわからないかもしれません)。これまでに2つの可能な解決策を見つけましたが、アルゴリズムに関する具体的な情報を見つけることができません。 それらの1つは、粒子の凹包を計算することです。等価クラスを作成することにより、ブロブを計算できます(「互いに近い」関係に)。不思議なことに私は見つけることができませんでした任意の凹面船体を計算する方法を説明するアルゴリズムを。多くの投稿(およびstackexchange間)は、これを行うライブラリまたは商用製品にリンクしています(C#で動作するにはライブラリが必要です)が、アルゴリズムはありません。また、このソリューションには、粒子の円に問題があり、中央の空きスペースが検出されない場合があります。 凹型船体の研究中に、アルファシェイプと呼ばれるものを見つけました。これはまさに私がやりたいことのように思えますが、凹型船体と同じように、実際にどのように機能するかを説明する情報源は見つかりませんでした。プレゼンテーション資料をいくつか見つけましたが、先に進むのに十分ではありません。私以外の誰もが知っている大きな秘密のようなものです:-/ 凹型の船体またはアルファ形状を計算した後、ベジエ曲線にして滑らかで素敵なものにします。 私のアプローチは少し複雑すぎると感じていますが、おそらくこれを間違った方法で解決しようとしていますか?あなたが私の問題に対する他の解決策を提案するか、私が行方不明になっている部分を説明できるなら、私はとても幸せで感謝します:-) ありがとう。

4
X、Y、Z座標標準?
それにもかかわらず、ゲームの3D開発は初めてです。チュートリアルと例を読むと、X / Y / Z座標は最初の推測よりも少し逆になっているように見えます。 人がフィールドの周りを歩いていると、X / Y位置が変化し、ジャンプまたは丘を上ったり下ったりすると、Z位置が変化すると想像していました。私の仮定は間違っているように見えます。なぜなら、フィールドの周りを歩くとX / Zが変わり、丘をジャンプしたり、上下に移動するとYが変わるからです。 1)私の観察は正しいですか?3Dは私にとって新しいものであり、物事について適切に考えていないかもしれません。 2)X / Zである水平移動とYである垂直移動の背後にあるロジックは何ですか? 3)XNA FrameworkでX / Yを水平方向の移動として使用し、Zを垂直方向の移動として使用するのは、私にとってそれほど間違っているでしょうか?

4
GLM:四元数に対するオイラー角
私が問題を抱えているので、GL数学(GLM)を知っていることを望みます、私は破ることができません: オイラー角のセットがあり、それらの間のスムーズな補間を実行する必要があります。最良の方法は、それらをクォータニオンに変換し、SLERPアルゴリズムを適用することです。 私が抱えている問題は、オイラー角でglm :: quaternion を初期化する方法です。 GLMドキュメンテーションを何度も読みましたが、適切なが見つからずQuaternion constructor signature、3つのオイラー角が必要です。私が見つけた最も近いものは 、角度の値とその角度の軸をとるangleAxis()関数です。注意してください、私が探しているのは、方法、解析方法RotX, RotY, RotZです。 参考までに、これは上記のangleAxis() 関数のシグネチャです。 detail::tquat< valType > angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z)

4
アドベンチャーゲームのストーリーラインを開発するためのオンラインサービスおよび/またはアプリケーション[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 4年前に閉鎖されました。 友達と私はアドベンチャーゲームについて話していました。ゲームには余計な可能性があり、プレイヤーは各段階でこの幅広い選択肢から選択して何かをすることができます。各決定には結果があり、それが物語を終わらせるかもしれないし、終わらないかもしれない。 結果は次のようになります。 (flashforwardシリーズS01E17からの写真) あなたがヒーローのシーズン1を見たなら、アイザック・マンデスのワークショップでストリングとして表される同様のタイムラインもあります。質の悪い例で申し訳ありませんが、今のところ、これ以上良いものは考えられません。 タイムラインの作成に使用できるWebサイトまたはアプリケーションを知っていますか? 次の機能が必要です。 イベントをボックスとして表現する機能。 遠方のイベントを相互に接続する機能。 シーン上のイベントを自由に移動する機能 シーンを簡単に拡大する機能 イベント間の接続を表す線には、いくつかの色オプションが必要です アイデアを簡単に共有する WYSIWYGエディターを使用する方がはるかに良い イベントの大規模なシーンで簡単に探索 最後に、サンプル画像にあるようなボードを作成できるアプリケーションを知っている場合は、それを共有してください
12 storyboard 

2
マルチプレイヤーFPSサーバー側のパフォーマンス
これはMMOのパフォーマンスに関連していますが、質問は帯域幅に関するものです。これはCPUの負荷に関するものです。 node.jsとwebGLを使用して簡単なFPSを作成しました。これは非常にシンプルで、MIDI MazeのBuddyMazeクローンによく似ています。ほとんど何も起きていません。全員が2次元(高さなし)で動き、単純な発射体を発射し、壁にぶつかります。 今、サーバーに複数の接続を行い、すべてのプレイヤーが円を描くように高速で射撃する場合、サーバーがコアを使い果たして速度が低下する前に、ゲームで約15〜20人のプレイヤーを獲得できます。これは、サーバーで30 fpsで実行している場合です。10 fpsでは、約25-30の接続が得られます。これはかなり悪いことです。ゲームにはすぐにもっと多くのことが必要になるからです。これを実現するためには、より多くのプレイヤーにフィットさせる必要があります。 私の兄弟は、同僚のTF2サーバーに関する統計情報をいくつか指摘しました。彼のサーバーは私たちのサーバーよりもスペックが低いですが、TF2を実行します。明らかに毎秒500ティック、コアあたり36ユーザーという非常に複雑なゲームです。また、現在、使用する帯域幅よりもはるかに多くの帯域幅を消費していますが、それ以上下げることはまだ試みていません。 これはどのように可能ですか?サーバーのパフォーマンスをこの程度まで向上させるには、どのようなトリックがありますか?私が知っているいくつかのことは次のとおりです。 サーバーのフレームレートを下げ、クライアントの位置を補間します。いくつかの利点が得られましたが、明らかにTF2サーバーはこれを気にしません。 クライアントでの衝突検出などの高価なことを行い、サーバーで頻繁にそれを検証します。私はまだこれを引っ越していません、今夜にしましょう。それでも、私はそのような大きな利益を期待していません。 計算を最小限に抑えるために、競技場を地域(四分木)に分けます。この機会はまだありません。 node.jsはTF2が使用しているものよりもかなり遅く、この種の高強度タスクには適さない可能性があるという残念な可能性を検討しました。 それはすべてサーバー構成の魔法ですか? それでは、サーバー上で最低限必要なことだけを行いながら、完璧なゲーム体験を維持するための業界の他のトリックは何ですか?「CPU時間を節約するためにクライアントを延期する」と「クライアントを信頼しない」との間に大きな矛盾があります。 更新 プロファイリングは、私がこれまでに発見した唯一のマントラです。コードにいくつかのタイミング関数をすばやくラップし(ありがとう、FP!)、予期しないことを発見しました。データをクライアントにブロードキャストする行為は、実行時間のほぼすべてを占めています。具体的には、その約90%です。さらにテストを行ったところ、この時間はクライアントの数とデータのサイズの両方に依存していることが判明しましたが、データのサイズに大きく依存しています。ユーザー数が20人の場合、全データの代わりに「{}」のみを送信することで、ブロードキャスト時間を90%に24ミリ秒から2ミリ秒以上に短縮しました。ただし、ユーザーが5人のみの場合、ブロードキャストには約0.5ミリ秒かかります。したがって、ここでいくつかの最適化を行う必要があることは明らかです。 最初の最も明らかな改善点は、見通しの確認です。これにより、データを気にする人の数と、関係者に送信されるデータの量の両方が減少します。私が試すことができるこの分野には、ブロードキャスト操作のコストを最小限に抑えることに焦点を当てた他のトリックがありますか?

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