擬似スクリプト言語作成 | 魔王いっぺいのゲームブログ

魔王いっぺいのゲームブログ

ゲームブログの記事に使用する画像はWebで拾ったものがメインで、グラフなどはデータを元に一部自作してます。

テキストベースのゲームを作成中です。


今回はスクリプトを読み込ませて実行する仮想マシンを作成しました。スクリプトはCSV形式で、こんな感じです。



「t」はテキスト表示コマンドを表します。スマホから編集しやすいように、コマンド名はなるべく短縮します。


「c」コマンドで別スクリプトを呼べるようにする予定です。スクリプトを適度な単位で切り分けて構造化できるようになります。


【前回の課題】

外出先から接続できない。→ネットワークの都合上、使えるポートが限られていました。割り当てられたポート番号を使うことでエラーが解消されました。


ゲームのステート管理をどうやるか。→画面上でグローバル変数を持てることが分かり、あっさり解決しました。


【今回格闘したこと】

コマンドやスクリプトをオブジェクト化して、コマンドの種類が増えた時にもコードがスッキリするようにしました。


スクリプトから別スクリプトを呼ぶことを考え、親スクリプトが子スクリプトを保持するマトリョーシカ構造にしました。再起的に処理させることで、コードがスッキリします。


キーボードの1や2を押下してもボタン押下と同じアクションをするようにしました。


【考えないといけないこと】

分岐処理をどうやって実現するか。何となくイメージは湧いてるけど、実際に仮想マシンを動かせるようにするには、それなりに考えないといけないです。


プログラミング言語でいうif文の部分なんですが、スクリプト内でif文が入れ子になってもちゃんと動作する仕組みが必要です。スクリプトの呼び出し関係は再起処理を使って実現できるのですが、スクリプト内のif文の状態をどう管理するか、うーん悩ましい・・・。


if文の入れ子を許さない(例えば分岐する時は必ず別スクリプトを呼び出す)とかにすると、実装難易度は比較的下がります。昔のRPGツクールも分岐処理はシンプルでした。


変数の持たせ方も悩ましいです。RPGツクールのように全部グローバル変数にしちゃえば楽なのですが、スクリプト内のローカル変数があったほうが、後々便利なんですよね。ゲームが大きくなればなるほど、変数管理は煩雑になってくるので。


ちょっと考えますが、とりあえず最初は簡単なものを完成させることを目標にしたほうがよさそうですね。