ゲーム開発

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

2
ターンベースのクライアントサーバーカードゲーム-ユニキャスト(TCP)またはマルチキャスト(UDP)
私は現在、クライアントがソケットを介して送信されるメッセージを使用してターンベースの同期的な方法でサーバーと通信するカードゲームプロジェクトを作成することを計画しています。私が抱えている問題は、次のシナリオの処理方法です。 (クライアントは順番を取り、そのアクションをサーバーに送信します) クライアントはサーバーにそのターンの動きを伝えるメッセージを送信します(たとえば、テーブルに置く必要があるその手からカード5を再生します) サーバーはメッセージを受信し、ゲームの状態を更新します(サーバーはすべてのゲームの状態を保持します)。 サーバーは接続されたクライアントのリストを反復処理し、状態の変化を通知するメッセージを送信します クライアントはすべてリフレッシュして状態を表示します これはすべてTCPの使用に基づいており、今見てみると、それはObserverパターンのように見えます。これが私にとって問題であるように思われる理由は、このメッセージが他のクライアントのようにポイントツーポイントではないようであり、すべてのクライアントに送信したいためであり、同じメッセージをそのように。 メッセージをすべてのクライアントに送信できるように、UDPでマルチキャストを使用することを考えていましたが、これは、クライアントが理論的に相互にメッセージを送信できることを意味しませんか?もちろん、同期の側面もありますが、これは私が推測しているUDPの上に置くこともできます。 基本的に、このプロジェクトは本当にすべて学習に関するものなので、何が良い習慣になるのかを知りたいと思います。これからパフォーマンスの問題が発生するほど大きくない場合でも、とにかく検討したいと思います。 ただし、メッセージ指向ミドルウェアをソリューションとして使用することに関心がないことに注意してください(MOMの使用経験があり、TCPソケットが不適切な場合はMOMを除く他のオプションを検討することに興味があります!)。

1
非表示のボーンの実装
突然、目に見えないオブジェクト/ボーンを実装する方法がまったくわからなくなったような気がします。 現在、ハードウェアインスタンスを使用して、すべてのボーンのワールドマトリックスを頂点バッファーに格納し、それらすべてをパイプラインに送信しています。しかし、錐台カリングを処理するとき、または他の理由でシミュレーションでそれらを非表示に設定すると、それらの一部がランダムに表示されなくなります。 これは、表示されているユニットのマトリックスのみを使用して、フレームごとに最初からバッファーを効率的に再充填する必要があることを意味しますか?これは、多くの無駄な帯域幅を必要とするように思えます。
8 directx9 

1
エンティティシステムのアニメーション状態の抽象化
私は最近、エンティティシステムパラダイムを使用してゲームエンジンの設計を開始しました。つまり、コンポーネントの集約としてエンティティを持ち、実際のゲームを実装するシステムがあります。私はさまざまな面で困難を経験してきましたが、最も気になるのは、さまざまなコンポーネント/システムの抽象化/モジュール性です。具体的には、Playerいくつかのアニメーション状態があるとしましょう。Walking、Sleeping、Jumping、のいずれかのタイプとOpponent、エンティティは、例えば、同様にいくつか(必ずしも同じ)状態を有します。Walking、Hidingなど 各エンティティタイプのさまざまな(アニメーション)状態を処理するようにエンジンを設計するにはどうすればよいですか?エンティティタイプごとに異なるアニメーションシステムが必要ですか?正しいエンティティをレンダリングするためにアニメーションシステムに信号を送るフラグを使用する必要がありますか?また、さまざまなポーズに「ハードコードされた」列挙型の使用を回避できますか?スクリプトシステムがおそらく役立つことがわかりますが、もっと簡単な解決策があるとほぼ確信しています。

2
インバースキネマティクスに関する文献:関節の限界とその先
最近、私はインバースキネマティクスで遊んでいて、その結果にかなり感銘を受けました。当然、さらに詳しく説明したいと思いますが、どこから始めればよいかわかりません。特に、関節制限を導入したいと思います(つまり、プリズムジョイントの場合は、どれだけ移動できるか、ヒンジジョイントはどの角度にする必要があるかなど)。 現在、さまざまな関節タイプのヤコビ行列を作成する方法を理解しています。共同制限を実装するためのさまざまな方法について、特に(できれば無料で、できれば理解しやすい)文献を探しています。また、インバースキネマティクスの使用方法に関するさまざまなアイデアを見つけたいと思います。

1
AIやプレーヤーと比較して、マルチプレーヤーサーバーにキャッシュする必要があるデータは何ですか?
任意の数のプレイヤーと任意の数の敵がいる完全にネットワーク駆動の仮想の場所で、スムーズなAIシミュレーションを最適化するには、どのデータをサーバーのメモリにキャッシュする必要がありますか? 説明しようとすると、プレーヤーAがプレーヤーBからE、および敵AからGを見たとします。これらの各プレーヤーはプレーヤーAを見ますが、必ずしもお互いではありません。同じことが敵にも当てはまります。この質問をトップダウンの観点から考えてください。 多くの場合、たとえば、プレーヤーが銃を撃ったとき、サーバーは音を放射状の「信号」として処理します。この信号は、他のすべてのエンティティが到達し、「聞いて」反応します。 各AIエージェントの予算が非常に少ない場合、関係のないプレーヤーや敵を多く含む可能性のあるエリア全体でこれらの検索を常に行うことは問題のようです。 すべてのエンティティは、認識範囲から出入りするものをすべてキャッシュする必要がありますか?そのようなキャッシュでメモリをあふれさせることなく、近くのエンティティをトレースする優れた方法はありますか? 前の問題がうまく機能すると仮定した後に発生する可能性のある他のAI関連の問題はどうですか?何百もの敵、群れがある環境について話している。
8 ai  multiplayer 

3
システムごとにプロファイリングとメモリプーリングを行う方法
各サブシステムの管理されたメモリプールのプロファイリングと維持に興味があったので、サウンドやグラフィックスなどで使用されているメモリの量に関する統計を取得できました。しかし、これを行うために機能するデザインは何でしょうか?複数のアロケーターを使用し、サブシステムごとに1つだけ使用することを考えていましたが、その場合、アロケーターのグローバル変数が発生します(または、私にはそれが見えるようになります)。私が見た/提案した別のアプローチは、単にnewをオーバーロードし、パラメータのアロケータを渡すことです。 私はここでバウンティを使ってスタックオーバーフローについて同様の質問をしましたが、それはおそらく私が漠然としているか、主題に関する知識を持つ十分な人々がいないかのようです。

2
爆撃機のクローン、爆弾を行うには?
私はボンバーマンのクローンをいじって、ゲーム開発を学びます。 これまでのところ、タイル、移動、衝突の検出、アイテムのピックアップを行いました。また、疑似爆撃を行っています(グラフィックスと衝突のみで、実際の機能はありません)。 私は現在持っている機能でゲームのjsFiddleを作りました。フィドルのコードは非常に醜いです。地図をスクロールすると、爆弾を配置する方法がわかります。 とにかく、私がやりたいのは、爆弾に関する一般的な情報が含まれているオブジェクトです。 function Bomb(){ this.radius = player.bombRadius; this.placeBomb = function (){ if(player.bombs != 0){ // place bomb } } this.explosion = function (){ // Explosion } } それをコードに組み込む方法は本当にわかりません。爆弾を置くたびにvar bomb = new Bomb();できるようにするために、スクリプトに常に必要がありますか。 爆弾はどのようにダメージを与えますか?半径がなくなるか、オブジェクトがそれを止めるまで、すべての方向にX、Yを行うのと同じくらい簡単ですか?タイマーとしてsetTimeout(bomb.explosion、3000)などを使用できますか? 理論の簡単な説明やフィドルに基づくコード例であっても、どんな助けでもありがたいです。私がオブジェクトの方法を試したとき、それはコードを壊します。 更新:爆弾を配置し、配置した位置に応じて、一定時間後に削除します。しかし、最初の爆弾が爆発する前に爆弾を配置した場合、爆弾は1つしか削除されません(明らかに、最初の爆弾が配置されてからbombXとbombYが変更されているためです)。 今、私はこの問題を修正する方法を知る必要があります、多分爆弾の位置すべてで新しいアレイを作成しますか?これを行う最良の方法は何ですか? 現在のコード: function placeBomb(){ if(placebomb && player.bombs != 0){ map[player.Y][player.X].object = 2; bombX …

1
XNAスプライトフラッシュ効果
私はスプライトのすべての不透明なピクセルを白でレンダリングする方法を探しています(プレーヤーがダメージを受けたときにスプライトを白に「フラッシュ」するためなど)。これはWindows Phone 7にあります。 XNA 3.1でこれを行うために非常にシンプルなカスタムシェーダーを使用していましたが、WP7はこれらをサポートしておらず、代替の証明が難しいことを発見しました。 ヘルプや提案をいただければ幸いです。ただし、ゲーム内のすべてのスプライトの真っ白なコピーを手動で作成する必要はありません。

3
3D空間で衝突検出を実行するにはどうすればよいですか?
要約すると、今学期の最初から完全な3Dゲームを書く必要があります。今までのところ、私は自分の暇な時間に2Dゲームだけをプログラミングしていました。移行は難しくなく、ゲームはシンプルです。私の唯一の問題は、衝突検出です。私が見つけることができた唯一のものは、AABB、境界球、またはさまざまな物理エンジンの推奨事項でした。洞窟システム内を自由に移動する潜水艦をプログラムする必要があります。物理ライブラリを使用できないので、上記のいずれも私の問題を解決しません。 これまでは、衝突検出にSATを使用していました。同様の優れたアルゴリズムはありますが、3D衝突用に作られていますか?私は八分木や他の最適化について話しているのではなく、3Dポリゴンの1つのセットと別の3Dポリゴンのセットの直接衝突検出について話している。SATを2回使用して、メッシュを上と横から投影することを考えましたが、3D空間を凸形状に分割するのも難しいようです。また、それはoctreesを使ったとしても、あまりにも多くの計算のように思えます。 専門家はそれをどのように行うのですか?誰かがいくつかの光を当てることができますか?

3
2Dゲームで非反復的なピクセル背景はどのように作成されますか?(例:Superbrothers:Sword&Sworcery EP)
Superbrothers:Sword&Sworcery EPなどのゲームで、複雑でリッチで反復性のない2Dピクセルの背景を作成するためにどのような方法が使用されていますか?ゲームのスクリーンショットを調べると、どこにもタイルを検出できません。繰り返しはないようです: このような背景は、単純に大きな独自の画像として作成されているのでしょうか、それとも、開発者が繰り返しスプライトやタイルを使用することについて非常に賢いのでしょうか。 サブ質問:私はRAMの制限のためにタイルが数十年前に非常に重要であったことを理解していますが、今日のゲームが単一の大きな背景画像を代わりに使用できると仮定することは合理的ですか?S:S&S EPのようなiOSゲームでも?
8 2d  graphics 

2
フォントは著作権の対象ですか?
フォントTrajan Proを使用したいのですが、合法かどうかはわかりません。私はフォントと著作権について少し読みましたが、私が得ることができる唯一のことは、ライセンスとそれが著作権で保護されている場所に依存し、時にはまったく著作権がないことです。 では、フォントTrajan Proやその他のフォントが著作権で保護されているかどうかはどうすればわかりますか?
8 legal  fonts 

3
ゲームのコンセプトに対する知的所有権
クライアントの場合、アイテムをパズルから取り出す小さなパズルゲームを作成している可能性があります。コンセプトはこのゲームに強く似ています: http://www.alibaba.com/product-gs/355972089/Car_Park_Game_Brain_Teaser_IQ.html しかし、車や駐車場についてではなく、私たちは独自の「レベル」を作成します。 ゲームはボードゲームではなく、スマートフォンゲーム(iOS + Androidデバイス)になります。 しかし、ThinkFunはそのコンセプトに基づいているので、このようなゲームを作ることはできませんか?そして、「線」はどこに受け入れられるのでしょうか? このゲームは無料で提供され、違いが見られる場合、私たちは米国以外の会社(デンマークのヨーロッパに拠点を置く)です。

2
グラフを段階的に生成するにはどうすればよいですか?
テレポーターで接続された手続き的に生成された場所でゲームの世界を構成したいという新しいプロジェクトを始めたところです。少し調べてみたところ、誰が議論しているかによって、「グラフ理論」または「流血複雑」と呼ばれることがわかりました。残念ながら、グラフの生成に関する情報はほとんど見つかりませんでした。私が見たほとんどのツールは、既存のグラフを調べることに向けられています。 用語が正しく整理されていると仮定すると、私の要件はグラフが次のとおりであることです。 シンプル—位置(頂点)にはそれ自体に接続するテレポーター(エッジ)がなく、2つの頂点にそれらを接続する複数のエッジがあるべきではありません。 connected —グラフ内の任意の2つの頂点の間を移動できるはずです(ただし、パスを見つける必要があるとは思いもしません。プレイヤーがパスを選択すれば、パスを見つけることができると知っていれば十分です)。 循環—任意の2つの頂点間に複数のパスが必要です 無向—すべてのエッジはどちらの方向にも移動できます 無限—プレイヤーが望めば、無限に移動できるはずです。探索されていない最も外側の頂点に近づくにつれて、グラフは徐々に生成され続けます。 ローカルで有限—頂点の次数は、プレーヤーが訪問した後は決して変更されません。 安定したラベル—各頂点は、それ自体がシードから手続き的に生成される場所を表します。プレイヤーがそこを移動するために使用したパスや、グラフがどれだけ大きいかには関係なく、同じシードを頂点に割り当てる必要があります。 頂点として2Dパーリンノイズの極大値を使用する(入力xとyをラベルとして使用できるようにする)ことについていくつかのアイデア(まだ実装しようとしていません)がありましたが、それは不格好で複雑すぎます。 このようなグラフを生成するより良い方法はありますか?私はPanda3Dとnumpyを使用してPython 2.6で開発しています。もちろん、この問題を解決するために他のライブラリを含めてもかまいません。 編集する 私は自分の要件のいくつかを説明するのが苦手だったと思うので、それはイラストの時間です!うまくいけば、これは物事を片付けるでしょう。 ラベルが安定しているということは、たとえば、プレーヤーAがたくさんの探索を行って、特に開始位置に戻る循環パスや猫のような山を見つけられるようにしたいということです。彼のゲームは次のようになります(頂点にはシードとエッジがあり、プレイヤーがトラバースした順序で番号が付けられています)。彼は頂点8329(緑)から始め、ハッピーキャットマウンテンは頂点6745(青)にあります。 プレイヤーAの仲良しプレイヤーBは猫のファンなので、彼女に見せたいと思っています。彼は彼女に彼の世界のルートシードと興味のある山へのより短いルートに沿った方向を与えます。彼女のゲームは次のようになります。 私が現在最も苦労している問題は、「彼女の探索が同じ経路をたどっていないときに、プレーヤーBに同じシードを生成するにはどうすればよいですか?」です。 これが、Perlinノイズを使用するアイデアに私を導いたものです。同じルートシードが使用されている限り、最大値は移動しないため、それらの座標は安定した頂点シードとして使用できます。

3
どのオンラインゲームでAI開発を練習できますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 5年前休業。 私はオンラインの世界のアバターのための人工知能の設計方法論を実験するプロジェクトに取り組んでいます。ここのオンラインの世界は解釈にかなりオープンです。たとえば、Second LifeはCounter Strikeと同じように適用できます。これらの実験を実行するには、まず問題の世界のインテリジェントエージェントを開発する必要があります。しかし、私は正直なところ、これに使用できるゲームにかなりこだわっています。 私の好みはMMORPGをプレイするためのインテリジェントな「ボット」を開発することでしたが、そのようなゲームの法的制限により私は妨げられました。同様に、ほとんどのFPSゲームでは、人間のプレーヤーの代わりにインテリジェントエージェントを使用することは不正行為と見なされます。 もちろん、代替手段はNPCボットを作成することです。特定のプレーヤーを置き換えるのではなく、プレーヤーと一緒に世界に住むインテリジェントエージェント。しかし、私は自分でもインテリジェントな対戦相手を作成できるゲームを見つけるのに苦労しています。 主な要件は、サードパーティのプログラムが通常プレーヤーが利用する関数呼び出しを使用し、世界の状態に関するフィードバックを読み取ることができるゲームであると思います。 Quake IIIとUnreal Tournamentは以前から提案されていましたが、これらはすでにこの研究プロジェクトの作業の主題になっています。 自分のオンラインゲームを最初から作成するのではなく、ミドルウェアやAPIなどを通じて、人工的にインテリジェントなプレーヤーまたはボットを作成できるゲームはどれですか。
8 ai  online 

2
ピクセルパーフェクトな衝突検出を回転で処理するにはどうすればよいですか?
誰かがAndroidでビットマップを使用して回転ピクセルパーフェクト衝突検出を達成する方法について何かアイデアを持っていますか?それとも一般的にはそれについてですか?私は現在ピクセル配列を持っていますが、任意の度数に基づいてそれらを操作する方法がわかりません。

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