eraシリーズ改造/バリアント開発の覚え書き

12月4日の雑記


ふたつ悩んでいる。

一点は、配布するときにRubyインタプリタごと配布すればRubyの大きな欠点のひとつである環境設定もろもろの導入コストは軽減できる。同梱のショートカット一発で起動できれば、ふつうにゲームとして遊ぶのに問題はない。
ゲームとして遊ぶにはそうだが、ゲームを改造するにはそれでは足りない。今考えているのは、ゲーム中で必要なライブラリだけをインタプリタと一緒に同梱するような方法だが、これだとゲームを改造するときにライブラリが足りないということが起こる。なにしろ標準出力にpで出力するだけでライブラリがロードできないといって終了するわけだ。かといって、標準添付ライブラリのすべてをあらかじめ同梱するようなやり方もどうだろう。まあそれでもたいした容量にはならないのだが、気にならないかといわれれば気になってしまう。
必要そうなものを選別して……とかになるだろうか。うーむ。

もう一点は、変数。
erabasicでは配列の添字を省略すると0番目を取得する、というようなものになっているのだが、これと同等の機能を組み込むのは非常に難しい。個人的には広域変数は大文字で始めるようにしたいのだが、大文字で始まってしまうと定数なので再代入で怒られるし、かといって$をつけるとメソッドのように振舞ったりさせられない。小文字を使うとローカル変数とバッティングするからあんまりやりたくない。というわけでなかなか困ってしまうわけだ。もっとも、どれだけ悩もうといずれかを選ばなきゃいけないんだけども。

それにしても。
こりゃ、コンソールエミュレータを作る方が簡単で、インタプリタを作る方がよっぽどしんどいなあ。前作ったERBパーサを組み込んでERBインタプリタを作ってたらこんなじゃ済んでないだろうなあ。コンソールエミュレータ作るの大変とか言ってた過去の自分に会ったら「インタプリタもっとしんどいよ」って言ってやりたい。


* * *


変数の仕様はもうすっぱりとerabasicのことは忘れることにする。Rubyは動的型付けなので、変数には何でも代入できる。文字列を格納しておいた変数に数値を再代入したりできるし、配列変数の個々の要素すべてが同じ型でないといけない、というわけでもない。
このあたりは良い悪いというより慣れの問題だろうという気もするんだけど、その慣れがものすごく大きな影響力を持っていることをeuremoは理解しているつもり。

RubieraではできるだけRubyのことを意識しないで、組込関数と定義済み広域変数の組み合わせでどうにかしようというつもりでいたのだけど、Rubyの変数のことは理解してもらわないといけなさそう(◞‸◟)

とりあえず、

  • resultsは用意しないで、数値も文字列もresultを使う
  • eramaker era basic変数リスト に要素数が明示されていない変数は基本的に非配列変数で、明示的に配列を代入すれば配列になる(たとえばEmueraにある多値returnはresultに配列変数を代入することで実現できる)
  • eramaker era basic変数リスト に要素数が明示されているものは常に配列変数として扱う
  • 配列変数に添字を指定しない場合は配列変数全体を意味する(代入が非常に危険なので、添字を指定しないで代入しようとしたらエラーを出すとかしたほうがよさそうな気がする)
  • 配列の0番目を取得するときに添字を省略できない

あたりで手を打つか。

一文字変数も禁止したいなあ。一文字変数使うとローカル変数潰しちゃうもんなあ。実装自体は楽なんだけど副作用でかいもんなあ。
サブルーチンの実行時に無名クラス作ってそこに組込関数をextendしてclass_evalしたらほかのクラスに影響でないよね。
それなら無名クラスextendして広域変数へのアクセサ定義を展開するようにすれば一時的にグローバル変数有効にしたりできるかもしれないなあ。そういう手で行こうかな……まあ試してみないとなんともって感じだけど。


* * *


試したらできてもうた。
でも、うーん、一文字変数かあ。一応使えるようにしておいて、オプションで無効化して、オプションで無効化した上で関数ごとに使う使わないを選べるようにする、ということにしようか。extendって書くのはちょっとあれだから、global :aとかそういう書き方で有効化できるように。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

リンク

漠々ト、獏
eramaker/eramaker2の開発元の公式サイト。

Emuera - emurator of eramaker
C#で書かれたeramakerのエミュレータ「Emuera」のプロジェクトページ。

eraシリーズを語るスレ まとめ
eraシリーズ全般のまとめ。バリアント情報、改造情報など。

eratoho まとめ
eramakerのバリアント「eratoho」のまとめ。

era板
eraシリーズについての掲示板。

サブページ

Rubiera
Bitbucket上のRubieraプロジェクトページ。Rubieraのソースコードのダウンロードはここで。

管理人/副管理人のみ編集できます