ゲーム開発

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

3
マーチングスクエア:1つのソースフィールド内で複数の輪郭を見つける?
主に、これは数週間前の問題のフォローアップ質問ですが、これは実際の問題に適用しない一般的なアルゴリズムに関するものです。 アルゴリズムは基本的に、画像の左上から開始して、境界であるピクセルが見つかるまで、画像内のすべての行を検索します。疑似C ++の場合: int start = 0; for(int i=0; i<amount_of_pixels; ++i) { if(pixels[i] == border) { start = i; break; } } 1つが見つかると、マーチングスクエアアルゴリズムを開始し、ピクセルが属するオブジェクトの輪郭を見つけます。 私がこのようなものを持っているとしましょう: 白以外のすべてが境界です。 そして、最初のブロブの輪郭点を見つけました: 一般的なアルゴリズムについてはこれで終わりです。それは輪郭を見つけ、その仕事をしました。他の2つのblobに移動して、それらの輪郭も見つけるにはどうすればよいですか?
9 2d 


3
Farseerを使用した物理のタイリング
Farseer Physics Engineに問題があります。タイル化された環境では、オブジェクトが他のオブジェクトのコーナーと完全に位置合わせされていても、ときどき相互作用することがあります。 私は、マーチングスクエアなどを使用して、1つの大きなオブジェクトを計算して作成することを提案している人々について読みました。ただし、摩擦や反発力の違いなど、各タイルに異なる物理的品質を持たせたいので、これはオプションではありません。 私の質問は、正確にそれを引き起こしているのは何ですか、それは浮動小数点精度の問題か何かですか?そして、物理エンジン全体を壊さずにそれを修正する方法はありますか?

1
インタビュー用のゲームデモの開発で何に焦点を当てますか?
このウェブサイトの他のスレッドでは、就職の面接で紹介するゲームのデモを行うことが最も重要であることを繰り返し強調してきたので、自分でゲームのデモを作成することにしました。 インタビュアーがゲームのデモを確認する際に注意を向けるのに典型的なことを知りたいのですが。 現在、私が利用できる具体的なオープニングはありませんが、おそらくゲームプレイやAIプログラミングのポジションをターゲットとすることを明確にします。このため、幅広いカテゴリーの観点から自分で答えることができます。「ファンシーなグラフィックス」を最優先するべきではありませんが、「コンピューターのプレーヤーの行動」は...あまり明白でないものがある場合、私は注意する必要があります: コードのモジュール性はどのくらい重要ですか? 典型的なアルゴリズムの実装を紹介することはどのくらい重要ですか? 新規機能を含めることはどのくらい重要ですか? プレイアビリティはどのくらい重要ですか? コードの可読性またはコードの最適化に特権を与えるべきですか? コードのドキュメントはどのくらい重要ですか? 等... 上記は、私が回答で感謝する詳細のレベルを示すための単なる例であることに留意してください。これらは、私が必ずしも対処したい特定のサブ質問ではありません(それらのいくつかを議論することが適切だと思わない限り)。 あなたの時間と専門知識を事前に感謝します。

3
ビデオゲーム要件の「創造的/娯楽的価値」をどのように測定できますか?
この質問は複雑で主観的であることに気づきましたが、しばらくは我慢してください。 ビデオゲームソフトウェアは、たとえばスプレッドシートソフトウェアとは本質的に異なると私は固く信じています。ユーザーの観点から、一部のゲームは通常のソフトウェアよりもフィルムアートとの類似性が高いからです。ただし、開発者がどの機能またはアイデアが最も重要であるかを分類するのに役立つ要件優先順位付け方法に関しては、ビデオゲームの創造的な側面を促進するものはありません。利用可能なほとんどの手法は、要件のリスクとコストに焦点を当てた通常のソフトウェア開発を支援するだけであり、ビデオゲーム要件の創造的な側面を考慮していません。 問題を説明するために、スーパーペーパーマリオに見られるような要件(機能のアイデア)を考えてください。マリオは、障害物を回避するために、3Dの世界から出て2Dの世界に入ることができます。これは、実装するのがかなり難しい要件であり、おそらくコストがかかりますが、ゲームの成功には絶対に不可欠です。利用可能な優先順位付け方法は、クリエイティブ/エンターテイメントの価値を見落としていますこの要件の主に、主に、実装のコストと(技術的に)リスクがどれだけ高いかを推定します。もちろん、これは非常に単純な例ですが、優れたゲームのアイデア(機能要件と非機能要件)のプールがあり、それらすべてを実現するのに十分なリソースがない場合を想像できます。価値計算に関しては、学術研究はゲーム開発者にゲーム要件の価値を見積もる適切な方法を提供していません。 更新/明確化:私の研究では、利用可能なソフトウェア製品管理ソリューション(より具体的には要件優先順位付けアルゴリズム)を研究し、それらがゲーム開発に適さない理由を見つけようとします。この非互換性を導入するのは、ソフトウェア自体の創造性または娯楽性のようです。ソフトウェアのコアバリューとその概念的に異なる目的を認識するのは(利用可能な)手法では不十分です。 通常のソフトウェアでは、ほとんどの場合、要件の価値を見積もるのに役立つのはユーザーまたはユーザーのニーズです。さらに、ほとんどの要件を生成するのはユーザーです。ビデオゲームソフトウェアでは、要件を推進するのは創造的なビジョンです。要件の起源に関しては、インサイドアウト対インサイドアウトのパラダイムです。この根本的な違いを確立したら、通常のソフトウェアの要件の価値を見積もるために要件優先順位付け(RP)アルゴリズムがユーザーのアイデア/ニーズに焦点を当てている場合、ビデオゲームソフトウェアの場合、RPアルゴリズムは創造的なビジョン。要件のクリエイティブ/エンターテインメント値によって、コアビジョンがこの特定の要件に依存する度合いを参照します。 私がやろうとしていることは、このコアクリエイティブビジョンとの関連性/重要性に従って要件に優先順位を付ける方法を見つけることです。これは最終的に創造的な価値を提供しますが、それは中心的なアイデアと主観的に要件を評価する利害関係者の能力に関連しています。リスクやコストなどの他の要因も考慮する必要があるため、これはRPアルゴリズムの片側にすぎませんが、利用可能なRPソリューションはすでにそれを行うための適切な方法を提供しており、ゲーム開発のニーズと互換性があります。 ここで私が書いているのは、より複雑なプロジェクトを扱うときに、開発者がこれらの問題(PRとコアアイデアに焦点を当てている)にどのように対処するかを見ようとしているからです。 ゲーム開発業界のニーズに合わせた要件優先順位付け手法を開発することで、プリプロダクションプロセスの一部を洗練しようとしています。このような方法の重要な要素は、要件のクリエイティブ/エンターテインメントの価値を特定して推定する機能です。ただし、そのためには、ゲーム開発者がこのクリエイティブ/エンターテインメントの要件の価値をどのように認識するかを理解する必要があります。一言で言えば、私は次の質問への回答を求めています。 質問1:ビデオゲーム要件のクリエイティブ/エンターテインメントの価値をどのように定義しますか? 質問2:どのように測定しますか? 質問3:誰が測定する必要がありますか? これらの問題がゲーム開発者によってどのように認識されているかを確認したいので、ここでそれらを取り上げていただければ幸いですが、この研究に貢献したい場合は、私の永遠の感謝と研究およびすべての出版物への適切なクレジット/引用を受け取ってください続いて、私の非常に短いアンケートに記入してください(7つだけの質問、そのうち3つはすでに上に表示されています)。 あなたを私の個人的なヒーローにしてくれる非常に短い調査。 研究情報とトリガー この研究は、オランダのユトレヒト大学で情報科学修士論文の一部として実施されています。 開発者が特定のソフトウェア開発プロセスに従っているため、ゲーム開発は多くの点で製品ソフトウェア開発に似ています。不十分な開発方法に従う(またはまったく行わない)と、開発時間が長くなり、予算を超過したり、バグのある製品を提供したりする可能性があります(Bethke、2003)。ビデオゲームの違いは、最終製品の一貫性と品質を確保するためにチーム全体で共有する必要がある創造的なゲームのビジョンです。これは、ユーザーの視点から見ると、他のどのソフトウェアよりもフィルムアートとの類似性が高い本格的なゲームタイトルに特に当てはまります。残念ながら、この好奇心旺盛なクリエイティブな側面により、多くのソフトウェア製品管理手法がゲーム業界で採用できなくなっています。 私は、ゲーム業界の特定のニーズに合わせた要件優先順位付け方法を作成することにより、試作段階でのゲーム開発プロセスの改善に向けて取り組むことに非常に興味があり、私はあなたの助けを必要としています!研究に貢献する最も簡単な方法は、私の短いアンケートに記入することです(上のリンク)。この研究に興味がある場合は、a.cherv @ gmail.comまでご連絡ください。 研究者情報 私の名前は、熱心なゲーマーであり、この研究に非常に興奮しているAlex Chervenkoffです。あなたは私に連絡することができます:a.cherv@gmail.com イギリスのシェフィールド大学で理学士号コンピューターサイエンスの学位を取得。 現在、オランダのユトレヒト大学で理学修士号の情報科学を行っています。 ありがとうございました!

2
スケッチや漫画のように、線で3Dの世界を描く方法
陰影を付けず、すべての線の太さが等しいインク描画を作成することを検討してください。たとえば、ディルバートのようなストリップコミックに見られます。これはアクティブな3次元の世界を表していますが、オブジェクトにはテクスチャがありませんが、テッセレーションされた三角形も表示されません。 例として、月面を描くことを検討してください。あなたが描くかもしれない線は、丘の上端に沿って、それらが表面の一般的なレベルに会うところまでです。それらの後ろでは、より大きな丘で、遠くまで、そして地平線の見えるものの後ろで、同じことをします。クレーターの場合は、外縁に近い円を描き、下縁に部分的にマスクした円を描くことができます。ボルダーは、エッジの周りに、目に見える主要なエッジに沿って線を引きます。宇宙飛行士は外縁に沿って、そして宇宙服の主要な特徴に沿って線を引くでしょう。 私は経験豊富なプログラマーですが、3Dプログラミングは初めてです。私はこのようなゲームをすぐに考えることはできません-それは行われましたか?そして、どのようにそれを行うのでしょうか?2つの問題が頭に浮かびます。重要なエッジを見つけ、それを描くことです。通常の3Dエンジンではなく、行列に基づいてコード化された「エンジン」が必要ですか?
9 3d 

1
スリープを使用して単一スレッドでロジック/更新コードをレンダリング/描画コードから分離する
私は、ゲームオブジェクトの速度はFPSによって妨げられるべきではなく、時間に基づくべきであると読みました。更新/描画コードを分離して、描画速度を制限せずにパフォーマンスを最大化し、時間に基づいて一定のロジック更新速度を提供するにはどうすればよいですか? 私の現在の疑似コードは次のとおりです loop { draw(); if (ticksElapsed() > 100) { update(); ticks+= ticksElapsed(); } } 問題は、描画コードがupdate()レートのパフォーマンスを妨げていることです。また、スリープ状態になると、描画機能とロジック機能の両方が使用できなくなるため、CPUが100%消費されます。 私もSDLを使用していますが、vsyncオプションがないようです。固定および可変時間ステップという用語も聞いたことがありますが、sleep()でそれをどのように行うことができるかわかりません。

3
クォータニオンを使用してヘリコプターを制御できますか?
単純化されたヘリコプター(現時点では立方体)を3Dでシミュレーションしようとしていますが、回転に問題があります。ヘリコプターは3つの軸に沿って回転できます。 後部プロペラを使用してそれ自体で回転する:y軸回転 左または右に傾けて左または右に移動:z軸回転 上下に傾けて後方または前方に移動:x軸回転 各軸を個別に制御できる必要があります。これまでのところ、オイラー角を使用してみましたが、使用する回転順序が何であれ、ジンバルロックまたは一部の軸の「スイッチ位置」にぶつかります。 クォータニオンを使用する必要があるようですが、クォータニオンは方向と角度を使用するため、個々の軸を制御する方法がわかりません。3つの四元数を作成して、それらを乗算する必要がありますか?同じ問題が発生することはないでしょうか? 奇妙なことに、ヘリコプターの3つの軸(親指を上げる= y、インデックス= z、中央= x)を指で表すと、これらの問題にぶつからないようです。どうして?
9 3d  rotation 

1
マウスクリックが到達したタイルを見つける
私は等尺性グリッドベースのゲームに取り組んでおり、マウスクリックをユーザーからタイルにリンクしようとすると問題が発生します。私は問題を2つの部分に分けることができました: タイルを囲む長方形を見つける(私はそれを行うことができました) クリックが入った四角形からタイルを見つけ出します(私を困らせました) これは、内側にタイルがある長方形の例です。 長方形は長さ70px、高さ30pxなので、たとえば30x(top)/ 20y(left)の入力を使用する場合、これがどのタイルに該当するかをどのように判断しますか?

3
落下速度と加速速度を計算する方法は?
私はあなたが宇宙船を制御し、クラッシュせずに着陸する必要がある着陸船ゲームを作ることを考えています。エンジンの稼働時間に関連して落下または加速の速度を計算する簡単な式は何ですか?
9 physics 

3
2Dソフトボディ物理エンジン?
こんにちは。最近SFMLグラフィックライブラリを学びました。それを使用するために、非剛体2D物理システムを使用または作成したいと考えています。3つの質問があります。 Box2d の剛体の定義は次のとおりです。 非常に強い物質の塊で、塊の任意の2ビットの物質間の距離は完全に一定です。 そして、これは、弾性、変形可能、破壊可能、および再接続ボディを作成したいので、まさに私が望まないものです。1.単純な2D物理エンジンはありますが、これらの種類の特性はありますか?できれば無料ですか、オープンソースですか? 2. box2dを使用できず、リジッドボディに基づいている場合でも、box2dを使用して作成できますか? 3.最後に、このような単純な物理エンジンがある場合、単に経験と物理計算の知識を強化するために、とにかく新しいエンジンを作成するプロセスに進む必要がありますか?既存のエンジンのコードを変更したり、非常にユニークな物理学でゲームを作成したりするのに役立つと思います。 ありがとう!
9 c++  physics 

4
ソースのようなエンジンはエンティティをどのように処理しますか?
ソースエンジン(およびその前任者、goldsrc、quake's)では、ゲームオブジェクトは2つのタイプ(ワールドとエンティティ)に分かれています。世界はマップジオメトリで、エンティティはプレーヤー、パーティクル、サウンド、スコアなどです(ソースエンジンの場合)。 すべてのエンティティには、そのエンティティのすべてのロジックを実行するthink関数があります。 したがって、処理する必要のあるものがすべてthink関数を含む基本クラスからのものである場合、ゲームエンジンはリストにすべてを格納し、すべてのフレームでループしてその関数を呼び出すことができます。 一見すると、このアイデアは合理的ですが、ゲームに多くのエンティティがある場合は、リソースが多すぎる可能性があります。 では、Sourceなどのエンジンは、ゲームオブジェクトの処理(処理、更新、描画など)をどのように行うのでしょうか。

3
小さなインタラクティブストーリーゲームのシナリオライターをどこに雇えばよいですか?
小さな対話ベースのゲーム/インタラクティブストーリーのシナリオが必要です。ゲームは、私たちが開発しているミドルウェアツールに同梱される例として使用されます。 既存のストーリーを購入したい(もちろん、動的である必要があります。ダイアログを分岐させるなど)、または誰かに新しいストーリーを書くように依頼します。 そのような人/サービスを見つけるためにどこに行くべきかアドバイスしてください?私たちはロシアに拠点を置いているので、十分な才能のあるネイティブの英語の作家を地元で獲得することは少し問題です。 更新:さらに明確にするために:ストーリーを再利用し、そこから派生作品(つまり、私たちが話しているゲーム)を作成するために必要なすべての権利を取得する必要があります。市販品です。他人の作品を無作為に借り、それを使うだけではうまくいきません。 警告:「できる」という回答はここに投稿しないでください。これは求人掲示板ではありません!あなたは反対投票され、あなたの回答は削除されます。本当に私に連絡したい場合は、私のプロフィールを調べてください。

2
AABBの衝突によるプラットフォームジャンプの問題
最初に図を参照してください。 私のAABB物理エンジンが交差を解決するとき、ペネトレーションが小さい方の軸を見つけてそれを行い、その軸上のエンティティを「押し出し」ます。 「左に移動」の例を考えてみましょう: VelocityXがVelocityYよりも大きい場合、AABBはエンティティをY軸上に押し出し、ジャンプを効果的に停止します(結果:プレイヤーは空中で停止します)。 velocityXがvelocitY(図には示されていません)よりも小さい場合、AABBがエンティティをX軸上に押し出すため、プログラムは意図したとおりに機能します。 この問題を解決するにはどうすればよいですか? ソースコード: public void Update() { Position += Velocity; Velocity += World.Gravity; List<SSSPBody> toCheck = World.SpatialHash.GetNearbyItems(this); for (int i = 0; i < toCheck.Count; i++) { SSSPBody body = toCheck[i]; body.Test.Color = Color.White; if (body != this && body.Static) { float left = (body.CornerMin.X - …

3
ゲームロジックをアニメーションや描画ループから分離する方法は何ですか?
私は以前Flashゲームを作成したことがありましたが、MovieClipsなどを使用して、アニメーションをゲームロジックから分離しました。今、私はAndroid向けのゲームを作ることに挑戦していますが、これらを分離することに関するゲームプログラミング理論はまだ混乱しています。私はゲーム以外のWebアプリケーション開発のバックグラウンドを持っているので、MVCのようなパターンに精通していて、ゲームプログラミングに近づくにつれてその考え方にとらわれています。 たとえば、タイルグリッドのデータを含むゲームボードクラスに、それぞれプロパティを含むタイルクラスのインスタンスを含めることで、ゲームを抽象化するようなことをしたいと思います。ドローループにこれへのアクセスを許可し、ゲームボード上の各タイルのプロパティに基づいてゲームボードを描画させることができますが、アニメーションがどこに行くべきか正確にはわかりません。私の知る限り、アニメーションは抽象化されたゲームロジック(モデル)と描画ループ(ビュー)の間に位置しています。私のMVCの考え方では、アニメーションが実際にどこに行くことになっているのかを判断しようとするのは面倒です。モデルのようにかなりのデータが関連付けられますが、フレームに依存しないアニメーションなどを実現するには、描画ループと密接に結合する必要があるようです。 この考え方から抜け出し、ゲームにとってより意味のあるパターンについて考え始めるにはどうすればよいですか?

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