スクリプトコンパイラについて ( yac と lex も可 )

このエントリーをはてなブックマークに追加
1439
みなさんのスクリプトって、どんな感じですか?
(エロ)ゲームプログラマーには一番難しい所かもしれません。
yac と lex も可です。
2439:01/11/07 15:32 ID:GpFz7V+v
まず、話題フリ。
みなさんが作ったスクリプトコンパイラの仕様を教えてください。

1デファイン機能
 a 文字列中の中を実行部で置換可能
 b 文字列中の中をコンパイラで置換可能
 c 変数をコンパイラで置換可能
 d 全てのトークンを置換可能
 e C言語並みに全てのトークンを完全置換可能
 f その他、それ以上のことが出来る

2マクロ機能
 a 命令をまとめることが可能
 b MASMクラスのマクロが可能
 c ローカルラベルも使えて、色々なことをマクロ化できる
 d その他、それ以上のことが出来る

3計算式
 a 計算専用命令を持つ(addとかsubとか)
 b C言語並みの計算が出来る
 c 条件式でもC言語並みの計算が出来る
 d 式の最中に関数の返値を入れられる
 e その他、それ以上のことが出来る
3439:01/11/07 15:33 ID:GpFz7V+v
4関数
 a 単なるサブルーチンコール
 b ローカル変数を関数側で実装している
 c 関数で型の概念がある 変数、即値、文字列など
 d 返値が返せる(3−dタイプでは無くても良い)
 e その他、それ以上のことが出来る

5書式
 a 全角文字から始まる場合はメッセージ
 b 計算式から始まる場合は計算式
 c 書式は、BASIC形式 mes "メッセージ"
 d 書式は、ASM形式 mes メッセージ
 e 書式は、C言語形式 mes("メッセージ")
 f その他、それ以上のことが出来る

6構造化
 a if-else-endif が実装されている
 b if-elseif-else-endif が実装されている
 c if-else if-else-endif が実装されている
   ( else if を分けて書ける )
 d while-endwhile が実装されている
 e do-while が実装されている
 f for-endfor が実装されている
 g switch-case が実装されている
 h break が実装されている
 i endif,endwhile,endfor などが }記号や end でまとめられる
 j C言語形式の記号でブロック化が出来る
 k push等を駆使して、スクリプト側でどうにかブロック毎に
   ローカルレジスタを作れる
 l ブロック毎にローカルレジスタを簡単に作れる
 m その他、それ以上のことが出来る

7セーブ機能
 a 実行時にスクリプト自身を書き換えない
 b 単なるポインターセーブ
 c メッセージをカウントしてセーブ
 d サムネイルを表示可能
 e 極力、CGデーターなどはセーブデーター中に持たないで、
   (サムネイルは除く)ファイルネームなどしか保持しない。
4439:01/11/07 15:33 ID:GpFz7V+v
うちはへぼへぼなので、こんな感じです。

1デファイン機能
 a 文字列中の中を実行部で置換可能
2マクロ機能
 無し
3計算式
 a 計算専用命令を持つ(addとかsubとか)
4関数
 a 単なるサブルーチンコール
5書式
 d 書式は、ASM形式 mes メッセージ
6構造化
 該当無し
 BASICの if then が実装されている。行番号で飛ぶ
7セーブ機能
 a 実行時にスクリプト自身を書き換えない
 ゲームの頭でセーブされる
5439:01/11/07 15:37 ID:GpFz7V+v
>445
>もし出来ましたら、サンプルを出してもらえると嬉しいです。
>うちはこんな感じです。
>
>サンプル
>1
>2 set r1,0
>3
>4 add r1,10
>5 sub r1,30
>6 mes メッセージ
>7 goto 4
>8
>9 gosub 20
>10
>11 select r20,1,2,3
>12
>
>うちのはこんな感じなので、ラベル名が使えません。
>手でやり直しになるのでキツイです。

>>445
>あのー、いくらなんでも行番号ジャンプはヘボ過ぎです。
>ラベル機能ぐらいすぐ追加できるでしょうに。
>これだったらMASMのマクロ使ってスクリプト書いた方がよっぽどマシでっせ。
>(昔実際やったことある)

>451
>す、すみません。
>タイトルが多すぎて、コンパイラまで時間が回せないっす。
>昔はMASMを使っていたのですが、シナリオに渡すために自家製に変えました。
>今でもMASMの方が使いやすいです。

>452
>>>451
>lex yacc 勉強すれば一日でできると思います。

>>>439
>多分ですが、
>命令とデーターが一緒になっているアーキティクチャーで、
>命令長が固定ではないと思われます。
>その際にはラベルは前方参照の解決のために
>バックパッチの仕方がキーポイントなのではないでしょうか。
6439:01/11/07 15:38 ID:GpFz7V+v
>446 :にゃ ◆G4ogTrNQ :01/11/01 19:34 ID:mAxjGqQI
>グラフィカルなエディターです
>スクリプトは、中間コードに変換してゲームに組み込みます。
>ゲームごとに共通な部分はエディター上でもある程度実行できます。
>画面でみながらやっていくので、スクリプトをテキストとして入力するぶぶんは
>あまりないです。
>スクリプトっぽいところは
>演算とか、条件式の中身ぐらいでしょうか。
>
>とりあえず、参考までに
>
>1デファイン機能
> a 文字列中の中を実行部で置換可能
>(名前とか、色とかに)
>
>
>2マクロ機能
> 無し
>
>3計算式
> c 条件式でもC言語並みの計算が出来る
>変数はすべてグローバル。漢字のみ
>条件式のなかでのみ=は==として扱う。このほうがプログラマーでない人にはいいみたいです
>
>
>4関数
> a 単なるサブルーチンコール
>変数がすべてグローバルなので・・・
>ゲームごとのシステムは呼べるので十分かも
>
>書式
> f その他、
>メッセージ、計算式はそれぞれ、専用のエリアに入力
>
>
>6構造化
> b if-elseif-else-endif が実装されている
> g switch-case が実装されている
>(選択肢として)
>
>7.セーブはシステム側でおこなう。
>実行スクリプトの名前、実行ポインター、コールスタック、
>スクリプト修正時のための補助データ、
>あと変数そのた必要なもの
>
>みなさん
>画像エフェクトは何種類ぐらいつくっているんでしょうか
>さっきかぞえたら70ぐらいでした
7439:01/11/07 15:39 ID:GpFz7V+v
>447 :名無しさんNetBurst :01/11/01 19:59 ID:Q4tBwu9l
>1デファイン機能
> a 文字列中の中を実行部で置換可能
> b 文字列中の中をコンパイラで置換可能
> c 変数をコンパイラで置換可能
> その他。変数名に日本語使用可。即値も置換可。
>
>2マクロ機能
> その他。コマンド名定義リストを書き換えることによって比較的容易にコマンドの
> 追加修正ができる。コマンドは最大4つの即値/変数/式/文字列をパラメータと
> して持つことが出来る。ベースコマンドから派生コマンドを作ることが出来、
> 派生コマンド毎に各パラメータの即値の上限下限を設定できる。
> 派生コマンド名に日本語使用可。
>
>3計算式
> b C言語並みの計算が出来る (),+,-,*,/,%,!,!=,==が使用可能
> c 条件式でもC言語並みの計算が出来る
>
>4関数
> a 単なるサブルーチンコール
>
>5書式
> d 書式は、ASM形式 mes メッセージ
> その他。行頭の"@"をデリミタとして記述し、会話文は複数行に書くことが出来る。
>こんな感じ↓
>
>@会話 ゆかり VOICE00001
>   1行目。
>   2行目。
>@IF #和也と喧嘩した
>@表情変更 ゆかり・怒り
>@ELSEIF
>@表情変更 ゆかり・笑顔
>@ENDIF
>
>6構造化
> その他。制御文はIFY,IFN,IF〜ELSEIF〜ENDIF,GOTO,GOSUB〜RETURN,
> ONGOTO,ONGOSUB〜RETURNのみ。
>
>7セーブ機能
> a 実行時にスクリプト自身を書き換えない
> b 単なるポインターセーブ
>
8439:01/11/07 15:39 ID:GpFz7V+v
>455 :名無しさん@初回限定 :01/11/01 23:01 ID:uhyPQFjL
>;------------------------------------------
>;※背景16 商店街・昼
>;------------------------------------------
>;□フェードイン
>
>;■健二
>  俺は何となく商店街をぶらついていた。
>  (さて、この後どうしようか。本屋で立ち読みでもしようかな?)
>
>;■健二
>  などと考えながら歩いていると、前からこちらに向かって
>  歩いてくる女の子と偶然目が合った。
>
>;------------------------------------------
>;※渡会睦月 普段着:通常
>;------------------------------------------
>
>;■健二
>  (ん? 昨日のレッサーパンダ耳の少女じゃないか。)
>
> ∩ ∩
> | ∪ |
> |  〜
> |∧ ∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
> ( ,,゚Д゚)つ < これがウチでつかってるスクリプトの書き方。
> U      \________
>シナリオライター(外注)には一定の規則で指定を書いてもらっているぞ
>
>
>456 :名無しさん@初回限定 :01/11/01 23:01 ID:uhyPQFjL
>この後、Perlで作った置き換えプログラムにかけて指定の部分を
>スクリプト化・・といってもCG指定用のテンプレ「※背景16 商店街・昼」から
>BG_LOAD "cg29.bmp" という風な変換かけるだけ。
>
>マウス待ちはリターンが連続で2回、かつその次に人物名、もしくは
>ファイルエンドになっているところにPerlプログラムが自動挿入。
>細かい演出を社内で加えて、
>
>         あとは処理が上手く行かない個所を部分修正をかけて、
>         ∧ ∧ コンパイルしてスクリプトバイナリ化して完成だ。
>         (,,゚Д゚)
>        / つつ ADV専用だからな、手間と効率を考えた結果だ
>       ⊂  ノ
>       /(/″  本当は式解析くらいは付けないと後で困るぞ。
>
9439:01/11/07 15:40 ID:GpFz7V+v
>457 :sage :01/11/01 23:50 ID:+ylXX1P4
>1デファイン機能  abcde
>2マクロ機能  abc
>3計算式 abc
>4関数 abcd
>5書式 abcde
>     abはオンオフを選べる ( エラー対策のために、通常は a は off です )
>     cdeを命令毎に選べる
>6構造化 bdefghi
>7セーブ機能 abcde
>     bcを選べる
>
>
>macro と define、func は特に強力にしています。
>
>殆どの命令は、windows api をラップした程度にして
>低レベル命令をマクロ化して高レベル命令にしています。
>
>そして、シナリオライターはマクロ定義された物、
>スクリプトを触るプログラマーは低レベル命令を使っています。
>
>シナリオライターは記号が苦手な方が多く、
>c より pascal や basic の方がわかりやすいと思います。
>そこで、スクリプターが極力記号を使わないようにしています。
>文字列中のマクロはしょうががありませんが。
>c 言語風にも切り替えは出来ますが、タイピング量が増えるので、
>シナリオライターから敬遠されてます。
10439:01/11/07 15:41 ID:GpFz7V+v
>458 :457 :01/11/01 23:51 ID:+ylXX1P4
>// レジスタ
>#define rsample0 r200
>#define rsample1 r201
>// ファンクション
>#function samp0( p1,p2 )( l1,l2 )
>if p1==p2
>ret
>end
>p1 = p1 + 1
>p2 = p2 - 1
>m $n<p1>
>samp0 p1,p2 // 再帰
>ret
>#endf
>// マクロ 選択肢 とりあえず1択から3択まで
>#macro sel( sel,s00,s01,s02 )
>begin
>#if !blank( s00 )
>_s 0,s00
>#else
>#error sel命令が異常です
>#endif
>#if !blank( s00 )
>_s 1,s01
>#endif
>#if !blank( s00 )
>_s 2,s02
>#endif
>select sel
>#endm
>// マクロ
>#macro m( s00,s01 )
>#if blank( s00 )
>#error m命令が異常です
>#elseif blank( s01 )
>PlaySnd <s00>.wav
>message <s01>
>#else
>message <s00>
>#end
>#endm
11439:01/11/07 15:41 ID:GpFz7V+v
>459 :457 :01/11/01 23:51 ID:+ylXX1P4
>
>main:
>m a000,メッセージ
>r10=r20+30
>if (r20>10 || r0==0 )
>switch r0
>case r111
>break
>case 5
>break
>end
>end
>samp0 rsample0,rsample1 // ファンクションコール
>r10=0
>while 1
>r10=r10+1
>if r10>10
>break
>end
>end
>sel r200,選択肢1,選択肢2,選択肢3
>一応 goto や gosub も使えます。
>
>
>460 :457 :01/11/02 00:21 ID:XXudnJYV
>ごめん、インデントが飛んでしまった
12439:01/11/07 15:41 ID:GpFz7V+v
>461 :名無しさん@初回限定 :01/11/02 00:49 ID:DICi0Zhu
>>>457
>そんな仕様にして使いこなせる奴居るの?
>作るのちょーめんどくさそー。
>
>1デファイン機能
> a 文字列中の中を実行部で置換可能
> d 全てのトークンを置換可能
>2マクロ機能
> なし
>3計算式
> a 計算専用命令を持つ(addとかsubとか)
>4関数
> a 単なるサブルーチンコール
>5書式
> e 書式は、C言語形式 mes("メッセージ")
>6構造化
> if goto
>7セーブ機能
> a 実行時にスクリプト自身を書き換えない
> b 単なるポインターセーブ
13439:01/11/07 15:43 ID:GpFz7V+v
>463 :名無しさん@初回限定 :01/11/02 02:55 ID:HYoXxaLQ
>>>461
>たしかに例だとめんどくさそうだね。
>実際はもうちょっと簡単に落とせるんじゃないかとおもうけど…たぶん。
>
>うちの奴のスクリプトの例では、
>bg("bg01")
>fadein(エフェクト名,各種引数)
>
>こんにちは
>テストです
>
>if(a == 0){
>aは\d"a"です
>}
>
>とかで、全角文章がメッセージになって、
>リターンコードが二回か、リターンコードの次に\以外の半角がきたらキー待ちってかんじです。
>\アルファベットで、キー待ち無しとかいろいろつけてみてます。
>
>
>464 :名無しさん@初回限定 :01/11/02 03:03 ID:HYoXxaLQ
>あと、選択支とかは
>setsel("選択支1",SEL1) //選択支セット
>setsel("選択支2",SEL2) //選択支セット
>setsel("選択支3",SEL3) //選択支セット
>select() //セットした選択支で選択ウィンドウ出す
>とかなら、見た目と画面イメージが近くなるかなぁ…と勝手ながらおもってます。
>あんまり意味ないかもしれませんが。
14439:01/11/07 15:43 ID:GpFz7V+v
>465 :名無しさん@初回限定 :01/11/02 03:15 ID:63hfW7XF
>1デファイン機能
> a 文字列中の中を実行部で置換可能
> d 全てのトークンを置換可能
>2マクロ機能
> なし
>3計算式
> a 計算専用命令を持つ(addとかsubとか)
>4関数
> a 単なるサブルーチンコール
>5書式
> d 書式は、ASM形式 mes メッセージ
>6構造化
> if goto
>7セーブ機能
> a 実行時にスクリプト自身を書き換えない
> b 単なるポインターセーブ
>
>これで今のところ問題はない。
>強いて言えば、構造化出来ないことか。
>理想を言えば457くらい出来ればいいが、オレには無理。
>しかし、457って凄くない?ホントにエロゲー?
15439:01/11/07 15:44 ID:GpFz7V+v
>466 :名無しさんNetBurst :01/11/02 03:29 ID:MiWSvSmG
>>447
>選択肢の書式は基本は、
>
>@選択肢
>   選択1
>   選択2
>   選択3
>
>@@選択1
> ・
> ・
>
>@@選択2
> ・
> ・
>
>@@選択3
> ・
> ・
>
>@@で始まるのはラベル。選択肢の文章をそのままラベルに使う。
16439:01/11/07 15:47 ID:GpFz7V+v
引用が長くてすみません>ALL

それと、スクラッチ派とlex&yacc(flex&biosn)派がいるみたいです。
でも、ゲームプログラマーはスクラッチ派が多いのではと思いますので、
制作時のヒントやこういう状況の時にはこういう仕様がイイとか教えてください。
単体コマンドの機能ではなく、言語仕様はなせたらと思います。
17439:01/11/07 15:48 ID:GpFz7V+v
18名無しさん@お腹いっぱい。:01/11/07 15:56 ID:???
XML派はいないの化?

GEML/GSML
http://www.wffm.org/download/dtd/index.htm
19名無しさん@お腹いっぱい。:01/11/07 16:23 ID:M//Vhkmq
>>18
SGML系統(含XML、HTML)の記述言語は、データを表現するには非常に適していると思うが、
スクリプトのような制御構造を表現するには記述の際のオーバーヘッドが大きすぎると感じる。
20 :01/11/07 18:01 ID:???
yacってなんだよ。。。。
2119:01/11/07 18:08 ID:???
追記。XML使うならパーサ(解析器)が必要。メジャーなパーサは以下の二つ。
*MSXML IE4以上なら一緒にインストールされていると思う。SDKはMSで入手のこと(.NETβがいいかも)
DOMとか新しい仕様を使いたければユーザにIE5以上のインストールをお願いすることになると思われる。
*XML4C Apacheから出ている。基本的にUNICODEしか使えないので、日本語コードが使いたければIBMが出している多国語対応版を利用のこと。
スタンドアロンで動くので、MSXMLのようなIEのインストール作業が必要ない。新らしXMLの規格への対応も迅速(DOM2やSchemaに対応済み)
ただし、DLLのファイルサイズがでかい。多国語対応版は文字コード変換DLLがいるため、さらにでかくなる。

XMLについて勉強する際は@IT等が良いと思われ。
2218:01/11/07 18:46 ID:???
BulletMLなんか見ると単純な処理ならいけそうに思えるよ
http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/index.html

こんな感じなんだけど
<action>
<wait>20+$rand*50</wait>
<changeDirection>
<direction type="absolute">180</direction>
<term>10</term>
</changeDirection>
</action>

中間コード吐くようにすれば実行環境側にはパーサ必要ないし。

・・・でもあんまりメリットないかな。
23名無しさん@お腹いっぱい。:01/11/09 01:11 ID:???
>>21
ん?MSXML だけインストールさせれば?

XML 使う利点ねえ。
・自分でパーサ書かなくて済む
・生成も DOM 使えば簡単
・SOAP とかネットワーク分散とか
・DTD や XML Scheme といった標準規格で記述した仕様をそのまま使える

個人的には4番目が大きいな。
自分流で仕様書くと必ず曖昧で相手に伝わらない点が出てくるから。
24名無しさん@お腹いっぱい。:01/11/09 01:48 ID:QPURCFOq
せっかくなのでageましょう。
25名無しさん@お腹いっぱい。:01/11/09 02:43 ID:???
26名無しさん@お腹いっぱい。:01/11/09 10:08 ID:XLFvo4DJ
>>23
・XMLエディタが使える。SchemeやDTD使って文法チェックや自動補完の支援も受けられる
・正確な文法を相手に伝えることができなくても、「こんなかんじ」でサンプル渡せばなんとなく書いてもらえる
27煽りじゃないけど:01/11/09 10:09 ID:4a3RFUkt
エロゲーのシナリオってホントにXMLなんて必要なの?
プログラマのオナニーじゃないの?
28名無しさん@お腹いっぱい。:01/11/09 10:14 ID:LYHkp5wY
それは>>19でも指摘されてますな。
なにかこう、画期的なXMLエディタでも出てくれば事情が違ってくるんだろうけどねえ。
29名無しさん@お腹いっぱい。:01/11/09 10:17 ID:???
>>27
なんでエロゲーに限定やねん。
それはおいといて、キャラクタのデータベース作るときとか良いかもですよ?
たしかにCSV形式で必要十分っちゃそうなんだけど。

プログラマの自己満足?その通りですわ。本業にフィードバックできるしね。
30名無しさん@お腹いっぱい。:01/11/09 10:27 ID:???
ありがと。やっぱそうだよね。
変な関西弁だったけど(w
31名無しさん@お腹いっぱい。:01/11/10 09:51 ID:ZLaGQkGz
bison/flex派です。
プログラム板にも書きましたが、あがってないようなので…。

http://www.oishi.info.waseda.ac.jp/~oishi/interpreter/ma.html
を元に見よう見まねで電卓を作ってみました。++,+=,16進数等を追加。
↓ソースコード
http://page.freett.com/pluteus/works/bin/calc.lzh
まだif文などにバグありですが、これからゲームに組み込んで、
スクリプトエンジンにしたいと思います。

仕様は…
1デファイン機能
 電卓なので変数宣言不要
 関数は定義可能
2マクロ機能 なし
3計算式 a,b,c,d
4関数 b
5書式 e
6構造化 a,d,f,i,j
7セーブ機能 なし

switch〜case文、break文、continue文、配列変数なども実装したいんですが、
どこかにbison用の構文解析ソースないですか?
簡易電卓機能までなら結構見つかるんですが、
スクリプトエンジンともなるとちょっと見つかりませんでした。
書籍を買えば分かるのかもしれませんが、
ソースを見たほうが速いので。
32名無しさん@お腹いっぱい。:01/11/10 11:47 ID:???
>>31
yaccので良ければgccのソースに含まれているよ
http://gcc.gnu.org/

っつーか探せば余裕ででてくるが?
3331:01/11/10 12:23 ID:U1Ytzgh8
>>32
>っつーか探せば余裕ででてくるが?
探すとこが良くなかったようですね、ありがとうございます。
(Googleで"bison flex ソース"とか)

gccくらい高度になると全部自力で構文解析してるのかと思ってました。
調べてみます。
34名無しさん@お腹いっぱい。:01/11/12 07:02 ID:iEHeW1Vl
みんなはゲーム用に使うスクリプトで、小数を定義してる?
やっぱり小数も扱えるようにしてあると便利なのだろうか・・・。
ちなみに、自分は bison 使って構文解析機作ってます。
35名無しさん@お腹いっぱい。:01/11/12 10:01 ID:???
>34
どうしても必要な場合、固定小数点でやってるよ。
小数点以下2バイト、実数2バイトで。
36名無しさん@お腹いっぱい。:01/11/12 13:34 ID:???
>>35
なんでそんな回りくどいことするの?
普通にbignum作ればそれでいいじゃん
37名無しさん@お腹いっぱい。:01/11/12 21:08 ID:???
>>36
どうしても必要な場合って言ってるだろ。
計算が速いから固定小数点使ってるんだよ。
38名無しさん@お腹いっぱい。:01/11/12 23:48 ID:???
固定小数点の計算が速かった時代も終わりつつあるってか終わってるな
39名無しさん@お腹いっぱい。:01/11/13 00:03 ID:???
うむ。最近のCPUは凄いのう。
ていうか、3Dゲームに使うスクリプトなら実数に対応せざるをえない。
40名無しさん@お腹いっぱい。:01/11/13 16:43 ID:???
486SXとかDXとか言ってた時代が懐かしい・・・
41名無しさん@お腹いっぱい。:01/11/13 16:59 ID:???
8086互換環境、しかもSmall Model用にゲーム向けスクリプト言語
環境作ってます。環境なんでエディタなんかも込みです。
最近のPCとは比べ物にならないくらい制限がキツイけど、これぐらい
キツイと逆に作り応えがあります。
42名無しさん@お腹いっぱい。:01/11/13 22:53 ID:???
マゾなの?テキストアドベンチャーでも作るの?
43名無しさん@お腹いっぱい。:01/11/14 17:20 ID:xFHu6HrX
移転してきました。
44名無しさん@お腹いっぱい。:01/11/14 17:49 ID:???
>>37
どうしてもってなに?
bignumなんて一度作れば終わりじゃん。
もしかして、毎回スクラッチしてるの?
45名無しさん@お腹いっぱい。:01/11/15 03:14 ID:uBJWEUjx
JAVAバイナリインタプリタの話題はやくしよー。
とりあえず、フリーのものさがしてみるよ。
コンシューマ機でものっけれるような素敵なのないかな。
46名無しさん@お腹いっぱい。:01/11/15 03:30 ID:???
この辺は使いえないですかね?
http://www.cc.yamaguchi-u.ac.jp/~shingo/WabaWorld/
携帯機用だから、コンシューマ機に載せ易いかも。
47_:01/11/15 04:23 ID:TDb/e4F8
1の言うスクリプトってよくわからない。
何の為に作るの?
あそこまで作るんだったら、Cをそのまんま使った方がいいと思うんだけど。
ちょっとした言語仕様を盛り込みたい為に、体系を一から構築するのって
どうなの?
48457:01/11/15 05:03 ID:???
前スレの者ですが、
ざっと考えるだけでも

1)シナリオライターが逐次修正した物を
  プログラマーがいちいち打ち込むのは大変。

  プログラマーとシナリオライターが同じ場所に居るとは限らないし、
  かといって、シナリオライターがソースを触ると危ないし、
  シナリオライター全員の分の言語ライセンスを買うわけには行かない。
 
2)バージョンアップの時に、一部のシナリオファイルの改訂だけですむ

とか、色々あると思います。
49名無しさん@お腹いっぱい。:01/11/15 12:39 ID:9dLaA6vj
>>46
WavaはどうやらGPLみたいですね。トホホ(;´Д`)
やっぱ仮想マシン自分で作れってことか。
50sage:01/11/15 13:11 ID:uBJWEUjx
>49
えっ!なになに!GPLだとまずいの!?
これゲームにのっけるとき、ソース公開せんといけなくなるの?
51名無しさん@お腹いっぱい。:01/11/15 13:48 ID:RSUbKJen
>>50
ご明察。
MS関係者が「GPLはソフトウェアに感染するウィルスみたいな物だ」と発言してオープンソース業界で問題になったことがあったが、
MSの気持ちは痛いほどよくわかるよ。
今の流行はGPLじゃないソースコード公開、勝手に使ってくれというライセンスやね。pngとかzlibとかPythonとかそうでしょ。
52名無しさん@お腹いっぱい。:01/11/15 14:00 ID:???
>これゲームにのっけるとき、ソース公開せんといけなくなるの?
ニュアンスに違いかも知れないけど、誰かに要求されたらソースを公開する
必要がある、という意味だと思いますけど。
作ったからと言って、サイトに無償公開しろ、という意味ではないはず。

もちろん、利用したらGPLであることを記載しないといけないですけどね。
5350:01/11/15 14:03 ID:uBJWEUjx
なるほどなるほど・・・
BladeOfDarknessっつー洋ゲーにPythonがつかわれてたのは
そういうことか。

スレ違いだけど、ゲームに剛体シミュいれたいなーとか、
シャドウボリュームつかいてーとか思ってる人は、
BladeOfDarknessみとくといいかも。
デモ版があるよ。
54名無しさん@お腹いっぱい。:01/11/15 14:31 ID:???
>>52
自分が配る時は無償でなくてもいいんだけど、
それを得た他人が無償でくばってもいいので
結局(ソフト自体は)無償で公開してるのと一緒。
55名無しさん@お腹いっぱい。:01/11/15 15:38 ID:???
え、GPLedな開発環境で作った成果物って別にGPLに縛られない
んじゃないかな。基本的に別物扱いで、実行環境等を入れるにしても
GPLに縛られるのはその実行環境のみのはず。
#そうでなければgccなんて使ってられんぞ…。
ちょっと違うのはライブラリの場合で、これは大抵LGPLという緩い
ライセンスになっていて、そうなっていた場合は大抵ダイナミック
リンクする範囲では問題無くなってるはず。

間違ってたらスマソ。
56名無しさん@お腹いっぱい。:01/11/15 15:52 ID:???
>>55
>え、GPLedな開発環境で作った成果物って別にGPLに縛られない
>んじゃないかな。基本的に別物扱いで、実行環境等を入れるにしても
>GPLに縛られるのはその実行環境のみのはず。

GPLなライブラリやGPLなコードとリンクされる場合ね。縛られるのは。
LGPLでないかぎりはスタティックリンクでもダイナミックリンクでも
しばられる。

じゃあWindowsのDLLとGPLをまぜて使うときはどうなんだという
話はボーダーラインの話なのでGNUの見解を参照。

>#そうでなければgccなんて使ってられんぞ…。

gccを非GPLなモノに使っていいのは特例です。

>ちょっと違うのはライブラリの場合で、これは大抵LGPLという緩い
>ライセンスになっていて、そうなっていた場合は大抵ダイナミック
>リンクする範囲では問題無くなってるはず。
こっちはあってる

GPLの話題は別のところでしましょうかね
57名無しさん@お腹いっぱい。:01/11/15 17:33 ID:afucvIzX
誰か、GPL/LGPL等ライセンスとゲーム製作ってスレ作ってくれないかな。
携帯だからスレ作れないの。
58名無しさん@お腹いっぱい。:01/11/15 18:57 ID:Akdsfzo6
作りました。

GPL/LGPL等ライセンスとゲーム製作
http://game.2ch.net/test/read.cgi/gamedev/1005818191/
59名無しさん@お腹いっぱい。:01/11/15 21:40 ID:ducCdIA5
本題ですけど、Javaの環境流用でなくても、
既存のスクリプトエンジン探せばいろいろ落ちてるんじゃないでしょうか。
未評価ですが、この辺とか。
http://home.elka.pw.edu.pl/~ppodsiad/seer/
http://www.compuphase.com/small.htm

もし自作するなら、あまり気合い入れて作りこまないほうがいいかもねー。
BASICとかバッチファイル並みで十分だと思う。
プログラマ以外にはろくに機能を使いこなせないスクリプトとか、
普通にコンパイラ使えばいいのにってスクリプトになるのもアレだし。
60名無しさん@お腹いっぱい。:01/11/15 23:50 ID:uBJWEUjx
でも、既存の練られた言語ってやっぱりいいと思わない?
つかってるうちにその言語習得できちゃったりして。
61名無しさん@お腹いっぱい。:01/11/16 00:22 ID:???
seer, smallと来たところで、Luaもはずせませんな。
http://www.tecgraf.puc-rio.br/lua/
62名無しさん@お腹いっぱい。:01/11/16 00:34 ID:???
JavaのVMってアプローチがあるなら、CLIのVMってのもありではないのかな。
対応言語が増えすぎてしまうが(w
63名無しさん@お腹いっぱい。:01/11/16 00:54 ID:ZgDDdgZX
スクリプトコンパイラは(言語仕様が)あまり高性能すぎるのもどうかと思う。
あまり言語仕様が高性能すぎても、今度はスクリプトコンパイラ上で動くスクリプト自体の
デバッグに追われることになってしまう。
64名無しさん@お腹いっぱい。:01/11/16 01:43 ID:???
>>63
あまりに言語仕様が高性能すぎる

と、

スクリプトコンパイラ上で動くスクリプト自体の
デバッグに追われることになってしまう

ということになるってどういうことだろ・・・

言語仕様が単純でも高機能でもデバッグに追われるよ
65名無しさん@お腹いっぱい。:01/11/16 04:20 ID:???
今話してるスクリプトは、プログラマ以外が使うことを想定してるから
凝って自由度を上げすぎると、シナリオ担当者等が扱えきれなくて本末転倒
と言いたいのだと思われ。
66名無しさん@お腹いっぱい。:01/11/16 06:25 ID:???
すんませんスクリプトの手軽さはわかっとりますが、
JAVAを組み込むのにモえてもたよ。
http://www.netgene.co.jp/java/docs/javaPressVol14.html
ここを参照でまーなんとかできそうだ。

this->*(_opcodes[*_pc]))();
こんなことをやってオペコード実行しとりますが、
このやり方にマンセーなかたがいらっしゃいましたら、
てきとうなとこでウプしますけど。
はは・・・たたかれそうだな・・・。
67名無しさん@お腹いっぱい。:01/11/16 07:06 ID:???
JavaVM用の言語って現時点で一杯あるんやね。Javaにこだわる必要は無いな。
http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html
68名無しさん@お腹いっぱい。:01/11/16 09:07 ID:???
JavaVMかぁ。ちょっと面白そうだけど、今から勉強するならCLRかな〜って気もする。
ただ、MSから仕様書拾ってきたらページ数ありすぎで読む気しない。
英語馬鹿でも読める、もちっと纏められた資料ってないんかの〜。
69名無しさん@お腹いっぱい。:01/11/16 11:32 ID:???
良スレage
7066:01/11/16 12:03 ID:???
>>68
CLRかぁ!うーん・・・どうしよっかな・・・。
でも >>67 のみて十分JavaVMでもいろんな言語いけるおもたよ。
日本語資料よくできてるし。
べつにバイナリコードでプログラムするわけないしね。
71名無しさん@お腹いっぱい。:01/11/16 12:08 ID:???
いっそのこと
Javaベースにしてメイン部分をJNIに逃がす、
ということはできないのだろうか。
72名無しさん@お腹いっぱい。:01/11/16 14:33 ID:???
GNUの連中がC#->JVMコンパイラ作ってるよ
73名無しさん@お腹いっぱい。:01/11/16 16:54 ID:???
>72
まぢ!Java言語じたいより、VMのほうが長生きする予感
74名無しさん@お腹いっぱい。:01/11/16 23:36 ID:???
>>66
せっかくだからアプしようぜ。

>>68
俺もダウンロードしてきたけど、読み応えありすぎるわ(w
75名無しさん@お腹いっぱい。:01/11/17 00:39 ID:???
>>71
できるだろうけど、ほとんど意味ないんじゃない?
プログラマ以外の人が簡単にゲームのフレームや流れを作れるようにするために
スクリプト作るってのが元の目的でしょ?

まあ面白いけど(w
76名無しさん@お腹いっぱい。:01/11/17 01:35 ID:???
.NETに対抗して.GNUとかやらんのかね
77名無しさん@お腹いっぱい。:01/11/17 01:42 ID:???
>>76
うーん、GPLなんかだと激しく萎えるなあ
78名無しさん@お腹いっぱい。:01/11/17 01:59 ID:???
79名無しさん@お腹いっぱい。:01/11/17 02:07 ID:???
>>78
ハハハ、なんつーかそこまでムキになるなやって感じやな。
80名無しさん@お腹いっぱい。:01/11/19 00:29 ID:???
age
81名前は開発中のものです。:01/11/24 21:29 ID:???
>>76
あれ?やってなかったっけ?ほのかに記憶あるんだけど。
82名前は開発中のものです。:01/11/24 21:33 ID:yBLWDR2S
お気に入りのIDが出たYO!!
83名前は開発中のものです。:01/11/27 09:53 ID:???
>>72
みつかんないよーどこにあるの!?
84名前は開発中のものです。:01/11/27 10:01 ID:???
まだ作ってる途中ってことじゃないの?
85名前は開発中のものです。:01/11/27 11:15 ID:???
>>81
>>78のリンクみろ

>>83
http://www.gnu.org/projects/dotgnu/projects.html 「* Support for Java bytecode」
http://www.southern-storm.com.au/portable_net.html
まだ実装されてません
8685:01/11/27 11:37 ID:???
嘘です
実装されてます
8783:01/11/27 19:42 ID:???
>>85 サンクス!Cygwinでコンパイルためしてみるよ〜
良スレ(俺的に)アゲ
8883:01/11/27 21:35 ID:???
CYGWIN用C#コンパイラできました。結果報告。
・普通にC#コンパイラとして使えました。(EXE出力)
・JavaVMアセンブリソースのはきだし方。
%cscc -mjvm -S source.cs
この出力結果から、.classができるかどうかは、まだわかりません。
8983:01/11/27 23:11 ID:???
GNU C#コンパイラのJavaVM出力に関する結果報告

>>88 の方法で吐き出した source.jl (JVM-ASMをIL形式で出力したもの)
をilasmにくわしてみた。
%ilasm -mjvm source.jl
(-mjvmオプションはソースをIL形式のJVMバイトコードで出力)
出力結果.objをみてみたけれども、.classにはほど遠い。

.jlをjasmin(JavaASM)のフォーマットに変換するのが
C#->.classへの近道っぽい。(わりとよく似てる)
90厨房:01/11/28 00:36 ID:???
JavaVMはスタックマシンだけどCLIはレジスタで結構違うって噂聞いたことあるけど…
91名前は開発中のものです。:01/11/28 00:56 ID:???
>>90
CLIもスタックマシンらしいけど?
ここにC#コンパイラがどうしてJVMコードをはけるのかとか
なぜgccと統合しなかったのかとかが書いてある
http://www.southern-storm.com.au/pnet_faq.html
92名前は開発中のものです。:01/11/29 14:19 ID:???
ありがとう。2.4節あたりに書いてあったね。
JavaVMと似てるならCLI真面目に勉強したいな。洋書読める程英語できないし、早く翻訳されないかな。
93名前は開発中のものです。:02/01/03 07:02 ID:WLPQVhtk
簡単なスクリプトのコンパイラって無い物でしょうか?
BASICのIFが使える程度で良いのですが、
色々調べても難しい物ばかりでなかなか良い物を探せません。
何か良い物があったら教えてください。
94名前は開発中のものです。:02/01/03 08:47 ID:WHmmrKAU
↑富士通から出ているF-BASIC for Win95 がお薦め。
グラフィックだとかも使えるしね。
95名前は開発中のものです。:02/01/03 09:31 ID:???
>>94
おいおい。

>>93
コンパイラじゃないけどこの辺を
http://member.nifty.ne.jp/nakamula/recurs.htm
96名前は開発中のものです。:02/01/03 10:20 ID:???
>>94
F-BASICは産業分野で大活躍しとる。
N-88Basicで書かれた昔の計測システムとかを動かすのにな

板違いsage
9794:02/01/03 11:51 ID:???
しまった。コンパイラ・コンパイラの板だったのか。素で間違えた。
スマソ。
98名前は開発中のものです。:02/01/03 17:17 ID:???
>>94
ttp://member.nifty.ne.jp/KENJI/
ここがおすすめ
99名前は開発中のものです。:02/01/03 23:20 ID:WLPQVhtk
>>94
スクリプトコンパイラで検索すれば色々でてくるよ。
100名前は開発中のものです。:02/01/04 03:58 ID:/BxIs0ic
専学の卒業用のプログラムでスクリプトコンバータが必要ですが、
色々調べても難しい物ばかりなので、自分で拡張できそうにないです。
何か拡張を前提とした良い物って無いでしょうか。
ソースがわかりやすいものが良いです。
101名前は開発中のものです。:02/01/04 11:02 ID:???
>>100
前述のリンクたどって1からスクリプト組んでみるといいと思う。
できたころには、他のスクリプトも拡張できるようになってる。

俺の場合だけど
102100:02/01/04 18:15 ID:UkX35gI3
>>101
サンキューです。
単純なスクリプトコンパイラを作るのソースを参考にしてみます。
これなら簡単に理解できそうです。
専学で作ってるゲームシステムをどこかにアップしてみんなに見てもらうことって
出来るんでしょうか。
いえね、なにか自分のがプロの方にはどう見られるかと思ってね
103名前は開発中のものです。:02/01/05 19:27 ID:???
ふつーにwebにゲームのソース公開しててもなかなかリアクションはこないみたい。
2chにさらすのが手っ取り早い。
104100:02/01/06 09:03 ID:+jtLqqFX
>>103
つまらない物だけど、もし出来上がったらさらします。
単なるアドベンチャーゲームのエンジンなんですが、
ちゃんと出来ているかというより、
今後何年間かでプロになれるかが心配なのでみんなに見てほしいです。
105名前は開発中のものです。:02/01/09 07:08 ID:9EzpJOZt
>104
100のADVシステムきぼん
106100:02/01/14 09:10 ID:5xExvzQX
アドベンチャーゲームのエンジンをあぷしておきました。
ttp://www4.famille.ne.jp/~yo-ogawa/cgi-bin/bbs/upload.cgi
批評お願いします。
新しく板、作ったほうがいいでしょうか
107100:02/01/14 09:20 ID:5xExvzQX
さっきの奴は半角版から行かないとだめなので、こちらにアップしておきます。
http://www.nyan-web.ne.jp/~mystyle-jp/cgi-bin/upboard/imgboard.cgi
サンプルも入れておきますので、批評お願いします。
108名前は開発中のものです。:02/01/14 09:31 ID:v4MH2X5h
まあまあじゃないの?最初としてはさあ。
109名前は開発中のものです。:02/01/14 20:57 ID:???
やねうらをSDKは、使ってみた感じ、言われてるより遥かに使いやすいと
思ったのだが。C言語っぽいし、WindowsAPIも呼び出せるし。
110名前は開発中のものです。:02/01/14 21:21 ID:NFXyvc6Z
yaneSDKは大きく分かれるね
優秀なサンプルプログラム、ライブラリとしては後一歩のところがとどかない。

とかいて気付いたが、yaneSDKはそのままC言語だろ。(w
正確にはC++だけど。
111名前は開発中のものです。:02/01/14 21:29 ID:JgCRpRR+

>>100
108 ではないけど、最初に形にした物としてはよいのでは。
自分が初めて形にした物よりはだいぶマシ(苦笑)

ただ、400 行以上にもなる関数があるのは頂けないので、
そのへんは注意せんとね。
112名前は開発中のものです。:02/01/14 22:01 ID:???
>>110
スクリプト言語のほう言ってるんじゃない?
ここのスレで言っているからして。
しかしそれにしても、いまどきフリーのC/C++コンパイラもあるのに
わざわざC言語に劣るスクリプト言語を使うメリットはそんなに大きくないだろう。
113名前は開発中のものです。:02/01/14 22:06 ID:???
スクリプトにすればわざわざコンパイルしなくていいじゃん。
114名前は開発中のものです。:02/01/14 22:14 ID:???
>>113
一発でmake後実行できるように環境を整えておけば似たようなもんだよ。

スクリプト言語って記述しやすければ開発が楽になるが、腐った仕様の
スクリプト言語をつくっちまうと逆に足手まといになるね。
115名前は開発中のものです。:02/01/14 23:48 ID:5+gjnPlJ
>>114
シナリオライタとプログラマが同一人物とは限らないし、
シナリオライタが複数いることもある。
プログラマ以外の人がシナリオを触ると、問題が出てくることが多い。

動作チェックするときにも再コンパイルをして、
コンパイラの最適化によるバグも防げる。
もちろん、スクリプトコンパイラは十分バグ出ししていることが必要だけど。

スクリプトコンパイラでちゃんとスクリプトのバグを出してくれるのであれば、
バグも出にくくなる。
表示される文字セットの問題(改行コードや主人公の名前など)も
解決しやすくなる。

シナリオの既読と未読などもスクリプトコンパイラの方が管理しやすい。
(Cのマクロでもできるけど)
スクリプト言語にC言語の記号を持ち込まなくて良い。
だいたいのシナリオライタはC言語の記号を説明すると、記号が多くいやがる。
BASIC風(PASCAL風)な方が喜ばれることが多い。

弱点は動作スピードが若干遅くなること。
116名前は開発中のものです。:02/01/15 02:39 ID:???
やねうらおSDKは、デキは悪くないけど、
難易度がC言語やC++のそれと変わらない気がする。汎用性ありすぎ。
つまり、あれを使いこなせるくらいなら素直にVC++弄った方が
いいかも。
117名前は開発中のものです。:02/01/15 06:34 ID:???
SDKとスクリプトをごっちゃにしないでくれ。どっちがどっちがわからん
118名前は開発中のものです。:02/01/15 11:17 ID:???
>>116
客観的にみたとしてもC/C++よりかなり使いにくいですが・・・
119100:02/01/15 15:07 ID:7CY8ofuR
新しいバージョンをあぷしました。
前回と違うところはシューティングシーンを付加しました。
No.558です。
http://www.nyan-web.ne.jp/~mystyle-jp/cgi-bin/upboard/imgboard.cgi

>>108&111
ありがとうございました。
専門学校卒業というだけで白い目で見られていたので、これで自信がもてました。
120名前は開発中のものです。:02/01/15 16:39 ID:???
四年制大学でたってアーパーで使い物にならんやつはたくさんいるし
専門だからっていって気負いするこたあない、がんばれ。スレ違いなのでsage
121名前は開発中のものです。:02/01/16 21:45 ID:???
>四年制大学でたってアーパーで使い物にならんやつはたくさんいるし
ちなみに今年度、は(高卒の就職率>大卒の就職率)でした。
それでも大学進学を強くお薦めします。
大学出てもポアなヤツは、高校出だと、もっとポアな可能性が高いので。
122名前は開発中のものです。:02/01/17 01:38 ID:???
ベーマガの2月号でスクリプト言語を作るっていう記事が始まったね。
123名前は開発中のものです。:02/01/19 00:48 ID:???
Cマガ2000年5月号の参考にスクリプト改造してたんだけど、
どうも、mallocの数とfreeの数一致してないように見えるんだが…。

古いから誰も知らないか
124名前は開発中のものです。:02/01/20 01:35 ID:???
>123
freeが全然たりないんでは?
文字列用に確保したメモリ、解放してないし。
125:02/01/28 00:09 ID:v411FPbT
シナリオをPerlでCのデータに変換してコンパイルしています。
置換とか評価とか、面倒なことはコンパイラに任せています。

#! /bin/bash
cat $1 | gcc -E -

これだけでも、コメントとディレクティブを処理してくれるツールになります。
126名前は開発中のものです。:02/01/28 02:06 ID:???
>>125
それだけだったら素直にcpp通せば……。
127名前は開発中のものです。:02/04/10 14:29 ID:7gizi2lc
age
128名前は開発中のものです。:02/05/07 23:17 ID:???
 
129名前は開発中のものです。:02/08/20 01:38 ID:???
>122
どうなりました?
130名前は開発中のものです。:03/03/16 21:32 ID:bxK/yvms
上の方の会話がわからなかったのですが、
今わかりました。

YGS2k 正式名称はyaneuraoGameScript2000

有名なyaneSDKのほかにスクリプトコンパイラも
存在しているのですね。

良スレあげ。
131tantei:03/03/16 21:51 ID:25Eg6wpZ
★あなたのお悩み解決致します!!
●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
 直通  090−8505−3086
URL  http://www.h5.dion.ne.jp/~grobal/
メール  [email protected]
   グローバル探偵事務局 

132名前は開発中のものです。:03/03/16 22:19 ID:NsysnKZA
          終   了   し   ま   す   た  。
         n                          n
       ミゝヽ                        / ヾ彡
        ゝ ノ                        ヽ ヾ
        / /∧_∧                ∧_∧| ヽ
   アヒャー .|  <(  ゚∀゚)               (゚∀゚  ..)> | アヒャー
        ヽ ゝ ヽ⌒ヽ              /⌒丶 ゞ /
        ヽ        ヽ   n___  _n    /       /
          | 完  /ヽ ⌒二ソ__彡ミ__ゝ二⌒  /ヽ終.了|
      / ̄\_|    |  ̄ ̄          ̄ ̄   |    |_/ ̄ヽ
      \ ヽ       ヽ                 /      ノ  /
       \⌒ゝ~\  \               / /~ ヾ⌒ /
        ヽ (    \  \           /  /    ) /
         ∪    \  \       /  /      ∪
                \  \ │ /  /
 ̄ ̄                / ̄\  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
                  ─( ゚ ∀ ゚ )<     終!
                    \_/   \_______
                  / │ \
133やほー:03/04/03 07:00 ID:C6VUGYVR
>130
普通のスクリプトエンジンだ

yaccに興味あるんだけど何をどうしたらいいのかわからん。
だれか良質な解説サイト知らない?
134名前は開発中のものです。:03/04/03 07:34 ID:GN4ao2kv
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□
□□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□
□□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□
□■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□
□□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□
□□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□
□□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□
□□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□
□■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□
□□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□
□□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□
□□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□
□■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□
□■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
135名前は開発中のものです。:03/04/03 08:10 ID:UgopLJw/
>>133
時代はboost::spiritだぜ!
136名前は開発中のものです。:03/04/03 08:11 ID:NfJJ5fnj
            o
            /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /
           /   このスレは無事に  /
           /  終了いたしました    /
          / ありがとうございました  /
          /                /
         /   モララーより      /
         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/
  ∧_∧  /                /∧_∧
 ( ・∀・) /                /(・∀・ )
 (    )つ               ⊂(    )
 | | |                   | | |
 (__)_)                  (_(__)
137名前は開発中のものです。:03/04/09 22:53 ID:PK8UclG0
luaとかどう?
coroutine(協調thread)とか使えないかな?
138名前は開発中のものです。:03/04/09 22:58 ID:pjdVuvyV
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□
□□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□
□□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□
□■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□
□□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□
□□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□
□□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□
□□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□
□■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□
□□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□
□□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□
□□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□
□■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□
□■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□
□□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
139名前は開発中のものです。:03/08/22 21:05 ID:pXJcQ288
スレ振るっ
140名前は開発中のものです。:04/04/14 21:04 ID:HGm3G41H
LUAおもしろそうだけど使い方がいまいちわかんない。
スクリプトつかう以前の環境設定の段階で。
VC6でのつかいかたおしへて>>137
141名前は開発中のものです。:04/08/19 19:18 ID:afoemJ4u
ほっしゅ、しゅっほ、しゅっほっほー
142名前は開発中のものです。:04/10/10 18:42:40 ID:K/XMs6Gm
スクリプトの実装にForthを使う漏れは少数派ですかそうですよねorz。
パージングがいらないので仮想コード化が楽だし、
比較的軽くて小さなVMが作れるしで個人的には大好きなんだが。
RPN構文に癖がありすぎるからかねぇ。
143名前は開発中のものです。:04/10/11 00:52:26 ID:utv6tbQW
最初に書いたスクリプトエンジンがForthだったな
構文解析いらないので楽〜
逆ポーランドヽ(´ー`)ノマンセー
144名前は開発中のものです。:04/10/11 01:23:27 ID:J2l165WT
>>140
半年前の書き込みにレスするのもあれだが
Caluaという、「luaの組み込みを簡単にするためのライブラリ」がある。

ttp://calua.sourceforge.net/
145名前は開発中のものです。:2005/04/10(日) 02:58:01 ID:4CIkTtRi
AngelScriptなんかもいい。
http://www.angelcode.com/angelscript/
146名前は開発中のものです。:2006/04/16(日) 01:24:30 ID:NIJWxfjn
age

このスレで言うスクリプトってRPGやギャルゲーのシナリオだけ?
シューティングの敵の出現・動作パターンや格ゲーのモーションデータまで含めると

ゲームの本体プログラム≡スクリプトのインタプリタ

って位ゲーム製作において重要な部分だと思われ。
ここら辺はCで直書きする訳にも行かないし、皆どうしているか聞きたい。
(格ゲーのモーションをCで書いたら相手のモーションと同時実行するために
マルチスレッドが必要だったり、
技をキャンセルするのにスレッドをkillしなくちゃいけなかったり訳分からん)
147名前は開発中のものです。:2006/04/16(日) 03:25:20 ID:aygEIUBS
> 格ゲーのモーションをCで書いたら相手のモーションと同時実行するために
マルチスレッドが必要だったり、

んなあほなww

も前は、キャラクターごとにスレッドを作るのかw
普通は、ゲームでは非プリエンプティブなマルチスレッドを使う。
つまり、コストの低い、擬似タスクな。
あと、モーションは、デザイナにまかせたりするので、スクリプトで制御することも多いよ。
148146:2006/04/16(日) 09:51:53 ID:NIJWxfjn
まあ自分はスクリプト制御です。上のは反語表現というか、
酔ってたせいで何に煽ってるのか分からない煽り口調になってるしw

>非プリエンティブなマルチスレッド
は一般的なOS+Cでは不可能ですよね。機械語で書く場合でしょうか。
それともsetjmpで無理矢理実装とか?
149名前は開発中のものです。:2006/04/16(日) 14:12:25 ID:P72bJmUy
>>148
コンソールの話だと思われ。
時代遅れの発想なんであまりやって欲しくないけどね。
150名前は開発中のものです。:2006/04/16(日) 16:14:41 ID:F+evVwwX
>>146の疑問はもっともだと思うよ。
今はまだそれ以前の部分で躓いていて
問題を先送りにしているが、いずれ考えなきゃいけない部分だと
俺も思っている。
インタプリタは難しいんで、MIDLコンパイラみたいに
スクリプトからC++ソース生成じゃ駄目かなあ?
151146:2006/04/17(月) 01:06:45 ID:M8YTTZ7z
>C++ソース生成
用途によりますよね。
ギャルゲーやRPGなら大丈夫だけど、アクション系のゲームだと前述のような問題が。
自分はRPGを製作中ですが、複数キャラを同時に歩かせたりメッセージ表示しながらアニメしたりと
「スクリプトのシンクロ実行」を実装する予定なので、頑張ってインタプリタを書いてます。


基本的にCとかは1スレッドにつき1つしかプログラムの「筋」を持てない。
で、ゲームのメインスレッドというのは大抵メッセージループを回す構造になってるわけで、
ループ回しつつ逐次実行のコードを同時に走らせようと思ったら別スレッドにするか
スクリプトとして(もしくはスクリプト風に)実行順序をデータとして持っておいて
ループで実行するしかない、というのが前提条件かと。

最近「生成的プログラミング」とやらが流行ってるお陰で
大抵の言語に出来のよいパーサが開発されたり、
継続やらモナドやらExpressionTemplateやら「言語内言語」に関する技術がたくさん出てきたりしているので、
その辺をゲーム開発に取り込んでいったら面白いんじゃないか、と思う次第であります。
152名前は開発中のものです。:2006/04/17(月) 01:19:59 ID:2X7IXBs2
俺も同じようなことやってます。
某ステフでアクションRPGのスクリプトを作ってますが、シンクロでは悩まされます。
試行錯誤であーでもないこーでもないと何とかやってますが、地味に面白いですよねw
153名前は開発中のものです。:2006/05/10(水) 15:25:54 ID:BR/3osvo
保守age
154名前は開発中のものです。:2006/05/10(水) 15:31:42 ID:5no3yNph
>>151
詳細希望
155名前は開発中のものです。:2006/05/11(木) 23:55:49 ID:OvObgVlQ
詳細もなにも一言で要約できるぞ。

boost::spirit使ってみろ、と。
156名前は開発中のものです。:2006/05/12(金) 01:33:27 ID:sXlqKymr
いや、パーザじゃなくてシンクロ実行のほうじゃないの?
157151:2006/05/14(日) 21:20:12 ID:VGwK5BXt
模式的にコードを書くと、
pTaskをタスクオブジェクト(clock()でアニメ等を一コマ進める)
へのポインタとして、

case WM_TIMER:

if (pTask == NULL)
 pTask = ScriptEngine.EvalNext(); //スクリプトを1ステップ実行
}
if (!pTask->clock()) {
 delete pTask; pTask = NULL;
}

シンクロ処理は
class Sync : Task {
 Task*[] _tasks;
public:
 bool clock() { for (...) { _tasks[i]->clock(); }
};
みたいな感じで行けます。

158151:2006/05/14(日) 21:21:52 ID:VGwK5BXt
スクリプトは以下のような感じで、

えっと…(sleep 10)どうしようか。wait

これを
・全角文字を""で囲む
・全体を'()で囲む
と処理すると

'("えっと…" (sleep 10) "どうしようか。" wait)

というschemeコードになります。リストの要素要素がEvalNextで返されるTaskです。
現在エンジンにはvismというschemeライブラリを使っていますが、
公開停止しているのと微妙に仕様が合わないのとで、現在手書きを検討しています。
159名前は開発中のものです。:2006/05/19(金) 13:39:30 ID:Gqm6Z0J6
なるほど
そのやり方覚えておこう
160名前は開発中のものです。:2006/07/15(土) 03:22:31 ID:+R4TsQjQ
ほぼスクリプト部完成しますた。
と、チラシの裏
161名前は開発中のものです。:2006/09/01(金) 23:48:53 ID:/m07WVDn
良スレあげ
162名前は開発中のものです。:2006/09/02(土) 13:11:40 ID:VymI6uhU
ギコBASICのまとめWikiが落ちたんだが
ttp://onigiri.s3.xrea.com:8080/delphi/index.php?cmd=read&page=gikobasic

だれか所在を知らないか?
163名前は開発中のものです。:2006/09/29(金) 12:41:28 ID:SBqDXED0
残念ながら・・・
164名前は開発中のものです。:2006/09/29(金) 12:43:17 ID:DcIeecDs
そうでげしたか…
165名前は開発中のものです。:2006/10/02(月) 16:55:37 ID:3LC0p1Pp
ギコベなくなったのかー!
使わせて貰ったことあるからちと悲しい
166名前は開発中のものです。:2006/10/02(月) 17:06:00 ID:yaGw0AJA
wikiが落ちて
そして誰も作らないだけだぜ
167名前は開発中のものです。:2006/10/06(金) 01:32:30 ID:lE7We31z
今になって思えば、スクリプト部の文法は
中途半端にHSP互換じゃなくて、完全互換の方がよかったのかなと

チラシの裏
168名前は開発中のものです。:2007/04/14(土) 14:31:45 ID:sT9fQnfw
インタプリタ作成は難しいですね。
最近、言語自体に興味を持って作り始めましたが
数字と演算子の数を出力するぐらいしか出来ません。
169名前は開発中のものです。:2007/07/12(木) 20:51:47 ID:JmSceXMO
シナリオ用スクリプトを構造化することってできるだろうか。
グローバルスコープなフラグとラベルジャンプでできたスクリプトでは、
フラグの一貫性やループに陥っていないか等の解析が手動でも自動でも
著しく困難になる。
凝り性のシナリオライターが作ったスパゲッティフローチャートを
if, for, while & 関数・サブルーチンだけで書き下せると思う?
170名前は開発中のものです。:2007/07/15(日) 01:32:20 ID:X6VsKP49
思う
171名前は開発中のものです。:2007/07/23(月) 04:01:14 ID:zHMsQNv9
>>169
色んな問題をスクリプトだけで解決しようとしすぎじゃね?
172名前は開発中のものです。:2007/07/30(月) 23:04:20 ID:mh1RLDn7
>>169
俺がxmlの研究目的で作ってるxmlベースの言語が
narrative documentをプログラマブルに扱えるものでPLの制御構造と組み込みライブラリと例外処理と文章に対するメタデータ記述能力を持ってるが
こいつはメモリ上に中間コード吐いてインタープリタで直に実行するかほかの言語のソースコード吐くようになってて要するにEiffelなんだが

>シナリオ用スクリプトを構造化 は出来てるぞ。
ただし、ライブラリは組み込みのみでそのライブラリを作るのはプログラマって割り切ってる。
あと要素の評価結果が文字列なら標準出力へ出力するんだけどその標準出力を定義するのもプログラマ。
つまり組み込みライブラリと出力先をADVエンジン用に実装すればADVエンジンへの応用が利く。

こういうもんを作れば
>シナリオ用スクリプトを構造化すること
スパゲッティフローチャートをif, for, while & 関数・サブルーチンだけで書き下す
は実際に出来てる。

あと言語そのものがxmlなんでXSLTやXSL-FOでhtmlやPDFへ"スパゲッティフローチャート"を変換できる。
そのためにメタデータ記述能力を持たせた。
あとxmlそのものが機械的に管理されることを前提に
設計されてるのでIDEなんかが作りやすいメリットもある。

欠点は専門的すぎてちょっとしたhypertext systemを実装できるくらいの学術知識が必要かな。情報系の卒論向きだな。
ラベルによるgotoは全部xlinkだったりするし。
173名前は開発中のものです。:2007/07/30(月) 23:06:52 ID:mh1RLDn7
結局、出来たとしても>>171の言うように問題の切り分けとそれを解決する人間を別々に用意する必要があるよ。
そういう前提で作ってるし。
174名前は開発中のものです。:2007/08/02(木) 18:38:56 ID:IqLuhQEt
>ラベルによるgoto
結局スパゲティかよ('A`)
175名前は開発中のものです。:2009/01/02(金) 22:08:59 ID:qteump49
スクリプトエンジン制作中
目的に合わせた複数の言語を作り、共通の中間コードにコンパイルして、共通のVMで動作させる予定なのだが、VMの仕様で悩み中
最初はCOMET互換のものを作ってたんだが、スタックマシンの方がシンプルになりそうな気がする
フラグレジスタとか考えなくていいし、そもそもソフトウェアで動作させるんだからレジスタとかいらなくね?みたいな
他のスクリプトのVMの実装を知らないんだが参考までに、おまいらの意見をいただけないでしょうか
176名前は開発中のものです。:2009/01/03(土) 19:42:11 ID:LhDhqbiv
俺のスクリプトにVMなど存在しない
ただ内部データ(登場時刻、位置、画像、移動パターン)に変換するのみ
177名前は開発中のものです。:2009/01/04(日) 23:05:16 ID:ZWLW/6f7
JVMとか.NETのCLR(つかmono)参考にしたらどうだろうか
前にゲーム製作技術板でゲーム用DSLにJVMのサブセット実装してた人がいたよ。
(しかもコンパイラはJavaを使うらしいw)

まあ、再発明になると面白みがないだろうがポータブルな実装つくるのもいいんでないのかな?
178名前は開発中のものです。:2009/01/04(日) 23:06:00 ID:ZWLW/6f7
ごめん、ム板と勘違いしてたわ
179名前は開発中のものです。:2009/02/03(火) 21:19:13 ID:AbbFosQL
速度の面でどう頑張ってもYpsilonに勝てないので自作やる気がなくなった
180名前は開発中のものです。:2009/02/06(金) 12:39:51 ID:sIJNyM9N
>>179
What is "Ypsilon"?
181名前は開発中のものです。:2009/02/06(金) 20:54:52 ID:MuHkM83C
>>179
もしかして、リトルウイングのScheme処理系?
http://www.littlewingpinball.com/contents/ja/ypsilon.html
182名前は開発中のものです。:2009/10/16(金) 20:40:03 ID:ZrBg9mxX
183名前は開発中のものです。:2010/07/27(火) 16:50:26 ID:Wuh12NAU
ゲーム屋就職用にGauche忍びこませたexe作ろうと思ったけど、どうあがいても相手のマシンにGaucheが入ってないとダメみたいだからあきらめた
ニートで何が悪い
Scheme処理系作ったら本気出す
184名前は開発中のものです。:2010/08/08(日) 21:17:40 ID:JbWPlsYy
185名前は開発中のものです。:2010/09/30(木) 20:19:23 ID:RMd6Ohi3
>>176
なんという定義ファイル
186名前は開発中のものです。:2011/07/07(木) 04:18:10.46 ID:zE+DGvJm
過疎ってるけど、ここが一番あってる気がするからageるね。

できるだけ単純に書けて、単純な出力をするスクリプト言語を作った。
定義ファイル代わり+シーケンスも多少は書けるってとこ。
興味があったらどうぞ。
ttp://kushi.lv9.org/teco/index.html
187名前は開発中のものです。:2011/07/07(木) 12:17:50.82 ID:kgWPk38H
【Lua】組み込み系言語総合 その4【Squirrel】
http://hibari.2ch.net/test/read.cgi/tech/1301414458/

こっちの方が近いと思う。
188186:2011/07/07(木) 13:21:45.30 ID:zE+DGvJm
誘導ありがとう。
ゲーム用途を考えてたからここに書き込んだんだけど、あんまり関係ないのかな?
このスレの最初の方の人達に見てもらいたくって。
向こうにも書き込んでみようかな。
189名前は開発中のものです。:2012/02/01(水) 23:20:06.94 ID:2Eijr2Ns
保守
190 忍法帖【Lv=32,xxxPT】 :2012/02/04(土) 12:03:45.82 ID:YBcddhiB
落葉
191名前は開発中のものです。:2012/03/04(日) 23:48:04.51 ID:IYAv19lc
書き込みテスト
192 【28.4m】 電脳プリオン ◆GDSZsj1GHk :2012/03/10(土) 20:57:35.48 ID:KQUwO9Nk BE:152028735-PLT(12078)

両方使ったことない
193名前は開発中のものです。:2012/04/24(火) 10:34:48.93 ID:wzzo7GXM
194名前は開発中のものです。:2012/06/03(日) 18:46:09.62 ID:tMZzvBuc
保守
19567-1-22-200.tcso.qwest.net:2012/08/07(火) 11:49:11.20 ID:c5hb27GU
hoshu
196名前は開発中のものです。
保守