murnana's diary

プリントの裏に書くとか、そんな感じです

Unity内でkemono_friends_lang 3日目

ようやっと記事のスペルミスに気づいたようだ(修正済み) そして完結へ

前回 murnana.hatenablog.com の続き。

もう完結させます。
Rubyは諦める感じ。

成果物はこちら

Rubyよくわからないから諦める…

ruby_init()が通らないからと、Visual Studio 2013を引っ張ってきて、そこの開発者コマンドプロンプトRubyのビルドを行い、またもう一度ソリューションを作り直し、プロジェクトをvs120でビルドした。が…HelloWorldが出ず。

2月中に済ませたかった…

C#で読み込み、そしてkemono_friends_langを実行する環境をつくる

C#に標準で搭載されているライブラリを使用して、構文を解釈するとともに、ポインタをずらすといった作業っぽいことができるような機構を作った。

文字列から文字列を探るのは、C#のstring型なら持っているIndexOf関数を使用。for文で回しながら、構文を解釈し、予め用意したEnum型としてどんどんリストに追加。

クラス設計は悩んだが、今の所Programクラスがkemono_friends_langを解釈したプログラムと、ポインタとメモリ(要するに、Brainfuckに必要なものすべて)がほぼ入る形になった。

たぶん、Brainfuck名前空間のものだけ引っ張り出せば、kemono_friends_langだけじゃないBrainfuck系言語が作れると思う。

いずれはXenkoに使えるようになるかもしれない(まだXenkoよくわかっていないので、今回は見送り)

今後の構想

  • Rubyプラグイン製作はまだ諦めきれていない。が、それよりも勉強したいものがあるのでこれ以上は今はしないでおく。
  • .kemonoを読み込めるようにはなっていない(Unityの使用上、いちいち.txtに変えてから突っ込まないといけない)ので、それの改善
  • ゲームのサンプルもつくりたい
  • ASCIIコードにしか対応していないので、Unicodeとか、あるいはもっと違うものに使えるようにすると面白いかもしれない

以上!
成果物はこんな感じになりました。

github.com

フォークとかプルリクエストとかもお待ちしています(いるのかな?)