クロスプラットフォームのゲームエンジン開発にC ++ 11を使用する


18

注:これは、C ++ 03およびC ++ 11に関する「意見を述べる」質問ではありません。

C ++ 03で記述されたゲームエンジンは、Windows、OSX、iOSでコンパイルされるように設計されています。Linuxサポートは(非常に)近い将来に予定されています。コンソールに関しては経験が限られているため、この質問をしています。

現在、C ++ 11に切り替えて、C ++ 11標準の非互換機能を使用すると、近い将来、現在のgenコンソール(おそらく、一部のコンソールでサポートされているコンパイラはまだC ++ 11をサポートしていませんか?知りません...)。

だから、複数のプラットフォームとコンソールで経験を積んだゲーム開発者は、新世代のコンソールが登場し、ほとんどの人がC ++ 11標準に切り替えられるまで、C ++ 03に固執すべきだと思いますか?または、ほとんどのコンソールは、すでにC ++ 11機能をサポートしているコンパイラー(VC ++、GCCまたはバリアント)を使用/サポートしていますか?


1
私の知識はやや時代遅れなので、これを回答として投稿することはしませんが、コンソールコンパイラの私の過去の経験は、古い標準に一致する場合は幸運であり、新しい標準を気にしないことです。
キロタン

1
最も一般的な開発プラットフォームでも完全に実装されていない標準の使用を検討するほど重要な機能とその理由は何ですか?
-snake5

4
@ snake5:自動、ラムダ、テンプレートエイリアス、c-tor委任。これらの機能は、コードをより読みやすく/保守しやすくするだけでなく、生産性を向上させます。autoキーワードだけは、C ++ 11からC ++ 03に切り替えるときに見落としがちなものの1つです。variadicテンプレートなどの他の機能は、非常に強力であり、コードを確実に改善できますが、なしで実行できます(VC ++コンパイラーによって実装されていません)。
サマウルサ

カイロタンのコメントに加えて、私は彼の意見に完全に同意し、私の経験に特定の例を追加します。そのエンジンをC ++を使用して行うことができるAndroidプラットフォームに拡張しようとすると、NDKのC ++機能が不完全になるため、時間がかかります。新しい標準を使用することはできません。また、以前の標準の一部に欠陥があります。
グリムショー

1
@DevilWithinでは、Android NDKでかなりの数のC ++ 11機能を問題なく使用しています。
-notlesh

回答:


19

食料と避難所の代金を支払うためにコードに依存しており、未知の将来のプラットフォームでクロスプラットフォームをサポートする必要がある場合(または将来的にはクロスプラットフォームをサポートする必要があるかもしれません)、多数の未知のコンパイラライターが最先端の言語標準を正しく遵守することは危険です(そして、私は無責任だと主張します)。それはあなたにとって危険であり、したがってあなたの扶養家族にとっても危険です。

もしあなたがそのためにそのようなリスクを冒すことをいとわないならauto、どうしてもそれのために行ってください。しかし、私はあなたにそれをすることを勧めるつもりはありません。

私の経験では、特にコンソールでのクロスプラットフォームへの移行は、最新のウィズバン言語機能に依存するのではなく、事実上どこでも動作することが確実な最小公分母を目指して達成するのが最善です。いつかそれらをサポートしていないプラットフォームに移植する必要がある場合、システムを最初から書き直さなければなりません。それが起こっている間、あなたは賃金/家賃を支払う余裕がありますか?


4
+1(この記事の残りの部分はこれですが):「未知のコンパイラライターが最新の言語標準を正しく遵守していることに依存するのは危険です」。最新のおもちゃで実験することは常に楽しいです。
-NoobsArePeople2

2
特に「元のポスターが聞きたがっているものではないことが明らかな場合」、これらの「慎重な」答えを出すことを常に切望しています。しかし、私はクロスプラットフォームプロジェクトで新しい言語標準への乗り心地を感じるにはあまりにも多くのキャリアでコンソールの大きなコンパイラバグを見てきました。コンパイラの問題を回避するためにコードを書き直す必要があるのは、特に期限が迫っているときは決して楽しいことではありません。
トレバーパウエル

これに賛成票を投じるつもりはありませんが、新しいC ++標準は、autoキーワードなどの構文上の砂糖以上のものです。
vdaras

1
@TrevorPowell、あなたは、新しいC ++標準にもっと重要で基本的な機能がある場合、彼が取るリスクは自動キーワードのためだと言った。右辺値参照のようなそれらのいくつかは、リスクについて考えるときに重要な考慮に入れられる必要があります。
vdaras

2
@TrevorPowellだから、私はそれについて議論をしているにもかかわらず、この投稿は支持する価値がないと言った。これは良い投稿だと思います。新しいC ++標準にはいくつかの非常に重要な機能があることを明確にしたかったので、それを使用することは自動車のような小さなことではありません。
vdaras

6

もしあなたがもう少し仕事をしたいと思ったら、屈折する解決策を検討することができます。clangには現在、この分野で起こっている興味深いことがあります。autoキーワードを使用し、それをすべて使用するリファクタラーで実行し、それらを解決してコードを出力し、必要に応じてコンパイルすることができるはずです。

しかし、それはあなたのゲームに取り組む時間が減ることを意味します。

また、反射などのいくつかの追加機能の可能性もあります。クラスを作成し、実行時に検査するすべてのプロパティのリストを自動的に生成できます。スクリプト作成、ゲームエディターの作成などに非常に役立ちます。編集:clreflectをチェックしてください

http://cppnow.org/session/refactoring-c-with-clang/

http://www.youtube.com/watch?v=mVbDzTM21BQ

http://clang.llvm.org/docs/Tooling.html

http://clang.llvm.org/docs/RAVFrontendAction.html


非常に興味深い。この(または同様の)目的のために自分で試してみましたか?
ジョナスビストレム

まだ、少し良くなるまで待つことにしましたが、前回私が実際に調べたのは、svnだけでした。
デビッドC.ビショップ

非常に興味深い(+1)
サマールサ

これは私にpythonのようなものを思い出させます2to3が、逆に、はるかに素晴らしいが、おそらくより使いにくいです。男、どれだけ良くautoなるの?
スティーブンルー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.