myoukakuのブログ

C++でゲームエンジンを作っていきます。

2014-01-01から1年間の記事一覧

空のディレクトリを全て削除する

git-svnを使っていると、ディレクトリを消してGit上では見えなくなっても、SVNでチェックアウトすると空のディレクトリが残っています。dcommitするときに--rmdirオプションをつけていればいいのですが、もうdcommitしてしまった場合はSVN側から消すしかあり…

Visual Studio 2013 Update 4 RTM

Visual Studio 2013 Update 4 来てた。 Visual Studio 2013 Update 4 (2013.4) RTM 少し様子を見てからインストールします。

ソースファイルのエンコードと文字列リテラルのエンコード

C++

結構勘違いしている人が多いし私も最近まで知らなかったのですが、C/C++のソースファイルのエンコードと文字列リテラルのエンコードは同じではありません。おそらく処理系依存だと思います。 VisualStudioの場合、ソースファイルのエンコードに関係なく文字…

git svn rebase で unable to remap

Git

ある日 git svn rebase すると次のようなエラーメッセージが出るようになりました。 C:\Program Files (x86)\Git\bin\perl.exe: *** unable to remap C:\Program Files (x86)\Git\lib\perl5\site_perl\5.8.8\msys\auto\SVN_Delta_Delta.dll to same address …

Visual Studio 2013 の std::is_pod のバグ

Visual Studio 2013 Update 3 では以下のコードがコンパイルエラーになります。 #include <type_traits> static_assert(std::is_pod<int>::value == true, ""); static_assert(std::is_pod<int*>::value == true, ""); static_assert(std::is_pod<int&>::value == false, ""); // 1 static_</int&></int*></int></type_traits>…

ゲームエンジン製作方針

ゲームエンジンを趣味で作っているのですが、ただゲームエンジンだけを作っているとどういう機能が必要なのかわかりにくいので、ゲームを作りながら、必要だと思った機能をエンジンに追加していく、という方法で進めていこうかと思います。 3Dゲーム 2Dゲー…

FizzBuzz(2)

FizzBuzz3つ目はboost::rangeを使って [Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ

FizzBuzz(1)

FizzBuzz2つ目はtemplateの特殊化を使って [Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ 早くもネタ切れの予感…

FizzBuzz(0)

今さら感満載ですが、FizzBuzz問題*1をC++で書いてみようと思います。 ただし違う方法で何通りかけるかを頑張ってやってみようと思います。 あらかじめググらずに、他の人とかぶっても気にしない方針で。 まずは普通にif文を使って、 [Wandbox]三へ( へ՞ਊ ՞)…

std::functionをシリアライズできなくてつらい

例えばウィンドウがリサイズされたときの処理を設定するとき、 Window window; window.on_resize() += [](int width, int height) { /* リサイズされたときの処理 */ }; のように書いて、Windowクラスのほうではstd::function(boost::function)で保持しよう…

boost::file_system の directory_iterator は "." と ".." をとばす

boost::file_system::directory_iteratorを使うとディレクトリ内のファイルやディレクトリを簡単に列挙することができます。 #include <boost/filesystem.hpp> using namespace boost::filesystem; for (directory_iterator it(current_path()); it != directory_iterator(); ++it)</boost/filesystem.hpp>…

Gitのブランチモデルを変えようかな

Git

これまで、Gitのブランチモデルとしてgit-flowを使っていたのですが、developブランチで作業するメリットも感じられないしめんどくさくなってきたので、GitHub Flowに変えようかなと思うようになってきました。 まあ一人で作業しているので、きちっとブラン…

Boost.ConstrainedValueはどうなった

ゲームプログラミングをしていると、取りうる値の範囲が限られている変数がよくあります。ゲームプログラミングに限らず、いろいろなプログラムで必要になると思います。 なのでBoost.ConstrainedValueには期待していました。 Boost.ConstrainedValueのレビ…

テンプレートパラメータパックのインデックスアクセス

Variadic Template をいじくりまわしていて、テンプレートパラメータパックのインデックスアクセスがほしいと思いましたが標準に無いんですね。素直に線形オーダーで実装すると数が多いときに使い物にならなかったのですが、対数オーダーで実装できるようで…

make_static_map で pull request 出そうと思っていたら先を越された

C++

make_static_mapでAkira Takahashi (id:faith_and_brave)さんからpull requestどうぞって言われたのでpull requestのやりかたを調べたりしていたら先にAkiraさんがmake_static_mapをコミットしていた! static_map : add helper function. · be3624a · faith…

static_mapのヘルパー関数、make_static_mapを書いた(3)

C++

static_mapのヘルパー関数、make_static_mapを書いた(2) - myoukakuのブログ の続き テンプレートパラメータパックをtupleに受けるのでなく、直接要素を取り出せば行けるかと思い、 VSでも動くパラメーターパックヘルパーを作った - TXT.TXTを参考にやってみ…

static_mapのヘルパー関数、make_static_mapを書いた(2)

C++

static_mapのヘルパー関数、make_static_mapを書いた(1) - myoukakuのブログ の続き static const auto m = make_static_map( Color::Red, std::string("Red"), Color::Green, std::string("Green"), Color::Blue, std::string("Blue")); と書けるmake_stati…

static_mapのヘルパー関数、make_static_mapを書いた(1)

C++

static_mapのヘルパー関数、make_static_mapを書いた(0) - myoukakuのブログ の続き まず、以下のように書いてみました。 template <typename T, typename ... Types> struct head { using type = T; }; template <typename ... Types> struct key_type { using type = typename head<Types...>::type::first_type; }; templ</types...></typename></typename>…

static_mapのヘルパー関数、make_static_mapを書いた(0)

C++

static_mapが便利なので重宝しています。 スタックを使用するmapを作りました - Faith and Brave - C++で遊ぼう これがあれば、エラーコードとメッセージの対応など、かなりの部分でswitch-caseや危険なテーブル引きを撲滅することができます。 しかし不満点…