タグ付けされた質問 「c++」

C ++は、静的に型付けされた自由形式のマルチパラダイムでコンパイルされた汎用プログラミング言語です。

3
GNU GCCはAAAゲームに使用されますか?
GNU GCCは非常に一般的なコンパイラですが、AAAゲームのような大規模なプロジェクトではほとんど使用されていないようです。私には、それは問題なく動作し、問題はありませんでした。しかし、なぜすべてのAAAゲームがIntel Studioなどの商用コンパイラを使用しているように見えるのでしょうか。なぜそれが重要なのですか?また、GNU GCCはIntelだけでなくすべてのシステムのコードを最適化するので、なぜIntel Studioなどに煩わされるのでしょうか。
11 c++  game-industry  c  mingw 

5
マルチプレイヤーゲームを作成するために、高価なサーバーと豪華なホスティングが必要ですか?
私はRPGの作業を終了しましたが、マルチプレイヤーにするのはもっと楽しいようです。SFMLにはネットワーキング機能があります。それは可能だと思ったのですが、私の人生の中で、ネットワーキングに関する基本的なことすら試したことはありません。実際、私の知識は非常に限られています。 リソース単位でマルチプレイヤーゲームを作成するには何が必要ですか?私はMMOについて話しているのではなく、協力型のゲームのようなものです。ホスティングとサーバー、そしてそれを作るために多くの多くのことを支払うのにたくさんの現金が必要ですか?
11 c++  multiplayer  sfml 

2
OpenGLの原点を画面の左上に変更する場合、何を心配すればよいですか?
自己啓発のために、私はSDL / OpenGLを使用してC ++で2Dプラットフォーマーエンジンを書いています。最初はsdltutorials.comとlazyfoo.netのチュートリアルを使用して純粋なSDLから始めましたが、現在はSDLを使用してOpenGLレンダリングコンテキストを作成し、OpenGL関数でレンダリングしています(特に即時モードですが、VAO / VBOについて学習しています) )。インターフェイス、オーディオなどにのみSDLを使用しています。 SDLは、画面の左上を原点とし、正のy軸を下に向けた座標系を使用します。OpenGLで正投影を設定してこれをミラーリングするのは簡単です。 テクスチャ座標が0から1までの値を持つ右側のシステムであることを知っています-レンダリングする前にテクスチャを垂直に反転(まあ、ロードする前にファイルを反転)すると、正しくレンダリングされるテクスチャが生成されます...描画している場合は問題ありませんテクスチャ全体ですが、最終的にはタイルセットを使用し、問題を想像できます。 これを行うと、レンダリングに関して何を気にする必要がありますか? 誰かが何かアドバイスをしたり、自分でこれを行って将来の落とし穴を指摘したりできるなら、それは素晴らしいことですが、実際にはどんな考えでもありがたいです。
11 c++  opengl  2d  sdl 

1
ゲームアップルのシミュレーション-機能しない[終了]
ここで何が質問されているのかを理解することは困難です。この質問は、あいまいで、あいまいで、不完全で、過度に広い、または修辞的であり、現在の形では合理的に回答することができません。再開できるようにこの質問を明確にするヘルプについては、ヘルプセンターに アクセスしてください。 7年前に閉鎖されました。 ニュートン物理学でゲームを作ろうとしています。 これの残りを読む前に、これが私の主な質問です。私は答えを見つけようとしています: コードを実行しようとすると、ウィンドウにポップアップエラーが表示され続けます。どのライブラリまたはdllが欠落していますか? リンゴ、オレンジ、鉛筆を持っています。ほとんどのドキュメントを弾丸物理エンジンで読みましたが、リンゴを紙のように振る舞わせることができません(2D風)。Box2d物理エンジンなどは、私が望んでいるものではありません。私は、現実の世界では箱は好きではありません。サイバー世界ではもちろんです。 りんごを地面に浮かせて、紙のように前後に揺らしたい。このサイトは、コードに統合したいくつかの有用な情報を提供しました:htp://www.3dbuzz.com/vbforum/showthread.php?50854-Please-HELP !! -Simulating-paper-floating-to-ground 他の種類のオブジェクトと同じようにオブジェクトを動作させるゲームのアイデアはありますが、ゲームのシミュレーションが機能しません。 数え切れないほど多くの種類のリンゴを試してみましたが、どれも近くにはありません。同様のことを試している他の人を検索してみましたが(http://lmgtfy.com/?q=simluating+game+apples+in+real+lifeなどのグーグルを使用して)、リンゴは返されません! したがって、私はここで新しい領域に入るつもりだと思います(心配しないで、私は自分のテクニックをオープンソースにします)。それが、私にとってうまくいかない理由です。 さまざまな種類のリンゴをプログラミングしてみましたが、サイバーアップルが必要ですか?これらのいずれかをどこで入手できるかわかりません。たとえば、http://cyberapples.com/このサイトは今のところダウンしています-それはcgiのゴミ箱か何かについて話しているだけです。これについて何かヒントはありますか? これは、ゲームをシミュレートするリンゴを扱う私のコードの一部です。 ///... /* setup other objects in the room and other stuff */ ... // see http://www.orangepippin.com/apples/arlet-swiss-gourmet // for more arlet apple details paper_2d_behaving_apple = new ArletApple[); / setup the arlet apple's general characteristics paper_2d_behaving_apple.species = …
11 c++ 

3
C ++でゲームエンジンを整理する方法 私の継承の使用は良い考えですか?
私はゲーム開発とプログラミングの両方の初心者です。 ゲームエンジンの構築に関する原則を学びたいと思っています。 シンプルなゲームを作成したいのですが、ゲームエンジンを実装しようとしているところです。 だから私は私のゲームエンジンがこれを制御する必要があると思った: - Moving the objects in the scene - Checking the collisions - Adjusting movements based on collisions - Passing the polygons to the rendering engine 私は私のオブジェクトを次のように設計しました: class GlObject{ private: idEnum ObjId; //other identifiers public: void move_obj(); //the movements are the same for all the objects (nextpos …
11 c++  architecture  oop 

2
Bullet物理エンジンでY軸の動きを無効にする方法
X軸とZ軸に沿って移動するだけでなく、Y軸を無効にしたままオブジェクトを作成したいと思います(2Dでの移動と同じで、オブジェクトが落ちることはありません)。 現在、Y軸の動きを制限するために6自由度の制約を使用していますが、機能しません。 btRigidBody* zeroBody = new btRigidBody(0, NULL, NULL); // Create the body that we attach things to btRigidBody* robot = mCarChassis->getBulletRigidBody(); btGeneric6DofConstraint* constrict = new btGeneric6DofConstraint(*robot, *zeroBody, btTransform::getIdentity(), btTransform::getIdentity(), false); constrict->setLinearLowerLimit( btVector3( 1, 1, 1)); constrict->setLinearUpperLimit( btVector3(-1, 1,-1)); constrict->setAngularLowerLimit( btVector3( 1, 1, 1) ); constrict->setAngularUpperLimit( btVector3(-1, -1, -1) ); …

2
C / C ++マルチプレイヤーゲームのネットワークメッセージをシリアル化およびシリアル化解除する最良の方法は何ですか?
現在JSONを使用しており、クライアントとサーバー間のメッセージの種類によってはバイナリ形式に移行したいと考えています。 構造体をソケットに読み込むだけですか?プロチコールバッファー/リサイクルを使用しますか? データの配列をどのように表すべきですか? データのパック/アンパックのインターフェースはどのように見えるべきですか?

1
ゲームサブシステムにゲームオブジェクトコンポーネントを登録しますか?(コンポーネントベースのゲームオブジェクトデザイン)
コンポーネントベースのゲームオブジェクトシステムを作成しています。いくつかのヒント: GameObjectは単にのリストですComponents。 ありますGameSubsystems。たとえば、レンダリング、物理などです。それぞれにGameSubsystemは、のいくつかへのポインタが含まれていますComponents。GameSubsystem非常に強力で柔軟な抽象化です。ゲームの世界のあらゆるスライス(または側面)を表します。 登録の仕組みでは必要ありComponentsでGameSubsystems(ときGameObjectに作成および構成されているが)。4つのアプローチがあります。 1:一連の責任パターン。すべてComponentがすべてに提供されますGameSubsystem。GameSubsystemどちらComponentsを登録するか(およびそれらを整理する方法)を決定します。たとえば、GameSubsystemRenderはレンダリング可能コンポーネントを登録できます。 プロ。Componentsそれらがどのように使用されるかについては何も知りません。低カップリング。A.新しいを追加できGameSubsystemます。たとえば、すべてのComponentTitleを登録し、すべてのタイトルが一意であり、タイトルごとにオブジェクトをクエリするためのインターフェイスを提供することを保証するGameSubsystemTitlesを追加しましょう。もちろん、この場合、ComponentTitleを書き換えたり継承したりしないでください。B.既存のを再編成できGameSubsystemsます。たとえば、GameSubsystemAudio、GameSubsystemRender、GameSubsystemParticleEmmiterをGameSubsystemSpatialにマージできます(すべてのオーディオ、エミッターを配置Componentsし、同じ階層にレンダリングし、親相対変換を使用します)。 詐欺。すべてのチェック。非常に非効率的です。 詐欺。Subsystemsについて知っていComponentsます。 2:それぞれが特定のタイプをSubsystem検索しComponentsます。 プロ。よりも優れたパフォーマンスApproach 1。 詐欺。Subsystemsまだ知っていComponentsます。 3:Component自身をに登録しGameSubsystem(s)ます。コンパイル時にGameSubsystemRendererがあることがわかっているので、ComponentImageRenderはGameSubsystemRenderer :: register(ComponentRenderBase *)のようなものを呼び出します。 プロ。パフォーマンス。のように不要なチェックはありませんApproach 1。 詐欺。Componentsとうまく結合されていませんGameSubsystems。 4:メディエーターパターン。GameState(を含むGameSubsystems)registerComponent(Component *)を実装できます。 プロ。ComponentsそしてGameSubystemsお互いについて何も知りません。 詐欺。C ++では、醜くて遅いtypeid-switchのように見えます。 質問: どのアプローチがより優れており、コンポーネントベースの設計で主に使用されていますか 練習は何を言いますか?の実装に関する提案はありApproach 4ますか? ありがとうございました。

1
サークルライン衝突検出問題
私は現在ブレイクアウトクローンを開発しており、ボール(円)とレンガ(凸多角形)の間の衝突検出が正しく機能するようにするための障害にぶつかっています。私は、各線が凸多角形ブリックのエッジとエッジを表すサークルライン衝突検出テストを使用しています。 ほとんどの場合、Circle-Lineテストは適切に機能し、衝突点は正しく解決されます。 衝突検出は正しく機能しています。 ただし、ボールが実際にレンガと交差しているときに、負の判別式が原因で衝突検出コードがfalseを返す場合があります。 衝突検出に失敗しました。 私はこの方法の非効率性を認識しており、軸合わせの境界ボックスを使用して、テストされたレンガの数を削減しています。私の主な懸念は、以下のコードに数学的なバグがあるかどうかです。 /* * from and to are points at the start and end of the convex polygons edge. * This function is called for every edge in the convex polygon until a * collision is detected. */ bool circleLineCollision(Vec2f from, Vec2f to) { Vec2f lFrom, …

1
クロスプラットフォームC ++ / OpenGL ES開発(iOS / Android)[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 4年前休業。 私はすでにC ++とOpenGLの合理的な経験があり、最近モバイルゲーム開発を試すことにしました。Javaを使用してシンプルなOpenGL ES Androidアプリを作成した後、できるだけ少ないコードでAndroidとiOSの両方をターゲットにする方法を調査しました。Visual Studio 2015の誇りに思っているクロスプラットフォームアプリ開発ツールを使用してみましたが、あまりにも新しいため、文書化が不十分でした。プログラムから提供されたテンプレートプロジェクトを構築することはできましたが、これらのテンプレートを前提として、ゲームにアセットを追加したり、タッチスクリーン入力を処理したりする方法を理解できませんでした。 残念ながら具体的な願望があります。Googleで見つけるには具体的すぎます。AndroidおよびiOS用のプラットフォーム固有の薄いラッパーを使用して、C ++を使用するOpenGL ESゲームを作成したいと考えています。人々は私に同様の質問をしましたが(まったく同じではありません)、UIを気にする必要がないため、やりたいことは可能であるだけでなく、比較的簡単であると複数の人が答えています。 私はこのチュートリアルを試しましたが、それはほぼ3年前のものであり、おそらく古いテクノロジー用に設計されたものであり、その結果、さまざまな原因不明のバグに遭遇しました。けれども今のところ、そのチュートリアルは私が見つけたものに最も近いものです。それ以外はすべてAndroidのみ、またはMarmalade SDKを使用するために年間数百ドルを支払うことを推奨しています。たまに、コードを2回(JavaとObjective-Cで2回)作成する気がしますが、この解決策は可能であるという知識に動機付けられ続けていますが、何らかの理由で、現代の詳細のどこにも触れられていません。 要約すると、単一のC ++コードベースを少量のプラットフォーム固有のコードでラップして、iOSおよびAndroid用のOpenGL ESゲームを作成したいと思います。しかし、いくつかの人々がこのアプローチを推奨しているという事実にもかかわらず、誰もそれを行う方法を私に言うことはできません。誰かがそれが実際に可能かどうかを教えてもらえますか。もし可能なら、私が何ができるか、またはどこに行けばその方法を学ぶことができますか?

2
3人称カメラをターゲットに向けて回転させる
私はプレーヤーを直接見ない3人称カメラを持っていますが、彼の前のどこかにあります。 ユーザーが撮影モードに入ると、カメラがプレイヤーを振り向いてターゲットに向かいます。 上の画像。「O」はプレーヤー(原点)、「L」はルックアット、「C」はカメラの位置、「T」はターゲットです。ルックアットラインC-> Lを回転させて、原点( "O")を中心にT(C '-> L'-> T ')を通過するようにします。 基本的には、画像に赤で表示した角度アルファを見つける必要があります。 私はカメラの位置をそのような構造に保存します: struct CameraTarget { Quaternion absoluteRotation; Vec3 absolutePosition; Vec3 cameraOffset; Vec3 lookatOffset; float FOV; } だから私が探している角度を見つけることができれば私は次のようなことをすることができます: cam->absoluteRotation = cam->absoluteRotation * alpha; プレイヤーに常にターゲットを見させる。 LookatがOriginを通り過ぎていた場合、私は簡単にできます Vec3 origDir = cam->lookAtOffset - cam->absolutePosition; origDir.normalize(); Vec3 newDir = cam->target - cam->absolutePosition; newDir.normalize(); Quaternion q(origDir, newDir); …

1
ゲームループとopenGLの間のマルチスレッドを利用する
openGLレンダラーに基づくゲームのコンテキストで話す: 2つのスレッドがあるとしましょう: ゲーム内オブジェクトのゲームロジックや物理などを更新します ゲームオブジェクトのデータ(スレッド1が更新し続ける)に基づいて、各ゲームオブジェクトのopenGL描画呼び出しを行います。 ゲームの現在の状態で各ゲームオブジェクトの2つのコピーがない限り、スレッド2が描画呼び出しを行っている間、スレッド1を一時停止する必要があります。そうでない場合、ゲームオブジェクトはそのオブジェクトの描画呼び出しの途中で更新されます。望ましくない! ただし、スレッド1を停止してスレッド2から安全に描画呼び出しを行うと、マルチスレッド/同時実行の目的全体が失われます。 マルチコアアーキテクチャを活用してパフォーマンスを向上させるために、数百または数千または同期オブジェクト/フェンスを使用する以外に、これに対するより良いアプローチはありますか? マルチスレッドを使用して、現在のゲームの状態にまだ含まれていないオブジェクトのテクスチャをロードしてシェーダーをコンパイルできることはわかっていますが、アクティブ/可視オブジェクトに対して、描画と更新の競合を引き起こさずにそれを行うにはどうすればよいですか? ゲームオブジェクトごとに個別の同期ロックを使用するとどうなりますか?このように、すべてのスレッドは、更新/描画サイクル全体ではなく、1つのオブジェクト(理想的なケース)でのみブロックします!しかし、各オブジェクトのロックを取得するのにどのくらいのコストがかかりますか(ゲームには1000のオブジェクトがある場合があります)?

2
Table.drawDebugはlibGDXでは非推奨であるため、代わりに何を使用する必要がありますか?
私は「Learning LibGDX Game Development」の本に従ってシンプルなゲームを作成しています。私は、ステージを作成してデバッグ境界線でレンダリングするメニュー作成セクションにいます。 本は使用するように言っていますTable.drawDebug(stage)が、この静的メソッドはフレームワークTableクラスから完全に削除されたようです。 インポートしていcom.badlogic.gdx.scenes.scene2d.ui.Tableます。以下は私のコードです: @Override public void render(float deltaTime) { Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); if (debugEnabled) { debugRebuildStage -= deltaTime; if (debugRebuildStage <= 0) { debugRebuildStage = DEBUG_REBUILD_INTERVAL; rebuildStage(); } } stage.act(deltaTime); stage.draw(); Table.drawDebug(stage); } 最後の行にTable.drawDebug(stage);はコンパイルエラーがあります"The method drawDebug(ShapeRenderer) in the type Table is not applicable for the …

4
エンティティコンポーネントシステムでのエンティティの「タイプ」の識別
エンティティに明示的な「タイプ」(例:プレーヤー)がなく、単にコンポーネントのコレクションである場合、システムで作業する必要があるエンティティとそうでないエンティティを識別するにはどうすればよいですか?たとえば、ポンのゲームでは、パドルとボールの両方がウィンドウの境界に衝突します。ただし、それぞれの衝突処理システムは異なるため、システムは間違ったタイプのエンティティを処理するべきではありません。 void PlayerCollisionSystem::update(std::vector<Entity *> entities) { typedef std::vector<Entity *>::iterator EIter; for (EIter i = entities.begin(); i != entities.end(); ++i) { Entity *player = *i; // How do I verify that the entity is a player? // Get relevant components. PositionComponent *position = player->getComponent<PositionComponent>(); VelocityComponent *velocity = player->getComponent<VelocityComponent>(); SpriteComponent *sprite = …

3
凹型メッシュを一連の凸型メッシュに分解する
2つの理由で、凹型メッシュを凸型メッシュのセットに分解できるようにしたいと思います。 透明なレンダリング 物理図形 三角形のセット(凹)を入力として受け取り、いくつかの三角形のセット(凸)を出力するアルゴリズムはありますか?元のメッシュのパーツ間の穴を埋めないようにしてください。 私はすでに小さなアイデアに出くわしました。すべての凹型エッジを見つけ、エッジループに沿ってメッシュを分割します。私は正しい軌道に乗っていますか?これをどのように実装できますか?

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