ゲーム作りは楽しい

なんか書く

C++

呼ばれるたびにGet Wildが流れ出すゲッター

こんなゲッターは嫌だ // 男 class Man { public: Man(float height, float weight, int32 wild) : m_height(height) , m_weight(weight) , m_wild(wild) {} // 身長取得 [[nodiscard]] float getHeight() const { return m_height; } // 体重取得 [[nodisca…

どっかでみたようなローディングのサークル

# include <Siv3D.hpp> void Main() { Window::Resize({ 300, 300 }); const Vec2 center = Scene::CenterF(); while (System::Update()) { constexpr Duration periodSec = 2s; const double rotateRate = s3d::Periodic::Sawtooth0_1(periodSec * 0.75); const double</siv3d.hpp>…

0=1の証明

本日のギャグです。 こちらのコードを見てください。 #include <cctype> #include <iostream> int main() { using namespace std; int32_t x = 0; if (x = x + 1) std::cout << "true"; } C++で以下のコードを実行したら「true」と出力されたので、 「x = x + 1」はtrueになり</iostream></cctype>…

VisualStudio2022を最新にしたらモジュールがビルドできんくなった

先日VisualStudio2022を更新した(17.7.266.26423) そしたらモジュールがビルドできなくなったので、なんでだろうってなった 以下みたいなエラー MSB3191 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\modules" を作…

niko and … に対して思う事

ショッピングモールとかを歩いていると「niko and …」をよく見る もしあなたがC++erなら、すぐに気が付いたかもしれない。 あ、これC++のコードだって int main() { auto f = [](auto... niko) constexpr { return (niko and ...); }; static_assert(f(true,…

2Dゲーム 上から視点の反射表現 を作って遊んでた

↑こういうのをやってみてた 方針的には以下のようなことをしていた ちなみに小難しいことはしておらずシンプルな実装でやってみてた。①反転した状態のテクスチャをあらかじめ作っておく②投影するマスクテクスチャのようなものを用意する③シェーダーでがっち…

Siv3Dで仮想ウィンドウクラスを作った

VirtualWindow Windowsのエクスプローラーを参考に作った だいたいそれっぽい動きをしている ツールのレイアウトとかをサクッと作れるといいなぁと思っていて 第一歩という感じ ソースコード 結構ごり押し。一つ一つの挙動を書いていくしかない ちゃんとファ…

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++編

はじめに 本記事はネタである。 ハッシュドポテイトうんめなー 今日もハッシュドポテイト食べたいなー よし、作ろう 1. ポテトを用意する // ポテト struct { std::uint8_t taste; // 味 std::uint8_t fragrance; // 香り std::uint8_t freshness; // 新鮮さ…

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 …