コンシューマ向けゲーム開発に携わって結構な年数が経過しました。 これまでは恵まれていたのか、STLを使える環境にいた*1ので特に気にしていなかったのですが、どうやら場所によってはSTLはゲーム開発向きではないらしく使用を禁止される事もあるようです。 おかしいですね。私、STL使ってコンシューマ向けのゲーム作ってきましたけど。 確かにSTLはその特性と使用方法を知らないと痛い目にあいます。特にコンシューマ機のメインメモリ容量はPCに比べて圧倒的に少ないです。その少ないメインメモリ上に実行バイナリやヒープ領域などを展開しなければなりません。メモリ管理に対してシビアになるのは当然で、templateは使用方法によってはバイナリサイズが増大するので使用をある程度制限する事は仕方ありません。 また、std::listや、std::map等は使えば使う程内部でメモリを平然と分断してくれるので、ヒープ領
VC++では、Debugger Visualizersによって、デバッガから、コンテナの中身をわかりやすく表示することが可能だ。 http://d.hatena.ne.jp/faith_and_brave/20100329/1269833173 gdbの場合はどうだろうか? まず、STLのコンテナに関しては、 http://sourceware.org/gdb/wiki/STLSupport をインストールすることで対応可能なようだ。 インストール方法は、 svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python を適当なディレクトリに配置し、以下の内容をホームディレクトリの.gdbinitに追記すればよい。.gdbinitが無ければ作ろう。 python import sys sys.path.insert(0, 'インストール
速度向上を考える上で、mapの使い方で差が出たのでめも。 mapは[ ]演算子がオーバーロードされているので、演算子の書き方を多用していた。演算子で書くと存在しないkeyを指定した場合、自動で生成してくれる。これが便利なときもあれば不便なときもある。 例えば、メモ化探索にmapを利用していた場合、既に探索した状態かどうかを調べるときに[]演算子で勝手に状態生成してもらっては困る。 なので、今まではこんな感じで書いてた。 map<int,int> mii; int dfs(int S){ if( mii.count(S) ){ return mii[S]; } int ret = 0; /* 処理 */ return mii[S] = ret; } countメソッドはkeyがあるかどうか(0or1)を返す。勝手に状態数は増えない。 でも、どう考えても 探索3回してるよねこれ mapの[]演
遅くなりましたが、前回の続きです。これで全部です。Appendix の訳で、前回よりも具体的&実践的な内容になっています。 また、yakiimo02 さんの記事で知りましたが、現在 EASTL は EA のゲーム用 WebKit のソースの一部として公開されているようです (このパッケージの EAWebKitSupportPackages/EASTLEAWebKit/local/include/EASTL など)。ライセンスも割と緩めで、使用を考えてみるのも面白そうです。しかし、WebKit をゲーム用に移植する、というのもすごい話です…。 Appendix この Appendix には、ドキュメント本体の参考資料が含まれ、多くの場合、ドキュメント本体で触れた内容の詳細を解説している。話が本筋から外れないようにするため、ここに分離している。 1 - (removed) 2 - A debu
(2016/02/10 追記: EASTL は長らく EAWebKit の一部としてライセンスが不明瞭なまま公開されていましたが、この日 BSD ライセンスで正式に公開されました https://github.com/electronicarts/EASTL) 若干古いものですが、2007 年に発表された、Electronic Arts によるゲーム開発向けの改良を加えた STL、"EASTL" の仕様。 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html 仕様だけで実装が公開されてないのが非常に残念なのですが、それは別として、何故こんなものが必要なのか、どういう事情でこの機能が盛り込まれたのか、といったゲーム開発現場の事情が細かく解説されていて、とても参考になります。特に、既にある程度 C++ に習熟してい
C++11の参考書、アマゾンお気に入りリストを公開中。 アマゾンの江添のほしい物リスト C++11の参考書、C++の文法と機能をGitHubで公開中。詳しくは、本の虫: C++11参考書の公開:C++11の文法と機能を参照 GitHub: EzoeRyou/cpp-book レポジトリのzipダウンロード GitHub Pageで閲覧:C++11の文法と機能 江添亮 自由ソフトウェア主義者 C++ Evangelist C++標準化委員会の委員 ドワンゴ社員 C++11本を執筆した。 株式会社ドワンゴで働いている。 Mail:boostcpp@gmail.com Twitter:@EzoeRyou GitHub: https://github.com/EzoeRyou 江添亮のマストドン@EzoeRyou 筆者にブログのネタを提供するために、品物をアマゾンお気に入りリスト経由で送りたい場合
1985年、AT&TのBjarne StroustrupがC++をこの世に送り出しました。その後C++は様々な拡張を繰り返しながら進化してきました。 1991年、ISOはC++の国際標準(standard C++)を定める作業を開始しました。標準C++の最終草案は1997年にISO C++標準化委員会に承認されました。 標準C++が規定するのは言語仕様だけなく、C++標準ライブラリも規格の中で明確に定められています。それまでC++のライブラリといえばiostreamぐらいのものでしたし、それもあくまで"事実上の標準"でしかありませんでした。 そしてそのC++標準ライブラリの一部として組み入れられたのがSTL(Standard Template Library)です。すなわちSTLは標準C++の仕様の一部ということです。 僕がSTLを知ったのは1995年、いくつかのコンパイラがtemplat
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く