ゲーム開発におけるスクリプトの扱いについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たかお
記事: 10
登録日時: 11年前

ゲーム開発におけるスクリプトの扱いについて

#1

投稿記事 by たかお » 11年前

こんにちは。
現在C+DXライブラリでRPGを製作しています。
ゲームプログラミングについて調べていると、スクリプトという言葉を目にします。
スクリプト言語のことだと思うのですが、これは具体的にどのように使うものなんでしょうか?

例えばマップの情報をCSVファイルから読み込んで利用するように、スクリプト言語のソースファイルを読み込んでC言語で実行する。
などといったことが可能なんでしょうか。

ちなみにRPGのイベント処理をスクリプトを使って行なおうと考えています。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: ゲーム開発におけるスクリプトの扱いについて

#2

投稿記事 by softya(ソフト屋) » 11年前

スクリプト言語の事で、読み込んで実行します。
その人の実力次第ですが、どのようにもスクリプト言語は実装可能です。
※ RPGツクールがRGSS=Rubyをスクリプト言語として利用している様にです。

手前味噌ですが、私のRPG講座の例も上げておきます。こちらのイベントの場合は簡単にするためスクリプトと言語ではなくコマンドテーブルです。
「マイ 日記 • C言語交流フォーラム ~ mixC++ ~ RPG講座」
http://dixq.net/forum/blog.php?u=114&sd=a&c=2

ゲームでよく使われる組み込みに向いたLua言語も調べられると良いと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: ゲーム開発におけるスクリプトの扱いについて

#3

投稿記事 by usao » 11年前

オフトピック
>具体的に
…とのことなので,具体的に書いてみました.
(このコード例の無意味さはともかくとして)こんなのでも 「スクリプト」 と呼ぶのかもしれません.

コード:

//俺スクリプト(?)で変数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++;
  }
}
ScriptData[]をコードの中に書いてますが,これを外部のファイルから読み込むようにすれば動作を変更できます.

>RPGのイベント処理
とかいうと,もっと 複雑というかまともな? ものが欲しくなり,そうすると
ファイル読込と解析と…というのを自前で実装するのがつらくなると思われ,
既存のスクリプト言語を用いる方が楽ができるのかもしれません.

たかお
記事: 10
登録日時: 11年前

Re: ゲーム開発におけるスクリプトの扱いについて

#4

投稿記事 by たかお » 11年前

softyaさん、usaoさん、回答ありがとうございます!

スクリプトの扱い方を伺いましたが、そもそもスクリプトそのものの意味や、必要性も何なのかよくわかっていないことに気づきました・・・。
softyaさんのRPG講座ではスクリプトを使用していませんし、usaoさんのコードは普通のC言語の関数に見えます。
そこで、少しゲーム開発におけるスクリプトの意義について調べてみた結果。
「C言語でも実装はできるが、情報量が多くなるにつれて、管理・コンパイルが面倒になる。それを避けるため外部にスクリプトを用意する」
という認識をもったのですが、正しいのでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: ゲーム開発におけるスクリプトの扱いについて

#5

投稿記事 by softya(ソフト屋) » 11年前

> 「C言語でも実装はできるが、情報量が多くなるにつれて、管理・コンパイルが面倒になる。それを避けるため外部にスクリプトを用意する」
という認識をもったのですが、正しいのでしょうか。

有る意味正しいです。
あと別な特徴として、プログラムの処理とは全く独立した逐次処理を記述できると言う特徴もあります。
プログラムだと処理の状態遷移とか気にせずに作らないといけませんが、それを無視して制御ができるのでシナリオでキャラクタを指定歩数を歩かせると言った行為を逐次処理として記述できます。
※ 実際にはプログラムとのインターフェス部分で逐次処理が出来るように見せかけているだけですが。

【シナリオ仮想言語】 こんな感じです。
@move player,up,10 //上に10ブロック移動
@talk "やあ!" //会話表示
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

たかお
記事: 10
登録日時: 11年前

Re: ゲーム開発におけるスクリプトの扱いについて

#6

投稿記事 by たかお » 11年前

うーむ、わかったようなわからないような・・・。まぁ実際に触れてみるのが一番ですね。
基本的な概要は掴めたと思いますので、これから勉強してきます!

回答ありがとうございました!

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: ゲーム開発におけるスクリプトの扱いについて

#7

投稿記事 by ISLe » 11年前

わたしは、スクリプト言語というふうに使われるスクリプトと、ゲームコンテンツの実装としてのスクリプトは意味が違うと思います。

前者は、ソースコードの記述から実行までの一形態を表すもので用途を限定するものではありません。
ネイティブな実行形式を生成するスクリプト言語処理系もあり得ます。

後者はusaoさんが書かれたような、コンテンツに必要な命令群を処理するものです。
独自に規定されたバイナリを処理するものは仮想マシンと呼ばれます。
#特定のCPUのニーモニックに対応したバイナリを処理するものになるとエミュレータと呼ばれるものになります。

よってゲームにおけるスクリプト利用というのは、仮想マシンの機能をライブラリとして利用するということです。
言語やソースファイルの有無とはまったく関係がありません。

閉鎖

“C言語何でも質問掲示板” へ戻る