ゲーム開発

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

3
シェーダー経由でテクスチャメモリを更新しますか?
タイトルは何を言っています。GLSLシェーダーを介してテクスチャを更新することは可能ですか?何かのようなもの : //Read vec4 Pixel = texture2D(TextureID,gl_TexCoord[TextureIndex].st); //Write to texture memory ? vec4 NewPixel = Pixel + vec4(0.0,0.0,0.0,AlphaPatch); // ?? How to write back to texture memory ?? texture2D(TextureID,gl_TexCoord[TextureIndex].st) = NewPixel; ??

3
シェーダーは正確には何に使用できますか?
私は実際には3Dの人間ではありません。Three.jsの例ではシェーダーを少ししか使用していませんが、これまでのところ、方程式のグラフィカルな部分にのみ使用されているようです。 ただし、(かなり不可解な)Wikipediaの記事やその他の情報源から、これらは単なるグラフィック効果以外にも使用できる、つまりGPUのプログラミング(Wikipedia)に使用できると私は信じています。 つまり、GPUはまだプロセッサですよね?より大きく、より高速なベクトル操作のためのより大きく異なる命令セットを備えていますが、それでもプロセッサです。シェーダーを使用して通常のプログラムを作成できますか(ビデオメモリにアクセスできる場合)。 編集:通常のプログラム== "アプリケーション"、つまり、ウィンドウ/コンソールプログラムを作成するか、少なくとも画面に何かを描画する方法を持っています。
8 3d  shaders 

2
楕円軌道モデリング
私は単純な2Dゲームで軌道で遊んでいます。このゲームでは、船が宇宙空間を飛び回り、巨大なものに引き付けられます。船の速度はベクトルに保存され、ニュートンの万有引力の法則を考慮して、必要に応じてフレームごとに加速度が適用されます。点の質量は移動しないので(現在は1つしかありません)、楕円軌道を期待します。 代わりに、私はこれを見ます: 私はほぼ円形の軌道で試してみましたが、質量を大幅に(100万倍)異ならせようとしましたが、常にこの回転軌道を取得しています。 コンテキスト用の(D)コードを次に示します。 void accelerate(Vector delta) { velocity = velocity + delta; // Velocity is a member of the ship class. } // This function is called every frame with the fixed mass. It's a // method of the ship's. void fall(Well well) { // f=(m1 * m2)/(r**2) // …

3
Sys_PageIn()関数はQuakeで何をしますか?
オリジナルのQuakeの初期化プロセスで、次の関数が呼び出されることに気付きました。 volatile int sys_checksum; // **lots of code** void Sys_PageIn(void *ptr, int size) { byte *x; int j,m,n; //touch all memory to make sure its there. The 16-page skip is to //keep Win 95 from thinking we're trying to page ourselves in (we are //doing that, of course, but there's …
8 c  win32 

3
データをハードコーディングするか、アルゴリズムを見つける方が良いですか?
私はこのボードとして六角グリッドを持つボードゲームに取り組んできました: ボードは決して変更されず、ボード上のスペースは常にその周りの他の同じスペースにリンクされるため、必要な値ですべてのスペースをハードコーディングする必要がありますか?または、さまざまなアルゴリズムを使用してリンクとトラバーサルを計算する必要がありますか? 具体的には、私のボードゲームは4プレイヤーゲームで、各プレイヤーは5x5x5x5x5x5の16進グリッドを持っています(ここでも、上の画像を参照)。目的は、さまざまな障害物を邪魔して、グリッドの一番下から一番上に到達することです。各プレイヤーは、範囲乗数に基づいて、グリッドの端から他のプレイヤーに互いに攻撃できます。 プレーヤーのグリッドは決して変化せず、グリッドの端からの任意のスペースの距離は常に同じであるため、この数値を各スペースにハードコードするか、または幅優先検索アルゴリズムを使用する必要がある場合プレイヤーが攻撃していますか? すべてをハードコーディングする場合に考えられる唯一の欠点は、9 + 2(5 + 6 + 7 + 8)= 61の個別のセルをコーディングすることです。他に、もっと複雑なアルゴリズムを使用することを検討する必要がある見逃しているものはありますか?

2
1つのアスペクト比と任意の画面解像度でゲームを作成することは良い考えですか?
いくつかの非常に小さなゲームの後、スタンドアロン(2D)でプレイ可能なものを作ることにしました。しかし、より多くの画面解像度でプレイされるすべてのゲームの問題に直面しました。 基本的に、いくつかの調査の結果、いくつかの解決策があることがわかりました。 これは最も簡単な方法のようです。たとえば、ゲームのアスペクト比を一定(16:9)に定義すると、ゲーム全体が1680 x 1050の解像度で作成されます。 ゲームはこの解像度でレンダリングされ、プレーヤーのディスプレイ解像度に合わせてレンダリングをスケーリングできます。したがって、アスペクト比を維持しながら、ほとんどすべての解像度でゲームをプレイできます。したがって、ゲームが4:3ディスプレイで実行された場合、ディスプレイの上部と下部は黒色で塗りつぶされます。 それは簡単に思えますが、私の質問は- これは単純なゲームの良いアプローチですか?ゲームはシンプルですが、高品質を維持したいです。

1
360度のヘビに近づく方法
私は最近XNAに入って、大好きだと言わざるを得ません。Hello Worldゲームの一種として、クラシックゲーム「Snake」を作成することにしました。90度バージョンは、非常にシンプルで実装が簡単でした。しかし、左矢印と右矢印を使用して360度回転できるバージョンを作成しようとすると、ある種の問題が発生しました。 私が今やっていることは、90度バージョンに由来します。尾から始まり、頭の直前で終わる各蛇の体の部分を反復します。これは、100ミリ秒ごとに移動するときにうまく機能します。この問題は、技術的には60 fpsではなく6 fpsでゲームが進行するため、途切れ途切れのスタイルのゲームプレイになることです。 ゲームループごとにヘビを移動したいと思います。しかし、残念なことに、ヘビは頭のサイズの速度で動くため、速度が速すぎます。これは、頭が現在の方向(32、32)ではなく、その方向に(2、2)などのはるかに小さい増分で移動する必要があることを意味します。私は学校を管理している間、このゲームに数週間取り組んできたので、これを達成する方法を考えすぎていたと思います。それはおそらく簡単な解決策です、私はそれを捕まえていません。 これは、私が理解できることに基づいて、私が試したもののいくつかの疑似コードです。それを行う別の方法を本当に考えることはできません。 for(int i = SnakeLength - 1; i > 0; i--){ current = SnakePart[i], next = SnakePart[i - 1]; current.x = next.x - (current.width * cos(next.angle)); current.y = next.y - (current.height * sin(next.angle)); current.angle = next.angle; } SnakeHead.x += cos(SnakeAngle) * SnakeSpeed; SnakeHead.y += …


2
単純なシェーダーを使用すると、パフォーマンス/バッテリー寿命が向上しますか?
Android用のOpenGLゲームを作っています。これまでは固定関数パイプラインのみを使用してきましたが、単純なものをレンダリングしています。 固定関数パイプラインには、不要なものがたくさん含まれています。したがって、パフォーマンスを向上させることができる場合は、OpenGLパイプラインを簡素化するためにゲームにシェーダーを実装することを考えています。 fpsがハードウェアの電源ではなくソフトウェアの制限によって制限されていない限り、パフォーマンスの向上=バッテリーの寿命が長くなります。

5
ブラウザベースのゲームのパフォーマンスに関して、JIT(javascript / canvas)とAOT(Flash)はどのような関係がありますか?
私の経験では、今日まで、Flashベースのゲームよりも、JavaScript(Canvas)ベースのゲームのエンティティの動き/アニメーションの視覚的な遅れが多く見られます。 これはなぜですか-JavaScript対Flashの特定のシナリオにおけるJITコンパイラーとAOTコンパイラーの間の最も基本的なレベルでの不一致は正確には何ですか。

1
XNAのContentManagerがシリアル化のためにジェネリック型パラメーターに従うのはなぜですか?
ようやく問題の根底に達し、私の最善の解決策は何なのかと思っています。つまり、ReflectiveReaderシリアル化されているオブジェクトにジェネリック型のインスタンスが格納されていなくても、XNA がジェネリック型パラメーターに反映されるという問題があります。 例がこれを最もよく示しています。次のモデルクラスを検討してください。 namespace Model { using System.Collections.Generic; using Microsoft.Xna.Framework.Graphics; public abstract class Entity { } public sealed class TestEntity : Entity { public Texture2D Texture { get; set; } } public abstract class EntityData { } public abstract class EntityData<TData, TEntity> : EntityData where TData : EntityData where TEntity …

4
HTML5ゲームのスプライトに使用する画像形式はどれですか?
2D HTML5ゲームで使用するのに最適な画像形式は何ですか?なぜですか?さまざまな状況でさまざまな形式を使用する必要がありますか?たとえば、背景画像には.png、アニメーションフレームには.jpegなどです。 「なぜ」の部分は私にとって重要です。HTML5にローカライズする必要はありません。一般的なアドバイスにもなります。
8 2d  animation  html5  art  image 

7
インディーズとして、ゲームを保護する方法は?
インディーズとして、あなたは会社で働いていないかもしれません。そして、あなたは素晴らしいゲームのアイデアを持っているかもしれません、そしてあなたはそれが大成功するつもりだと感じます。ゲームをリリースしたとき。あなたはそれをあなた自身の創造物としてどのように保護しますか?そのため、誰かがタイトルを盗んで「続編」を公開することもできなくなります(例:Your-Game-Name 2,3,4)。または、Angry Birdsなどの副産物を許可なく作成することもできます。 だから私たちはこれらが法的な方法で起こるのをどのように防ぐことができるか 著作権、商標のように?専門家がこれらの情報を記入してくれれば、素晴らしいことです。
8 marketing 

3
高さマップと3Dモデルメッシュ
私は現在3D PCゲーム(C ++およびDirectX 9.0で作成)に取り組んでおり、レベルデータをメモリに格納するための最良の方法を見つけようとしています。 ゲームのアクションは地面の下で行われるため、常にプレーヤーの上に天井があります。地面はかなりでこぼこで、石筍のようなものが常に存在しています。レベルは小さめで、ほとんどが廊下のように見えます。これまでに見つけたオプションは次のとおりです。 ハードドライブにビットマップまたはバイナリ/テキストファイルとして保存されている2つの高さマップ。天井(上部)と地面の高さマップ。 または いくつかの3Dモデル形式(たとえば、.fbx、.x、.objなど)の単一の3Dメッシュ。 レベルのデータストレージにどのようにアプローチすればよいですか?パフォーマンスに関して言えば、私の最善の選択肢は何でしょうか?高さマップを介してロードされたレベルのテクスチャリングに関しても問題があります。3Dモデルを使用すると、テクスチャリングが簡単になります。 ありがとう!

2
マルチプレイヤーリアルタイムゲームで交換するデータは何ですか?
私は趣味のプログラマーであり、現在、マルチクラフトセッションでstarcraft 2のようなリアルタイムゲームでどのデータが交換されるのか知りたいです。たくさんの検索を行いました。私はgafferongames.comが検討すべき問題の非常に良い概要を提供しているのを見つけました。 Glennの記事とコメントでは、UDP over TCPを使用する非常に強力な例を示していますが、SC2は明らかにTCPを使用しています。グリーンをQouteするには、 ゲームにTCPを使用する場合の問題は、Webブラウザーや電子メールや他のほとんどのアプリケーションとは異なり、マルチプレイヤーゲームのパケット配信にリアルタイム要件があることです。ゲームの多くの部分、たとえばプレーヤーの入力やキャラクターの位置では、1秒前に何が起こったかは関係ありません。最新のデータのみに関心があります。 したがって、彼の発言から、彼のアプローチは各フレームのすべてのユニットの完全なゲーム状態を送信することだと思います。サーバーが現在のフレームでプレイヤー入力を受信しない場合、それはそのプレイヤーの幸運です。God of War:Acensionでは、彼はリードネットワーク開発者であり、これはかなりうまくいくと思います。 SC2の場合、再生機能があるため、基になるエンジンは確定的な固定タイムステップの「ユーザー入力再生マシン」であり、交換されるデータはプレーヤー入力のみです。したがって、グレンの発言はSC2とはまったく無関係です。プレーヤーの入力は重要であり、入力シーケンスはさらに重要です。SC2が200ユニット以上のゲーム状態を30〜60 FPSで送信するのは現実的ではないと思います。 質問:私は間違っている可能性がありますが、2種類のデータを特定しようとしました。他のテクニックは何ですか?あなたがするなら、ゲームをqouteするのが良いでしょう。 編集:スタークラフトネットワーキングモデルに関するこのリンクを見つけました

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