ゲーム開発

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


6
ビヘイビアツリーのプリエンプション
私はビヘイビアツリーを回避しようとしています。そのため、いくつかのテストコードを作成しています。私が苦労していることの1つは、優先度の高いものが発生したときに現在実行中のノードをプリエンプトする方法です。 兵士の次の単純な架空の行動ツリーを考えてみましょう。 いくつかのティックが過ぎ、近くに敵がいなかったと仮定します。兵士は草の上に立っていたため、実行するためにSit downノードが選択されます。 再生するアニメーションがあるため、Sit downアクションの実行に時間がかかりRunning、ステータスとして戻ります。ティックが1つまたは2つ経つと、アニメーションはまだ実行されていますが、敵は近くにいますか?条件ノードのトリガー。次に、攻撃ノードを実行できるように、できるだけ早くシットダウンノードをプリエンプトする必要があります。理想的には、兵士は座っても終わらない-座ったばかりの場合は、代わりにアニメーションの方向を逆にするかもしれません。現実性を高めるために、もし彼がアニメーションの転換点を過ぎた場合、代わりに座ってから立ち直るようにするか、恐らく脅威に反応するために急いでつまずかせることを選択するかもしれません。 このような状況に対処する方法についてのガイダンスを見つけることができませんでした。過去数日間に私が消費したすべての文献とビデオ(そして、それはたくさんありました)は、この問題を回避するようです。私が見つけた最も近いものは、実行中のノードをリセットするというこの概念でしたが、シットのようなノードは「ちょっと、まだ終わっていない!」と言う機会を与えません。 おそらく、基本クラスでPreempt()or Interrupt()メソッドを定義することを考えましたNode。さまざまなノードが適切に処理することができますが、この場合は、できるだけ早く兵士を元に戻してから戻りSuccessます。このアプローチではNode、他のアクションとは別に条件の概念を自分のベースに持たせる必要があると思います。この方法では、エンジンは条件のみをチェックでき、条件が満たされた場合、アクションの実行を開始する前に現在実行中のノードをプリエンプトします。この差別化が確立されていない場合、エンジンは無差別にノードを実行する必要があるため、実行中のアクションをプリエンプトする前に新しいアクションをトリガーできます。 参考のために、現在の基本クラスを以下に示します。繰り返しますが、これはスパイクなので、できる限りシンプルに保ち、必要なときに、そして理解したときにのみ複雑さを加えようとしました。 public enum ExecuteResult { // node needs more time to run on next tick Running, // node completed successfully Succeeded, // node failed to complete Failed } public abstract class Node<TAgent> { public abstract ExecuteResult Execute(TimeSpan elapsed, TAgent agent, Blackboard …
25 ai  behavior-tree 

2
ゲームのアートを行うようアーティストに教えるにはどうすればよいですか?
だから私のガールフレンドはアーティストであり、私はプログラマーであり、私たちはしばしば現在出ているさまざまな人気のあるプラットフォームのために才能に参加し、いくつかの小さなゲームや他の楽しいことをすることについて話します。 しかし、私はまだ本格的なゲーム開発を行っていないため、作成するアセットを作成またはパッケージ化する方法を彼女に説明するのに苦労しています。そのため、私たちは常にそれについて何もしません。 ここで主に考えているのは、フレームごとのアニメーションを行うときです。私はスプライトシートがこの種のものに使用されていることを知っていますが、その後、1秒あたりのフレーム数などの質問があります。プログラムは賢明ではなく、芸術は賢明です。 これにどのように取り組むべきでしょうか?
25 art 

8
ゲームの仕組み/ルールをメインコードとは別に実装する価値はありますか?
このコミュニティの範囲に適合するかどうか、またはStackoverflowに代わりに行くべきかどうかはわかりません。 ゲームをそのコアで簡単に拡張できるようにしたいとします。つまり、多くの人々が、ある程度のプログラミング知識がなくても、既存のルールを微調整できるだけでなく、まったく新しいゲームメカニクスを追加できるようにしたいとします。私はプログラマーとしては上手ではありませんが、学ぶ準備はできています。いくつかの指示とそれができることを保証する必要があります。 私が考えたのは、メインのユーティリティコードとは別にゲームメカニクスを何らかの方法で実装することが可能かどうかです。つまり、卓上ゲームには、すべてのアクションの実際のアルゴリズムが含まれていないルールブックがありますが、いくつかのプロトコルと制限を記述し、各アイテムのコンテキストを大きく参照しています。PCゲームでも同様のことを行うことができます。たとえば、すべてのルールを人間のプログラミング言語で非常に高レベルで読みやすい(および変更可能な)で記述します。ゲームの仕組みの実例? それは本当に自分の言語とそのためのコンパイラを書く必要があるように思えます))もちろんこれはできません。しかし、問題へのより簡単なアプローチがあるかもしれませんか? 参考までに、ユーティリティコードの選択言語はPython 3.xになります

3
CDキー/シリアル番号でゲームを保護するにはどうすればよいですか?
XNAゲームの海賊版が公式のゲームサーバー(モデレートされているため、ゲームの代金を支払った人が最高のエクスペリエンスを得ることができる)から、誤ったCD、生成されたCD、複製されたCD、または禁止されたCDキー(またはゲームはデジタルであり、CDがまったくないため、シリアル番号)。 シリアル番号保護システムをゲーム(クライアントとメイン認証サーバーの両方)に組み込むにはどうすれば簡単にハッキングできませんか? ソフトウェアに対してそのような保護を行う経験はないことに注意してください。 これをやったことはありませんが、基本は理解しています。クライアントでキーチェックを実行できない理由がわかりました。そのため、1回限りのキーエントリでログイン/パス認証を使用しても問題ありません。 現在、この保護の目標は、潜在的な不正行為者を阻止し、公式サーバーからプレイヤーを破壊的に振る舞うことです。キーを使用しても使用しなくても、誰でもプライベートサーバーでプレイできますが、他のプレイヤーとの望ましくない経験をする可能性が高くなります。プレイヤーは公式サーバーでプレイするにはオンラインでなければならないので、プレイヤーを購入するのは簡単だと思います。 クライアントのハッキングは簡単すぎるため、最初の登録(および場合によってはサーバー側の認証)手順のみを保護し、転送中にキーを盗むことができないようにします。 こちらもご覧ください: マルチプレイヤーゲームはどのように認証を処理する必要がありますか?
25 security 

3
他のオブジェクトのオフセットに基づいてオブジェクトを回転するにはどうすればよいですか?
Y軸を中心に回転するタレットの3Dモデルがあります。この砲塔には、オブジェクトの中心から大きく外れた大砲があります。砲塔ではなく大砲で指定されたターゲットを狙います。ただし、タレットを回転させることしかできないため、目的ごとに達成するためにどの方程式を適用する必要があるかわかりません。 次の画像は私の問題を示しています。 ターゲットに砲塔「LookAt()」がある場合、大砲から発するレーザーは、そのターゲットを完全に見逃してしまいます。 これが完全にトップダウンのシナリオであり、大砲が砲塔と正確に平行である場合、私のロジックは、偽のターゲットは実際のターゲットに等しい位置に加えて、砲塔と大砲。しかし、実際のシナリオでは、カメラの角度は60度であり、大砲はわずかに回転しています。 次の図は、シナリオを示しています。 正確な理由はわかりませんが、同じオフセットを適用すると、タレットから特定の距離を狙っているときにしか機能しないようです。 ロジックに欠陥がありますか?ここに基本的なものがありませんか? 最終編集:@JohnHamiltonの最新アップデートが提供するソリューションは、この問題を完全に正確に解決します。これで、誤った実装を説明するために使用したコードと画像を削除しました。

3
グラフィックスカードは、ベクトルの4番目の要素を最終位置として何をしますか?
この質問から、行列乗算で位置を変更する方が簡単なので、4要素の位置ベクトルが必要になります。 これは、4D要素を3Dポイントの表現と見なす場合(変換なしと仮定した場合)、4番目の要素を単に無視することを意味しますが、4番目の要素がvector4をGPUに供給する場合、要素は1つではなく、レンダリングされません-なぜですか? ラスタライザに配置された4番目の要素の意味は何ですか? 編集:レビューの際、この質問の言葉遣いはやや不十分でした。2番目の段落が「4番目の要素の値が特定の範囲内にない場合、「正しく」/「期待どおり」にレンダリングされない」と言う方が正確です。

4
「ゲームオブジェクト」-およびコンポーネントベースのデザイン
私は過去3〜4年間、趣味のプロジェクトに取り組んでいます。シンプルな2Dおよび3Dゲーム。しかし最近、より大きなプロジェクトを始めました。ここ数か月間、私はすべてのゲームオブジェクトのベースとなるゲームオブジェクトクラスを設計しようとしていました。何度も試行錯誤を繰り返した後、グーグルに目を向けると、すぐにいくつかのGDC PDFおよびPowerPointが示されました。そして今、私はコンポーネントベースのゲームオブジェクトを把握しようとしています。 エンジンはゲームオブジェクトを作成し、その後、健康、物理学、ネットワークなどの処理を行うさまざまなコンポーネントをアタッチすることを理解しています。しかし、私が理解していないのは、コンポーネントXがYがオブジェクトの状態を変更したかどうかを知る方法です。健全性はHealthComponentによって制御されているため、PhysicsComponentはプレーヤーが生きているかどうかをどのように知るのでしょうか。そして、HealthComponentはどのようにして「プレイヤーが死んだアニメーション」を再生しますか? 私はそれが次のようなものであると感じていました(HealthComponent内): if(Health < 0) { AnimationComponent.PlayAnimation("played-died-animation") } しかし、もう一度、HealthComponentは、どのように接続されているゲームオブジェクトにAnimationComponentが接続されていることを知るのでしょうか?私がここで見る唯一の解決策は AnimationComponentがアタッチされているかどうかを確認してください(コンポーネントコード内またはエンジン側) コンポーネントには他のコンポーネントが必要ですが、それはコンポーネント設計全体と戦うようです。 HealthWithAnimationComponent、HealthNoAnimationComponentなどのように書きます。これもコンポーネント設計のアイデア全体と戦うようです。

3
ゲーム開発はスーパーエリートクラブですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 閉じた3年前。 たとえば、GitHubの求人やStackExchange Careers 2.0のようなインターネットを介して、求人をすべて読み上げます。ご存知のように、Webアプリの開発、iOS / Androidの仕事、その他多くのことです。Google、Apple、その他の大企業の求人広告についても読んでいます。 「ゲーム開発者」の欠員について読んでみませんか?ゲーム開発者の需要はそれほど低いですか?または、ゲーム開発者は本当にまれですか? EA、Konami、Activisionなどの企業はどのように開発者を獲得していますか? アプリケーションに対するこの応答をどのように克服できますか:「ゲームの開発経験がないため、私たちのために働くことはできません。」現場で働くことができない場合、どのように経験を積むべきですか?
25 career  jobs 

5
サーバー上のゲームロジック!良いまたは悪い?
現在、シンプルなオンラインマルチプレイヤーゲームを計画しています。そしてここに質問があります。サーバーでゲームロジック全体を作成し、クライアントからサーバーに入力を送信するだけで意味がありますか?長所と短所はどちらですか、そうしない理由はありますか?

3
プログラムで球をどのように生成しますか?
誰かが球の頂点、インデックス、テクスチャ座標を作成する方法を説明してもらえますか?これを行う方法についてのドキュメントが驚くほど不足しており、私は学習に興味を持っています。 gamedev.netなどで明らかな、グーグル、ルックなどを試してみました。しかし、球体ポイントの生成、それらのインデックス付け、テクスチャリングはカバーしていません。

6
無料のボクセルエディター?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 6年前に閉鎖されました。 誰もが優れた無料のボクセルエディタやボクセルからメッシュへのコンバータを知っていますか?
25 tools  models  editors  voxels 

2
メガマンスタイルの画面スクロールデザイン
NESの古典的なMega Manシリーズでは、非常に特殊なスクロール手法を使用しており、実装に頭を悩ませています。基本的に、レベルはすべて同じサイズの「画面」に分割されます。いくつかの画面は互いにスムーズにスクロールし、より広い遊び場のように見えます。一部の画面では、プレーヤーが画面の端に到達するまでカメラのスクロールが停止します。画面の端に遷移すると、次の画面が表示されます。1つの画面に複数のトランジションを設定することもできます。たとえば、1つの画面に移動するラダーがありますが、別の画面に進むこともできます。 これらの画面遷移はどのようにモデル化できますか? 画面0は、プレーヤーが開始する開始画面です。 画面0〜3は水平方向に滑らかにスクロールし、プレーヤーには1つの連続したフィールドとして表示されます。 画面3とそれに隣接する画面4と5の間には遷移があるため、カメラが画面3の右端または上端を超えて進むことはありません。 プレーヤーがトランジションエッジのいずれかに移動すると、ユーザー入力は一時的に無効になり、カメラは新しい領域に移行し、その後ユーザー入力が復元されます。 ブルースクリーン(画面5)では、水平方向のスクロールのみが無効になっているため、垂直方向の遷移のみが可能です。 緑色の画面(画面6)には画面5に戻る垂直方向の遷移がありますが、画面7への水平方向のスムーズスクロールも可能です。 編集:部屋の観点からトランジションを実装すると、これにつながります: 矢印付きの小さなノッチは、遷移が発生する可能性のある領域です。各領域には「方向」があり、部屋の可視領域のすぐ外側にあります。プレーヤーがリージョンにヒットするとすぐに、トランジションが開始されます。
25 2d  camera  platformer 

3
タイルベースのゲームで壁を作る:何が欠けていますか?
今日、タイルベースのゲームへの壁の実装に関するメモを書き留めるために時間を費やした後、突然、想像していたほど単純ではないことに気付きました。私の仕事の現在の段階は、実際に壁に関連するコードを作成することにもほど遠いですが、それを行うための3つの異なる方法を思いつきました。今のところ、自分のアイデアのどれが最もうまくいくか、何かを見逃したかどうかわからない。 重要:キャラクターはCAN関係なく、フォームの、壁を有するタイルの上に立ちます。 3つのバリアントすべてに共通すること:タイルマップは、一次元のstd :: vector(または同様の)ベースのコンテナーに「保持」されます。その理由は(驚くほど)別の質問への回答で説明されています。 タイルベースのゲームのコンテナクラス。 壁に戻る。 A)シンプルなアプローチ。 ここには何も派手なものはありません。各タイルコンテナには、文字だけでなく、タイル内のエッジに接続されている1つまたは複数のWallオブジェクトを保持できます。 長所:実装が簡単で、エンジンを変更する必要はありません。短所:2つのこと。1つ-頭の中だけかもしれませんが、一部の組み合わせは見苦しいだけです。第二-このアプローチでは、2つの隣接するタイルから二重壁を作成できます。建物はゲームの重要な部分であり、二重壁により、ビルダーはゲーム手段を通じて壁の材料のアップグレードを控えることができ、既存の壁を2倍にすると耐久性が向上します。それは望ましくありません。確かに、二重壁を禁止する手順を含めることもできますが、それは悪い感じになります。 B)スマート(?)アプローチ。 プレイヤーにマップ全体を二重壁にする代わりに、私は彼らにそれを打ち負かすつもりです。すべての壁には、タイルの端に内側から取り付けられる2つの半分があります。したがって、単一の「壁ユニット」を作成するには、2つの隣接するタイルに2つの半壁オブジェクトを作成する必要があります。 長所:対称的です!!! また、現在のエンジンの仕様を大幅に変更する必要はありません。短所:より多くの手間、より多くのオブジェクト、そしてもちろん、「キャップ」。写真でわかるように、角は基本的に「キャップ」オブジェクトを求めて泣きます。私は実際にそれでクールです、それを追加するのはそれほど難しくありません。ねえ、私はすでに4つの接続されたキャップで作られた細い柱の計画を持っています。甘い。それでも、視野と視線の問題の可能性については心配があります。 C)総オーバーホールバリアント。 または、ゲームオブジェクトの個別のコンテナーとして境界線とコーナーを作成することもできます。そのように。 長所:よくわかりません。まあ、それは簡単です。間違いなく。短所:オーバーホールが必要です。ありがたいことにコードではなく、現在のゲームメカニックのメンタリティです-それは確かです。利点はそれほど明白ではありません。また、このアプローチは、以前の2つのコンテナよりもはるかに多くのコンテナを必要とします。インデックス作成の数学も少し苦労します。 タイル間に壁を作る3つの異なる方法があります。他に選択肢がある場合は、喜んでチェックします。私が見なかったアプローチのいずれかにメリット/ダウンがある場合-それらを指摘してください。

4
既存のFOSSコンポーネントベースのフレームワークはありますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 2年前に閉店。 コンポーネントベースのゲームプログラミングパラダイムは、はるかに人気が高まっています。再利用可能なコンポーネントフレームワークを提供するプロジェクトはありますか?どの言語でも、私はそれを気にしないと思います。私自身のプロジェクトのためではなく、ただ興味があります。 具体的には、基本Entityクラス、基本Componentクラス、およびおそらくいくつかの標準コンポーネントを含むプロジェクトがありますか?ホイールを再発明したくない場合、またはGraphicsComponentDirect3Dでスプライトを実行したい場合は、ゲームを開始するのがはるかに簡単になりますが、既に何十回も実行されていることがわかります。 すばやくグーグルでRusherが表示されます。誰もがこれを聞いたことがありますか?人気のあるものがない場合は、なぜですか?このようなものを再利用可能にするのは難しすぎますか?私自身の実装では、フレームワークに押し込められるボイラープレートがたくさん見つかりました。

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