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

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

3
ゲーム開発で「友達」クラスを使用する
通常、C ++では、ゲームの開発速度はカプセル化よりも重視されます。そのため、実際には公開すべきではない、公開されている大量のクラスメンバーが表示されます。 ほとんどの場合、ほんの一部のクラスだけが実際に別のクラスの内部動作を知って、それらのプライベートデータを変更または読み取る必要があることがわかります。 このプライベートデータのパブリックゲッター/セッターを作成すると、本当に変更してはならないことがすぐにわかります。 ここでの妥協は、友達クラスを使用することでしょうか?または、私が見ない友達クラスにいくつかの欠点がありますか?

2
ファイルに分割-どのくらいの分割ですか?
私が言うなら、コンポーネントモデルではなく、階層的なエンティティフレームワークがあります。のようなもの:( はい、これは構成されています) 武器->銃->自動銃-> MP44 または、より古典的な例: Entity-> MovableEntity-> Enemy-> WalkingEnemy 読みやすさと整理のために、ソースファイルとヘッダーファイルをどのくらい分けますか?Entity.cpp、MovableEntity.cpp、Enemy.cppなどのようにするのが最善ですか、それともEntity.cpp [EntityとMovableEntityを含む]やEnemy.cpp [EnemyとWalkingEnemyを含む]などのアプローチの方が良いでしょうか。(または、より言語にとらわれない方法で、EnemyファイルとEntityファイルではなく、各クラスのファイルですか?) また、これは可読性と編成以外に影響しますか?
9 c++  file 

2
ハイトマップを拡大するときに補間アーティファクトを回避するにはどうすればよいですか?
高さマップをアップスケールするためにバイキュービック補間アルゴリズムを使用していますが、ピクセル境界の周りのアーティファクトに気づいています。ただし、単純な3次補間(スプライン)を使用すると、これらのアーティファクトは表示されないようです。 キュービックスプラインとは異なり、バイキュービック補間では2次導関数の連続性が保証されないためでしょうか?もしそうなら、連続的な二次導関数を持つ既知のアルゴリズムはありますか?そうでなければ、これらのアーティファクトに対処する方法はありますか? 線形補間(ピクセル境界を表示): バイキュービック補間(ピクセル境界で見えるアーティファクト): キュービック補間(顕著なアーティファクトなし): いくつかのバイキュービック式を試したところ、同じ結果が得られました。ここではいくつかの例を示します。 http://paulbourke.net/miscellaneous/interpolation http://www.paulinternet.nl/?page=bicubic

1
Entity System Architecture with Task Based Parallelismの使用
バックグラウンド 私は自分の暇な時間にマルチスレッドゲームエンジンの作成に取り組んでおり、エンティティシステムを既に作成したものに組み込むための最良の方法を決定しようとしています。これまでのところ、私は自分のエンジンの出発点としてIntelからのこの記事を使用しました。これまでのところ、タスクを使用して通常のゲームループを実装しており、システムやエンティティシステム、あるいはその両方の組み込みに取り掛かっています。私は過去にアルテミスに似たものを使ったことがありますが、並行性が私を捨ててしまいます。 Intelの記事では、エンティティデータのコピーが複数あり、各エンティティに加えられた変更が完全な更新の最後に内部的に配布されることが推奨されているようです。つまり、レンダリングは常に1フレーム遅れますが、得られるべきパフォーマンス上の利点を考えると、許容できる妥協案のようです。ただし、Artemisのようなエンティティシステムの場合、システムごとに各エンティティが複製されるため、各コンポーネントも複製する必要があります。これは実行可能ですが、多くのメモリを消費するように思えます。これを議論するインテルのドキュメントの部分は主に2.2と3.2.2です。探しているアーキテクチャを統合するための適切なリファレンスが見つかるかどうかを確認するためにいくつか検索を行いましたが、まだ有用なものを見つけることができていません。 注:このプロジェクトではC ++ 11を使用していますが、私が求めていることのほとんどは言語にとらわれないものでなければならないことを想像しています。 可能な解決策 EntitiesとEntityAttributesの作成と管理に使用されるグローバルEntityManagerを用意します。更新フェーズでのみ読み取りアクセスを許可し、すべての変更をスレッドごとにキューに保存します。すべてのタスクが完了すると、キューが結合され、それぞれの変更が適用されます。これは、同じフィールドへの複数の書き込みで問題が発生する可能性がありますが、それを整理する優先システムまたはタイムスタンプがあると確信しています。変更の配布段階でシステムにエンティティへの変更をかなり自然に通知できるため、これは私にとっては良いアプローチのようです。 質問 それが理にかなっているかどうかを確認するために私の解決策についてのフィードバックを探しています。私は嘘をついてマルチスレッドの専門家であると主張することはありません。私はこれを主に練習のために行っています。複数のシステムが複数の値を読み書きしている私のソリューションからいくつかの複雑な混乱が発生することを予測できます。私が言及した変更キューも、PODを使用していないときに起こりうる変更を簡単に通知できるようにフォーマットするのが難しい場合があります。 フィードバック/アドバイスは大歓迎です!ありがとう! リンク集 http://software.intel.com/en-us/articles/designing-the-framework-of-a-parallel-game-engine http://gamadu.com/artemis/ http://www.gamedev.net/topic/560083-rendering-in-a-task-based-multithreaded-environment/(この投稿の投稿には記載されていませんが、同様のソリューションが記載されています)

3
PNGをロードするためのSDL関数
私は現在SDL 2.0を学習しており、BMPをロードするためのこの方法を見てきました。 SDL_Texture* LoadImage(std::string file) { SDL_Surface *loadedImage = nullptr; SDL_Texture *texture = nullptr; loadedImage = SDL_LoadBMP(file.c_str()); if (loadedImage != nullptr) { texture = SDL_CreateTextureFromSurface(renderer, loadedImage); SDL_FreeSurface(loadedImage); } else std::cout << SDL_GetError() << std::endl; return texture; } PNGファイルをロードするように切り替えるにはどうすればよいですか? 編集:うーん、PNGをロードする私の方法を追加するのを忘れていました。 SDL_Texture* grass_image = nullptr; grass_image = IMG_LoadTexture(renderer, "res/grass.bmp"); SDL_Rect grass_rect; grass_rect.x …
9 c++  sdl 

2
エンティティシステム内でのエンティティの割り当て
エンティティシステム内でエンティティをどのように割り当て/類似する必要があるのか​​、よくわかりません。私にはさまざまなオプションがありますが、それらのほとんどには短所が関連付けられているようです。すべての場合において、エンティティはID(整数)に似ており、おそらくラッパークラスが関連付けられています。このラッパークラスには、エンティティにコンポーネントを追加/削除するメソッドがあります。 オプションについて言及する前に、ここに私のエンティティシステムの基本構造を示します。 エンティティ ゲーム内のオブジェクトを説明するオブジェクト 成分 エンティティのデータを格納するために使用されます システム 特定のコンポーネントを持つエンティティが含まれています 特定のコンポーネントでエンティティを更新するために使用されます 世界 エンティティシステムのエンティティとシステムが含まれています エンティティを作成/破棄し、システムをそこに追加/削除できます 私が考えた私の選択肢は次のとおりです: オプション1: エンティティラッパークラスを保存せず、次のID /削除されたIDのみを保存します。つまり、エンティティは次のように値で返されます。 Entity entity = world.createEntity(); これは、この設計にいくつかの欠陥があることを除いて、ententxによく似ています。 短所 エンティティラッパークラスが重複している可能性があります(コピークターを実装する必要があり、システムにエンティティを含める必要があるため) エンティティが破棄された場合、重複するエンティティラッパークラスの値は更新されません オプション2: エンティティラッパークラスをオブジェクトプール内に保存します。つまり、エンティティは次のようにポインタ/参照によって返されます。 Entity& e = world.createEntity(); 短所 重複するエンティティがある場合、エンティティが破棄されると、同じエンティティオブジェクトが別のエンティティの割り当てに再利用されることがあります。 オプション3: 未加工のIDを使用し、ラッパーエンティティクラスを忘れます。これの落とし穴は、それに必要な構文だと思います。これを実装するのが最も簡単で簡単に思えるので、これを行うことを考えています。構文が原因で、私はそれについてかなり確信が持てません。 つまり、このデザインでコンポーネントを追加するには、次のようになります。 Entity e = world.createEntity(); world.addComponent<Position>(e, 0, 3); これに付け加えて: Entity e = world.createEntity(); e.addComponent<Position>(0, 3); 短所 …

5
シリアライゼーションとは何ですか?
私は趣味としてプログラミングをしばらくしてきましたが、最近までこの概念を見始めていませんでした。私は「シリアル化とは」を何度もグーグル化してきましたが、実際にはどのような種類の定義も得ていません。通常、その方法の例にすぎません。Ogreフォーラム、Bulletフォーラム、その他すべてのフォーラムで見かけているので、実際にそれがどのようなもので、なぜそれを使用するのかを理解する時期にきていると思います。 編集する 明確にするために、特にゲームプログラミングの意味で、なぜそれを使用するのかをもっと探しています。たとえば、Bullet Physics APIはメッシュのシリアル化について多くのことを話しているので、その理由を理解したいと思います。 ありがとうございました :)

1
b2World全体の定義をコピーまたは逆計算するにはどうすればよいですか?
複数のBox2D b2World間でボディを移動またはコピーできるようにしたいプラットフォーマーに取り組んでいます。欲望が3倍になりました-エディターでドキュメント間でオブジェクトを移動し、通常のゲームプレイでプレイヤーをレベル間で移動し、プレイヤーがゲーム内で発射できる重要な発射体のプレビューを提供します。最も正確には、数秒先の世界をシミュレートします。 それはのように見える、世界では各ボディのためにDEFに身体データ背中をコピーし、それを再作成して、それからやる、その後、同じ方法でそれに備品をコピーする-私は「長い道のり」パラレルワールドを作ることができます関節についても同じです。すべての速度を再設定します。「コピー」ではなく「移動」の場合は、元のコピーを削除します。 誰かがすでにこのコードを書いているかどうか(そして、もしそうなら、それが実際に機能する設計かどうか?)
8 c++  physics  box2d 

7
2D C ++ゲームのプログラミングを始めるのに適した本は何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 私はコンピュータサイエンスの学位を取得しており、大学在学中にGame Makerでシンプルな2Dゲームを作成しました。C ++でゲームを作成する方法を学ぶためのスタートとして、このゲームをC ++で再現したいと思います。C ++の経験が少しある人(私のCSメジャークラスはJavaを使用して教えられ、構文を学ぶためにC ++のクラスがありました)とオブジェクトの背後にある概念を知っている人にとって、C ++でのゲームのプログラミングを始めるのに適した本は何でしょうか。メソッド、継承など? いつかビデオゲーム業界で働くことができるようになるまで、経験を積みながら、これは私の趣味です。
8 2d  c++  books 

2
VBOを使用した錐台カリング
私のプロジェクトでは、OpenGLのVBOを使用して地形がレンダリングされています。錐台カリングを適用したいのですが、描画されている各ポリゴンにアクセスして、表示されているかどうかを確認する方法がわかりません。これがオクツリーが登場する場所だと思いますが、これが実際にどのように行われるのかはわかりません。誰かがこの特定のことをする方法についての良いチュートリアルを知っているか、私のためにいくつかの疑似コードを持っていますか? よろしくお願いします!

7
C ++ゲームDLLで例外をスローしますか?長所と短所
ゲーム開発に関連してC ++で例外を使用することの長所と短所は何ですか。 Googleスタイルガイドによると、例外はさまざまな理由で使用されていません。ゲーム開発に関連する同じ理由はありますか? C ++の例外は使用しません ...-google-styleguide.googlecode.com 考慮すべきいくつかの問題。 複数のプロジェクトで使用されるライブラリの開発との関係。 単体テスト、統合テストなどにどのように影響しますか? サードパーティのライブラリを使用するとどうなりますか。

2
Unity3dを介して新しいc#スクリプトを追加するときにVS soution Explorerを強制的に再読み込みしますか?
私はC#スクリプトを作成する(ときCreate -> C# Script)を介しUnity3d やからそれを削除Unity3d- Visual Studioショー私の警告ウィンドウ。 気に障る。 ウィンドウなしでソリューションエクスプローラーで「ReloadAll」を強制する方法はありますか?
8 unity  visual-studio  unity  google-play-services  google-play  physics  simulations  c#  unity  raycasting  unity  virtual-reality  savegame  arcade  c++  steam  ios  objective-c  databases  storage  opengl  vbo  vao  libgdx  scene2d  unity  animation  c#  path-finding  roguelikes  opengl  c++  glsl  2d  physics  phaser  selection  3dsmax  unity  collision-detection  c#  tilemap  isometric  unity  c#  2d  sprites  mouse  scripting  grid  c#  unity  libgdx  java  unity  playstation4  c#  c++  directx  dll  c++cli  libgdx  overlap2d  multiplayer  node.js  websocket  animation  unity  textures  unity  terrain  physics  unity  rotation  movement  transformation  monogame  windows  installer  shaders  unity  virtual-reality  unity  performance  frame-rate  profiler  google-play  appstore  trademark  java  android  libgdx  unity  unity-networking  unity  physics  software-engineering  unity  savegame  physics  2d  unity  unity  c#  unity-networking  textures  geometry  unreal-4  3d-modeling  java  android  libgdx  android  collision-detection  libgdx  rotation  legal  localization  patents  opengl  cubemap  sampler-state  2d  transformation  unity  c#  opengl  glsl  lighting  opentk  c++  collision-detection  physics 

2
Diamond-Squareアルゴリズムの出力はランダムでノイズが多い
C ++でダイヤモンドスクエアアルゴリズムの大まかな解釈を実装して、半現実的なフラクタル地形を作成しましたが、出力は滑らかな岩の形状ではなく、各ポイントでランダムなy値のように見えます。パラメータを変更しましたが、コードの外観を見て問題を理解するのに役立つかもしれません。次に出力の例を示します。 高さの変化を下げたビットマップ(トップダウン)として: それがどのように見えるべきか(これはファイルからロードされます): コード: //Diamond-square algorithm HeightMap::HeightMap(float maxY) { //type = GL_POINTS; //type = GL_LINES; numVertices = RAW_WIDTH*RAW_HEIGHT; //256^2 squares => 257^2 vertices numIndices = (RAW_WIDTH - 1)*(RAW_HEIGHT - 1) * 6; //each square is 2 triangles (6 indices) vertices = new Vector3[numVertices]; textureCoords = new Vector2[numVertices]; indices = …

1
R9 380 GPUのフラグメントシェーダーで画面がちらつく
私のゲームで2人のプレーヤーがフラグメントシェーダーを使用すると画面がちらつくという問題が発生していますが、これはR9 380 GPUを使用するプレーヤーでのみ発生しているようです。これは、ゲームでは次のようになります。 プレーヤーの1つを操作した後、シェーダーを使用するように絞り込みましたが、呼び出し元のコードで適切に行われていない可能性があります。シェーダーは次のようになります(まだGLSLを学習しています)。 uniform sampler2D lightTexture; uniform sampler2D targetTexture; uniform sampler2D backgroundTexture; uniform vec2 tileSize; vec3 SaturationBrightness(vec3 color, float brt, float sat) { // Increase or decrease theese values to adjust r, g and b color channels seperately const float AvgLumR = 0.5; const float AvgLumG = 0.5; const …
8 c++  2d  glsl  sfml 

1
C ++ / DirectX9で3人称カメラを実装する最も簡単な方法は何ですか
C ++とDirectX9は初めてなので、サードパーソンカメラを実装したいと思います。Quaternionベースのカメラについて読んだ後、私はそれを実装してみることにしました。しかし、それは本当に私の心を吹き飛ばすので、TPカメラを実装する最も簡単な方法は何ですか? カメラがすべきことは次のとおりです。 3DVector(x、y、z)に保存されている座標を追跡する オブジェクトを中心に回転(スムーズ) たぶんいくつかのタイプの「スプリング」=回転後、オブジェクトの後ろの通常の位置にゆっくりと戻ります 私の悪い英語をお詫び申し上げます:私はドイツ人で、まだ学校にいます! 前もって感謝します! 編集: いくつか試した後、私はそれを手に入れました。 私が検討した最大の問題は、ワールドマトリックスから「方向」ベクトルを正しく抽出することでした。 私の研究中に、私はほとんどこのようなものを見つけました: D3DXVECTOR3 direction; direction.x = worldMatrix->_13; direction.y = worldMatrix->_23; direction.z = worldMatrix->_33; D3DXVec3Normalize(&direction, &direction); それは私にはうまくいきません!代わりに私はこれをしました: D3DXVECTOR3 direction; direction.x = worldMatrix->_13; // Consider the .y after the .z! direction.z = worldMatrix->_23; direction.y = worldMatrix->_33; D3DXVec3Normalize(&direction, &direction); スケーリングの場合: // The tenfold …
8 c++  camera  directx9 

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