ゲーム開発やツール開発において、 良く使う技術から普段あまりみないような一風変わった技術まで 幅広く取り扱うブログです。 基本毎日更新、ちょいちょい筆者の日常もはさみます。
あいさつ どうも、hakaseです。 最近は遊戯王マスターデュエルにお熱でずっとランクマにこもっています。 そのうちマスターデュエルの記事も上げだすかもしれません。 いつぞやのポケモンみたく、 またなんかゲームの記事上げてんなくらいに思って置いてください。ただ今回はちゃんと技術記事です。 (技術系とそれ以外でブログ分けることも検討中・・ ただ管理がめんどいので結局やんない可能性高)今回は表題にもある「ビットフィールド」という機能の紹介です。 目次 あいさつ 目次 ビットフィールド 割り振るビット数以上の値入れようとしたら? 実際使うん? あとがき ビットフィールド 端的に言うと構造体の各変数に…
あいさつ お久しぶりです。hakaseです。 約一年ぶりの更新となってしまい申し訳ありませんorzいつもみたいに忙しかったから~とか 書けない内容だったから~とか言うわけではなく シンプルに休んでました。 (やってたことのうち書けるの何割あるのって言われたら大分無いんですが・・・)ただ休んでる間に二転三転と業務内容が変わり 関わる技術内容もかなり変わりました。 あと一応少しですが趣味も増えてたりします。なのでその辺の紹介を執筆リハビリがてら 今回の記事でできたらなーという感じです。 適当な暇つぶしにでもチラ見してもらえれば幸いです。 業務にかかる技術内容 今までゲーム業界に入るということを目的…
お久しぶりです。hakaseです。 今回はゲームプログラマーの就活について的なことを 書こうかなぁと思ったのですが特に思いつきませんでした。 ということでいつも通り覚書をつらつら書いていきたいと思います。今回はxaml is 何です。 目次 目次 xaml is 何 コードビハインド コードビハインドの使用はおすすめしない あとがき xaml is 何 xamlっていうのは名前から察せそうな気がしますが、 xmlライクなタグ使って構造を作っていくマークアップ言語になります。 基本WPFのUI部分(View部分)を定義するのに使うらしいです。 他で使われているって話はあんまり聞かないです。全然ぱ…
どうも、先日ダイパリメイクが発表されテンションが高いhakaseです。さて前回WPFの初歩を刻んだところで、 今回はWPFの基本であり全てとも言って過言ではない、 「データバインディング」について書いていきます。 目次 目次 データバインディング is 何 具体例を交えて あとがき データバインディング is 何 よくMVVMとかMVCの設計パターンを勉強していると、 「ViewとModelは分離しろ」 「疎結合になるようにしろ」 的な文言を見ると思います。それを実現するためにWPFに用意されている機能です。(ざっくり)WPFは基本的にViewはxamlで、ModelやViewModelはC#…
どうも、hakaseです。 もうそろ北海道を脱出してから一年になります。コロナとかで色々大変でしたが、 なんとか家事等にも慣れてきてデュエマ等の開発以外の趣味も増え、 すこぶる元気に過ごせています。ただまぁなんやかんやでプログラム書くのは好きなので、 まったりプログラムも書いてました。今回は自宅で細々と書いては捨ててを繰り返している Livetを使ったアプリ開発について 備忘録も兼ねて書いていきたいと思います。なおxamlとかMVVMとかBindingとか出てきますが、 そういった用語だとかはまた別で解説記事上げますので この記事では解説しません。 (書いてて読みづらい&ようわからんってなって…
あいさつ どうも、hakaseです。 今年も今日で最後ですね。いかがお過ごしですか。私は必至こいてこの記事書いてますwこの記事はタイトル通り新卒プログラマーとして一年過ごして得た 学びやら気づきやらを書き連ねていく記事です。なのでかな~り雑多な感じになるでしょうし オチもないでしょうが、 まぁ年末年始のちょっぴり暇な時間にでもざらっと流し読みしてもらえればと思います。あと先に言っておくとコード等はありません。 今回はあくまで学びや気づきという 理屈とか考え方とかそっち系のお話なので。 目次 (目次が先頭以外に書けることをつい最近知りました) あいさつ 目次 わかりやすさをとりあえず最優先 わか…
C# ブログリハビリがてらC#で作れるプロパティについて雑多に書いてみる
あいさつ 全力言い訳タイム C#のプロパティについて メリットは何があるの? デメリットってあったりする? プロパティがどうやって実行されるのか あとがき あいさつ かな~~~~りお久しぶりです。hakaseです。以前更新したのはえーっと、 5/31ですか。 今はもう9月中旬が終わりそうなあたりなので、 約4ヶ月ほど更新が止まってしまっていたわけですか。誠に申し訳ございませんorz (というか最後の更新もなんか謝ってますね) 全力言い訳タイム 言い訳させてもらうと新社会人になって物理的に死んでたんですよ。 特にコロナの影響で最初の2,3ヶ月自宅待機命令が出て、研修が遅れに遅れ、 その遅れを取り…
あいさつ 1日~13日 14日~20日 21日~ あとがき あいさつ どうも、hakaseです。 本日は5月31日。 かろうじて不定期月間更新が続いております。 なんでこんなギリギリになったのかというと 夏バテになっておりました。はい。 自粛期間のくせになんで夏バテになっとんねんって話なんですが、 北海道から関西行くと部屋の中でもうまく体温調節できなかったんです。 てなわけで今回は今月私が夏バテになりながら何してたのか、 ざっくりと書いていく回です。 1日~13日 この辺は新しいデスク買ったり、 魔導書買ったり、 ゲーミングデバイス買ったりと色々自宅のPC環境を強化していました。 本当はノート…
プログラミング プログラミング勉強が続かない理由と続けるためにはどうすればいいか
あいさつ 続けられない要因 続けるためには 挫折してしまったら あとがき あいさつ どうも、hakaseです。 緊急事態宣言が出て多くの方が自宅で過ごされていると思います。 在宅勤務されてる方もいらっしゃると思いますし、 ゲームや動画で時間を潰している方もいらっしゃるかと思います。 そんな中私は何やってるかと言うとですね、 色んなブログやら動画やらTwitterやらを徘徊しています。 (もちろんゲームもやっております) そしたら 「この自粛期間にプログラミング勉強してみよう」 というような投稿がいくつかありました。 始めるぞ!という意思表示の場合もありましたし、 始めようぜ!という呼びかけの場…
あいさつ 冬場なのに存外暑い 移動が楽 道民のソウルフードが無い 関西弁が意外と聞き取りにくい あとがき あいさつ お久しぶりです。はかせです。 ちょいちょいTwitterでは呟いてますが、 2週間ぐらい前に北海道から関西へ引っ越しをしました。何もかも違う!・・とまではいきませんが、 それでもやっぱ北海道とは違うなぁと思うことがあったので 今日はそのことについて書いていきます。 (プログラミング系はネット開通してから書きますのでもうしばしお待ちください) 冬場なのに存外暑い 私的にはこれが一番ギャップ強かったです。時期的に今は3月。 いくら北海道ではないと言ってもある程度寒いだろうと思っていま…
あいさつ なぜ虫歯になってしまったのか 治療はどんなことしたのか どういう指摘を受けたのか 歯ブラシ交換について 歯磨き頻度について 歯磨きの仕方について 歯ブラシの角度 歯の裏の磨き方 前歯の磨き方 費用はいくらぐらいかかったのか あとがき あいさつ お久しぶりです。 可能なら自分の視界に入れたくないほど病院嫌いなhakaseです。突然ですが、 あなたは歯医者に行ったことがありますか?実は私2月末ぐらいから歯医者に通っていました。 理由は極めてシンプルに虫歯治療です。私が気づいたのは前歯の一か所だけでしたが、 実際に診てもらったところ、 予備軍含め7本も虫歯がありました。今回はそんな大量の虫…
あいさつ 札幌雪まつりとは 雪像 食べ物 ReoNaさんのライブ あとがき あいさつ お久しぶりです。はかせです。 今日2/11日は雪まつり最終日。 ということで行ってきたので今回はそのレポ記事です。 札幌雪まつりとは 2月上旬頃に開催される北海道最大規模の祭りです。 色んな雪像があり、 それらを見ながら飲み食いしたりします。私は地元なのでイマイチ実感ないですが、 このさっぽろ雪まつりなんと世界三大雪まつりらしく 毎回200万人もの人が全世界からやってくるそうですよ。 雪像 自分が見てきた雪像を貼っていきます。 とはいえ全部ポケモンなんですけどね・・・ アローラロコンですね。 撮った時後ろに日…
C# Unityでもコンソールアプリでもタイマイベントを簡単に作れるSystem.Timers.Timerの紹介
あいさつ 使い方 注意 どういう時に使うか あとがき あいさつ 新年あけましておめでとうございます。 はかせです。今回はC#が使える環境ならばほぼ全てでタイマイベントをサクッと作れる System.Timers.Timerの紹介です。 使い方 using System.Timers; private Timer timer; //タイマーの設定 timer = new Timer(1000.0); timer.Elapsed += TimerElapsed; //タイマー開始 timer.Enabled = true; //タイマイベントの処理 private void TimerElapse…
ポケモン剣盾 ランクマッチで4桁順位になれたのでその構築の紹介
あいさつ パーティ紹介 サダイジャ ドリュウズ リザードン サザンドラ ローブシン ヨクバリス 運用 構築に至った経緯 あとがき あいさつ どうも、はかせです。 やっとこさポケモンのシングルランクマッチで4桁順位になれました。 今マスターボール級に何人いるのか正確な数はわかりませんが、 少なくとも11万人以上いるのは確認しています。 (沼にハマり10連敗ぐらいして11万位第まで落ちましたw)前振りが長くなりましたが、 今回は自分の備忘録も兼ねて構築や考えたことを書いていきます。 パーティ紹介 使ったパーティはこんな感じです。 前回同様細かい説明はしません。 ではそれぞれの説明です。 サダイジャ…
あいさつ 前準備 Bluetooth通信のやり方 周囲のBluetooth端末をスキャン スキャンした端末が通信したい端末かチェックし値の購読を始める あとがき 参考 あいさつ お久しぶりです。はかせです。 この記事は、C# その2 Advent Calendar 2019 の22日目の記事となります。今回はコンソールアプリでBluetooth通信をやってみます。 やることとしては特定のBluetooth端末と通信し、 その端末からセンサーの値なりなんなりを取得できるようにします。 前準備 開発はVS2017の最新版を使っています。 C#にはBluetooth周りのAPIがあるっちゃあるんです…
ポケモン剣盾 マスターボール級に行ったのでパーティ紹介 ~ヨクバリスが無限大強い~
あいさつ マスターボール級とは 実際に使ったパーティ紹介 ドリュウズ ニンフィア ヨクバリス サザンドラ ミミッキュ ドラパルト パーティの運用 苦手な相手 あとがき あいさつ お久しぶりです、はかせです。11/15に約3年ぶりの完全新作 「ポケットモンスターソード/シールド」が発売されました。発売してから既に2週間ほど経過しましたが、 ようやくこのゲームのランクマッチで マスターボール級に行くことができました。 なのでその記念という感じで 行った時のパーティの紹介をします。 マスターボール級とは 私のブログの読者層はポケモンに特化しているわけではないので 知らない人が多数だと思います。なので…
雑記 祝!毎日投稿一周年!一年間毎日投稿して感じたメリット・デメリット
あいさつ メリット 文章に書き慣れる アウトプットの習慣が付く アクセスが増えやすい デメリット しんどい 時間がブログメインになっていく 毎日投稿しなきゃいけないという強迫観念に襲われる 毎日投稿するべき人・そうでない人 ついでにしれっと今後の方針を あとがき あいさつ どうも、はかせです。本日2019/11/14のこの投稿をもって 毎日投稿一周年となります! (≧▽≦ノノ゙☆パチパチパチパチいやはや我ながらよくもまぁ一年も 毎日記事書いて投稿してきたなと思います。そんなわけでこの一年で感じた 毎日投稿することのメリット・デメリットについて 書いていきます。 メリット 文章に書き慣れ…
UE4 フォルダ操作をエクスプローラーからやるとまずいらしい
あいさつ フォルダ操作とかは気を付けましょう UE4でフォルダ操作 あとがき 補足 参考 あいさつ どうも、はかせです。今日はUE4触ってたんですが、 その中でちょっとアセット周りで困りました。実際私が対面した問題はUE4というよりか バージョン管理の話だったんですけどね。ただその問題対応の中で有識者の方がですね、 「フォルダ操作とかはエディタ内で完結すべし」 とおっしゃっていました。なので今日はそのことについての 備忘録的な感じの記事になります。 フォルダ操作とかは気を付けましょう UE4やUnityを使って開発していると 当たり前ですが色んなファイルがあってフォルダがあります。それをこうい…
あいさつ 実行結果 実装 あとがき あいさつ どうも、はかせです。今回はマウスの位置からRayを飛ばしてみるのと その可視化をやってみます。 実行結果 今回はまず先にどういう結果が出るのかからお見せします。 画像右にあるGameビューから適当にクリックして Rayを打ってみました。画像左にあるSceneビューの 緑色の線が実際に打ったRayになります。 実装 ではコードです。 using UnityEngine; public class MouseClick : MonoBehaviour { public float DebugDrawRayDistance = 15.0f; // Upd…
Unity ものすごくざっくりと着地判定を作る ~楽がしたいんじゃぁ~
あいさつ 実装選択肢 それでも微妙にめんどくさいところが・・・・ めんどうを解消していく 自動で判定用オブジェクトを置いていく あとがき あいさつ どうも、はかせです。今回はUnityで着地判定を作ってみます。 ただ単純にやってくと やれレイヤーがなんだ やれ管理が面倒だの色々めんどうが発生します。 なのでここではほぼ全てをスクリプトで賄うやり方を パワープレイしていきます。 実装選択肢 おそらく 「Unity 着地判定」 とでもググれば大体出てきますが、 Unityで着地判定を行う方法はザっとこんな感じのものがあります。 ・CharacterControllerのIsGroundを使う ・下…
Unity コンポーネントとは?クラスやスクリプトとは何が違うの?
あいさつ コンポーネントとはなんぞや? クラスやスクリプトとは何が違う? あとがき あいさつ どうも、はかせです。昨日Twitterを眺めてたら GetComponentがうまくいかないみたいな話があってですね。 ちらりと覗くとどうやらコンポーネント自体の理解が あやふやなご様子でした。どうやらその話自体は解決したみたいなんですが、 ネット上で調べても 「GetComponentの使い方」とか 「コンポーネントを自在に操作!」とかばっかで 肝心のコンポーネントとはなんぞやって言う 記事や情報が無いように見えたんですよね。もちろんその記事の中でしれっと紹介していたりもするわけですが、 コンポーネ…
あいさつ 異なる点 角度制限を付ける 実行結果 あとがき あいさつ どうも、はかせです。以前UnityでFPSっぽいカメラを作ってみました。 hakase0274.hatenablog.com概ねの動きは上記の記事で問題ないと思うのですが、 一部問題と言うか一般的なFPSゲームのカメラの動きと 異なる部分がありました。今回はその修正の話です。 異なる点 私が作ったものはマウスの動きに追従して カメラの上下左右の回転を行うものでした。動き自体はこれでいいんですが、 よくあるFPSゲームの動きと違う点が一つ。それは 縦方向の動きに制限がないことようは首が縦方向に360度回転しちゃうってことですね。…
あいさつ 実装内容 コード 実行環境 結果 あとがき 参考 あいさつ どうも、はかせです。何気なくアクセス解析を見てたらですね 以前上げたTCP通信の記事がトップになってました。 ということで今日はUDPやっていきますよ。 (別にこのためにやってたわけじゃないけど)ちなみに今回は受信だけです。 実装内容 今回はスマホとPCでUDP通信を行い 加速度センサーの値と姿勢センサーの値を取得します。スマホからのデータ送信には 「ZIG SIM」というアプリを使います。ZIG SIM開発元:1-10無料posted withアプリーチこのアプリはスマホの各種センサの値を色んな通信方法やデータ形式で送信で…
あいさつ for文の使い方 goto文を使ってfor文と同じ動きを作る あとがき あいさつ どうも、はかせです。ちょっと前に配列についての記事を上げました。 hakase0274.hatenablog.com配列を扱ったんだから次は配列操作にほぼ必須に近い for文の説明をしなきゃならんだろうと思ったわけです。ただですね。 単純for文はこんな構文でこんな機能ですよ~ っていうのを書いたとしてもそんな記事は世の中に 山ほどあるわけです。じゃあ一体どうしようかと。 for文の理屈込みで解説すればいいのではなかろうか?ということで今回はfor文の基礎構文から始まり、 最終的に古のgoto文クラスま…
ブログ 記事中のコードなどを折りたたむ方法の紹介と解説[コピペ可能]
あいさつ やり方 一応解説的な あとがき 参考 あいさつ どうも、はかせです。先日闇の深そうなコードとともに配列の基本を書きました。 hakase0274.hatenablog.comその中であまりにも行数が長くなってしまった(してしまった)ため コードがあり読みづらくなるという観点から 任意で畳んだりできるようにしました。なのでその方法をご紹介します。 やり方 やり方は極めて簡単で下記のコードをコピペするだけです。 <div onclick="obj=document.getElementById('oritatami_part').style; obj.display=(obj.displ…
C# 配列というものについてそれとなく語る ~闇が深そうなコードを添えて~
あいさつ 配列とは 配列が便利な場面 あとがき あいさつ どうも、はかせです。最近学校でもネット上でも 「配列の扱いを知らない人」が多いように感じます。 (あくまで自分の目に見えている範囲だけの話ですが)そこで今回は「配列を知らないorよくわかってない人」向けに 「配列とは何ぞや」っていうのを書いていきます。なおC#はサンプルコード等で使うだけです。 C#特有の配列機能(LINQとか)は扱いません。 配列とは プログラミングにおける配列っていうのは 「複数の同じ型のデータを ひとまとめにして扱うもの」 です。 要はデータの集まりです。C#で書くとこんな感じ int[] intArray; in…
あいさつ BOMとは BOMが何故文字化けを BOMの有無をどうやって切り替える BOMが有用な場面 あとがき あいさつ どうも、はかせです。以前こんな記事を投稿しました。 hakase0274.hatenablog.com内容はC#でのファイルI/O基礎的なものです。この記事の中で○○Readerやら○○Writerやらを 使っているのですが、 実は読み書きするファイルによっては 「文字化け」が起こります。 (通称BOM地雷)この文字化け問題は「BOM」というものが 関わってきます。今回は上記の記事から一歩踏み込んで この「BOM」について書きます。 BOMとは Byte Order Mar…
C# 参照渡しの3つのキーワードについて違いを語る ~in、out、ref~
あいさつ 参照渡しと値渡し ref out in あとがき あいさつ どうも、はかせです。先日メソッドから複数の値を取得する方法を 投稿しました。 hakase0274.hatenablog.comその後Twitterの方でですね 「outは?」 というコメントを頂きました。確かに複数の値を返すという名目ならば refよりoutの方がより意味合いとして近い気がします。ただお恥ずかしながら私自身 refとoutの違いを言語化できるほど理解していませんでした。なので今回は私の勉強メモという側面を持ちつつ、 C#の参照渡しで指定できる3つのキーワードそれぞれについて 書いていきたいと思います。 参照…
あいさつ refキーワードを使う タプルを使う 構造体を使う あとがき あいさつ どうも、はかせです。唐突ですが、一つのメソッドから複数の結果を欲しくなる時ありませんか? 「座標情報と対応インデックスが欲しい」 「メソッド実行して値とそのメソッドの成否が知りたい」 ゲーム開発でもライブラリ開発でもそういった場面に遭遇することは少なくないかと思います。ということで今回は私が実際に使ったことがある 一つのメソッドから複数の値を取得する方法を どういう時につかったとかの私の所見も踏まえて 3つご紹介します。 refキーワードを使う C#ではrefキーワードを使うことで参照渡しを実現できます。 参照渡…
あいさつ PV数 読者数 アクセス傾向 今後どうしていくか あとがき あいさつ どうも、はかせです。今回は私の記事としては初のPVとかの 報告記事になります。なんやかんや1年ほどブログをやってきていますが、 現状の報告やらなんやらってのはやってませんでした。別にやりたくない理由もないですし、 というかTwitterではやっていましたし、 今回はそれをブログでやってみようと思います。今回は2019/10/01~2019/10/31までの期間の報告となります。 PV数 まずブログ運営と言ったら月間何アクセスあったのか というところが気になると思います。ということで10月のPV数はこちら 4508 …
あいさつ Git使おうぜで解決できない問題 テキストデータとバイナリデータを別で管理する あとがき あいさつ どうも、はかせです。最近チーム開発をする機会がかなり増えました。ついこないだJPHACKSに参加し、 今もUnityとUE4のプロジェクトに参加させていただいております。 (ありがとうございますm(__)m)学校は学校でチームを組み卒業研究を行っております。チーム開発をやっていくと必ずぶつかる壁があります。 「マージどうする?」 「データの共有どうする?」 この辺ですね。そして大抵ちょっとした有識者であれば 「Gitで管理すれば解決できるよ」 と言うでしょう。自分もそのちょっとした有識…
あいさつ ブループリントとは さっそく使ってみる あとがき あいさつ どうも、はかせです。前回はアセットをプロジェクトにぶち込んでみました。 ただですね、 ツッコんだアセットが悪いのかなんなのかわかってないですけど うまく動いてくれませんorzUE4ワカルマンにエラー見せてお願いはしましたが、 結局いつかは自分でデバッグ解決できるようにならなくてはなりません。 いつまでもおんぶにだっこではいられませんからね。さてUE4でデバッグやら修正やらをするにはいったいどうすればいいか。 答えは単純でブループリントできるようになればいいのです。というわけでUE4のブループリント触っていきます。 ブループリ…
あいさつ インポートメニューからインポート 右クリックからインポート ドラッグ&ドロップでインポート あとがき あいさつ どうも、はかせです。今日はUE4です。 前は闇に包まれていた世界から脱出できた話でしたね。 hakase0274.hatenablog.comさて闇から脱出できたので 次はアセットを入れてみたいです。(唐突)そう、UE4ナンモワカランな私は UE4でのアセットインポートさえワカランのです。なので色々ガチャガチャやったり ネットでググったりしてアセットを プロジェクトにインポートしてみました。ということで今日は UE4のプロジェクトにアセットをインポートする3つの方法を ご紹…
あいさつ 開発環境とは 環境作るのって本当大変 難しい環境構築をどうする あとがき あいさつ どうも、はかせです。本当は今日はUE4の進捗を上げたかったのですが、 上げられないので雑記です。環境が変更されたってのと なぜかプルできない問題に直面し作業時間が無事死亡いたしましたwさてそんな感じの背景があったのと 昨日まで参加していたJPHACKSでも 開発環境でちょっともにょったので そこらへんの所見というかそんな感じのこと書いてきまーす。 開発環境とは 一口に環境と言っても 色々あって全部書くのは辛いので ここでは ゲームの実行ファイルの作成環境 に限定して書いていきます。要はUnityやらU…
あいさつ 何作ったか 結果 あとがき あいさつ どうも、はかせです。今日でJPHACKSのHackDayが終了しました。 今回はその報告と今後の動きです。 何作ったか 今回私が参加したチームはARでスキャンしたオブジェクトの上に3Dモデルを表示しそのモデルにボイスメッセージを喋らせるというものを作りました。リンクはスマホから打ってる関係上後で追加する……予定ですw 結果 今回自分達のチームは残念ながら受賞できませんでした。ですがHackDayが終わっても完全に終了はしていません。というのもこの後オンラインで審査があり その結果によってAwardDayに進出出来るかが決まります。つまりまだ足掻け…
Unity あのめんどくさいAnimatorのステートマシンから解放されよう
あいさつ サンプル あとがき あいさつ どうも、はかせです。今日はJPHACKSの一日目でした。 私が参加しているチームはUnityを使って開発をしています。 そこで2日間という短期間でモノを作るということで モーションは基本Animatorです。ただUnityを少し触ったことがある方ならばわかるように UnityのAnimatorはお世辞にも使いやすいとは言えません。 (少なくとも私はめんどくさくて嫌いです)なのでそれをスクリプトから完全に管理するというやり方が 私含めたUnityのAnimator嫌いエンジニアにとって 一般的なやり方かと存じます。 (そうであってくれ)ただ一般的なやり方で…
あいさつ JPHACKSに参加します 表題回収 あとがき あいさつ どうも、はかせです。今回は雑記と名打っていますが、 内容は報告記事になります。 JPHACKSに参加します 私は明日から開催されるJPHACKSに参加してきます。 jphacks.comこのイベントは簡単に言うと 学生向けのなんでもありのハッカソンです。毎回テーマが出されてそこに紐づけて なんか2日間で作ろうというイベントです。 内容はガチガチのシステムだろうが ゲームだろうがなんでもありです。とりあえずテーマがあって そこに紐づいた課題があって その課題を解決しさえすればいいのです。つまり極論 暇な時間が多いよな→暇潰せるゲ…
雑記 久しぶりにスマホで書くし自分のプログラミング歴でも振り返ってみる
あいさつ 触った言語 COBOL C Java C# C++ PHP Python HTML CSS JavaScript あとがき あいさつ どうも、はかせです。今回の記事はスマホからお送りします。さてブログをスマホで書くなんてかなり久しぶりです。多分この記事以来ですね。 雑記 スマホアプリでの記事の書き方が判明した話 - はかせのラボスマホで書くとコードとか書くのがかなりしんどいんで雑記です。ただ全く意味の無い世間話してもしょうがないし、話題になってる宇崎ちゃんポスターや税金について語るのも意味がないでしょう。 (もちろん需要があればやるのはやぶさかではありませんが)じゃあこのブログの雑記…
あいさつ この世界は暗黒の中 光をもたらす方法をググっても 世界はフォグ欲していた あとがき あいさつ どうも、はかせです。昨日はUnityのタスクを進めたので 今日はUE4のタスクを進めたいと思いました。ただUE4の中身のコードはちょくちょく読むんですが、 UE4そのものを使った経験は限りなく無です。 (一応いつぞやセミナー的なものに参加したことはある)そんな限りなく初心者、 いや下手したら初心者以下の私が 踏んだ地雷的なものの話です。 この世界は暗黒の中 とりあえずUE4には「マップ」っていうものがあるみたいです。Unityとかだとシーンに該当するもの・・・だと思います。とりあえずUE4の…
Unity FPSゲームやバイオで見るようなカメラとラジコン操作
あいさつ どういうやつ カメラ移動 ラジコン操作 あとがき あいさつ どうも、はかせです。今日は趣味のDirectX12ではなく 誘われたプロジェクトの作業してました。今回はその中で実装してみた 簡単にできるFPSとかバイオで見る感じのラジコン操作を 紹介します。 どういうやつ こんなやつ www.youtube.comマウスグリグリで視点移動ができて 十字キーorWASDで操作キャラ視点での 上下左右に移動できる感じです。 カメラ移動 今回はFPSカメラということでマウスの動きに応じて カメラを回転させます。 using UnityEngine; public class MouseCame…
C++ std::vectorのポインタから特定インデックスの要素を取り出す5つの方法
あいさつ 前提 ①一旦実体を別で格納し使う ②()と[]の合わせ技 ③0番地を使う ④std::vectorのatを使う ⑤イテレーターを使う あとがき あいさつ どうも、はかせです。今日は以前上げたボーンの理屈に従って カタカタコード打っていました。その中でstd::vectorをポインタで渡して 渡した先で特定インデックスの要素を 参照するみたいなコードを書いてました。 (良いかは知らん。ただ個人的に配列の直渡しには苦い思い出がある)その時に少し普段と違う書き方をする必要があり、 少し戸惑いました。なのでその普段と少し違う書き方を 全部で5つ紹介します。 前提 まずここから話す内容はこんな…
あいさつ ILとは DnSpy IL手書き DynamicMethod ループ 拡張メソッド 命令の種類 自動メモ化 コンストラクタ デストラクタ あとがき あいさつ どうも、はかせです。このブログもなんやかんやいって1年強やってきました。そうすると色んな記事が出てくるわけで 後から見ると自分でもどこになにがあるかわかりにくくなっている状況です。なのでこれからちょくちょく時間を見つけて 過去記事のまとめや必要に応じてリライトなんかもしていきたいと思います。 (まぁそうそう時間ないんで頻度は低いでしょうが)今回は割と最近やった C#のIL記事をまとめていきます。 ILとは hakase0274.…
あいさつ ボーンオフセット行列 初期姿勢行列 あとがき あいさつ どうも、はかせです。今日はボーン勉強会その二です。今回のテーマはボーンについて調べてるとしょっちゅう出てくる ボーンオフセット行列と 初期姿勢行列です。 ボーンオフセット行列 ボーンをローカル座標で原点に移動させる行列です。なんでこんな行列が存在するかっていうと ランタイムでの行列計算コストを減らすためですね。仮にボーンを(2.0,1.0)から(1.0,2.0)へ移動させるとしましょう。 直接移動させることももちろんできます。 所詮(2.0,1.0)-(1.0,2.0)=(1.0,-1.0)となり (1.0,-1.0)の移動行列…
DirectX12 ボーンについて調べてみた話 ~そもそもボーンとは~
あいさつ ボーンとは あとがき あいさつ どうも、はかせです。 前回Lat式ミクさんの顔の異常を修正し 無事描画することに成功しました。ただまだ完全とは言えませんね。 前回の記事でも少しだけ触れましたが トゥーンレンダリングもできていません。それに本来あるはずの影なんかもありません。 私の描画したミクさん PmxEditorで見たミクさん この辺の改良もしていかなければなりませんね。ただ今回はその改良の話ではありません。不完全とはいっても形だけは描画できたわけです。 形が出たら次は動かしたくなります。 ということで今回からは ボーンアニメーションの実装をがんばってやります。今回はまず ボーンっ…
あいさつ 前回のやつ 黒くなっている原因 対処法 血まみれ問題原因 成果 あとがき 参考 ちなみに あいさつ どうも、はかせです。 前回表示したモデルにテクスチャを貼り付けてみました。概ね正常にできていたのですが、 顔の部分だけおかしくなっていました。今日はそれを直した話です。 前回のやつ まずは前回表示したものの確認です。 顎と鼻の部分が黒くなっています。 あと少しわかりづらいですが、 目の周り以外が白のダミーテクスチャになっています。 黒くなっている原因 Twitterで教えてもらったのですが、 何やら今回私が使っているLat式のモデルは 一部のサーフェイスが反転しているそうです。サーフェ…
あいさつ モデルのテクスチャマッピングに必要なもの モデルのマテリアルデータ モデルに紐づくテクスチャ 実行してみる あとがき あいさつ どうも、はかせです。 前回はメモリリークを解消しながら ComPtrの動きについて学びました。今回は前に上げた白塗りのモデルに テクスチャマッピングを行っていきたいと思います。 ちなみに白塗りモデルの話はこちら hakase0274.hatenablog.com モデルのテクスチャマッピングに必要なもの まずはモデルにテクスチャマッピングするにあたり 何が必要なのかです。調べた感じ以下の二つがあれば なんとかなりそうです。 ・モデルのマテリアルデータ ・マテ…
DirectX12 ComPtrに直接値を代入したりするのは危険だっていう話
あいさつ リークしていたメモリ テクスチャ周りの解放 RootSignature他の解放 あとがき あいさつ どうも、はかせです。前回ID3D12DebugDeviceを使って どのオブジェクトが破棄されていないのかを確認しました。 hakase0274.hatenablog.com今回はその内容の確認と実際に メモリを解放しメモリリークを解決した話です。 リークしていたメモリ 今回リークしていたのは ・各種テクスチャ ・テクスチャに紐づくヒープ ・RootSignature ・Fence ・CommandQueue ・それらに紐づく各種リソース 以上です。上二つは予想通りでしたが、 Root…
DirectX12 ID3D12DebugDeviceのReportLiveDeviceObjectsを使ってメモリリークを確認する
あいさつ ID3D12DebugDeviceとは ID3D12DebugDeviceの作り方 ReportLiveDeviceObjectsの呼び方 あとがき あいさつ どうも、はかせです。 今日も今日とてPMDファイルの描画・・・ と言いたいところなんですが、 昨日作ったプログラムを実行すると メモリリークを起こしてしまいました。なのでメモリリークの解消が当面の課題となります。今日はDirectX12で一体何のオブジェクトが残ってしまっているのか 調べるためにID3D12DebugDeviceの ReportLiveDeviceObjectsというものを使った話です。 ID3D12Debug…
DirectX12 PMDファイルの表示に成功した話 ~犯人は変換行列~
あいさつ 進捗 やったこと なぜ今までできていなかったのか あとがき あいさつ どうも、はかせです。今日はついにPMDファイルの描画に(一部)成功したので その話です。 進捗 細かい話を始める前にまずは本日の成果です。 ミクさんの形だけですが描画することに成功しました!ここまで来るの本当に長かった・・・! やったこと 成果報告が終わったところで細かい話に移ります。とはいっても今回できたことは ・PMDファイルを読み込む ・頂点バッファーとインデックスバッファーを作成 ・素直に描画し白のテクスチャをあてがう この三つだけです。PMDファイル読み込みは以前上げたPMDファイル読み込みでほぼ出来てま…
あいさつ 寝違えるとは 対処 あとがき あいさつ どうも、はかせです。 今日かなり久しぶりに寝違えました・・・朝起きたら首あたりを中心に「痛え!!」ってなりましたw 一応今日は安静にしてたので痛みは多少和らぎました。 (おかげで進捗は無ですが)なので今日は寝違えた時の対処なんかをまとめていきます。 寝違えるとは そもそも寝違えるってどういうことかご存知でしょうか。朝起きた時首が痛くて回らなくなるやつです。 割と痛いですし、そこそこ続きます。この寝違えた時の痛みの原因は肉離れと炎症です。発生原因は諸説ありますが、 よく言われるのは首が不自然な角度で寝ていて 血流が悪くなって筋肉が凝り固まり、 そ…
あいさつ 台風19号 避難場所を調べる 充電 水の確保 あとがき あいさつ どうも、はかせです。 ついにこの三連休中に噂の台風19号が来ますね。台風対策の記事や動画が大量に投稿されている中 御多分に漏れず私もそこに乗っかっていきます。 (本当は進捗が無さ過ぎて書くことが無かったなんて言えない・・・) 台風19号 もう散々色んなとこで紹介されているので 知ってるよって方も多いと思いますが一応。中心気圧が925hPaとかいうお化けみたいな数字をたたき出し、 最大瞬間風速70m/sという超弩級の台風です。何やら地球史最強だの 幻のカテゴリー6だの言われており、 その強さはもはや強すぎて現実味を帯びて…
DirectX12 発生していたD3D12ERRORを片っ端から潰していった話
あいさつ SET_VERTEX_BUFFERS_INVALID INVALID_DESCRIPTOR_HANDLE、COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES EXECUTECOMMANDLISTS_FAILEDCOMMANDLIST DEVICE_REMOVAL_PROCESS_AT_FAULT COMMAND_LIST_CLOSED あとがき あいさつ どうも、はかせです。 今日も今日とて基礎勉強しながら ロードトゥMMDを歩んでいるわけですが、 未だ道は長い・・・・今回はD3D12ERRORを潰しまくったので その潰したエラーと対処…
あいさつ デスクリプタヒープとは 使い方 デスクリプタヒープ内のデスクリプタを参照する あとがき あいさつ どうも、はかせです。 前回はMMDもといPMDを出すために PMDファイルの読み込みをやりました。読み込んだら後は表示するだけ~なんて思ってたんですが 一向にできません。前回の参考元のサイトを参考に プログラムを組んでいるんですが、 常にD3D12ERRORの何かが出ますwなのでPMDファイルを表示するプログラムとかについては また後日に上げます。 (どんな形でも実装してあげます)てなわけで進捗報告は無理なので 今回はやってくなかでデスクリプタヒープの 扱いがちょこっとだけわかったので …
DirectX12 MMD表示の初歩を刻む ~ファイル読み込みの話~
あいさつ PMDファイル 実際に読み込む あとがき 参考 あいさつ どうも、はかせです。 あらかた自分が使う機能の移植(ほぼ新規開発)が終わりましたので 今回からまたDirectX12の勉強を開始していきます。そんなわけで今回からMMDの描画の勉強を始めます。 第一回の今回はMMDもといPMDファイルの話です。 PMDファイル DirectX12には11以前にあったような 気の利いたバイナリデータ読み込みの機能は存在しません。 全てプログラマーが自前実装する必要があります。 (一応WICとかあるけど結局めんどくさいのは変わらない)なのでPMDファイルの中身がどのようになっているか 知る必要があ…
C++ GetKeyboardStateでキーボードの入力を取得する
あいさつ GetKeyboardStateとは あとがき あいさつ どうも、はかせです。 今日も今日とて過去にD3D11で使ってた 便利クラス的なものの移植をやってました。その中でDirectInputを使った入力クラスがありました。 もちろん今後何らかの検証やデバッグをしていくにあたって 入力取得は必須ですから移植しようとしました。ただ移植した後でビルドしたらうまく動きませんでした。デバッガで見てみたところ SetDataFormatというメソッドがうまく機能していませんでした。色々ググったり試してみたりしたのですが、 なにやらx86環境でないと動かなさそうな雰囲気。 元々DirectInp…
あいさつ FPS固定 FPS計測 あとがき あいさつ どうも、はかせです。 私は以前FPS固定について色々調べたり 実装したりしてました。 hakase0274.hatenablog.com hakase0274.hatenablog.comこういった機能って色んなとこで使うし、 ほぼ処理が変わりません。なので逐一コピペしなくても済むよう クラス分けしそのクラスを放り込んで使うだけで これらの機能が実装できるよう作り直しました。今回は今までも取り扱ってきた内容ではありますが、 最近私を知ってくれた方もいると思いますし、 当時に比べて私自身の理解度も上がったと思うので 改めて簡単にですがFPSの…
あいさつ リアルタイムレイトレーシングの導入と最適化事例 『描画が出来る人』ってどうやって育てればいいんだろう?~描画エンジニア育成プロジェクトポストモーテム DirectX12を教えてみて得られたこと~意外と得られるものが多かった~ コードの複雑度とソフトウエアメトリクスについて あとがき あいさつ どうも、はかせです。 今日10/5に札幌でCEDECが開催されました。 sapporo.cedec.jp今回の記事はこのレポ記事になります。 私が聞いたセッションで出せるものを出していきます。 リアルタイムレイトレーシングの導入と最適化事例 DXRのセッションです。 sapporo.cedec.…
DirectX 死体になった私はResources Barriersを調べた
あいさつ 今日の進捗 Resources Barriers あとがき 参考 あいさつ どうも、はかせです。 今日も今日とてGPUと友達になるべく がんばります。 今日の進捗 DXRやろうとして DirectX12のサンプルで遊んでて 「ガッシ!ボカッ!」 はかせは死んだ。スイーツ(笑) Resources Barriers 上記の件で今日の進捗は無に帰してしまったわけですが、 さすがあれで終わりでは芸がありません。ということで茶番を終えてこの記事の本題である Resources Barriersについて調べた内容をまとめてみます。Resources Barriersってのはリソースの状態を管理…
DirectX DirectX12でのWICを使ったpngの描画
あいさつ pngを描画したい どうやってやる? テクスチャ読み込み CoInitializeとCoInitializeEx あとがき 参考 あいさつ どうも、はかせです。 今日は昨日のオムライスの逆襲なのか 飯テロを食らいました。@hakase70945250 pic.twitter.com/yOYc5GQ1nF— 転生ろっさむ@垢ロックで作り直し (@Ev_rossam) 2019年10月3日こ、こんな飯テロ効かねぇ!(究極のやせ我慢)さてMSMVP懇親の飯テロをこらえたところで 話はまるっと変わりDirectX12です。いよいよ今週の土曜日にCEDECがあります。 今日明日でなるべくDir…
雑記 ラケルのスフレオムライスはめっっっちゃふわっふわだった
あいさつ 今日のお店 スフレオムライス あとがき あいさつ どうも、はかせです。 今日はなんとなく気分がオムライスだったので なんばでオムライスを食べました。 (なんばなのは関空への通り道だったから)そしてぬるっと始まった大阪旅行ですが、 本日で最終回です。 今日のお店 今日行ったお店は「ラケル」というオムライスレストランです。 (気分はオムライス、店はオムライスレストラン神がかったマッチング) tabelog.com店の雰囲気はTHE・洋食店みたいな感じで 赤と白のチェックのテーブルクロスが印象的でした。 スフレオムライス 私が頼んだのは店前の看板に デカデカと載せられていたこれ! 「モンサ…
雑記 純度の高い幸福とはコーヒーゼリーを食べることと見つけたり
あいさつ コーヒーゼリー あとがき あいさつ どうも、三度の飯よりコーヒーゼリーが好きなはかせです。 前回の記事で引用させてもらった某イーブイ系MSMVPの方に 「MSMVPの全力の飯テロ見せてやるからな。震えて待ってろ」 という宣言をされました。もちろん私はガックガクに震えているわけですが、 ただ震えて待つのもしゃくなので 今日も飯テロしていきます。今回の飯テロはもうすでに 何回か出ていますが、 私の大好物であるコーヒーゼリーです。 (そいや今日10/1はコーヒーの日らしいですね) コーヒーゼリー パフェとかパンケーキとかだと 一個食べきるのもしんどいんですが、 コーヒーゼリーならいくらでも…
あいさつ チーズホットク たまごたこ焼き あとがき あいさつ どうも、はかせです。 なぜか最近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…
あいさつ カフェインとは 利用目的 やばい部分 取り過ぎたら? あとがき あいさつ どうも、はかせです。 みなさん作業中の飲み物は何を飲んでいますか?私はもっぱらモンスターエナジーです。 理由は言わずもがなカフェインの摂取ですね。「眠気覚まし」 「作業に集中する」 「活力を得る」 等々摂取する理由は人それぞれだと思います。ただ私はふとこう思ったのです。 「散々世話になってるけどカフェインってなんだ?」疑問に思ったら調べてまとめる。 ということで今回はカフェインについて 私の調べた内容をまとめていきます。 カフェインとは 興奮作用を持つ精神刺激薬です。 モンスターエナジーやコーヒー、お茶などで …
あいさつ 情報処理技術者試験とは 私の持っているもの この試験を受けるメリットは何? 勉強する目標になる 客観的に知識を持っているという証明になる 会社によっては給料が上がる あとがき あいさつ どうも、はかせです。 今日なんとなくTwitterとかQiitaとかの タイムライン見てたらちょくちょく 情報処理技術者試験についての話が出てきてました。一応私もその資格には それなりの時間をかけて関わってきた者なので 今回はその私見を軽く書いてみます。 情報処理技術者試験とは 知らない人もいるかもしれませんので まず簡単にこの試験について説明します。この試験はIPAが実施している 国家試験です。 w…
Unity 簡単にWebSocket通信が行えるWebSocketSharpの紹介
あいさつ WebSocketSharpとは 前準備 実際に使う サーバー クライアント あとがき あいさつ どうも、はかせです。 今回は少し毛色を変え 便利なライブラリの紹介です。今回紹介するライブラリは、 C#使える環境ならば簡単に使える WebSocket通信用ライブラリ「WebSocketShrap」です。 WebSocketSharpとは C#でのWebSocket通信を楽に実装できるよう 作成されたライブラリです。 サーバー、クライアント両対応です。 前準備 まずは下記ページからリポジトリを落としてきます。 github.com落として来たらこんな感じのファイル構成になっているはずで…
あいさつ ポケモンマスターズ ストーリー バトル ガチャ あとがき 追伸 あいさつ どうも、はかせです。 今回はかなり久しぶりのゲームレビュー記事です。 今回やったゲームは「ポケモンマスターズ」です。 ポケモンマスターズ ポケモンとDeNAが共同開発したゲームです。 (ジャンルはRPGになるのかな・・・?) 引用元:『ポケモンマスターズ』が配信開始! ゲーム概要や遊びかたなど、これまでの情報まとめをチェック - ファミ通.com pokemonmasters-game.com ストーリー ストーリーとしては 人工島パシオで開催される ワールドポケモンマスターズ(以下WPM)に出場するため パシ…
あいさつ Unityで音声認識はできるのか Unityでキーワードによる音声認識 なんかちょっと使い方めんどくさいな・・・ あとがき あいさつ どうも、はかせです。 ここ最近はずっとAlexaの開発をしておりました。 今までやったことのない分野でとても勉強になりました。ただその中でAlexaに不満を持つことも多かったです。 ウェイクワードの件だったり、 前回のリマインダーの件だったり、 Alexaは何かと融通が利きません。 (おそらく誤動作と誤認識の軽減のため)そうしていくうちにふとこう思いました。「AlexaじゃなくてUnityで直接音声認識すればいんじゃね?」もちろんAlexa×Unity…
あいさつ なぜやろうとしたのか どうやってやろうとしたか リマインダーを使う あとがき 参考 あいさつ どうも、はかせです。 前回Alexa→Unityの連携に成功しました。 hakase0274.hatenablog.comなので今回はUnity→Alexaの連携に挑戦した話です。 なぜやろうとしたのか 基本Alexaは発話→レスポンスという動きしかしません。 どんなスキルであっても必ずユーザーが 「Alexa○○して」といった風に話しかけて初めて動き出します。ただUnityひいてはゲームのAIと言ったら 特定の条件下になったら今の状況を教えてくれたり、 かるく実況じみた発言をしたりと何かと…
あいさつ どういうものか 実装 Alexa側のコード Unity側のコード あとがき あいさつ どうも、はかせです。 今回はAlexaとUnityの連携がようやく形になってきたので その話です。 どういうものか まずは動画をご覧ください。AlexaでUnity操作できたーちなみに有料アセットの類は一切使っておりません pic.twitter.com/i5KiXHItpG— hakase@プログラミングなんもわからん (@hakase70945250) 2019年8月26日 (生声(/-\*) ハジュカチ…)Alexaでスキルを起動し 「ポーズ」というとUnity側でPauseという文字が出る…
あいさつ やり方 あとがき あいさつ どうも、はかせです。 前回DynamoDBの読み込みができたので 今回はDynamoDBの更新をやってみます。 やり方 PythonなどでDynamoDBを更新しようとすると update_itemとかを使うのでUnityでもそうかと思ったんですが違いました。UnityでDynamoDBに対してできる操作は ・保存 ・読込 ・削除 この三つだけです。よくデータベース処理で存在する更新や挿入がありませんね。 ではUnityではどうやってやるのか。 答えは極めて単純で読込→上書き保存です。まずはコードから行きましょう。 Context.LoadAsync<Te…
あいさつ データを取得するための準備 データを取得する あとがき あいさつ どうも、はかせです。 今回はUnityでDynamoDBのデータを取得する方法です。 データを取得するための準備 まずデータを取得するために 取得するデータを表すクラスを作成します。 [DynamoDBTable("Test"),Serializable] public class TestTable { [DynamoDBHashKey] public string action; [DynamoDBProperty("info")] public List<string> infos; } 色々属性値が付いています…
雑記 GoogleAdsenseに無料版かつ独自ドメイン無しで受かった話
あいさつ GoogleAdsenseになぜか受かった GoogleAdsense審査に通った理由 あとがき あいさつ どうも、はかせです。 本日AWS東京リージョンで大規模な通信障害が発生しました。 該当サービスを私は利用していなかったので 私はそこまで被害を受けませんでしたが、 サービスの一時停止や機能縮小など小さくはない被害が多数出たようです。そんな中私はいつもどおりプログラミング~と行きたかったのですが、 そういう時に限ってやつが来るわけです。 そうWindowsUpdateがawsはメンテだしwindowsアプデは入るし(´;ω;`) pic.twitter.com/QjfygRXav…
「ブログリーダー」を活用して、はかせさんをフォローしませんか?