タグ付けされた質問 「game-development」

開発はゲーム開発者によって行われ、ゲーム開発者は一人から大企業まで多岐にわたります。メインストリームゲームは通常、発行元から資金提供を受けており、開発には数年かかります。インディーゲームは時間がかからず、個人や小規模な開発者が安価に作成できます。インディーゲーム業界は、新しいオンライン配信システムとモバイルゲーム市場の成長に伴い、近年増加しています。

3
ゲーム開発のためにネットワークを介してクロックを同期する方法は?
時間ベースの要素が多いゲームを書いています。私は時間を使用して、ネットワークが停止し、パケットが通過していないときのプレーヤーの位置(およびパケットが受信されるまでの時間と受信されない時間)を推定します。それは、プレイヤーが方向を選択して動きを止めることができないという意味でパックマンタイプのゲームです。そのため、システムは理にかなっています(または少なくとも私はそう思います)。 だから私は2つの質問があります:1)ネットワークに遅延があるので、最初にゲームのクロックをどうやって同期させるのですか?2)それらを同期せず、それらが同じであると想定しても大丈夫ですか(私のコードはタイムゾーンに依存しません)。これは、人々が時計を変えてチートするような非常に競争の激しいゲームではありません。 ゲームはJavaとPythonでプログラミングされています(プロジェクトとして並行開発)

3
(Lua)ゲームスクリプトとはどういう意味ですか?
Luaは埋め込みスクリプト、特にスクリプト用のゲームによく使用されることを読みました。正確にどのように使用されているか想像するのは難しいと思います。なぜ、どの機能でどのオーディエンスに使用されているのか説明できますか? この質問は、特にLuaを取り上げているのではなく、Luaスクリプトと同様の目的を果たす埋め込みスクリプトを取り上げています。 エンドユーザーがカスタム調整を行うために使用されますか?ゲーム開発者がゲームロジック(レベル、AIなど)の作成を高速化するために使用されていますか?スクリプトはより高速になる可能性があるため、ゲームフレームワークコードのスクリプトに使用されますか? 基本的に、私はこのようなスクリプトの使用法がプレーンな構成とフレームワークロジックとの間でどれほど深いかを考えています。そして、どのくらいのスクリプトが行われます。いくつかの構成行またはかなりの量?

7
プロダクトオーナーはあなたのチームの開発者でもありますか?
ここでPOの責任について混乱しています。私はゲーム機能チームの開発者でしたが、POでもありました。開発者の毎日の仕事はほぼフルタイムなので、私は時間をかけてPOの義務に注意しなければならず、POの責任は開発者の考えに反するようです。 POとして、次のスプリントでより多くの機能を選択します。そうでなければ、私はそうしないように自分に言い聞かせます。私はそれらの機能を開発するチームメンバーだからです。この状況は私を混乱させますので、皆さんからいくつかのアイデアを聞きたいです。 私はスクラムとゲーム開発の初心者です(約1年半)。また、ここと英語も初めてです。

1
オブジェクト指向コードを機能コードにリファクタリングするために使用できるいくつかのテクニックは何ですか?
JavaScriptとHTML5キャンバスを使用してゲームの一部を開発するのに約20〜40時間費やしました。私が始めたとき、私は何をしているのか全く分かりませんでした。したがって、これは概念実証として始まり、現在は順調に進んでいますが、自動テストはありません。ゲームは複雑になり始めており、自動化されたテストの恩恵を受けることができますが、コードがグローバル状態の変化に依存しているため、実行するのは難しいようです。 JavaScript用の関数型プログラミングライブラリであるUnderscore.jsを使用して、すべてをリファクタリングしたいと思います。私の一部は、関数型プログラミングスタイルとテストを使用して、ゼロから始めるべきだと思っています。しかし、命令型コードを宣言型コードにリファクタリングすることは、より優れた学習体験であり、現在の機能の状態に到達するためのより安全な方法になると思います。 問題は、コードを最終的にどのように見せたいかはわかっていますが、現在のコードをそれに変換する方法がわかりません。私はここの何人かの人々がリファクタリングの本とレガシーコードで効果的に働くことのいくつかのヒントを私に与えることを望んでいます。 たとえば、最初のステップとして、私はグローバルステートの「禁止」について考えています。グローバル変数を使用するすべての関数を取り、代わりにパラメーターとして渡します。 次のステップは、ミューテーションを「禁止」し、常に新しいオブジェクトを返すことです。 任意のアドバイスをいただければ幸いです。これまでにOOコードを取得して、Functionalコードにリファクタリングしたことがありません。

4
いくつかの大きなライブラリまたは多くの小さなライブラリ?
数か月の間に、現在すべてのプロジェクトに組み込んでいるゲーム開発のための小さなフレームワークを作成しました。 フレームワークは、SFML、LUA、JSONcpp、およびその他のライブラリに依存しています。オーディオ、グラフィック、ネットワーキング、スレッディングを扱います。いくつかの便利なファイルシステムユーティリティとLUAラッピング機能があります。また、文字列解析ヘルパーや数学ユーティリティなど、多くの便利な「ランダム」ユーティリティメソッドがあります。 私のプロジェクトのほとんどはこれらの機能をすべて使用していますが、すべてを使用しているわけではありません。 ファイルシステムとネットワーク機能のみを使用する自動アップデーターがあります ネットワーク機能のないゲームを持っています JSONcppを必要としないプロジェクトがあります これらの文字列/数学ユーティリティのみが必要なプロジェクトがあります つまり、SFML / LUA / JSON共有ライブラリは、たとえ使用されていなくても、すべてのプロジェクトに含める必要があります。プロジェクト(非圧縮)のサイズはこのように10MB以上で、そのほとんどは未使用です。 代替策は、フレームワークを多くの小さなライブラリに分割することです。これは、はるかに効果的でエレガントになると思いますが、より多くのDLLファイルとプロジェクトを維持する必要があります。 フレームワークを多数の小さなライブラリに分割する必要があります。 グラフィックス スレッディング ネットワーキング ファイルシステム 小さいユーティリティ JSONcpp utils LUA utils これは最良の解決策ですか?

4
NPCのアニメーションのシーケンスを選択する-動作ツリーを使用しますか?
NPCを実装して、仮想空間、具体的には猫を歩き回っています。一連の短いアニメーションクリップ(3〜5秒)があります。私の最初の本能は、最後のアニメーションが終了したときにランダムなアニメーションを選択することだけでしたが、次のアニメーションが物理的に偶発的な可能性に制限されていても、動作が頻繁に変更されるため、現実的に見えないことに気付きました。 私の意図する解決策は、各アニメーションに次のアニメーションの重み付きリストがある、動作ツリー(http://www.gamasutra.com/blogs/ChrisSimpson/20140717/221339/Behavior_trees_for_AI_How_they_work.php)のようなものです。つまり、猫が歩いている場合、歩き続ける確率は80%、座っている確率は20%、睡眠は0%です。基本的にマルコフモデルを使用して適切な次のステップを取得します。 ただし、これが良い解決策であるかどうかはわかりません。また、現在のアニメーションから次のアニメーションの可能性と確率へのマッピングを生成する方法もわかりません。30のアニメーション* 30の次のアニメーション= 900の重み付け。手動で計算するのは大変です。 猫は障害物にぶつかると反応することがありますが、問題の先を行くと、事前にすべてを選択せず​​に現実的なアニメーションのシーケンスを選択することになります。ツリーには、人への近さ、部屋の場所、最後に食べてからの時間など、他のいくつかの入力もあります。

3
ハンドルやManagerを渡さずにオブジェクトのハンドルを管理するのに最適なデザインパターンはどれですか。
OpenGLを使用してC ++でゲームを作成しています。 知らない人のために、OpenGL APIを使用して、などの多くの呼び出しをglGenBuffers行いますglCreateShader。これらの戻り値の型は、GLuint作成したものに対する一意の識別子です。作成されるものはGPUメモリ上に存在します。 GPUメモリが制限されている場合があることを考えると、複数のオブジェクトで使用されるときに同じものを2つ作成したくない場合があります。 たとえば、シェーダー。あなたは、シェーダプログラムをリンクして、あなたが持っていますGLuint。シェーダーを使い終わったら、呼び出す必要がありますglDeleteShader(またはそれに影響を与える何か)。 ここで、次のような浅いクラス階層があるとします。 class WorldEntity { public: /* ... */ protected: ShaderProgram* shader; /* ... */ }; class CarEntity : public WorldEntity { /* ... */ }; class PersonEntity: public WorldEntity { /* ... */ }; 私が今まで見たどのコードでも、すべてのコンストラクターにShaderProgram*渡して、に格納する必要がありWorldEntityます。ShaderProgramは、GLuintOpenGLコンテキストでの現在のシェーダー状態へののバインディングと、シェーダーを使用するために必要な他のいくつかの役立つことをカプセル化する私のクラスです。 私がこれで持っている問題は: を構築するために必要な多くのパラメーターがありますWorldEntity(メッシュ、シェーダー、多数のテクスチャーなどがあると考えてください。これらはすべて共有できるため、ポインターとして渡されます) どのような作成されたWorldEntityかを知る必要性をShaderProgramそれが必要 これはおそらく、異なるエンティティに渡すもののインスタンスを知っているある種のgulp EntityManagerクラスを必要としますShaderProgram。 つまりManager、クラスが必要なインスタンスEntityManagerとともにに自分自身を登録する必要があるかShaderProgram、switch新しいWorldEntity派生型ごとに更新する必要がある、マネージャの大物が必要なためです。 私が最初に考えたのは作成することでしたShaderManager(私は管理者が不良である、知っている)私はへの参照やポインタで渡すというクラスをWorldEntityので、彼らは何でも作成することができますクラスShaderProgramを経由して、彼らが望むShaderManagerとShaderManager、既存のトラックに保つことができShaderProgram、それができるよう、秒すでに存在するものを返すか、必要に応じて新しいものを作成します。 (私ShaderProgramはShaderProgramsの実際のソースコードのファイル名のハッシュを介してsを保存できます) だから今: …

2
複雑なゲームのテスト駆動開発
暇なときにゲームのコーディングをしていますが、プログラミングに関しては、まだ初心者です。この質問がトピックから外れている場合や、他の人に役に立たない場合は、申し訳ありませんが、うまくいけば、役に立ちます。 コードの設計や、コーディングのさまざまな方法論やアプローチについての本を読むのに多くの時間を費やしてきました。この調査の過程で、私はテスト駆動開発の概念に出会います。このアイデアを支持する人々は通常、それについて非常に情熱的です。私はそれがソフトウェアを書くスピードと効率を助けることができると信じています。時間は非常に貴重なリソースであるため、プログラミングクラフトの知識を広げようとせずに、何とかやり過ごすのではなく、最善の方法で学ぶことを学びたいと思います。 とにかく、私は初心者だからといって、テスト駆動開発をゲームにどのように適用するか想像できません。この件についていくつかの記事を見つけましたが、あまり役に立ちませんでした。私が見た単体テストの例のほとんどは、非常に単純な定型の例、またはまったくゲームに似ていないソフトウェアの例です。 私自身のコーディングでは、同様の考え方でテスト駆動開発に取り組みますが、実際にはTDDとしての資格はないと確信しています。ゲームに追加する機能を実装するための最小限のコードを記述し、すぐにゲームをテストして、機能するかどうかを確認します。意図したとおりに起こらない場合は、すぐに変更を加えて、自分が望むものに近づけます。機能していないか壊れている場合、およびコードを読み取ってもバグを見つけることができない場合は、予期しない動作が見つかるまでデバッガーのメソッドを順に実行し、それを削除します。私が言おうとしているのは、ほぼすべての増分変更の後で、常にゲームをテストしているということです。テストは私の開発を推進します。「単体テスト」は私の頭の中にあります、 私の実際の質問に移ります。複雑なゲームの単体テストを作成するにはどうすればよいですか?複雑に言うと、ゲームプレイの多くの創発的な側面を意味します。つまり、ゲームプレイの本質は、プレイヤーの選択と組み合わされたゲーム内のさまざまな要素間の相互作用から生まれます。たとえば、手続き型の世界を持つローグライクなRPG。そのようなゲームのためにどんなユニットテストを書くでしょうか?このようなゲームにテスト駆動開発をどのように適用できますか?

5
ロールバックを許可するためにゲームの動きを保存する最良の方法は何ですか?
ゲームフローを制御するゲームクラスと、ゲームクラスに接続されたプレーヤーを含むボードゲームを開発しています。ボードは単なるビジュアルクラスですが、動きの制御はすべてゲームによって行われます。 プレーヤーは、この種の動きが許可されていないことをプレイヤーに伝えるゲームにつながる誤った動きを試みる可能性があります(その背後にある理由を伝えます)。しかし、場合によっては、プレイヤーは動きを作ってそれが最良の動きではないことに気づくか、ボードをクリックするのを忘れるか、または別のアプローチを試してみたいだけです。 ゲームを保存して読み込むことができるので、移動前にすべてのデータを保存してロールバックを許可せずに、ユーザーが最後に自動保存されたターンを読み込むことができます。これは素晴らしいアプローチのように見えますが、ユーザーとのやり取りが含まれており、ボードの再描画はユーザーにとって退屈な作業になる可能性があります。この種のことをするより良い方法はありますか、それともアーキテクチャが本当に重要なのですか? ゲームクラスとプレーヤークラスは複雑ではないため、クラスのクローンを作成することをお勧めします。または、ゲームデータをゲームルールから分離してより適切な方法を選択します。 更新:このゲームの仕組み:移動(簡単な移動)を行うメインボードと、その移動に反応するプレーヤーボードがメインボード上にあります。また、他のプレイヤーの動きや自分の動きに応じたリアクションムーブがあり、自分の番でないときにリアクションしてボード上で行動することもできます。すべての動きを元に戻すことはできないかもしれませんが、現在の答えの1つに浮かぶ元に戻す/やり直しのアイデアが気に入っています。

1
商用品質の8ビットゲームの構築に使用されたハードウェア/ソフトウェアツールは何ですか?
つまり、私はまだZ80プロセッサを搭載したMSX2を持っています。そのコンピューター(約'84年から'90年)向けに作成されたコナミのゲームを見ると、これらのゲームの高品質コードは驚くべきものです。私は当時子供で、コンピューターのプログラミング方法を学ぼうとしていましたが、実際には非常に複雑な動作にもかかわらず、バグやグリッチがほとんどなく、どれだけうまく機能しているかに魅了されました。その品質を達成するためにどのハードウェア/ソフトウェアツールを使用できましたか、どの方法論ですか?今日、コンピューターは本当にもっと複雑ですが、当時、Basicで作成した在庫管理プログラムでさえ、多くのバグに悩まされており、デバッグするのは面倒でした。あなたが放つことができるどんな光でも深く感謝されます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.