ページ 1 / 1
【雑談】自作スクリプト
Posted: 2010年10月02日(土) 19:59
by やっくん
こんばんは。
先日、”
http://www.play21.jp/board/formz.cgi?ac ... &from=treeの図書を参考)
まだまだ知識が浅い状態ですが、今後の参考のために皆さんのスクリプト使用(製作)経験をお伺いしたいのでトピックを立てさせてもらいました。
Q4以降は自作でスクリプトを作られた方用です。
以下が質問項目です、質問文が多く大変ですが宜しければ回答をお願いいたしますm(__)m
-------------------------------
【質問(テンプレ)】
Q1.使用したスクリプト言語の種類
A1.
Q2.用途
A2.
Q3.スクリプトを使用するプログラムの規模
A3.
Q4.パーサー製作に使用したツール名(使用していなければ無しで)
A4.
Q5.スキャナ製作に使用したツール名(使用していなければ無しで)
A5.
Q6.中間コードの有無(インタプリンタ形式かどうか)
A6.
<備考>
----------------
例
A1.自作
A2.ゲームのイベント管理
A3.個人製作のRPG
A4.bison
A5.flex
A6.有り
大体こんな感じで応えていただければ嬉しいです(^^;
2DのRPGのイベント管理のためにスクリプト製作をしようと思っておりますが、それについての意見・アドバイスも貰えると嬉しいです。
Re:【雑談】自作スクリプト
Posted: 2010年10月02日(土) 21:39
by softya
ゲームだと仕事で使ったことはあります。
自分で作っているのはアプリ用のWEBのHTML/XML処理用スクリプトですね。これはbison/flexです。
A1.ゲーム用で別スタッフ製作。
A2.ゲームのイベント管理・メッセージから宝箱の管理まで。
A3.仕事のRPG用。
A4.そのスタッフ作。
A5.そのスタッフ作。
A6.有り。バイトコードみたいな感じ。
[追記]
バイトコードのコンパイラは別スタッフが作りましたが、バイトコードのランタイムは私自身が実装しました。
[追記の追記]
変数は全コードで共通の変数を使っていますが、マップとスクリプトは一対一で結びついていてマップ単位でロードされます。スクリプトの静的・動的includeで関数呼び出しは可能。

Re:【雑談】自作スクリプト
Posted: 2010年10月02日(土) 22:04
by やっくん
>softyaさん
回答ありがとうございます(^^
仕事での生の声、とても参考になります。
メッセージの管理や宝箱の管理という部分がよく分らないのです。
プログラムではなく、スクリプト部分のサンプルをあげてもらえないでしょうか?
ちなみに、私が個人製作しているではメッセージは全てテキストファイルに書いておき、実行時に読み出していくという物です。
この場合に限ってスクリプトを用いると、どのように効率が変わるのでしょうか。
Re:【雑談】自作スクリプト
Posted: 2010年10月02日(土) 22:50
by softya
>メッセージの管理や宝箱の管理という部分がよく分らないのです。
>プログラムではなく、スクリプト部分のサンプルをあげてもらえないでしょうか?
仕事でやったのをそのままあげると支障があるので、擬似コードで書きますね。
[部屋のドアイベントの例]
eventDOOR1: //ドアを踏んだらイベント発生。
if( event_wait ) {
grph odorki.png
mes "おっと!外へは出さないよ!"
mypos(-1)
wait
} else {
map_change(街1)
}
eventend
な感じです。
>ちなみに、私が個人製作しているではメッセージは全てテキストファイルに書いておき、実行時に読み出していくという物です。
>この場合に限ってスクリプトを用いると、どのように効率が変わるのでしょうか。
フラグとメッセージが連続しているので処理の見通しが良いのがメリット。
デメリットは如何にもプログラムなので、シナリオ担当さんに向き不向きが出来ることです。
Re:【雑談】自作スクリプト
Posted: 2010年10月02日(土) 23:31
by softya
[宝箱の例]も書いときますね。
eventTAKARA1: //宝箱を開けようするとイベント発生。
if( event_key1 ) {
grph zannen.png
mes "残念。鍵が違うみたいです!"
wait
} else {
open_takara()
}
eventend
Re:【雑談】自作スクリプト
Posted: 2010年10月03日(日) 09:15
by やっくん
softyaさん、二つのサンプルコードありがとうございます。
参考になります!
製作は基本1人でやっておりますが、シナリオさんも居るのでそのことを考えてできるだけプログラムを意識しないでできるようなスクリプトを作ってみようかと思います。
---------
中々、スクリプト言語って使われないのでしょうか・・・。
他の方々の意見もお待ちしておりますm(__)m
Re:【雑談】自作スクリプト
Posted: 2010年10月03日(日) 10:08
by へろりくしょん
Q1.使用したスクリプト言語の種類
A1. 自作です。
構文的には、C言語にさらに近くしたPerlみたいな物です。
int *[10]*[5] hoge; で、int のポインタの配列[10]のポインタの配列[5] なんて言う変態型を宣言できたりします。
Q2.用途
A2. 自作アプリへの組み込み用です。
Q3.スクリプトを使用するプログラムの規模
A3. Windows付属のメモ帳よりかは高機能ですが、ただのメモ帳です。 ちょっとだけ肥大化してます。
全部で1万行ぐらいでしょうか。
Q4.パーサー製作に使用したツール名(使用していなければ無しで)
A4. Bison です。
Q5.スキャナ製作に使用したツール名(使用していなければ無しで)
A5. フルスクラッチです。
Q6.中間コードの有無(インタプリンタ形式かどうか)
A6. ありません。
>2DのRPGのイベント管理のためにスクリプト製作をしようと思っておりますが、それについての意見・アドバイスも貰えると嬉しいです。
さっっぱり分かりませんが、ツクールみたいなツールを作って、細かい部分をスクリプトでサポート(孫の手的に)とする方が、楽なような気がします。
Re:【雑談】自作スクリプト
Posted: 2010年10月03日(日) 14:52
by やっくん
へろりさん回答ありがとうございますm(__)m
>int のポインタの配列[10]のポインタの配列[5] なんて言う変態型を宣言できたりします
面白いですね。
やはり自作だとかなり自由度が高いですね。
>ツクールみたいなツールを作って、細かい部分をスクリプトでサポート
ツクールがどのようなものかわかりませんので調べてみます(^^;
Re:【雑談】自作スクリプト
Posted: 2010年10月03日(日) 15:25
by softya
>ツクールがどのようなものかわかりませんので調べてみます(^^;
こちらでツクール系にリンクしています。
http://www.freem.ne.jp/contents/create/tool.html
参考になりますので、見ておいたほうが良いでしょう。
Re:【雑談】自作スクリプト
Posted: 2010年10月04日(月) 12:20
by やっくん
ありがとうございます。
参考に見てみます。
Re:【雑談】自作スクリプト
Posted: 2010年10月04日(月) 12:31
by ookami
あのトピでそんな影響があったとはw
私からも回答させていただきます。
A1. Lua
A2. ジャンルを問わずゲーム全体のプログラム(面倒だが自由度が高い感じ)
A3. ユーザー次第
A4,5. 不明(
http://hammm.dw.land.to/lua/で配布されているライブラリをそのまま利用 )
A6. なし(インタプリタ)
例のツールはAEnと命名し、↓で使い方をまとめ中です。人が分かるようにまとめるのって、本当に難しいですね;
http://oookami.sakura.ne.jp/aenhelp/
Re:【雑談】自作スクリプト
Posted: 2010年10月04日(月) 15:13
by やっくん
ookamiさん回答ありがとうございます(^^
Luaはいずれ使ってみたいなと思っています。
(スクリプト言語触ったこと無い、知識も少ないのに自作スクリプトを作ろうというのも変な話かもしれませんが;)
サイトの方を拝見させていただきました。
使い方のページは画像が説明に対して1枚1枚貼られていたのでわかりやすいと思いました’。
コマンドリファレンスなんですが、コマンド一覧(と簡単な説明)を一番上に書いておくのはどうでしょう?
そこをクリックしたら詳細ページに飛ぶなどのアクションを付けて。
イメージとしてはDXライブラリのリファレンスページです。
EdgeとPlatinum、私も使っていますがどちらも機能を全く使いこなせてない状況です;;
Edgeはpng形式の画像をそのまま使ってアニメーション管理はプログラムの方で自作、
Platinumはcsv形式で管理し、マップだけでなくエンカウント、村人移動制御、イベントも扱うようにしているのでソースコードがめちゃくちゃに(笑"
Re:【雑談】自作スクリプト
Posted: 2010年10月04日(月) 16:28
by dic
Empire Earth というゲームの中身のスクリプトです
全部載せるとやばい気がするので一部のみです
Luaなど使わずに独自のスクリプト言語を作ってるみたいですね
そして、このスクリプトからでも変数が扱えて、コンパイルすることなく
テキストファイルの変更のみで、ゲームの内容を変更できるようになっているようです
Luaのソースを見たことがないのでなんともいえないですが
市販レベルだと 1999年でこれくらいのようです
字句解析などは、基本処理にそって忠実にやっていけば実装できると思います
私もスクリプト化を考えていますが、何をスクリプト化するのか、やどうやって実現するのかなど
まだ未解決なことがあり実現していない状態です
簡単な敵の配列などはできてますけどね
////////////////////////////////////////////////////////////////////
//
// Small Islands.rmv
//
// Input file for the small islands map type.
//
// Copyright (c) 1998, Stainless Steel Studios, Inc. All rights reserved.
// PROPRIETARY and CONFIDENTIAL.
//
// $Author: Scott Marison $
// $Date: 7/24/01 3:29p $
// $Revision: 35 $
// Revision: 25 Changed Initial step from 64 to 32 in order to get more cliffs.
//
////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Define the map generator we will use
//////////////////////////////////////////////////////////////////////
UseMapGenerator "Default"
StringTableID 27004
//////////////////////////////////////////////////////////////////////
// Files we always include
//////////////////////////////////////////////////////////////////////
#include "Common\Map Climate"
#include "Common\Common Conditions"
#include "Common\Common Terrain Painting"
#include "Common\Common Initial Units"
#include "Common\Common Forests"
//////////////////////////////////////////////////////////////////////
// initialize some defintions. it is possible that an included file
// might redefine these.
//////////////////////////////////////////////////////////////////////
#define (kShallowsElevation, -1)
#define (kShallowsWidth, 4)
#define (kMaxShallowConnectionsPerPlayer, 1)
#define (kGenerateShallows, false)
//////////////////////////////////////////////////////////////////////
// Files we include based upon map size - these files will define
// everything we need to set the random map attributes for small island
// random maps.
//////////////////////////////////////////////////////////////////////
#if IsTinyMap
#include "Small Islands\Small Islands Tiny"
#elif IsSmallMap
#include "Small Islands\Small Islands Small"
#elif IsMediumMap
#include "Small Islands\Small Islands Medium"
#elif IsLargeMap
#include "Small Islands\Small Islands Large"
#elif IsHugeMap
#include "Small Islands\Small Islands Huge"
#elif IsGiganticMap
#include "Small Islands\Small Islands Gigantic"
#endif
//////////////////////////////////////////////////////////////////////
// Attributes we set
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// map elevation attributes
MinIntElevation kMinIntElevation
MaxIntElevation kMaxIntElevation
InitialElevation 0
FlatElevation 0
ElevationScale kElevationScale
HeightMapChaos kHeightMapChaos
...
Re:【雑談】自作スクリプト
Posted: 2010年10月04日(月) 18:01
by ISLe
過去の仕事では
・イベントの羅列をエクセルに入力(プランナーが担当)
・イベント発生やシナリオ進行を簡易言語でテキストファイルに記述(シナリオライターが担当)
というのをやったことがあります。
どちらもPerlの正規表現を使って命令やパラメータを分解してついでに文法チェックし、プログラムで処理しやすく容量削減のため単純に数値並びのバイナリに出力してました。
Q1.使用したスクリプト言語の種類
A1. 独自
Q2.用途
A2. ゲームでのイベント管理およびシナリオ進行処理
Q3.スクリプトを使用するプログラムの規模
A3. ケータイゲームアプリ
Q4.パーサー製作に使用したツール名(使用していなければ無しで)
A4. Perl(正規表現の羅列)
Q5.スキャナ製作に使用したツール名(使用していなければ無しで)
A5. Perl(正規表現の羅列)
Q6.中間コードの有無(インタプリンタ形式かどうか)
A6. 独自バイナリ形式
Re:【雑談】自作スクリプト
Posted: 2010年10月04日(月) 23:43
by やっくん
>dicさん
サンプルありがとうございます!
サンプルソースの処理は何をしているかはわかりませんが、形式だけは簡単にですが伝わりました。
こうやっていろいろな形式を見ると面白いですね。
5種類くらいのプログラミング言語を触った経験がありますが、それに比べてスクリプト言語はホントに簡素な印象を受けます。
>私もスクリプト化を考えていますが、何をスクリプト化するのか、やどうやって実現するのかなど
私も悩んでいます(^^;
今、製作中のゲームが完成したら次は一つ一つの処理をスクリプトで管理できるようにして共同開発をしやすい&デバッグをしやすい開発を目指したいものです。
>ISLeさん
回答ありがとうございますm(__)m
>・イベントの羅列をエクセルに入力(プランナーが担当)
>・イベント発生やシナリオ進行を簡易言語でテキストファイルに記述(シナリオライターが担当)
この辺の実際の分担作業の話はとても参考になります。
>容量削減のため単純に数値並びのバイナリに出力
対象ハードによってはこのようなことも考えていかなきゃいけないんですね。
ケイタイのアプリがどれくらいの容量ならば問題なく動くかなどはわかりませんが、ここまで考えることは大変そうです;