2015-09-16 :-(
_ [C#][艦これ][はうはう]Metro.cs #1 - めとべや東京
KanColleViewer の話題があるということで行ってきた。
KanColleViewer + Roslyn カッコカリ ( KanColleViewer )
- リポジトリ Grabacr07/KanColleViewer
- fork の数が多いが内訳はローカライズ
- 英語、中国語... (艦これ未対応の国じゃねっていう)
- 集計用のプロファイルサーバーを設置して送信したりするクライアントもある
- クライアントからのトークンをそのまま送信するなどといった怪しいクライアントもある
- そこでプラグインの仕組みを作ってもらった
- プラグインを実装するためには KanColleViewer のソースを読まないと作れない
- 実装するインターフェースとかメタデータとか
- Code-Aware な仕組みを作る Code-Awareなライブラリ - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
- 開発の人道性を上げる
- プラグインを作るひとのために Roslyn
- KanColleViewer プラグイン開発用のライブラリがあるので NuGet できる
- Visual Studio でプラグインを書くときに補完してくれるようになる。便利
- Code Analyzer でコード解析して→ Code Fix でコード修正する
Paradox の LiveScripting 事情 ( シリコンスタジオ のゲームエンジン Paradox )
- 「Live Scripting」 と呼んでいる仕組みを作った
- EXE を実行中に DLL を差し替える
- コードを変更しても EXE をリビルドせずに DLL を差し替えるだけでコード変更を反映させる仕組み
- Game Studio (IDE) が裏でコードをウォッチし
- コード変更されたらコンパイルし (DLL生成。.NET アセンブリ)
- EXE へ DLL を通知し
- EXE から DLL バイナリデータを読み込み
- DLL のアセンブリを更新する(?) { なにそれ....}
- Game Studio のコードウォッチ処理でファイル差分を解析するときに Roslyn を使用
- ソースを構文解析しツリーを生成し差分を調べる
Roslyn メタプログラミング & Code-Aware ライブラリ ( ++C++; // 未確認飛行 C )
C# でググるとヒットするサイトのひと
- メタプログラミングについてまとめ
- サーバー - クライアント通信 ( 静的処理 )
- クライアント - クライアント通信 ( 動的処理。バイナリをやりとり )
- Mono.Cecil とか
Inazuma なのです! ( Misuzilla.org )
はうはう
- CoreCLR を車輪の再発明してインタープリタを実装した(している)
- C から C# へ移植
- アセンブリ、DLL ローダーを作る
- Mono.Cecil を使用
- 型システム、クラスローダーを作る
- MethodTable を作る
- 仮想関数テーブル - Wikipedia
- { 関数テーブルみたいな? }
- インタープリタを作る
- IL をロードして OpCode で分岐して命令を実行
- OpCodes クラス (System.Reflection.Emit)