ゲーム開発

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

2
オブジェクト指向の方法で在庫を処理するにはどうすればよいですか?
私はオブジェクト指向のアプローチに従ってプレーヤーのインベントリを処理するための最良の方法を考えています。 たとえば、剣と斧は2つの異なるクラスで、どちらも武器から継承しています。武器とポーションもアイテムから継承する異なるクラスです。 理想的には、在庫はアイテムのコンテナーとして実装されますが、それはいくつかの理由で実行できません。したがって、アイテム(スマート)ポインターのコンテナーである必要があります。newとdeleteの呼び出しでコードを制限したくないので、ctor / dtorでニュース/削除するItemWrapperクラスにラップします。 したがって、コードは次のようになります class Sword; class ItemWrapper; //Prepare the long sword. const Sword longSword(...params...); //Declare the inv vector<ItemWrapper> inv; //Add it to inventory inv.push_back(longSword); //compiles if ItemWraper(const Sword&) is defined. このアプローチは、コードの明快さと書きやすさの点で私が思いつくことができる最高のものでした。問題は、ItemWrapperがItemから継承するリーフクラスごとに1つのコンストラクターを必要とすることです(これはたくさんあります)。 これが私の初めての試みなので、知りたいのですが、正しい方向に進んでいますか?またはそれを行うためのより良い方法がある場合(おそらく、非常に多くのコンストラクタを回避する方法)?
7 c++  objects 

3
適切な無料の音声シンセサイザはどこで見つけてダウンロードできますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 私はネット全体を調べていて、いくつかの音声シンセサイザーを見つけましたが、それらは機能しないか、無料ではないか、または5つほどの音声しか選択できません...取得する必要があります自分で声を編集できるシンセサイザー。これは、私のゲームでGLaDOSのようなロボットキャラクターに必要です。 ここでGDSEを検索しましたが、このような質問は「建設的ではない」と締めくくられることがよくあるようです。これは、同じことをたまたま探している他の多くの人々を助けることができるので、そうではないと思います。

2
libGDXのSQLite
libGDXでSQLiteを使用する方法の例はありますか?元のAndroidコードに、データベースに簡単にアクセスできるクラスがありますが、libGDXに相当するクラスを見つけることができません。それとも何か不足していますか?どういうわけかそれをlibGDXコードで使用できますか?libGDXは初めてです。
7 android  java  libgdx 

2
エンティティシステムについて予約しますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 エンティティシステムの機能に本当に興味があります。この本で良い本を検索しようとしていますが、失敗しました。 私はこのパラダイムの学習に夢中になりたくないので、本は大きな助けになります。誰かが良い本を推薦できますか? また、この言語は不可知論ですか?または、このパラダイムを実装するのに苦労する言語がありますか(例:Objective-C)? ありがとう。

4
これらの要件を満たすスプライトシート作成者はいますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 6年前休業。 まともなスプライトシートパッカーを探しています。 特徴: Linux用のコマンドラインインターフェース。 効果的なパッキングアルゴリズム。 シート内のスプライト間の設定可能なパディング。 構成可能な固定スプライトシートサイズ(つまり、多数のシートにパック)。 重複したスプライトの検出。できれば、ラスタライズされたベクトル画像をパックするときのFPエラーを許容するために、ある程度の許容範囲があります。 透明なピクセルによる自動トリミング(つまり、パック時にスプライトがトリミングされ、データに正しく反映されます)。 Webグラフィック形式のサポート(少なくともjpg、png)。 合理的なデータ出力形式(スプライトシートindes)。 有料のソフトウェアは、価格が妥当である限り問題ありません。

2
ローグライクの説得力のあるバーサーカー敵AI有限状態マシンとは
私は長い間作成してきたローグライクで説得力のあるバーサーカーの敵を作成する方法を探しています。どのような種類のアクションを実行できるか、および警告できるテキストメッセージを検討する場合、NetHackのようなゲームを想定することができます。 これには2つの理由があります。 私はこの問題を1年以上解決しようとしてきましたが、失敗しました。従うべき例。 このSEには、エンティティの状態のマッピングが全体としてどのように見えるかを示す例が一般的に不足しています。そのような例があることはコミュニティにとって役立つでしょう。 私が必要なもの: 私がバーサーカーと言うとき、私は盲目的な怒りに振り回され、暴力や流血と対立している他の実体を攻撃できる敵を意味します。多くのRPGで行われているように、攻撃するターゲットにランダムに切り替えるだけではありません。この目的のために、希望するステータス効果やバフの追加を自由に想定してください。これらの州に関連する情報を詳細に記載してください。 凶暴な実体は彼の怒りを単に強さの増加を伴う状態変化ではない方法で表現する必要があります。これは問題に対する非常に浅い解決策です。実体はバーサーカーのような気分にはなりません。 私が試したこと: 昨年、3つの異なるアイデアを試しました。そして、それらのどれも満足しません。この問題の解決策は、まったく新しいものか、これらのいずれかの「修正」です。私はジュースを流すためにそれらを主に含めています。 私が最初に試みたのは、エンティティの強さを増やし、(敵のリストから)ターゲットをランダム化し、彼にわいせつな言葉を叫ぶなどの単純なベルセルク状態でした。この状態になると、敵は死ぬまでそこに留まります。 次に試みたのは、実際に上記を変更したものです。敵は非常に平たく感じられ、彼を落ち着かせたり、彼の怒りから彼をノックしたりする方法はありませんでした。私は落ち着く機能を追加し(呪文やその他の効果で)、敵を通常の状態に戻し、そこから逃げるような他の状態に遷移できる状態を追加しました。これにより深さが増しましたが、バーサーカーの状態はさらに浅く、破壊的ではないように見えました。 ここから私はそれをすべて廃棄し、より新しい何かを目指しました。基本的に、遷移状態に基づいて敵が自分自身にキャストできるバフ。一度キャストすると、これは敵の振る舞いを変更し(ターゲティングの場合)、敵からの侮辱を無作為に発射しながらダメージを増加させます。それから、彼は他のどの州にも入ることができて、怒り続けることができました。だから彼は逃げるかもしれないが、それでも挑発する。彼は治るかもしれませんが、それでも激怒し、多くのダメージを与えます。これは良いですが、根本的な問題はまだ残っています。彼は本当に怒ったようではなく、ただ怒っています。主にあなたは通常、単独で敵に遭遇し、バーサーカーが好まない他の敵とは遭遇しないため、ランダム化の側面が低く抑えられます。 他にどのように私は男をバーサークしたように見せることができ、そして単に腹を立てた/口を汚しただけではありませんか? これは境界線リストの質問だと思います。だから私はこれらの要件を課します:それは移行のためのすべての状態と条件を示す非常に詳細な完全な回答でなければなりません。そして、それは推測以上のものでなければなりません。自分のローグライクでこれをテストする必要があります。そうでない場合は、ベルセルクのステータスを把握する上で、これが「最良の」ソリューションである可能性がある理由が明らかです。 これが閉まっていても私は怒りません。私はそれが端を踊っていることに気づきました。
7 ai  roguelikes  fsm 

1
オクトリー部門
私は内部にハイポリウサギがいるオクツリーと12ポリゴンプラットフォームを持っています。 取引はこれです。あなたはうさぎに光線を発射しています。もちろん彼はかわす(またはあなたが逃す)。 黄色のビームはあなたの死のレーザーです。 ヒットした八分木の一部のために選択された「候補」の三角形は、紫色で表示されます。 ルートノードがヒットしたため、ルートノードのポリゴンをテストしてしまいました。そして、octreeサブディビジョンの境界にあるポリゴンは、最終的にルートノードになり、使用しているサブディビジョンアルゴリズムが適用されます。 ルートノードのポリゴン数を減らしたいのですが。 バニーを角に移動するだけで 隅にバニーがいる場合、シーン全体のレイトレーシングにかかる​​時間は3分の1になります(バニーが中央にいる場合は35秒と95秒)。これは、バニーの三角形のルートにあるものが少なく、ルートのみのoctreeヒットでチェックされるポリゴンが少ないためです。 パフォーマンスを改善する方法を調査しています。基本的には、トリスをツリーのできるだけ下に押して、オブジェクトが主に葉にあるようにします。 私はこれを素朴にやってみました、そして私が作ったこの細分化アルゴリズムを使いました: split root into 8 CANDIDATE CHILDREN foreach TRI in root: foreach of the 8 CANDIDATE CHILDREN if the CANDIDATE CHILD partially contains TRI (at least one vertex of TRI) add TRI to CANDIDATE CHILD CLEAR tris in root これにより、三角形が階層を下ってリーフノードにプッシュされます。しかし、私は特定の角度から穴を開けますが、奇妙なミスパターンがあります。 (予想) …
7 octree 

6
「アシスト」統計を決定する方法
私のゲームはトップダウンのマルチプレイヤーシューティングゲームで、さまざまなダメージを与える4種類の武器でスペースポッドを操作します。キル、デス、ダメージ/テイクンなどの通常の統計情報はすべてあります。ただし、主にアシストを構成するものを決定できないように見えるため、問題があったのはアシスト統計です。 私たちのゲームでは、プレイヤーは224ポイントのヘルス(私が知っているランダムな数)でスポーンし、ヒットした各武器は異なる量のヘルスを奪います(11〜224のどこでも)。プレイヤーが別のプレイヤーを殺した場合、失われたヘルスを40ポイント回復します。 プレーヤーのヘルスが40ポイントしか残っていない場合、ポッドは低いヘルスを示すために喫煙を開始します。 プレイヤーは絶えず「脆弱」であると不平を言っています。プレイヤーに223のダメージを与えるのは、他の誰かが最後のショットを手に入れ、キルのクレジットを得た場合のみです。 この情報を踏まえて、プレーヤーがアシストを取得するタイミングをどのように決定しますか?

4
自分の開発会社を設立[終了]
この質問が今後の訪問者を助けることはほとんどありません。それは、地理的に狭い地域、特定の瞬間、またはインターネットの世界中のオーディエンスに一般的に適用できない非常に狭い状況にのみ関連しています。この質問の適用範囲を広げる方法については、ヘルプセンターをご覧ください。 8年前に閉鎖。 大学院教育を修了し、自分のゲーム開発会社を立ち上げることに興味があります。 私はアニメーターとアーティストからなる6人のメンバーのチームを持っています。 新しい会社を始めるためのすべての要件を提案し、私がそれを始めることが良いかどうかを提案してください。私はいくつかのゲームのコンセプトを持っていますが、私はそれについて本当に情熱を持っています。

1
レイヤーの深さを維持しながら2Dでステンシルを使用しようとしています
これは、参照フレームを取得できるように、現在行われていることの画面です。 私が遭遇している問題は、描画呼び出し中に実行しているテクスチャスワップの量が原因で、ゲームの速度が低下することです。タイルの描画ごとに、壁、キャラクター、床、およびすべてのオブジェクトがそれらのタイプを含むそれぞれのスプライトシート上にあるため、読み込まれたテクスチャは、適切にレイヤー化するためにスプライトを循環して描画するときに、3〜5回以上スワップします。 今、私はすべての一般的なオブジェクトをそれぞれのリストにまとめ、layerDepthを使用してそれらをそのように描画してみましたが、私が直面している新しい問題はドア/ウィンドウの方法に関係しています壁に描かれています。つまり、ステンシルを使用して、ドア/窓の形状で描画された壁のブロックを一掃し、壁が描画されるときにドア/窓のサイズの穴ができるようにしました。 これは、一般的なオブジェクトをグループ化するのではなく、タイルごとに壁に描画を設定する方法です。 最初に、ドア/窓がこの壁にあるかどうかを確認します。そうでない場合は、すべての手順をスキップして、通常どおりに描画します。さもないと 現在のspriteBatchを終了する すでに描画されたものを保持するために、透明色でバッファをクリアします ステンシル設定で新しいスプライトバッチを開始する ドアエリアを描く spriteBatchを終了する 以前に設定されたステンシルを考慮した新しいスプライトバッチを開始します 穴を開けて描かれる壁を描きます そのスプライトバッチを終了 タイルの描画を続行するには、通常の設定で新しいスプライトバッチを開始します タイルごとの描画では、どの描画を何の上に描画するかをlayerDepthを使用して整理していないため、深度/ステンシルバッファをクリアすることは重要ではありませんでした。 タイルごとではなく、一般的なオブジェクトのリストから描画しているので、描画呼び出しが大幅に高速化されましたが、ステンシルシステムがドアや窓の領域を隠すための方法を理解できないようです。壁に引き込まれます。問題の根本は、DepthStencilStateを変更するためにspriteBatchを終了すると、現在のRenderTargetがフラットになり、線の下に描画されたものの深度ソートがなくなるということです。つまり、ステンシルはドアや窓のある壁ごとに1回発生する必要があるため、ゲームの世界での奥行きや位置に関係なく、壁は常にすべての上に描画されます。 誰かがこれを回避する方法を知っていますか?簡単に言うと、特定のスプライトの一部をステンシル/マスキングしながら、レイヤーの深さでソートしたものを描画する方法が必要です。
7 xna 



1
2Dトップダウンレーサーで横向きの摩擦を作成する
私はある種のトップダウンレーサーを作成しようと遊んでいますが、車を適切に方向転換させるのに問題があります。現時点では、これは車の位置を更新するために必要なコードです。 var power; if (keyboard.upKeyDown) { power = 1; } else { power = 0; } if (keyboard.leftKeyDown) { this.rotate -= 0.05; } else if (this.keyboard.rightKeyDown) { this.rotate+= 0.05; } this.velocityX += Math.cos(this.rotate) * power; this.velocityY += Math.sin(this.rotate) * power; var cDrag = 0.98; this.velocityX *= cDrag; this.velocityY *= cDrag; …
7 2d  physics 

3
ゲーム名とIDの集中データベースはありますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 非常によく似た名前の2つのゲームがあるとします。 エイリアンシューターII-復讐 エイリアンシューター:復讐 これらのゲームのIDまたは「正規」名を取得できる場所はありますか?同じゲームだと思いますが、一概には言えません。

5
ゲームのセーブファイルに使用できるクロスプラットフォームの特別なディレクトリはありますか?
Windows 7ラップトップでLWJGLとJavaを使用して開発しています。を使用して、%appdata%\gamename\saves\またはロングフォームc:\users\user\appdata\roaming\gamename\saves\フォルダへの保存を正常に設定しましたFile dir = new File(System.getenv("APPDATA") + "\\gamename\\saves\\");。 私はLinuxの趣味レベルの経験があり、OSXの経験はありません。私のゲームは完全にクロスプラットフォームになります。 あるSystem.getenv("APPDATA");クロスプラットフォームは?もしそうなら、それはLinuxまたはOSXのどこを指しますか?使用すべきベストプラクティスの代替策はありますか?

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