ゲーム開発

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

2
ベクトルを回転させる
一人称視点のカメラで、視線方向をd1からd2にスムーズに変更したい。後者の方向は、目標位置t2によって示される。 これまでのところ、正常に機能する回転を実装しましたが、回転の速度は、現在の方向が目的の方向に近づくほど遅くなります。これは避けたいものです。 これまでに作成した2つの非常に単純なメソッドを次に示します。 // this method initiates the direction change and sets the parameter public void LookAt(Vector3 target) { _desiredDirection = target - _cameraPosition; _desiredDirection.Normalize(); _rotation = new Matrix(); _rotationAxis = Vector3.Cross(Direction, _desiredDirection); _isLooking = true; } // this method gets execute by the Update()-method if _isLooking flag is up. …
8 xna  c#  camera  rotation  vector 

2
曲のセクションを正しくループするには?
私は私のゲーム用に小さなミュージックエンジンをC#とXNAでプログラミングしています。その1つの側面は、曲からセクションをループする可能性です。たとえば、私の曲にはイントロパートがあり、曲が最後(または他の特定のポイント)に達すると、イントロパートが終わったところにジャンプして戻ります。(A-B-B-B ...) 今私はIrrKlankを使用していますが、これは隙間なく完璧に機能していますが、問題があります。 どこに戻るかという点は少し不正確です。ここにいくつかのサンプルコードがあります: public bool Passed(float time) { if ( PlayPosition >= time ) return true; return false; } //somewhere else if( song.Passed( 10.0f ) ) song.JumpTo( 5.0f ); ここで問題は、曲が10秒経過しても、10.1fまで数ミリ秒再生され、その後5秒にジャンプすることです。それはそれほど劇的ではありませんが、私のニーズには非常に不正確です。私はそれをそのように修正しようとしました: public bool Passed( float time ) { if( PlayPosition + 3 * dt >= time && PlayPosition <= time …
8 xna  music 

4
マルチプレイヤーの競争ゲームのバランスをどのようにとりますか
私はゲーム開発への最初の取り組みを検討しています。限られたマルチプレイヤーゲームでのゲームバランシングについて、皆さんが考えているかどうか知りたいです。 私が念頭に置いているゲームには、目標を達成する必要がある中立的なプレイヤーが含まれています。 、他の人たちはそれらを阻止しようとしますが。 神々のバランスをどのように確保できるかについての考えや指針はありますか? 拡大したいのなら、私はそれを終える前にゲームプレイの多くを与えたくなかったでしょう。

4
ゲームメッセージングシステムの設計
私は簡単なゲームを作っており、メッセージングシステムの実装を試みることにしました。 システムは基本的に次のようになります。 エンティティはメッセージを生成します->メッセージはグローバルメッセージキューにポストされます-> messageManagerはonMessageReceived(Message msg)を介してすべてのオブジェクトに新しいメッセージを通知します->オブジェクトが必要な場合、メッセージに作用します。 メッセージオブジェクトを作成する方法は次のとおりです。 //base message class, never actually instantiated abstract class Message{ Entity sender; } PlayerDiedMessage extends Message{ int livesLeft; } これで、SoundManagerEntityは、onMessageReceived()メソッドでこのようなことを実行できます。 public void messageReceived(Message msg){ if(msg instanceof PlayerDiedMessage){ PlayerDiedMessage diedMessage = (PlayerDiedMessage) msg; if(diedMessage.livesLeft == 0) playSound(SOUND_DEATH); } } このアプローチの利点: 非常にシンプルで実装が簡単 必要な情報を持つ新しいMessageサブクラスを作成するだけでよいので、メッセージには必要なだけの情報を含めることができます。 短所: メッセージのサブクラスごとに異なるプールがない限り、メッセージオブジェクトをオブジェクトプールにリサイクルする方法を理解できません。そのため、時間の経過とともに、オブジェクトの作成やメモリの割り当てが非常に多くなっています。 特定の受信者にメッセージを送信できませんが、ゲームではまだ必要ないので、あまり気にしません。 ここで何が欠けていますか?より良い実装または私が見逃しているいくつかのアイデアがあるはずです。

3
パスの最後で移動オブジェクトをスムーズに停止させるにはどうすればよいですか?
この質問の言い方は十数通りありますが、私の考えを一致させるために、私は目の前の問題に合わせてそれを表現しています。 そこで、指定されたポイントから別のポイントに移動し、最初のポイントに戻って、2つの間を直線で通過できるようにするフローティングプラットフォームを作成しています。ただし、少し面白くするために、プラットフォームにいくつかのルールを追加したいと思います。 ワールドデータのタイル値全体の複数を移動するようにコーディングしています。したがって、プラットフォームが静止していない場合、少なくとも1つのタイル幅全体またはタイル高さを移動します。 1つのタイルの長さ内で、停止から指定された最大速度まで加速させたいと思います。 1つのタイルの長さの距離に達したら、特定のタイル座標で停止するまで減速し、逆のプロセスを繰り返します。 最初の2つの部分はそれほど難しくありません。基本的に、3番目の部分では問題があります。プラットフォームがタイル座標で正確に停止するようにしたいのですが、加速度で作業しているので、1つのタイルの長さに達したら、プラットフォームの現在の速度を格納する値に反対方向の加速度を適用し始めるのは簡単に思えます。距離(タイルが複数のタイル長を移動していると仮定しますが、単純にするために、それがそうであると仮定しましょう)-しかし、問題は、この効果を生み出すために増加する加速の正しい値は何でしょうか?どうすればその値を見つけることができますか?
8 xna  2d  xna-4.0  physics 

3
OpenGL Fast-Object Instancing Error
オブジェクトのセットをループしてそれらのオブジェクトのインスタンスをレンダリングするコードがいくつかあります。レンダリングする必要があるオブジェクトのリストはstd :: map>として保存されます。MeshResourceクラスのオブジェクトには実際のデータを含む頂点とインデックスが含まれ、classMeshRendererのオブジェクトはメッシュが配置される空間内のポイントを定義しますでレンダリングされます。 私のレンダリングコードは次のとおりです。 glDisable(GL_BLEND); glEnable(GL_CULL_FACE); glDepthMask(GL_TRUE); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); for (std::map<MeshResource*, std::vector<MeshRenderer*> >::iterator it = renderables.begin(); it != renderables.end(); it++) { it->first->setupBeforeRendering(); cout << "<"; for (unsigned long i =0; i < it->second.size(); i++) { //Pass in an identity matrix to the vertex shader- used here only for …

2
長方形でないスプライトでヒット検出を実装する正しい方法は何ですか?
Cocos2dで長方形以外のスプライトのヒットまたはタッチ検出を実装する正しい方法は何ですか? 私はジグソーパズルに取り組んでいるので、スプライトには奇妙な形(ジグソーパズルのレンガ)があります。現在のところ、「検出」は次のように実装されています。 - (void)selectSpriteForTouch:(CGPoint)touchLocation { CCSprite * newSprite = nil; // Loop array of sprites for (CCSprite *sprite in movableSprites) { // Check if sprite is hit. // TODO: Swap if with something better. if (CGRectContainsPoint(sprite.boundingBox, touchLocation)) { newSprite = sprite; break; } } if (newSprite != selSprite) { // …
8 ios  cocos2d  xcode 

2
古いバージョンのOpenglを使用するアプリケーションは、新しいカードでも実行できますか?
OpenGl 3.0以降は、OpenGl 2.xやopengl 1.xなどの旧バージョンとは実装がかなり異なります。つまり、旧バージョンのopenglで記述されたアプリケーションは、ビデオカードを搭載したコンピューターでは実行できません。 Opengl 3.x以降をサポートしていますか? これがこれを尋ねるのに適切な場所でない場合は、申し訳ありません。 ありがとう。
8 opengl 

3
2つのサイズの累乗で制限されている場合に、ゲームのテクスチャを作成/使用する方法を理解する
ゲームのグラフィックの作成について質問があります。 例として。バイクを作りたい。(1ピクセル= 1センチメートル)したがって、私のバイクの幅は200、高さは150になります。(200x150)しかし、libgdxは2の累乗でのみサイズをロードできますか?!(2、4、8、16、...) 最初にそのように考えました。サイズ(200x150)の自転車を作成し、pngとして保存します。もう一度開く(たとえばgimpで)ので、2の累乗(128x128)の値を使用するサイズにイメージのサイズを変更します。これをテクスチャとしてプログラムにロードし、幅を200、高さを150に設定します。 しかし、それは問題ではないでしょうか?最初の会話をするとピクセル情報が失われるからです。だよね?

2
ビデオゲームへの建築家
私は昨年の建築学生です。私はいつもビデオゲームのデザインに興味があります。私は3d MaxとPhotoshopを日常的に使用しており、レベル/環境デザイナーから始めて、ビデオゲームでのキャリアを目指すことを考えていました。 どのようにそれに取り組むべきですか?UDKまたはCryEngineの学習に時間を費やす価値はありますか?小さくても一般的なソフトウェアを試す必要がありますか?私はすでにいくつかのプログラミングを知っています。 最後に、建築家としての私のスキルは、業界で何か価値のあるものになるでしょうか? 前もって感謝します。

4
ユーザーにハイスコアをリーダーボードに送信するように依頼する必要がありますか?
ユーザーがゲームで新しいハイスコアを取得した場合、スコアをリーダーボードに送信する前にユーザーに確認する必要がありますか?もともと私は彼らにプロンプ​​トを表示せずにスコアをリーダーボードに提出するつもりでしたが、友人はユーザーに尋ねることが望ましいと私に言っていました。 ありがとう

2
BC6 / BC7テクスチャを反転するには?
OpenGLテクスチャにDDS画像ファイルをロードするためのコードがいくつかあります。D3D11で導入されたBC6およびBC7圧縮形式をサポートするように拡張したいのですが。DirectXとOpenGLは、テクスチャの起点が左上隅か左下隅かについて意見が分かれているため、DDSローダーは、ピクセルをOpenGLに渡す前に、Y軸に沿って各画像のピクセルを反転します。 圧縮されたテクスチャを反転すると、追加のしわが生じます。4x4ピクセルブロックの各行を反転することに加えて、各ブロック内のピクセルを反転する必要もあります。私はここで BC1 / BC2 / BC3ブロックをフリップするコードを見つけました。MSDNのブロック図から、BC3フリッピングコードをBC4およびBC5を処理するように適合させるのは簡単でした。BC6とBC7フォーマットはかなり多くても、威圧的に見えます。これらの形式を反転するための同様のビット調整のトリックはありますか、または各ブロックを完全に解凍して再圧縮する必要がありますか? 更新:テクスチャの座標がエクスポート時に誤って反転されていたため、テクスチャの反転が必要だったことがわかりました。両方のフリップを削除すると、コードが単純かつ高速になりました(Humusに感謝します!)。BC6 / BC7ブロックを反転することは、興味深い課題である可能性がありますが、元のシナリオとは関係ありません。

2
2Dタイルマップのカスタム拡張ファイル形式
現在、ゲームロジックの多くを実装していますが、何かを操作できるように、オンザフライで厄介なforループを使用してマップを作成しています。次に進んで、このデータを(非)シリアル化する方法についていくつかの調査を行いたいと思いました。(私はマップエディターを検索しません-私はマップファイル自体について話しています) 現時点では、提案とリソース、次の機能を提供する(MoSCoWメソッドに基づく)マップにカスタムファイル形式を実装する方法を探しています。 持つ必要があります 拡張性と下位互換性 異なるレイヤーの処理 タイルが固体であるか通過できるかに関するメタデータ 関連するプロパティ/メタデータを持つエンティティ/トリガーの特別なシリアル化 持つことができた ファイル/タイルセットが散らばらないようにするためのタイルセットのある種の包含 C ++(SDLを使用)で開発しており、Windowsのみをターゲットにしています。役立つヘルプ、ヒント、提案などがあれば、よろしくお願いします! 以下の議論の結果 私は過去数時間にマップファイル形式を設計していて、スケルトン(今のところレイヤーのみが含まれている-残りは彼/彼女の独自の形式を設計しているすべての人に任せる)を考えた。同じ意図があり、何らかのインスピレーションを得ることができます。フルサイズのスクリーンショットはImgurからダウンロードできます。

3
ブレンダー:ベジェ曲線から作成したオブジェクトを「メッシュ化」する方法
ベジェ曲線を使用して星型を作成し、押し出しました(下の写真を参照)。 私がやりたいことは、ベベルを使用してエッジの周りだけでなく、丸みを帯びた外観にすることです。私はそれをこのような形にしたいです(まあ、とにかくその形): これを行うにはどうすればよいですか?私はBlenderに非常に慣れていないことを覚えておいてください。 どういうわけか、この星を引き出すことができる正方形のトンのあるデフォルトの形状に変え、ミラーに適用して、同じことが両側で起こるようにできると思いました。どうすればいいのか分からないので、よろしくお願いします。
8 blender 

1
GLSLパックがRGBAテクスチャに浮かび上がる
従来の三角形ベースのモデルとパーティクルを、適度なフレームレートでレイトレースされたシーンで構成したいと考えています。 webGLではgl_FragDepth、フラグメントシェーダーでを記述できません。複数のレンダーターゲットを持つことはできませんが、RGBAテクスチャにレンダーしてから、そのテクスチャを別の描画操作への入力として使用できます。そのため、レイトレースされたシーンをレンダリングし、次のステージへの入力として深度を保存できます。これは明らかに理想からかけ離れていますが、実行可能です。 私はこれについて誤解したいのですが、これは決定的なソースではなく試行錯誤から集められたものです。欠陥のある仮定を修正してください GLSLフラグメントシェーダーで、フロートおよび理想的にはいくつかのフラグビットなどをRGBAテクスチャに効率的にパック/アンパックするにはどうすればよいですか?
8 textures  glsl  webgl 

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