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

コードの構造。ゲームエンジンの内部設計に関する質問。

9
学ぶべき優れたオープンソースゲームとは何ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 4年前に閉鎖されました。 オープンソースゲームのソースコードをダウンロードしたいので、ゲームアーキテクチャに慣れることができます。ソースコードが読みやすく、簡単に理解できるゲームを知っている人はいますか? 編集:少し考えてから、デスクトップまたは2Dグラフィックスを搭載したAndriod電話でプレイできるゲームを作りたいと思います。

2
ゲーム開発におけるアクターとは何ですか?
私はゲーム開発に関する本(Game Coding Complete、Fourth Edition)を読んでいますが、それが何であるかを説明する代わりに簡単にそれらを使用する方法を説明する「俳優」トピックがあります。 本がこれらの俳優を紹介する方法は次のとおりです。 ゲームには、あなたの世界を生き生きとさせるオブジェクトがたくさんあります。第二次世界大戦のゲームは戦車と飛行機でいっぱいかもしれませんが、未来の空想科学ゲームにはロボットと宇宙船があります。ステージ上の俳優のように、これらのオブジェクトはゲームプレイの中心にあります。私たちが彼らを「ゲームアクター」と呼ぶのは適切なようです。 ゲームアクターは、ゲームワールドの単一のエンティティを表すオブジェクトです。弾薬箱、戦車、カウチ、NPC、またはあなたが思いつくものなら何でもかまいません。場合によっては、世界自体が俳優になることさえあります。ゲームアクターのパラメーターを定義し、できるだけ柔軟で再利用できるようにすることが重要です。 ゲームアクターを定義する方法は、ゲームと同じ数だけあります。コンピュータプログラミングの他のすべてと同様に、完璧なソリューションはめったにありません。 ほんの少ししか理解できませんでした。アクションを実行できるのはゲーム内のすべての抽象化です。独自の状態です。通常、その動作はステートマシンとして実装されます。これだよ。私はゲーム開発のシステムプログラミングのバックグラウンドを持っているので、ゲーム開発における俳優の意味、使用方法、一般的な使用方法、解決する問題、方法、なぜ。子供が理解できるような説明をお願いします。 私はグーグルでこの情報を見つけようとしましたが、代わりに別の「俳優」に向かいます:ほとんどの場合、並行プログラミングまたはゲーム俳優ですが、それについての十分な説明はありません。

4
ソケットサーバーとゲームサーバーを別々のプロセスにする必要がありますか?
単純な標準のクライアント/サーバーゲームを想定しています。サーバーの場合、クライアントからの接続とメッセージをリッスンし、ローカルソケットまたはstdinを介して実際のゲームサーバーを実行する別のプロセスにデータを送信する別のプロセスを用意する価値がありますか? 他のオプションは、両方のことを単一のプロセスで実行することです。着信メッセージをキューに入れ、正しい順序で実行することで、問題が停止することはありません。 2つの「アクティビティ」を分離するための追加リソースが実際に価値があるかどうか疑問に思っています。どのように決定すればよいですか?賛否両論を聞きたい。

6
多くの属性を持つヒーロー向けのOOPアーキテクチャ
他の人と(受動的に)戦うことができるキャラクターで、単純なブラウザーテキストRPGを開始しようとしています。これには、強さ、器用さなどの約10のスキルのリストが含まれ、さまざまな武器の追加の熟練度が含まれます。 これらのスキルをクラス属性として持つだけで、このキャラクタークラスを設計するより良い方法はありますか?簡単そうに思えますが、不器用なので嫌がります。 class Char(self): int strength int dexterity int agility ... int weaponless int dagger ...
14 architecture  oop 

3
Unity3Dエンジン設計の背後にある理由(ゲームオブジェクト/変換コンポーネント)
私はUnity3Dエンジンの設計の背後にある理由を理解しようとしていますが、これはまだ頭を悩ませることができないものです:なぜ、名前、レイヤーマスク、タグ?とにかく他のすべてのコンポーネントのように削除することはできません。代替手段がないため、削除する必要はありません。

2
これは、MMORPGモバイルゲームに適したアーキテクチャですか?
最近、私は会社のために新しいMMORPGモバイルゲームのアーキテクチャを設計しようとしています。このゲームは、マフィア戦争、iMobsters、またはリスクに似ています。基本的な考え方は、敵(オンラインユーザー)と戦うために軍隊を準備することです。 以前は複数のモバイルアプリに取り組んできましたが、これは私にとって新しいことです。多くの苦労の末、高レベルのフロー図を使用して説明するアーキテクチャを思いつきました。 クライアントサーバーモデルを使用することにしました。サーバーに集中データベースがあります。各クライアントには、サーバーとの同期を維持する独自のローカルデータベースがあります。このデータベースは、マップ、製品、在庫など、頻繁に変更されないものを保存するためのキャッシュとして機能します。 このモデルが適切に配置されているため、次の問題に取り組む方法がわかりません。 サーバーとクライアントのデータベースを同期する最良の方法は何でしょうか? イベントをサーバーに更新する前に、ローカルDBに保存する必要がありますか?集中DBに変更を保存する前に、何らかの理由でアプリが終了した場合はどうなりますか? 単純なHTTP要求は同期の目的を果たしますか? 現在ログインしているユーザーを知る方法は?(1つの方法は、クライアントがアクティブであることを通知するためにx分ごとにサーバーにリクエストを送信し続けることです。 クライアント側の検証は十分ですか?そうでない場合、サーバーが何かを検証しない場合にアクションを元に戻す方法は? これが効率的なソリューションであるかどうか、およびどのように拡張されるかはわかりません。すでにそのようなアプリに取り組んでいる人々が自分の経験を共有できれば、もっと良いものを思い付くのに役立つかもしれません。前もって感謝します。 追加情報: クライアント側は、マーマレードと呼ばれるC ++ゲームエンジンに実装されています。これは、すべての主要なモバイルOSでアプリを実行できることを意味するクロスプラットフォームゲームエンジンです。私たちは確かにスレッド化を達成することができ、それは私のフロー図にも示されています。サーバーにMySQLを、クライアントにSQLiteを使用する予定です。 これはターンベースのゲームではないため、他のプレイヤーとのやり取りはあまりありません。サーバーはオンラインプレーヤーのリストを提供し、バトルボタンをクリックしてバトルを行うことができます。いくつかのアニメーションの後、結果がアナウンスされます。 データベースの同期には、2つのソリューションがあります。 各レコードのタイムスタンプを保存します。また、ローカルDBが最後に更新された日時を追跡します。同期するときは、タイムスタンプの大きい行のみを選択して、ローカルDBに送信します。削除された行にはisDeletedフラグを保持して、すべての削除が更新として動作するようにします。しかし、すべての同期要求について、完全なDBをスキャンし、更新された行を探す必要があるため、パフォーマンスに関して深刻な疑問があります。 別の手法として、ユーザーに対して行われた各挿入または更新のログを保持することもできます。クライアントアプリが同期を要求したら、このテーブルに移動して、どのテーブルのどの行が更新または挿入されたかを見つけます。これらの行がクライアントに正常に転送されたら、このログを削除します。しかし、ユーザーが別のデバイスを使用するとどうなるかを考えます。ログテーブルによると、すべての更新はそのユーザーに転送されましたが、実際には別のデバイスで行われました。そのため、デバイスも追跡する必要があります。この手法の実装には時間がかかりますが、最初の手法が実行されるかどうかはわかりません。

1
ゲームコンソールエミュレーターの開発がなぜ難しいのですか?
エミュレータはかなり魅力的だといつも思っています。古いganerationコンソールまたはハンドヘルド用のエミュレータを真剣に作成したいと思います。ハードウェアと、そのハードウェア用に作成されたゲームをより深く理解するのに役立ちます。しかし、人々はいつもそれがどれほど難しいか、そして私も試してはいけないと言っています。その理由を知りたい。 また、出発点として適切な場所に関する提案や、必要な情報はどこで入手できますか?

4
コンポーネントベースのアーキテクチャを使用して効果的なゲームオブジェクト相互作用スキームを設計するにはどうすればよいですか?
これは設計上の質問です...これはもっと一般化できると思いますが、私はそれに苦労しています。ゲームオブジェクトインタラクションのデザインについて疑問に思っています。これが私の例です(2Dパズルプラットフォーム)。 プレイヤーがレベルを進めようとしているとしましょう。さまざまな方向に向けることができる多くのライトがあります。以下は、これらのライトオブジェクトがどのように相互作用するかの例です。 ある光は、プレイヤーがギャップを越えることができるプラットフォームを投影します 1つのライトは、触れるものの摩擦係数を下げ、別のライトはそれを増やします 1つのライトはすべてのライトの効果を無効にします。これにより、そのライトがオンのときにプラットフォームが消え、摩擦調整剤が無効になります。 等... コンポーネントアーキテクチャを使用する場合、この問題に対処する最良の方法は何ですか?各主要オブジェクトのコンポーネントは明らかであり、環境への影響を明確に定義する方法もあります。相互作用を「解決」するクラス(そのようなものはすぐに混乱する可能性があります)?特定の時間に相互作用しているオブジェクトの結合オブジェクトを作成するためのデコレータパターンの使用法 これに役立つデータ構造? また、これらのインタラクションにオーディオを接続しますか?オーディオをシステムに接続することは、可視性やプレーヤーの移動/衝突など、他のプロパティを接続するのと同じように思えます。 コンポーネントが追加されるにつれて、新しいコンポーネントをほとんど変更せずに処理できる堅牢なシステムがあればよいのは明らかですが、これをどのように設計するかについてはよくわかりません。 その他の情報:私が使用しているエンジンは、IceCreamと呼ばれるXNAエンジンです。

2
MMOクエストの仕組みを実装するためのヒントは?
以下にリストされている要件を満たしたクエストの仕組みを実装するには、どのツール、パターン、またはベストプラクティスをお勧めしますか ソフトウェアアーキテクチャ(一般的な方法)とオブジェクトワイヤリング、イベントサブスクリプション、および条件の表現の選択肢について説明しています。使用に成功したツール/ライブラリについて言及してください。 編集:スクリプトを使用している場合、どのような設定をお勧めしますか? 要件: シンプルな2D mmo(rpg) クエストを含むすべてのゲームデータは、リレーショナルデータベースに保存されます ゲーム内のイベントは、プレイヤーの新しいクエストまたは既存のクエストの前進を引き起こす可能性があります クエストは、プレイヤーがクエストを利用できるようになる前に満たさなければならない任意の数の条件を持つことができます クエストは、任意の条件を持つ任意の数のサブクエスト/ステップで構成できます クエストはシンプルから Aと話す-5人を殺すB-Aと話す-永久に健康を増進する 非常に関与する: エリアXのアイテムを使用-エリアYに移動-ボットが出現します-10%以上のダメージを与えることなくボットを殺します-ボットがアイテムをドロップします-アイテムを受け取ります-ポータルのロックを解除します-ポータルの背後のJにアイテムを配信します-ゴールドと経験を受け取ります-もう一度ポータルを渡すことができます-このプレイヤーのポータルをロックします レベルインスタンスは可能性があります(プレーヤーはチームまたは特定のクエストを完了することができ、それらの参加者だけにレベルの場所をスポーンします) クエストは、できればスクリプトやプログラミングの知識がなくてもワールドエディターを使用して管理できる必要があります(編集:一般的にはスクリプトに反対しません) 実装言語としてC ++を想定しています イベントと条件のチェーンを組み合わせることができれば、より複雑な、したがってより魅力的なクエストをモデル化できると考えていました。独自のECA(イベント-条件-アクション)エンジンをローリングして実験しましたが、それはやり過ぎかもしれません。スクリプトを使用せずに一般的な条件をモデル化することは特に困難でした。

1
アニメーションにブレンドツリーとステートマシンを使用する場合
3Dアニメーションキャラクター(Unity)で初めてゲームを作成した経験豊富なゲーム開発者の趣味で、ブレンドツリーとアニメーションステートマシンを使用するタイミングを判断するのに苦労しています。概念的には両方を理解していますが、Unityと他のソースの両方のチュートリアルで、キャラクターのアニメーションに使用されるブレンドツリーとアニメーションステートマシンの両方を見てきました。誰かが私を正しい方向に向けることができることを望んでいるのに、いつ/なぜ他の人よりも優れているのか分かりません。 私のゲームは3人称アクションRPG a'la WoWまたはKOTORまたはMass Effectです(私が知っている異なるシステムですが、視点と戦闘スタイルは高レベルでちょっと近いです)。攻撃、ブロック、偽装、死亡、ウォーキング、ランニング、ジャンプ、射撃などのアニメーションが大量にありますが、それらを自然にシーケンスする方法はわかりません。 移動に使用されるブレンドツリーを見たことがありますが、これはキャラクターの動きを滑らかにしようとするときに理にかなっていますが、そのブレンドツリーから攻撃状態に移行する方法がわかりません。等)。攻撃/死/回避の状態にモーション状態からブレンドツリーを作成する必要がありますか?ステートマシンだけを使用して、さらに制御できますか?ステートマシンには非常に注意が必要です。移行の肥大化は非常に一般的であり、ブレンドせずにジャンキーアニメーションシーケンスを作成する可能性が大きいと思われるためです。 Unityキャラクターコントローラーを使用し、独自のロジックスクリプトを記述してそれを駆動する予定です。AIには、組み込みのnavメッシュエージェントを使用します。キャラクターコントローラーアニメーションはAIアニメーションとは異なる方法で処理されますか? 洞察は大歓迎です! ありがとう

3
配列のオブジェクトまたはオブジェクトの配列?
Roller Coaster Tycoonのラインに沿った、管理シムゲームを作成しています。パフォーマンスを最大化するために、ワールドオブジェクトを構造化する最善の方法を知りたいです。 私のゲームには5,000人の人がいるとしましょう: オブジェクトを作成し、そのような配列に保存します。 class person() { this.x = 0; this.y = 0; this.thirst = 15; this.hunger = 15; // etc.. add methods: public findPath(int destX, int destY) { // and so on } people = new person[5000]; for (int = 0; i < 5000; i++) { people[i] = …

3
Unityにはタイムラインの既存のサポートがありますか?
私はUnity3Dでのゲームの開発を計画しており、エンジンが既に提供しているものと、自分でコーディングしなければならないものを一致させようとしています。 ゲーム自体はリズムゲームになります。つまり、オーディオイベントとグラフィックイベントを同期させて、予定どおりにプレイできるようにします。私が避けたいのは、オーディオまたはグラフィックの一方が他方よりも速く進行し始める潜在的な遅延のシナリオです。 大学でのゲームデザインクラスでこのタイプの調整システムについて議論したとき、教授はこのタイプのデザインを「タイムライン」クラスと呼びました。これらの1つまたは複数をインスタンス化して、異なる速度で進行させ、将来起こることをスケジュールし、定期的なイベントを同期させることができるという考えです。ただし、特定のAPIが「タイムライン」機能を備えているかどうかをグーグルで調べるのは無益な努力であったため、これを「タイムライン」クラスと呼ぶことは私の教授自身に限定されていたようです。 この種の機能にはもっと一般的な名前がありますか?Unityには、このようなイベントのスケジューリングを調整するための既存のメソッドがありますか、それともエンジンに組み込む必要があるのですか?そして、もしそうなら、私はいくつかのチュートリアルに向けられていることを感謝します!

2
プレーヤーがアチーブメントを完了したかどうかを確認するにはどうすればよいですか?
MMOゲームを作成していますが、成果を実装する必要があります...どうすればよいですか?最も簡単なことは、これを100msごとに1回実行することです。 for a in achievements for p in players if a.meetsRequirements(p) then p.completeAchievement(a) しかし、それはさらに複雑な問題を引き起こします。たとえば、アチーブメントが実際に完了したかどうかを確認するにはどうすればよいですか?プレイヤーは特定の成果のためだけにカスタムプロパティを持っていますか?私はクエストでこの種のことをしました。なぜなら、それらは主に「100個の木材を収集する」からです。また、それをチェックするより良い時間があるはずです、これは私のサーバーを定期的に遅くするでしょう、と思います。

3
イベントスケジューラのシングルトンパターンを回避する方法
ゲームのイベントスケジューラを作成したいのですが、基本的にはゲームイベントのトリガーをスケジュールできるようにしたいのです。これは、1回限りのトリガー、または定期的なトリガー(5秒ごとにトリガーイベント "E_BIG_EXPLOSION" ...)になります。 これはシングルトンを使用するのに適した場所かもしれないと思われがちですが、シングルトンは非常に邪悪で、病気のように広がる傾向があります... この場合、シングルトンの使用を避けるためにどのような設計を提案しますか?

3
ゲーム内イベントを管理する最良の方法は?
私は、ゲーム内のイベントが時々起こる必要があるゲームに取り組んでいます。良い例はチュートリアルです。ゲームを開始すると、ゲームのいくつかのポイントでイベントが発生します。 最初の敵に遭遇すると、ゲームは一時停止し、殺す方法についての説明を受け取ります。 あなたは最初の敵を殺した、あなたは「良い仕事」メッセージを受け取ります。 新しいアイテム、アイテムの統計ポップアップ付きのメニューを取得します。 などなど 私が取り組んでいるゲームは、ゲームのルールがほとんど同じパズルゲームです。したがって、これらのすべてのイベントを別々のレベルでハードコーディングするのは非効率的です。 XMLなどの外部ソースでこれらのイベントを何らかの方法で定義する必要がありますか?次に、XMLを読み取り、レベルのイベント要件を設定するインタープリターを作成しますか?たとえば、2人の敵を殺したときに発生するイベントをどのように定義できるかわかりません。 明確にするために、私はこれを行うのに最適なプログラミング言語またはスクリプト言語を探しているのではなく、これを処理する最適な方法を探しています。 ありがとう! 編集: 私の質問が理解するのはかなり難しかったので、2番目の例: 私が抱えている問題は、ゲーム内のいくつかの追加アクションを常にほぼ同じ手順で実行することです。RPGの戦いのように、誰もがターンを持ち、スキルを選択します-それは常に同じです。しかし、中間にカットシーンを表示したい場合はどうでしょう。カットシーンを含めて、変更されたバトルクラスに渡すためにゲーム構造全体を変更することは、非常に効率が悪いようです。私はこれが通常どのように行われるのだろうと思っています。

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