ゲーム作りは楽しい

なんか書く

C++

C++でコードベースのファイル名を使用したマイグレーションみたいなものを作った

コードベースのマイグレーションみたいなものを作りました。 wandbox.org 例 以下に 1_Test.cpp 2_Hoge.cpp がありますが、これのprefixの数字をidとして、カレントバージョンから最新バージョンまで全部実行する仕組みです 1_Test.cpp #include"Migration.h…

メタクラスについて勉強してみました。

メタクラスについて勉強してみた。 class とか structっていうキーワードを使う箇所をユーザー定義したものに変えて my_class Hoge{}; みたいに使います。 んで、 何ができるかというと 例えばC++ではstructはデフォルトpublic, classはprivateっていう話が…

C++でDIするヘッダーオンリーライブラリを作りました。

C++でDIするヘッダーオンリーのライブラリを作りました。 github.com Zenject(Extenject)などから影響を受けてます。

C++でC#のasみたいな書き方する遊び(糞)

template<class T> struct as_op {}; template<class T> constexpr as_op<T> as_obj{}; template<class T, class U> auto operator | (T* ptr, const as_op<U>& op) { return dynamic_cast<U*>(ptr); } #define as | as_obj struct Super{virtual ~Super()=default;}; struct A : Super{ }; int main() { Su</u*></u></class></t></class></class>…

fixed_dynamic_castとかいうのを作った

C++

仮想継承のdynamic_castは重いっぽいので ある程度固定化するとまだ速度面でマシになるっぽい wandbox.org

セガ本 進捗4, 5

Chapter4 を読みました。 リアルタイムゲーム関連の話でした 固定FPSと可変FPSについての実装方針の話があったりしました。 今作ってるゲーム、可変対応できるようにdtをupdateに渡してはいるが、なんやかんや固定FPSのほうが楽だからそっちに逃げガチ 本に…

セガ本 進捗3

Chapter3 を読みました ddsの画像ファイルを読み込むような形に進化した。 アルファブレンドまわりのことが書かれてた。 改めてこのへんの式を見て、そうえば知らなかったかもと思った。 aX+(1-a)Y Xは前景 Yは背景 前方宣言とかの話もあった。 ちなみに私は…

セガ本 進捗 2

Chapter2を読みました VRAMに色情報書き込んで描画しようみたいな章だったのですが、残念なことに指定されたライブラリがうまくリンクできなかった。(IDEのバージョンが違うからだと思います。) ので、仕方なく流し読み そのままChapter3も読み途中です。 本…

セガ本読み始めました

感謝 もうすぐゲームプログラマ3年目くらいなのですが 「ゲームプログラマになる前に覚えておきたい技術」を友人からプレゼントで頂きました。 ありがとうございます。(持ってなかったので欲しかった) ただ、2年間サーバーエンジニアしてた身からするとゲーム…

C++:非virtualデストラクタ継承の話

C++

デストラクタがvirtualでないclassの継承には注意が必要という話を聞いたことがある人もいると思いますがその話をちょっとします struct A { A() = default; ~A() { std::cout << "A destructor" << std::endl; } }; struct B:A { B() = default; ~B() { std…

曲と同期するためのclassを作る

音楽ゲームを作る時などに役立つ、曲と同期するための記事を書きました qiita.com

XMMATRIXにはめられた話

たまに動作が停止するのでなんでだーなんでだーって原因をさぐっていたら DirectX::XMMATRIXやDirectX::XMVECTOR(それをメンバにもつclassも)をスマートポインタで扱ってたのがマズかったらしい こいつらの扱いには注意が必要そうですね

DirectWriteのttf読み込みやっとできた

ずっとやりたかったけど、MSのサンプル見てても結構めんどくさくて困ってたんです スタックオーバーフローでそれっぽいの見つけたので、ぽいぽいっと入れたらやっとできた とりあえず一安心です。 困ったときはググろうな!!

Siv3DのStopwatchなどをまとめて止める

Siv3D Advent Calender 2016の記事 以前Siv3Dでゲームを作っていた時に苦労したことの改善策の一つ qiita.com

constexprでテンプレートメソッドパターンやろうとしたら、よくわからんくなった話

C++

そもそもテンプレートメソッドパターンとは、以下のようにアクセスするpublicのメンバ関数内で、(純粋)仮想関数などを使用し、決められた型にはまった動作を行うようにするデザインパターンです。 class Original { protected: int m_num; virtual int cal()…

関数のオーバーロードは静的に決まるの話

C++

関数のオーバーロードは静的に決まることを知らなくてはまったことがあったのでメモ class Super { }; class Sub :public Super { }; void Piyo(const Super& super) { cout << "Super" << endl; } //関数のオーバーロード void Piyo(const Sub& sub) { cout …