ページ 11

テキストファイル内のソースコードを読み込んで動的に実行したい

Posted: 2016年8月09日(火) 21:53
by moba
こんばんは。お世話になります。
いわゆる「マップイベント(ツクール用語)」にスクリプトを設定することを考えています。
例えば、以下のようなテキスト(json)ファイルの、script: にあたる部分を読み込んで実行したいです。

コード:

{
	NPCs: {
		{
			id:0
			note: "Pythonのつもりで書きました"
			script: "
				var this = GetThisEntity()
				this.WalkTo(Dir.Left) #自分でどこかに定義した関数とクラスです
				this.WalkTo(Dir.Up)
				this.WalkTo(Dir.Up)
			"
		}
		{
			id:1
			script: null
		}
	}
}
このように、ソースをデータ駆動に(?)することはできないものでしょうか。

追記:
UnityではC#をスクリプト(?)に使っていますが、あれはハードコーディングということになるのでしょうか。
追記:
データ駆動を勘違いしていました。すみません。タイトルを修正しました。

Re: テキストファイル内のソースコードを読み込んで動的に実行したい

Posted: 2016年8月26日(金) 02:41
by Tepp
スクリプトを組み込みたいということですが、
ゲーム制作ではこの場合、LuaやSquirrelといったスクリプト言語が使用されることが多く、
これらを利用するのが得策かと思います。

これらはゲーム制作での実績が多く、またC++から容易に呼び出し、呼ばれることが可能です。
詳細はググっていただければ多くの情報が出てきます。

もちろん、mobaさんが例に出しているように独自のスクリプト言語を構築するということも可能です。
ただしその場合はテキストファイルを読み込み、自分でその構文を解析する必要が出てきますのでコストが高いです。
(また独自スクリプトを他人に書かせる場合、学習コストも高くなります。)

尚、UnityのC#(スクリプト)は今回のような話とは関係ないです。
ハードコーディングという解釈で問題ありません。

Re: テキストファイル内のソースコードを読み込んで動的に実行したい

Posted: 2016年9月05日(月) 13:25
by moba
返信が遅くなってすみません。
スクリプト言語について分かっていないと気づけたので、
よく調べてみようと思います。
Teppさんご回答ありがとうございました。