こんにちは。
現在C+DXライブラリでRPGを製作しています。
ゲームプログラミングについて調べていると、スクリプトという言葉を目にします。
スクリプト言語のことだと思うのですが、これは具体的にどのように使うものなんでしょうか?
例えばマップの情報をCSVファイルから読み込んで利用するように、スクリプト言語のソースファイルを読み込んでC言語で実行する。
などといったことが可能なんでしょうか。
ちなみにRPGのイベント処理をスクリプトを使って行なおうと考えています。
ゲーム開発におけるスクリプトの扱いについて
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ゲーム開発におけるスクリプトの扱いについて
スクリプト言語の事で、読み込んで実行します。
その人の実力次第ですが、どのようにもスクリプト言語は実装可能です。
※ RPGツクールがRGSS=Rubyをスクリプト言語として利用している様にです。
手前味噌ですが、私のRPG講座の例も上げておきます。こちらのイベントの場合は簡単にするためスクリプトと言語ではなくコマンドテーブルです。
「マイ 日記 • C言語交流フォーラム ~ mixC++ ~ RPG講座」
http://dixq.net/forum/blog.php?u=114&sd=a&c=2
ゲームでよく使われる組み込みに向いたLua言語も調べられると良いと思います。
その人の実力次第ですが、どのようにもスクリプト言語は実装可能です。
※ RPGツクールがRGSS=Rubyをスクリプト言語として利用している様にです。
手前味噌ですが、私のRPG講座の例も上げておきます。こちらのイベントの場合は簡単にするためスクリプトと言語ではなくコマンドテーブルです。
「マイ 日記 • C言語交流フォーラム ~ mixC++ ~ RPG講座」
http://dixq.net/forum/blog.php?u=114&sd=a&c=2
ゲームでよく使われる組み込みに向いたLua言語も調べられると良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ゲーム開発におけるスクリプトの扱いについて
オフトピック
>具体的に
…とのことなので,具体的に書いてみました.
(このコード例の無意味さはともかくとして)こんなのでも 「スクリプト」 と呼ぶのかもしれません.
ScriptData[]をコードの中に書いてますが,これを外部のファイルから読み込むようにすれば動作を変更できます.
>RPGのイベント処理
とかいうと,もっと 複雑というかまともな? ものが欲しくなり,そうすると
ファイル読込と解析と…というのを自前で実装するのがつらくなると思われ,
既存のスクリプト言語を用いる方が楽ができるのかもしれません.
…とのことなので,具体的に書いてみました.
(このコード例の無意味さはともかくとして)こんなのでも 「スクリプト」 と呼ぶのかもしれません.
//俺スクリプト(?)で変数Xの値を動かす
enum ScriptOp{ L,R,S,E };
const ScriptOp ScriptData[] = { L,L,S,R,R,R,S,L,E };
void Proc()
{
int X = 100;
ScriptOp *p = ScriptData;
while( 1 )
{
switch( *p )
{
case L: X-=1; break;
case R: X+=1; break;
case E: return; break;
default: break;
}
p++;
}
}
>RPGのイベント処理
とかいうと,もっと 複雑というかまともな? ものが欲しくなり,そうすると
ファイル読込と解析と…というのを自前で実装するのがつらくなると思われ,
既存のスクリプト言語を用いる方が楽ができるのかもしれません.
Re: ゲーム開発におけるスクリプトの扱いについて
softyaさん、usaoさん、回答ありがとうございます!
スクリプトの扱い方を伺いましたが、そもそもスクリプトそのものの意味や、必要性も何なのかよくわかっていないことに気づきました・・・。
softyaさんのRPG講座ではスクリプトを使用していませんし、usaoさんのコードは普通のC言語の関数に見えます。
そこで、少しゲーム開発におけるスクリプトの意義について調べてみた結果。
「C言語でも実装はできるが、情報量が多くなるにつれて、管理・コンパイルが面倒になる。それを避けるため外部にスクリプトを用意する」
という認識をもったのですが、正しいのでしょうか。
スクリプトの扱い方を伺いましたが、そもそもスクリプトそのものの意味や、必要性も何なのかよくわかっていないことに気づきました・・・。
softyaさんのRPG講座ではスクリプトを使用していませんし、usaoさんのコードは普通のC言語の関数に見えます。
そこで、少しゲーム開発におけるスクリプトの意義について調べてみた結果。
「C言語でも実装はできるが、情報量が多くなるにつれて、管理・コンパイルが面倒になる。それを避けるため外部にスクリプトを用意する」
という認識をもったのですが、正しいのでしょうか。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: ゲーム開発におけるスクリプトの扱いについて
> 「C言語でも実装はできるが、情報量が多くなるにつれて、管理・コンパイルが面倒になる。それを避けるため外部にスクリプトを用意する」
という認識をもったのですが、正しいのでしょうか。
有る意味正しいです。
あと別な特徴として、プログラムの処理とは全く独立した逐次処理を記述できると言う特徴もあります。
プログラムだと処理の状態遷移とか気にせずに作らないといけませんが、それを無視して制御ができるのでシナリオでキャラクタを指定歩数を歩かせると言った行為を逐次処理として記述できます。
※ 実際にはプログラムとのインターフェス部分で逐次処理が出来るように見せかけているだけですが。
【シナリオ仮想言語】 こんな感じです。
@move player,up,10 //上に10ブロック移動
@talk "やあ!" //会話表示
という認識をもったのですが、正しいのでしょうか。
有る意味正しいです。
あと別な特徴として、プログラムの処理とは全く独立した逐次処理を記述できると言う特徴もあります。
プログラムだと処理の状態遷移とか気にせずに作らないといけませんが、それを無視して制御ができるのでシナリオでキャラクタを指定歩数を歩かせると言った行為を逐次処理として記述できます。
※ 実際にはプログラムとのインターフェス部分で逐次処理が出来るように見せかけているだけですが。
【シナリオ仮想言語】 こんな感じです。
@move player,up,10 //上に10ブロック移動
@talk "やあ!" //会話表示
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ゲーム開発におけるスクリプトの扱いについて
うーむ、わかったようなわからないような・・・。まぁ実際に触れてみるのが一番ですね。
基本的な概要は掴めたと思いますので、これから勉強してきます!
回答ありがとうございました!
基本的な概要は掴めたと思いますので、これから勉強してきます!
回答ありがとうございました!
Re: ゲーム開発におけるスクリプトの扱いについて
わたしは、スクリプト言語というふうに使われるスクリプトと、ゲームコンテンツの実装としてのスクリプトは意味が違うと思います。
前者は、ソースコードの記述から実行までの一形態を表すもので用途を限定するものではありません。
ネイティブな実行形式を生成するスクリプト言語処理系もあり得ます。
後者はusaoさんが書かれたような、コンテンツに必要な命令群を処理するものです。
独自に規定されたバイナリを処理するものは仮想マシンと呼ばれます。
#特定のCPUのニーモニックに対応したバイナリを処理するものになるとエミュレータと呼ばれるものになります。
よってゲームにおけるスクリプト利用というのは、仮想マシンの機能をライブラリとして利用するということです。
言語やソースファイルの有無とはまったく関係がありません。
前者は、ソースコードの記述から実行までの一形態を表すもので用途を限定するものではありません。
ネイティブな実行形式を生成するスクリプト言語処理系もあり得ます。
後者はusaoさんが書かれたような、コンテンツに必要な命令群を処理するものです。
独自に規定されたバイナリを処理するものは仮想マシンと呼ばれます。
#特定のCPUのニーモニックに対応したバイナリを処理するものになるとエミュレータと呼ばれるものになります。
よってゲームにおけるスクリプト利用というのは、仮想マシンの機能をライブラリとして利用するということです。
言語やソースファイルの有無とはまったく関係がありません。