C#向けCRIWAREプラグインのご紹介
ごきげんよう!CRI開発の久田です!
今回は現在社内で開発中のご機嫌な新規プロダクトについてご紹介します。
C#向けCRIWAREプラグインです。
もう説明すること無いかも…ですがC#開発環境で利用できるCRIWAREプラグインになります。
なぜC#向けプラグインを…?
C#向けプラグインがある場合の利点として、動画で見ていただいた通りCRIWAREを使える環境が増えます。
Unity対応が〜とかGodot対応が〜とかじゃなく、C#に対応したのでC#が動くところでは動く。
また、ゲーム開発向けに内製エンジンやツールを持っている場合も開発言語がC#…という例が最近は多いですね。
というわけでゲーム向けフレームワーク以外でも利用できる幅は増えれば増えるだけ嬉しい!
現時点で動作を確認しているのは冒頭動画内のフレームワーク(Unity/Godot4/Maui)くらいですが、ランタイムがDllImportを動かせる実装ならどこでも動くでしょう!
現代的なC#環境での開発にCRIWAREをご活用ください!
Unity向けプラグインと何が違うの?
当然、既に提供中のUnityプラグインにもC#向けAPIは存在しますが、新規のプラグインは大きく異なります。
Unity非依存
上述の通り、Unity以外のC#開発環境で利用可能になりました。
現在のUnity向けプラグインではネイティブをラップする最も低いレイヤーでもUnityに依存した実装があるため、Unity上でしか動きません。
今回のC#プラグインでは純粋なネイティブラッパー層のみを、外部フレームワークに一切依存しない形で用意しました。
公開APIの網羅
Unityプラグインでは、ネイティブライブラリが持つAPIの一部しかC#向けAPIとして出ていない状態です。
一方で、新規のC#プラグインではほぼ全てのAPIを公開APIとして網羅します。
ネイティブのAPIリファレンスに記載されているAPIをすべて利用可能です。
パフォーマンス改善
主にマーシャリング負荷が改善しています。
引数の受け渡しなどをDllImportに伴う自動マーシャリングに任せると、その中での値変換やヒープアロケーションが悪影響を与える場合があります。特にstructや配列を扱う場合など。
今回のC#向けラッパーでは自動マーシャリングを許していません。全てのメモリレイアウトが完全に揃っています。
この辺の話はみなさんにお伝えしたいことがたくさんあるので、別の機会に紹介したいと思います。
まずはADXからプレビュー版準備中!
C#向けCRIWAREプラグインですが、現在はADXの対応をメインとして準備中です。
試用したい!などのご要望があれば弊社までお問い合わせください!
今回は新規に開発を行っているC#向けプラグインの紹介でした。
今後Unityレベルのシェアを持つC#開発環境が現れればCRIWAREも対応するでしょうが、そのときは今回のC#プラグインの上にフレームワーク依存対応を被せることになるでしょう。
もちろん、現行のUnityプラグインも将来的にはそのように乗り換えたいと考えています。
というわけで、今回紹介したものはその第1歩に当たるものです。ぜひ今後もご注目ください!