タグ付けされた質問 「patterns」

5
Minecraftのクラフトグリッドのようなものを実装するにはどうすればよいですか?
Minecraftのクラフトシステムは、2x2または3x3グリッドを使用します。材料をグリッドに配置し、適切な材料を適切なパターンで配置すると、レシピがアクティブになります。 設計に関するいくつかの興味深い点: 一部のレシピでは、特定の材料を他の材料と交換できます。たとえば、ピックは柄に棒を使用し、木製の板、玉石、鉄のインゴット、金のインゴット、またはダイヤモンドの宝石を頭に使用する場合があります。 パターン内の相対位置は重要であり、グリッド上の絶対位置ではありません。つまり、スティックと石炭(または木炭)を3x3グリッドの6つの位置のいずれかに正しいパターンで配置することにより、トーチを作成できます。 パターンは水平方向に反転する場合があります。 私はそれを考え直しているかもしれませんが、これは興味深い検索/セット削減の問題のようです。それで、アルゴリズム的に言えば、これはどのように機能しますか(またはできますか)?

1
C#/ XNAゲームプロジェクトの単体テスト
私はプログラミングを始めてからゲーム開発に挑戦してきましたが、決して真剣にはなりませんでした。私はビジネスアプリ開発者として働いていますが、暇なときにいくつかのゲームに取り組んでいます。 (Microsft web-devスタック上の)ビジネスの世界では、ASP.NET MVCは、インターフェイスの動作方法の単体テストが容易なため、非常に人気が高まっています。 すべてのゲームロジックを簡単に単体テストできるゲームを作成するために、どのデザインパターン(MVC、MVP、MVVMなど)を使用できるのか疑問に思っています。これは可能ですか?時間を無駄にしていますか?完全なビルドを行ってから、単体テストの代わりに「統合」タイプのテストを実行する方が良いでしょうか? サンプルコードは素晴らしいものですが、説明も役立ちます。 (ユニットテストタグを追加しようとしましたが、必要な担当者がいません...)

5
APIに依存しないブリッジ(OpenGL / D3D / Whateverなど)。それらをどのように使用しますか。賛否両論[非公開]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 閉じた2年前。 あなたは3Dエンジンを作っています。最高のマルチプラットフォームの世界が必要です。突然、WindowsマシンでDirect3Dを使用し、OSX / LinuxでOpenGLを使用する場合、両方のサポートされている機能を最小公分母に犠牲にする必要があることに気づきます。 3つのOSでOpenGLを使用する人もいます。すべてが良いです。次に、グラフィックスAPIバックエンドを任天堂のGXに移植する必要があります。また、PS3とXbox360のパスを作成する必要があります。 職業はなんですか?それ自体で最も一般的な分母ではない独自のAPIを設計し、各プラットフォーム用にバックエンド実装を記述しますか、それとも独自のブランチである各プラットフォーム用に記述しますか? 独自のAPIを設計することを選択した場合、ブリッジパターンまたは独自のブードゥー教を使用しますか?あなたがすべてを理解し、キッチンシンクアプローチが停止する必要があることに気づいたとき、狂気はどこで止まり、基本的にはブランチとして各プラットフォームに個別のエンジンがあります。または、すべてにこだわってキッチンシンクを行い、各プラットフォームのバックエンドモジュール専門分野でプラットフォーム固有の仕様を保持します。

2
2D配列で形状を検索し、最適化する
画像が許可されました。下のゲームの画像は、「T」字型の一部として認識されている、いくつかの暗いブロックを示しています。ご覧のように、コードは赤い点でブロックを暗くしており、緑色の輪郭を持つ "T"形状は見ていません。 私のコードは、x / yをループし、ブロックを使用済みとしてマークし、形状を回転させ、繰り返し、色を変更し、繰り返します。 私はこのチェックを大きな不安で修正しようと試み始めました。現在のアイデアは: グリッドをループしてすべてのパターンオカレンス(使用済みとしてブロックをマークしない)をメモし、これらを配列に書き込みます もう一度グリッドをループします。今度は、どのブロックがどのパターンで占められているか、したがって、どのブロックが複数のパターンで占められているかに注目します。 もう一度グリッドをループします。今回は、どのパターンがどのパターンを妨げているかに注目します それだけでいいと思います。 私はしなければならないと思う 最初に他のほとんどのパターンを妨害するものから始めて、矛盾する形状のさまざまな組み合わせを試してください。これにどのようにアプローチしますか? 8つのブロックを占有する3つの競合する形状があり、形状はそれぞれ4ブロックであるため、最大2つの形状しか持てないという有理数を使用します。 (私は他の形状も組み込むつもりであり、競合する形状を通過するときに考慮する必要があるスコアの重み付けがおそらくありますが、それは別の日になる可能性があります) 箱詰めの問題ではないと思いますが、何を調べればよいかわかりません。あなたの助けに感謝して、それが理にかなっていると思います 編集質問の明快さにもかかわらず、誰もが理解しているようです、はい、 各色の中で最大の「T」字を見つけたい (もし私があなたに2つのポイントを与えて、あなたが3つを作ったなら、あなたは少しイライラするでしょう)

4
ゲームデザインでのフレームごとの関数呼び出しとイベント駆動型メッセージング
伝統的なゲームデザインは、私はそれを知っているように、使用する多型と仮想関数を更新ゲームオブジェクトの状態に。言い換えると、ゲーム内のすべてのオブジェクトで、同じ一連の仮想関数が定期的(例:フレームごと)に呼び出されます。 最近、もう1つ、ゲームオブジェクトの状態を更新するためのイベント駆動型メッセージングシステムがあることを発見しました。ここでは、オブジェクトは通常フレームごとに更新されません。代わりに、非常に効率的なイベントメッセージングシステムが構築され、ゲームオブジェクトは有効なイベントメッセージを受信した後にのみ更新されます。 イベント駆動型ゲームアーキテクチャについては、Mike McShaffryによる「Game Coding Complete」で詳しく説明されています。 以下の質問について、親切にお願いできますか? 両方のアプローチの長所と短所は何ですか? どちらが他より優れているのですか? イベント駆動型ゲームデザインは、すべての分野で普遍的で優れていますか?したがって、モバイルプラットフォームでも使用することをお勧めしますか? どちらがより効率的で、どちらが開発が難しいですか? 明確にするために、私の質問はゲームデザインから完全に多態性を取り除くことについてではありません。私は単に、イベント駆動型メッセージングと仮想関数への通常の(フレームごとの)呼び出しを使用してゲームの状態を更新することの違いとメリットを理解したいと思っています。 例: この質問はここで少し論争を引き起こしたので、例を挙げましょう。MVCによると、ゲームエンジンは3つの主要な部分に分かれています。 アプリケーション層(ハードウェアおよびOS通信) ゲームロジック ゲームビュー レーシングゲームでは、ゲームビューは画面をできるだけ速く、少なくとも30fpsでレンダリングする責任があります。ゲームビューもプレイヤーの入力をリッスンします。今これが起こります: プレーヤーが燃料ペダルを80%まで押した GameViewは「Car 2 Fuel Pedal Pressed to 80%」というメッセージを作成し、それをGame Logicに送信します。 Game Logicはメッセージを取得し、評価し、新しい車の位置と動作を計算し、GameView用に次のメッセージを作成します: "Draw Car 2 Fuel Pedal Pressed 80%"、 "Car 2 Sound Acceleration"、 "Car 2 Coordinates X、Y" .. 。 GameViewはメッセージを受信し、それに応じて処理します
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.