ゲーム開発やツール開発において、 良く使う技術から普段あまりみないような一風変わった技術まで 幅広く取り扱うブログです。 基本毎日更新、ちょいちょい筆者の日常もはさみます。
あいさつ チーズホットク たまごたこ焼き あとがき あいさつ どうも、はかせです。 なぜか最近Twitterでもブログでも 頻繁に飯テロを食らいます。進捗を出すために寿司食べに来ました pic.twitter.com/NQhDaHTsUE— 転生ろっさむ@垢ロックで作り直し (@Ev_rossam) September 28, 2019 はい、サイドチェスト! pic.twitter.com/QgoAL8CkyE— 転生ろっさむ@垢ロックで作り直し (@Ev_rossam) September 23, 2019 サーモンいくら丼 pic.twitter.com/jx4tyURY0N— 転生ろっ…
あいさつ UE4 is 何? UE4の何が強いの?(物理的に) プロジェクトの共有ができない あとがき あいさつ どうも、はかせです。 今日はDirectXとか便利なTipsとかではなく UE4の環境構築の話です。というのも今私は知人のプロジェクトに誘われて 参加しているのですが、それで使うのがUE4なのです。過去UE4のコード読んだり 動きを見るためにビルドしてみたりしたのですが、 実際にUE4を使うのは初めてなわけです。なのでとりあえずまずはプロジェクトの共有をということで 昨日から格闘しています。この記事はその奮闘記のメモです。 UE4 is 何? 私のブログを読んでて知らない人はいない…
C++ コンストラクタの後ろにコロンつけてるやつの話 ~初期化子リスト~
あいさつ こいつは一体何? こいつのメリットは何? 効率がいい const変数の初期化が行える あとがき あいさつ どうも、はかせです。 今日はなんだかイマイチ頭が回らないので DirectX12の勉強はお休みしました。そのため今日は久しぶりのTips記事になります。あなたがgithubとかでC++のコード読んでるとき こんな感じで書かれているコンストラクタを見たことはありませんか? class Hoge { public: Hoge() : hogeName("fuga"){} private: std::string hogeName = "hoge"; } 今日はこの「:」がついたコンス…
DirectX12 なんか知らん子がたくさん出てきた(´・ω・`)
あいさつ デスクリプタヒープ ルートシグネチャ フェンス あとがき 参考 あいさつ どうも、はかせです。 前回DirectX12の簡単な概要的なものを 読んでみました。今回はより細かいところをということで 実際の実装を追ってみました。そしたら知らんことがたくさん出てきて 前回言ったことを撤回したい気分になってきました(´・ω・`)まぁ愚痴ってもしゃーないので やっていきましょう。今回は デスクリプタヒープ ルートシグネチャ フェンス 以上の三本です。 デスクリプタヒープ 知らん子一号です。GPUの中にあるデスクリプタなるものを 管理する配列的なサムシングだそうです。イメージとしてはこの図が一番…
あいさつ サンプルコード DirectX12の描画フロー 描画の仕方 パイプラインの構築 あとがき あいさつ どうも、はかせです。 札幌でCEDECが開催されますね。 もちろん私は行きますよ。そこでセッション内容を見てたら 結構DirectX12系のセッションが多そう。これはCEDECに参加する前に 基本ぐらいは抑えておく必要がありそう。ということでDirectX12やってみます。 (なんかちょっと前に日本語の資料出たらしいですし) サンプルコード 今回はこちらのサイトのコードを 落として勉強していきます。 (先人の遺産にがっつり頼っていくスタイル)解説記事 qiita.com コード git…
あいさつ Span構造体 is 何? 使ってみる ref構造体? Span is 使えない子? あとがき あいさつ どうも、はかせです。 今日は学校にいるときも家に帰ってからも IL2CPPで吐いたソリューションのビルドが出来ず あーでもないこーでもないとやってました。結果一応ビルドはできたものの動確は 明日学校でという感じです。そんなこんなで今日のネタがなく ufcppさんのところでC#の勉強をしていたんですが、 そこでSpan構造体ってものを見かけました。C#触り始めて何年目だよって言われそうですが 初見のものでした。なので今回はそのメモ記事です。 Span構造体 is 何? 配列の一部分…
あいさつ BindingFlagsとは Public NonPublic InvokeMethod Instance つまり前回のデストラクタの探し方は あとがき あいさつ どうも、はかせです。 前回デストラクタの取得で結構詰まってしまいました。原因はBindingFlagsの設定がミスってたからなんですが、 そも論そこに指定するBindingFlagsについて私はほとんど知りません。今までの奴もほぼ全てネットのコピペです。まぁ大体定型文なんでそこまで神経質に ならなくてもいいのかもしれませんが、 前回は知らなくて詰まってしまったので ちゃんと調べたいと思いました。今回はそのメモ的な記事になり…
IL コンストラクタの次はデストラクタを作ろうとしてハマった話
あいさつ デストラクタとは どういう扱いなんだろう 作ってみる 救世主が現れた あとがき あいさつ どうも、はかせです。 前回コンストラクタでハマった話を上げました。コンストラクタやったならデストラクタもやってみたい。ということでやりました。 デストラクタとは インスタンスがGCで回収された際に呼ばれるもので 内部的にはFInalizeというメソッドです。 どういう扱いなんだろう 前回取り扱ったコンストラクタは専用の取得メソッドがあったり、 それ用のクラスがあったり大分特別扱いされていました。じゃデストラクタはどうなってるんでしょうか? 検索結果0・・・・ デストラクタはどうやら普通のメソッド…
あいさつ ILでコンストラクタを作る方法 ハマった点 コンストラクタ引数 コンストラクタの最初で呼び出す親のコンストラクタ あとがき あいさつ どうも、はかせです。 前回メソッドプロキシでの自動メモ化を頑張りました。 hakase0274.hatenablog.com今回の記事は前回の続きではなく、 前々回の補足という形になります。というのも本当はこの記事を書いた後で 前回の記事を書こうと思ってたのですが、 思った以上に前回のメソッドプロキシに手間取り、 手間取った分早く書きたいと思ってしまい こんなことになってしまいました。そんなこんなで今回の記事は ILを使ったコンストラクタの作り方と 私…
C# 悲しい結果になっていたメソッドプロキシの速度を改善した話
あいさつ 前回のコード 遅くなった原因 改善 あとがき あいさつ どうも、はかせです。 前回の記事読んでいただけたでしょうか? hakase0274.hatenablog.com自動メモ化をいろんな方法で試して 高速化してみるという内容の記事でした。その中でアスペクト指向の メソッドプロキシを使ったやり方があったんですが、 このやり方だけ異様に速度が出ませんでした。 (むしろやらない方が速いという本末転倒ぶり)今回はその原因を見つけてパフォーマンスを改善した話です。 前回のコード まずは前回のダメダメだったコードと結果です。 public class MemoizationProxy<TIns…
IL 自動メモ化の実装をあれこれ考えたけど結局ネタ被りしたから速度勝負に切り替えた話
あいさつ やり方 まずはメモ化なしのを置いておく Dictionaryの拡張メソッドを作る アスペクト指向で処理の間にキャッシュを挟み込む IL生成でメソッドをオーバーライドする ちなみに あとがき あいさつ どうも、はかせです。 今回は前回やったメモ化の自動化をやってみたいと思います。 やり方 自動化の前にメモ化の復習。 メモ化ってのはメソッドの引数と戻り値をペアでキャッシュして 同じ引数で呼ばれた時にキャッシュを返すことで プログラムの高速化を行う技法のことでした。理屈は単純ですね。 そしてこんだけ単純なら自動化できそう。 つかWikipediaの項目にもあるくらいなんでおそらく 自動化す…
あいさつ メモ化とは? 実際に作ってみる あとがき あいさつ どうも、はかせです。今日もILをやろうとネタを集めていたんですが、 そんな中こんな記事を見つけました。qiita.com内容はILを使ってメモ化を行うというものです。そこで一つ私の頭の中にはてなマークがでました。「メモ化ってなんぞ?」 メモ帳でも出すんか? この記事では説明されていないので もしかしたら変数宣言並みにメジャーなものなのかもしれませんが、 私は初見の単語でした。なので調べてみました。今回はそのまとめです。 メモ化とは? メモ帳を出すことじゃないですからねwメモ化ってのはメソッドの返り値をメモ(キャッシュ)して 次回以降…
IL IL命令でLdc_I4とLdc_I4_SみたいにSが付いてるやつと付いてないやつの違いを調べてみた話
あいさつ Ldc_I4_SとかのSの意味は? どゆこと?? なんで分かれてるの? 実際問題そこ気にした方がいいの? あとがき あいさつ どうも、はかせです。 今日は前回作った拡張メソッドを改造していたのですが、 その中でSが付いてるものと付いてないものの違いが気になったので 調べてみました。今回はその調査の報告記事になります。 Ldc_I4_SとかのSの意味は? 私は今回調査するまでこのSのことを Safeを意味していてS付きの命令は、 安全に操作できる命令のことなのかななんて思ってました。ただ調べてみたところこのSは Short、つまり短いでした。短い命令ってどういうことやねん!って感じです…
あいさつ やること あとがき あいさつ どうも、はかせです。前回ILでループ処理を作ろうとしたら まさかのstaticメソッドとインスタンスメソッドを間違うという ポカをやらかしてしまいました(´;ω;`)前回 hakase0274.hatenablog.comもう同じ過ちを繰り返したくないので、 今回は引数のEmitを拡張メソッドにしてしまいたいと思います。 やること 今回の実装はシンプルイズベストということで メソッドがstaticか調べて、 staticの場合はldarg.0 そうでないならldarg.1をEmitするという形にします。ではさっそくコードです。 using System.…
IL ループ処理をやってみる(はかせは小学生未満だったことが発覚してしまった)
あいさつ ILでのループ あとがき あいさつ どうも、はかせです。 とりあえずAssemblybuilderとDynamicMethodを使った IL書きはなんとなくわかりました。基本がわかったら次は応用です。 今回はループをやってみます。 ILでのループ とりあえず下記のコードをILで起こすことを目指します。 int ArraySum(int[] numArray) { int sum = 0; foreach(var n in numArray) { sum += n; } return sum; } まずはゴールを知るため上のコードを LINQPadでILに変換してみます。 (これはメソ…
あいさつ ボックス化とは? ボックス化は悪? 今どきの言語でボックス化って起こってるん? ボックス化回避はできるの? あとがき あいさつ どうも、はかせです。 最近ILの勉強をしていて ようやくC#という言語が それとなくわかってきたような気がしなくもない感じです。 (要はC#ナンモワカランです)ただ私自身個人や趣味でゲーム開発を行う際使うツールは Unityですし、おそらく就職先の企業でもC#を触る機会はあると思います。なので完全理解とまでいかなくても C#をある程度エクストリームに使いこなし パフォーマンスを出せるようになってみたいわけです。ということで今回は色々C#のパフォーマンス系の記…
あいさつ Hololensミートアップとは ICEブレイクタイム MicroSoft本社のMRTKチームの話 建築業界でのxRの話 xR×Fashionの話 xR×触覚の話と音描の話 XDreamersの活動についての話 セッション後 あとがき あいさつ どうも、はかせです。 今回はかなり久しぶりのイベントのリポ記事です。 前イベント記事書いたのは2月ですね。 hakase0274.hatenablog.com今日参加したイベントは前回の記事と同様 Hololensミートアップです。 hololens.connpass.com今回で札幌開催は6回目みたいですね。 Hololensミートアップと…
IL C#のルールを超える禁術 ~DynamicMethod~
あいさつ DynamicMethodとは何ぞや?AssemblyBuilderとの違いは? DynamicMethod使ってみる あとがき あいさつ どうも、はかせです。前回の記事ではAssemblyBuilderを使って、 動的にdllとexeを生成してみました。 hakase0274.hatenablog.com今回はDynamicMethodというものを使って ILを書いてみようと思います。 DynamicMethodとは何ぞや?AssemblyBuilderとの違いは? DynamicMethodってのはその名の通り 動的にメソッドを作るメソッドです。「おいおいメソッド作るだけ?」 「…
あいさつ ILを書く方法 AssemblyBuilderを使う exeを吐かせてみる あとがき 参考 あいさつ どうも、はかせです。IL、ひいては機械語眺めてると どういう風にデータが動いていくのかが 見えるので見てるだけで楽しいですね。永遠と自分が過去に作ったexeとかのILを眺めてるのもいいんですが、 そろそろ自分でもILを書いてみたいと思います。 ILを書く方法 IL手書きと言っても所詮はC#です。 ちゃんとそれようのメソッドとかが用意されています。 (バイトコード直打ちとかいう頭おかしいことしなくていい)色々やり方はあるみたいですが、 今回はAssemblyBuilderというものを使…
あいさつ DnSpyとは ほめてばっかりもあれなんで・・・ あとがき あいさつ どうも、はかせです。 昨日から黒魔術士を目指してILを学び始めました。所感としてはなんか楽しいです。 つよつよプログラマになったと錯覚できるからですかね。 (実態はよわよわプログラマ オブ ザ イヤーを受賞できるくらいよわよわプログラマですが)今回は私が勉強で使っているツールで DnSpyというツールが神がかっていたので その話です。 DnSpyとは .NETデコンパイラです。 GitHubにコードは公開されており、 ReadMeから飛べるリンクから実行ファイルも入手できます。 github.com元々.NETデコ…
あいさつ IL is 何? 使えるツール とりあえずやってみる 既視感・・・ あとがき 参考 あいさつ どうも、はかせです。 最近私がイカサマをする際に使う 手品のタネを紹介してきました。ただ私もそろそろイカサママジシャンを卒業して、 黒魔術士になりたいなと思い始めました。思い立ったが吉日、 さっそく黒魔術(IL)の勉強を始めます。 IL is 何? 私のブログの読者の中には「ILって何?」という方が多いと思います。 実際私も存在は知っていたものの、 使いこなしたら化け物じみたパフォーマンスを出せるもの 程度にしか認識していませんでした。 (ZeroFormatterとかMessagePack…
あいさつ シーン遷移が遅いのか? どうやって速くする? 実装 シーンとプレハブどっち使う? あとがき あいさつ どうも、はかせです。あなたはシーン管理どうしていますか? おそらくUnityユーザーならばSceneManagerクラスを使っていると思います。ただUnityのシーン遷移って遅くないですか? 3Dオブジェクトとかゴリゴリに置いたシーンを読み込もうとすれば 数秒待つことも多いでしょう。今回はそのシーン遷移時の待機時間を減らせる Unityのプレハブを使ったテクニックをご紹介します。 シーン遷移が遅いのか? あいさつで遅いですよねなんていいましたが、 今のUnityもシーン遷移は遅いんで…
あいさつ C++ C# Unity あとがき あいさつ どうも、はかせです。今回はこのブログで扱ってきた フォルダ操作などの割と汎用的に使える記事を まとめてみます。 C++ C++でCSVファイルを読み込む hakase0274.hatenablog.comフォルダの中身をまとめて読み込む hakase0274.hatenablog.com hakase0274.hatenablog.comC++でストリームを使ったファイル書き出し hakase0274.hatenablog.comWinAPIを使ったフォルダ操作 hakase0274.hatenablog.comC++17以降で使えるfi…
あいさつ 環境 using ファイルを開く 小ネタ using ファイル読み込み ファイル書き込み あとがき あいさつ どうも、はかせです。 フォルダ操作系は一通りやったので 次はファイル操作です。ファイル操作ができるようになれば、 極論プログラムを弄らずとも プログラムの動作を変えれるようになりますよ。今回はファイルの読み書きをやっていきますよ。 (実は生成/削除/コピー/移動(改名)はフォルダ操作と一緒にやってますw) 環境 Windows10 Visualstudio2017 .NET Framework 4.6.1 using System.IO; ファイルを開く ファイル操作をするた…
あいさつ 唐突になんか来たぞ 問い合わせてみても・・・ 同類を探す ネタバラシの時間 あとがき あいさつ どうも、はかせです。 今日はまたもや不思議な宅配便が来たので その話です。前回来た不思議な宅配便 hakase0274.hatenablog.com 唐突になんか来たぞ 今日私が学校から帰ってくると 自宅に宅配便が届いていました。なにかなーと思い見てみると 野菜ジュースでした。ここまではいいんですよ。 「誰かが懸賞にでもあたったかな?」 とでも思ってたわけです。「これ誰の?」って聞いてみたら 「えっ?お前んじゃないの・・・?」と返って来たわけですね。Σ(゚д゚;)正直ビビりましたw 誰も身…
C# プログラムから別プログラムを起動しよう ~Processクラス~
あいさつ 環境 using プロセスの起動 プロセスの終了待ち合わせ プロセスの終了 あとがき あいさつ どうも、はかせです。 今回はC#でツール作ってると結構な頻度でほしくなる 自分以外のプログラムの起動や終了の待ち合わせをやります。C#にはそれらをうまいことやってくれる Processクラスってのがあるので 今回は私が良く使う辺りをメインに書いていきます。この辺使えるようになってくると 既存のツールを使いながらそのツールではできない イカサマなんかがやりやすくなって、 出来ることの幅がぐんと増えるので 是非見てってくださいね。 環境 Windows10 Visualstudio2017 .…
あいさつ 環境 C#のフォルダ操作系 using カレントディレクトリ取得、移動 フォルダ生成 フォルダ削除 フォルダコピー、移動 フォルダ階層取得 あとがき あいさつ どうも、はかせです。 先日こんなアンケートを行いました。ツール系の記事(フォルダ操作とか)ってC++とC#どっちのが見たいですか?— hakase@ちょっと変わり種のプログラマー (@hakase70945250) 2019年9月3日ツール系の記事でどの言語が見たいかというアンケートで 半数以上の方にC#が見たいという意見を頂きました。なので前回C++でやった操作を C#で実装してみます。 前回はこちら hakase0274.…
あいさつ 環境 include カレントディレクトリ取得、移動 フォルダ生成 フォルダ削除 フォルダコピー、移動 フォルダ階層取得 あとがき 参考 あいさつ どうも、はかせです。 前回フォルダ操作をWinAPIで実装してみた記事を上げました。 hakase0274.hatenablog.com本日はフォルダ操作の続きということで コピーとムーブをやろうとしたわけですが、 ここでとんでもない事実が発覚しました。なんとC++17以降ならばfilesystemという ヘッダーをインクルードすれば めんどくさいWinAPIを使わずとも ファイルI/Oができるらしいです。というわけで今回はfilesys…
あいさつ include カレントディレクトリの取得と移動 フォルダの生成 フォルダの削除 あとがき あいさつ どうも、はかせです。今回はフォルダ操作する際に使う カレントディレクトリの取得と移動 フォルダの生成 フォルダの削除 この三つをWinAPIを用いて実装します。この辺の操作が出来れば 必要なものを自動でセッティングしてくれるツール が作れるようになります。「開発楽にするためにツール作ってるけど セッティングが毎度ゴタついてめんどうなんだよなー」 っていうそこのあなた必見ですよ。 include 今回作成したプログラムで使用する includeはこちらです #include <Wind…
あいさつ カフェインとは 利用目的 やばい部分 取り過ぎたら? あとがき あいさつ どうも、はかせです。 みなさん作業中の飲み物は何を飲んでいますか?私はもっぱらモンスターエナジーです。 理由は言わずもがなカフェインの摂取ですね。「眠気覚まし」 「作業に集中する」 「活力を得る」 等々摂取する理由は人それぞれだと思います。ただ私はふとこう思ったのです。 「散々世話になってるけどカフェインってなんだ?」疑問に思ったら調べてまとめる。 ということで今回はカフェインについて 私の調べた内容をまとめていきます。 カフェインとは 興奮作用を持つ精神刺激薬です。 モンスターエナジーやコーヒー、お茶などで …
「ブログリーダー」を活用して、はかせさんをフォローしませんか?
指定した記事をブログ村の中で非表示にしたり、削除したりできます。非表示の場合は、再度表示に戻せます。
画像が取得されていないときは、ブログ側にOGP(メタタグ)の設置が必要になる場合があります。