ゲーム開発

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

3
2D RTSのグループでのAI移動の終了位置の決定
私は、RTSゲーム(実際にはある種のゲームエンジンのデモ)を作成しました。このゲームでは、ユーザーがゲームで行う基本的な操作は、兵士の束を選択し、マップを右クリックして、指定された場所に移動します。これはJavaScriptであり、ここ(コード)で遊ぶことができます。 兵士が現在の場所から目的地にどのように移動するかという問題を無視して、私の質問は彼らの実際の目的地が何であるかを決定することについてです。これが私がこれまでに試したことです: 試行1:選択したすべての兵士に、マウスをクリックした座標に移動するように伝えます。これは奇妙な振る舞いで、すべての兵士が不自然にターゲットの周りに集まります。 試行2:選択されたすべての兵士の平均座標を見つけ、各兵士のその中心点からのオフセットを見つけ、最後にそのオフセットをマウス座標の周りに変換します。これは、選択した兵士が離れている場合、ターゲットに近づかないことを除いて、正常に機能します。 試行3:マウス座標の周りにグリッドを作成し、選択した各兵士をグリッドのセルに配置します。各兵士が割り当てられたセルに到達すると、これはうまく機能します。ただし、グリッドセルには兵士が生成された順序で割り当てられるため、衝突する場合があります(つまり、右側のすべての兵士が左側に移動しようとします)。これは不自然に見えます。 試行4:以前と同じようにグリッドを使用しますが、最初に兵士を場所別に並べ替えて、それらが適切に並ぶようにします。つまり、グループの下をクリックした場合、グループの最下部の兵士は、グリッドの最下部に配置されます。彼らの目的地に到達します。これはかなりうまく機能しますが、不具合が時々あり、その理由はわかりません。 次に、宛先座標を決定する関数を示します。 function moveSelectedSoldiersToMouse() { var w = 0, h = 0, selected = []; // Get information about the selected soldiers. myTeam.soldiers.forEach(function(soldier) { if (soldier.selected) { selected.push(soldier); w += soldier.width; h += soldier.height; } }); var numSelected = selected.length, k = -1; if (!numSelected) …

3
オンラインマルチプレーヤーはどのくらい重要ですか?
私は4人のプレイヤーが参加する小さなゲームを作っています。ローカルで1人または2人のプレーヤーでプレイでき、残りのプレーヤーはAIで制御されます。 私はオンラインプレイを検討していますが、それについてはほとんど知りません。そのため、多くの調査と取り組みが必要になります。自分のエンジンを使用しているので、自分で実装する必要があります。少なくとも無料のライブラリを探してそのAPIを学び、おそらくそれを機能させるために私のデータ構造とメソッドのいくつかを再配置します。次に、ロビー画面とおそらくバックエンドのものを実装する必要があります(PHPの経験は少しありますが、多くはありません)。 私の質問は、それは本当に価値があるのですか?もちろんあるといいのですが、最近プレイヤーは期待していますか?予算の大きいゲームで期待されていると思いますが、小さなインディーゲームはどうでしょうか。

4
チャットを送信してMMOに保存するにはどうすればよいですか?
MMOゲームのプレイヤーは通常、さまざまなチャネル(プライベート、パブリック、ギルドなど)を介してメッセージを送信できます。 外部のユーザーが誰かのプライベートチャットメッセージにアクセスできないようにするには、どのようにこのデータを送信して保存しますか?データを一時的なゲームログまたはデータベースに保存する必要がありますか?
8 mmo 

2
オンラインMMOが1日あたりのアクションを調整するのはなぜですか?
私はDie2Niteをプレイし始めましたが、1日あたりのアクション数にこのような厳しい制限があることに驚きました。しばらくして、それが魅力のほんの一部だと思いました。 私もマジックデュエルのプレイを開始しましたが、1日あたりのアクションの量を制限する同様のメカニズムがあります。 MMOで1日あたりのアクションを制限する決定の背後にあるゲームデザインの原則はありますか?
8 mmo 

2
ゲームキューブ用に開発することはまだ可能ですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 6年前休業。 ニンテンドーゲームキューブは時代遅れですが、それでも私のお気に入りのシステムの1つです。それでもゲームを開発する方法はありますか?どのソフトウェアが必要ですか?関連するプログラミング言語は何ですか?みんなありがとう!
8 nintendo 

2
MMORPGサーバー側Javaアーキテクチャ
現在ターンベースのMMORPGゲームを制作しています。クライアントはAndroidで実行することになっています。今、私の友人がグラフィックをやっていて、私はゲームのクラス(プレーヤー、武器など)をやっています。さて、戦いが始まると、クラスはインターフェースによって操作できます(実際、私のパートナーにとっては、純粋なインターフェースを操作するようなもので、実装クラスへのアクセスは必要ありません)。 次に、複数のプレイヤーを許可するためにゲームサーバーを導入する必要があります。そして、いくつかの非常に重要な質問が発生します: 1)クライアントにクラスを残さずにゲームモデルをサーバーに完全にコピーしますか、またはサーバーに1つとデバイスに1つ、モデルの2つのコピーを用意して、それらの間の定期的な同期を完了する方が良いですか? 2)クライアントとサーバーのどちらの接続方法を選択しますか(視界内のクライアントはAndroidフォンです)?サーバーに関しては-私はそれを使っていくつかの経験があるjava原因に向けています。しかし、今の質問は-このタスクにはソケットを使用する方がいいですか、それともRESTサービスを使用できますか、それともJava EEサーバーに接続することも可能です。合併症?ゲームはマルチプレイヤーですが、ターン制なので、頻繁に更新する必要はありません。 3)スレッドについてはどうですか?すべてのクライアントは独自のスレッド(ソケットの場合)を持つ必要がありますか? 4)REAL MMORPGサーバーゲームのプログラミングに関する本はありますか???

8
ゲームオブジェクト(ツリー、ロック、さらにはブリッジ)を分類するための単語を探していますが、アイテム/キャラクターは含まれていません[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 環境ゲームオブジェクトを含み、他のゲームオブジェクトを含まないSPECIFIC定義を探しています。木、岩、または橋。アイテム、武器、キャラクター、タイルではありません。ほとんどのエンティティではなく、特定のエンティティに非常に固有の答えを探しています。 私のゲームオブジェクトについては、それらをObjectTypeとして保存しています。 typedef enum { CHARACTER = 0, //A PC or NPC ENVIRONMENT = 1, //A tree, a Rock, a Bridge, a non-animate environmental object ITEM = 2, //A sword, bag of gold, pickup-able item } ObjectType 明らかに、誰でも簡単に理解できるように、キャラクターのゲームオブジェクトはキャラクター(PCまたはNPC)であり、アイテムは剣や金の袋などです。 しかし、「環境」という言葉は明らかに間違っています。「葉」は、タイルではなく(草、道路、水、床)、アイテムではない(ピックアップできるなど)オブジェクトを指すと考えました。 通常、私はこれらを「オブジェクト」と呼びます。なぜなら、ツリー、ロック、ブリッジ、ブッシュ、花のコレクションです。これらはすべてオブジェクトです。ただし、ゲームオブジェクトを「オブジェクト」と呼び、ゲームエンジニアリングでは「オブジェクト」という用語が一般的である場合、これは冗長な混乱を招きます。 「私には見られないだけの明白な用語があるに違いない。この非常に一般的なタイプのゲームオブジェクトを説明する言葉」と私は思わずにはいられませんでした。 人々が簡単に理解できるものなので、「EnvironmentObject」に頼る必要はありません。

1
OpenGLで頂点を描画する最も効率的な方法
私はOpenGL 3Dゲームを書いています。地形や使用中のオブジェクト用の多数の三角形があります。 私はOpenGL公式ガイドから勉強していて、最初に提示された方法は、描画したい各頂点のglVertex後に関数を呼び出すglBeginことです。 ただし、何千もの三角形を描く必要がある場合、この方法はかなり古くて非効率的です。各フレームで変化しない情報をグラフィックカードのメモリに保存する方法があるので、各フレームをレンダリングすると、その情報はすでにそこにあります。より「不安定な」情報については、おそらくフレームごとに新しい頂点データを送信する必要があるため、別の手法の方が効率的かもしれません。 私の質問に来ます:頂点情報をハードウェアに送信し、レンダリングするための指示を与えるために使用される最も近代的で効率的なOpenGL関数と技術の明確な説明をお願いします。 フレーム中にめったに変化しない頂点データをレンダリングするための順序を送信するための最良の方法とOpenGLツールは何ですか(私は地形とオブジェクトについて考えます)、フレーム中に大きく変化する頂点データを送信するための最良の方法は何ですか?

2
モジュラー宇宙船制御
私は宇宙船を使った物理ベースのゲームを開発しています。 宇宙船は、関節で接続された円から構成されます。一部のサークルにはエンジンが取り付けられています。 エンジンは円の中心を中心に回転し、推力を生み出すことができます。船のエンジンごとに回転と推力を設定することで、船を一方向に動かしたり、ある点を中心に回転したりしたい。 これを達成するために各エンジンに必要な回転と推力を見つけるにはどうすればよいですか?

4
明るい色とくすんだ色
先日友人と話していたところ、実際のゲーム内グラフィックス/アートに関連するビデオゲームの色について話し合いました。すべてが明るい色の場合は見やすいのですが、特に壁や木箱、岩など、いつも見えるものには、くすんだり色あせた色を使用した方がよい場合があると彼は私に言いました。 私が持っている質問は、ゲームのグラフィックス/アートに明るくて生き生きとした色がたくさんある場合、それはあまり重要ではないですか?または、活気のないくすんだ色にトーンダウンする必要がありますか?それはあまりにも重要ですか、またはこのようなものはゲームごとにのみ評価できますか?

1
GL ES:フラグメントシェーダーの最適化
概要: スプライトに色を付けようとするとすぐにFPSの速度が低下します(つまり、テクスチャをフラグメントシェーダーで色と乗算します)。 詳細: ハードウェア:iPod touch 4 glDrawArraysを使用して画面に700のスプライトを描画しています。そして、はい、これらすべてを1回の描画呼び出しでバッチ処理しています。以下は、頂点データ構造を示しています。 struct Vertex { float Position[2]; float Color[4]; float Texture[2]; }; はい、いくつかのスプライトを選択的に着色する必要があるので、他のスプライトを選択的に着色する必要がないため、各頂点で色を送信しています。以下は私が使用しているフラグメントシェーダーです: varying lowp vec2 TexCoord; uniform sampler2D TextureSampler; void main(void) { gl_FragColor = texture2D( TextureSampler, TexCoord ); } 今までそれは素晴らしい仕事をしていて、私に完全な60 FPSを与えています!!! だが フラグメントシェーダーを次のように変更するとすぐに(着色を可能にするため): varying lowp vec4 DestinationColor; varying lowp vec2 TexCoord; uniform sampler2D TextureSampler; …

3
サーバーがタイルベースの領域のみをクライアントに送信することは可能ですか?
はじめに、私はネットワーキング(ハードウェア、ルーターなど)については十分な知識を持っていますが、ネットワークプログラミングの基本的な知識はほとんどありません。これは馬鹿げた質問のように思えるかもしれませんが、自分のゲームでのマルチプレイヤーの実装を理解しながら、自分が何に興味を持っているのかを知りたいのです。 シンプルな2D配列によって生成されるタイルベースの世界を作成しています。簡単にするために、World [100] [100]のようなものを考えてみましょう。 現在、renderメソッドは、ウィンドウの解像度と1つのタイル(移動中のスムーズなレンダリング用)に基づいてタイルのみをレンダリングします。世界がどれほど大きい場合でも(10x10、1million x 1million)、レンダリングのパフォーマンスは完璧です。 ゲームプレイでは、現在表示されているもの(画面+1にレンダリングされたもの)と、おそらくプレーヤーの周囲の領域にあるタイルのいくつかの情報を知るだけです。 したがって、サーバーから送信されるものはすべて、完全なタイル情報にはなりません。例 地面、地面のタイプ、木などの上に置かれるアイテムは、プレーヤーの視野の外側の領域では重要ではなく、クライアント/プレーヤーがそれらのタイルについて知っておく必要があることだけです。(例:プレーヤー[キャラクターまたはプレーヤー]がレンダリングビューのタイルを超えていることをプレーヤーが知ることができるUltima Onlineの「着信名」。) 私はネットワーキングについてあまり知らないので、おそらくこれを知って、これが私の質問に答えるかもしれません。しかし、これが実現可能な解決策なのか、あるいはアイデアが単に笑えるものなのか、私は興味があります。 送信される情報は、タイルの約10x15の領域であり、各タイルはタイルの内容に関する情報を保持します。より効率的には、すべてがオブジェクトであり、タイルはタイル上のすべてのオブジェクトを保持します。例 Tile [4] [4]は、Sword#23452、Rock2、Tree5、Player3、Monster4を保持します。 初期化/ロード中にまだロードされていない場合、空のタイルは地形タイプ[草、砂、水]のみを送信します。一部のタイルには、少数のオブジェクトがあります[Tree2、Sword#924、Gold、Corpse、Rock3]。 したがって、クライアントが主にロードする必要のあるテクスチャとそれを画面に配置するために配置する必要があるため、タイルがサーバーからクライアントに送信する情報が非常に多いとは思えません。クライアントにレンダリングするように指示するファイルのリストでは、位置は2つの整数のみであり、テクスチャは1つの整数です。 最悪の場合、サーバーは150個のタイルに少数のオブジェクトOnLOADの情報のみを送信し、それ以降は更新によってタイル(存在する場合)と新しいタイル(プレーヤーが方向に移動するたびに10から15)への変更のみを送信します。 )と画面上のキャラクターの移動方向(クライアントがタイル間のスムーズな移動をシミュレートできるようにするため)。 これはインターネットまたはピア間で送信される信じられないほどの量の情報であると私は思っているので、私は正しいと思います。それとも、ネットワーキングについてあまり知らないので、ようやくマルチプレーヤーネットワーキングに関する本を開くことに取り掛かったとき、私の心は打たれるでしょうか。 クライアント/サーバー間で送信される情報の量が非常に少ない場合、初期化時に全世界を単にロードする方が理にかなっていますか?または、世界が大きすぎる場合は「マップ」。そして、LOADの後、更新されたタイルのみを送信しますか? どうすれば具体的なデータの扱い方を考えているのか。私が参照として使用している本では、オブジェクトを追加および削除するリンクリストが必要なので、すべてがboolです。「キャラクターはいる?木はある?」 オブジェクトを保持するコンテナーや、レンダリングするものをクライアントに伝えるために必要なものだけを送信するサーバーロジックなど、別のアプローチを考えていました。おそらくそれ自体の内部にネットワーク情報を保持するオブジェクトがあり、サーバーから呼び出されたときに送信されます。

2
キャラクターを画面の中央に配置する方法を教えてください。
Legend of Zelda:Link to the Past(トップダウン2Dアクションアドベンチャー)のようなゲームを作成しています。キャラクターが動いたときに画面の中央に留まるようにしたい。 現在、プレイヤーが移動したいときはいつでも、マップのすべてを反対方向に移動します。これは機能しますが、より多くのオブジェクトをワールドに追加すると、それらすべての移動がより複雑になります。 これに取り組むより良い方法はありますか?
8 2d  camera  movement 

2
OpenGL-モデル、ビュー、ワールドマトリックスの関係を理解する
これらのマトリックスがどのように機能するか、および適切なシステムを実行するために相互に関連してそれらをセットアップする方法を理解するのに少し問題があります。 私の理解では、モデルマトリックスはオブジェクトのマトリックスであり、たとえば立方体や球体です。アプリケーション/ゲームにはこれらの多くが存在します。 ワールドマトリックスは、3Dワールドの原点を定義するマトリックスです。出発点。 そして、ビューマトリックスは、すべてがこれで変換される「カメラ」であり、実際にすべてがこのマトリックスの代わりに動いているときに、実際のカメラのような錯覚を持っていることを確認します。 ここで少し迷ってしまいました。だから私はここの誰かがこれを正しく理解するのを助けてくれることを望んでいた。 すべてのmodelMatrixは、worldMatrixとworldMatrix、次にviewMatrixで変換/乗算されますか?それとも、すべてのmodelMatrixがviewMatrixで翻訳/乗算され、次にworldMatrixで翻訳/乗算されますか? これらすべてのマトリックスはどのように関連し、複数のオブジェクトと「カメラ」を備えた世界をどのように設定しますか? 編集: すでにフィードバックをありがとうございました。私はググリングをしましたが、もう少しよく理解できたと思いますが、疑似コードのアドバイスを得ることができますか? projectionMatrix = Matrix; makePerspective(45, width, height, 0.1, 1000.0, projectionMatrix); modelMatrix = Matrix; identity(modelMatrix); translate(modelMatrix, [0.0, 0.0, -10.0]); // move back 10 on z axis viewMatrix = Matrix; identity(viewMatrix); // do some translation based on input with viewMatrix; viewMatrixをmodelMatrixで乗算または変換しますか、それとも逆にしますか?そしてそれから?私は現在、引数を描画するために2つの行列のみを必要とするような方法で、drawメソッドを持っています。 これが私の描画方法です: draw(matrix1 matrix2) …

1
流れ場密度変換
http://grail.cs.washington.edu/projects/crowd-flows/で説明されているように、フローフィールドナビゲーションを実装しようとしています が、論文の図4の密度関数がどのように処理されるのか理解できません。単位半径。 誰かがそれを実装して、より多くの情報を提供できますか? これは問題の部分です: 彼らのアルゴリズムは、ユニットの左下を指す4つのセルのみを使用しているようです。そのため、これは複数回適用する必要があるある種のカーネルですか? ありがとう。
8 algorithm  grid 

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