スクリプトコンパイラについて ( yac と lex も可 )
■ このスレッドは過去ログ倉庫に格納されています
0001439
01/11/07 15:31ID:GpFz7V+v(エロ)ゲームプログラマーには一番難しい所かもしれません。
yac と lex も可です。
0141名前は開発中のものです。
04/08/19 19:18ID:afoemJ4u0142名前は開発中のものです。
04/10/10 18:42:40ID:K/XMs6Gmパージングがいらないので仮想コード化が楽だし、
比較的軽くて小さなVMが作れるしで個人的には大好きなんだが。
RPN構文に癖がありすぎるからかねぇ。
0143名前は開発中のものです。
04/10/11 00:52:26ID:utv6tbQW構文解析いらないので楽〜
逆ポーランドヽ(´ー`)ノマンセー
0144名前は開発中のものです。
04/10/11 01:23:27ID:J2l165WT半年前の書き込みにレスするのもあれだが
Caluaという、「luaの組み込みを簡単にするためのライブラリ」がある。
ttp://calua.sourceforge.net/
0145名前は開発中のものです。
2005/04/10(日) 02:58:01ID:4CIkTtRihttp://www.angelcode.com/angelscript/
0146名前は開発中のものです。
2006/04/16(日) 01:24:30ID:NIJWxfjnこのスレで言うスクリプトってRPGやギャルゲーのシナリオだけ?
シューティングの敵の出現・動作パターンや格ゲーのモーションデータまで含めると
ゲームの本体プログラム≡スクリプトのインタプリタ
って位ゲーム製作において重要な部分だと思われ。
ここら辺はCで直書きする訳にも行かないし、皆どうしているか聞きたい。
(格ゲーのモーションをCで書いたら相手のモーションと同時実行するために
マルチスレッドが必要だったり、
技をキャンセルするのにスレッドをkillしなくちゃいけなかったり訳分からん)
0147名前は開発中のものです。
2006/04/16(日) 03:25:20ID:aygEIUBSマルチスレッドが必要だったり、
んなあほなww
も前は、キャラクターごとにスレッドを作るのかw
普通は、ゲームでは非プリエンプティブなマルチスレッドを使う。
つまり、コストの低い、擬似タスクな。
あと、モーションは、デザイナにまかせたりするので、スクリプトで制御することも多いよ。
0148146
2006/04/16(日) 09:51:53ID:NIJWxfjn酔ってたせいで何に煽ってるのか分からない煽り口調になってるしw
>非プリエンティブなマルチスレッド
は一般的なOS+Cでは不可能ですよね。機械語で書く場合でしょうか。
それともsetjmpで無理矢理実装とか?
0149名前は開発中のものです。
2006/04/16(日) 14:12:25ID:P72bJmUyコンソールの話だと思われ。
時代遅れの発想なんであまりやって欲しくないけどね。
0150名前は開発中のものです。
2006/04/16(日) 16:14:41ID:F+evVwwX今はまだそれ以前の部分で躓いていて
問題を先送りにしているが、いずれ考えなきゃいけない部分だと
俺も思っている。
インタプリタは難しいんで、MIDLコンパイラみたいに
スクリプトからC++ソース生成じゃ駄目かなあ?
0151146
2006/04/17(月) 01:06:45ID:M8YTTZ7z用途によりますよね。
ギャルゲーやRPGなら大丈夫だけど、アクション系のゲームだと前述のような問題が。
自分はRPGを製作中ですが、複数キャラを同時に歩かせたりメッセージ表示しながらアニメしたりと
「スクリプトのシンクロ実行」を実装する予定なので、頑張ってインタプリタを書いてます。
基本的にCとかは1スレッドにつき1つしかプログラムの「筋」を持てない。
で、ゲームのメインスレッドというのは大抵メッセージループを回す構造になってるわけで、
ループ回しつつ逐次実行のコードを同時に走らせようと思ったら別スレッドにするか
スクリプトとして(もしくはスクリプト風に)実行順序をデータとして持っておいて
ループで実行するしかない、というのが前提条件かと。
最近「生成的プログラミング」とやらが流行ってるお陰で
大抵の言語に出来のよいパーサが開発されたり、
継続やらモナドやらExpressionTemplateやら「言語内言語」に関する技術がたくさん出てきたりしているので、
その辺をゲーム開発に取り込んでいったら面白いんじゃないか、と思う次第であります。
0152名前は開発中のものです。
2006/04/17(月) 01:19:59ID:2X7IXBs2某ステフでアクションRPGのスクリプトを作ってますが、シンクロでは悩まされます。
試行錯誤であーでもないこーでもないと何とかやってますが、地味に面白いですよねw
0153名前は開発中のものです。
2006/05/10(水) 15:25:54ID:BR/3osvo0154名前は開発中のものです。
2006/05/10(水) 15:31:42ID:5no3yNph詳細希望
0155名前は開発中のものです。
2006/05/11(木) 23:55:49ID:OvObgVlQboost::spirit使ってみろ、と。
0156名前は開発中のものです。
2006/05/12(金) 01:33:27ID:sXlqKymr0157151
2006/05/14(日) 21:20:12ID:VGwK5BXtpTaskをタスクオブジェクト(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(); }
};
みたいな感じで行けます。
0158151
2006/05/14(日) 21:21:52ID:VGwK5BXtえっと…(sleep 10)どうしようか。wait
これを
・全角文字を""で囲む
・全体を'()で囲む
と処理すると
'("えっと…" (sleep 10) "どうしようか。" wait)
というschemeコードになります。リストの要素要素がEvalNextで返されるTaskです。
現在エンジンにはvismというschemeライブラリを使っていますが、
公開停止しているのと微妙に仕様が合わないのとで、現在手書きを検討しています。
0159名前は開発中のものです。
2006/05/19(金) 13:39:30ID:Gqm6Z0J6そのやり方覚えておこう
0160名前は開発中のものです。
2006/07/15(土) 03:22:31ID:+R4TsQjQと、チラシの裏
0161名前は開発中のものです。
2006/09/01(金) 23:48:53ID:/m07WVDn0162名前は開発中のものです。
2006/09/02(土) 13:11:40ID:VymI6uhUttp://onigiri.s3.xrea.com:8080/delphi/index.php?cmd=read&page=gikobasic
だれか所在を知らないか?
0163名前は開発中のものです。
2006/09/29(金) 12:41:28ID:SBqDXED00164名前は開発中のものです。
2006/09/29(金) 12:43:17ID:DcIeecDs0165名前は開発中のものです。
2006/10/02(月) 16:55:37ID:3LC0p1Pp使わせて貰ったことあるからちと悲しい
0166名前は開発中のものです。
2006/10/02(月) 17:06:00ID:yaGw0AJAそして誰も作らないだけだぜ
0167名前は開発中のものです。
2006/10/06(金) 01:32:30ID:lE7We31z中途半端にHSP互換じゃなくて、完全互換の方がよかったのかなと
チラシの裏
0168名前は開発中のものです。
2007/04/14(土) 14:31:45ID:sT9fQnfw最近、言語自体に興味を持って作り始めましたが
数字と演算子の数を出力するぐらいしか出来ません。
0169名前は開発中のものです。
2007/07/12(木) 20:51:47ID:JmSceXMOグローバルスコープなフラグとラベルジャンプでできたスクリプトでは、
フラグの一貫性やループに陥っていないか等の解析が手動でも自動でも
著しく困難になる。
凝り性のシナリオライターが作ったスパゲッティフローチャートを
if, for, while & 関数・サブルーチンだけで書き下せると思う?
0170名前は開発中のものです。
2007/07/15(日) 01:32:20ID:X6VsKP490171名前は開発中のものです。
2007/07/23(月) 04:01:14ID:zHMsQNv9色んな問題をスクリプトだけで解決しようとしすぎじゃね?
0172名前は開発中のものです。
2007/07/30(月) 23:04:20ID:mh1RLDn7俺がxmlの研究目的で作ってるxmlベースの言語が
narrative documentをプログラマブルに扱えるものでPLの制御構造と組み込みライブラリと例外処理と文章に対するメタデータ記述能力を持ってるが
こいつはメモリ上に中間コード吐いてインタープリタで直に実行するかほかの言語のソースコード吐くようになってて要するにEiffelなんだが
>シナリオ用スクリプトを構造化 は出来てるぞ。
ただし、ライブラリは組み込みのみでそのライブラリを作るのはプログラマって割り切ってる。
あと要素の評価結果が文字列なら標準出力へ出力するんだけどその標準出力を定義するのもプログラマ。
つまり組み込みライブラリと出力先をADVエンジン用に実装すればADVエンジンへの応用が利く。
こういうもんを作れば
>シナリオ用スクリプトを構造化すること
スパゲッティフローチャートをif, for, while & 関数・サブルーチンだけで書き下す
は実際に出来てる。
あと言語そのものがxmlなんでXSLTやXSL-FOでhtmlやPDFへ"スパゲッティフローチャート"を変換できる。
そのためにメタデータ記述能力を持たせた。
あとxmlそのものが機械的に管理されることを前提に
設計されてるのでIDEなんかが作りやすいメリットもある。
欠点は専門的すぎてちょっとしたhypertext systemを実装できるくらいの学術知識が必要かな。情報系の卒論向きだな。
ラベルによるgotoは全部xlinkだったりするし。
0173名前は開発中のものです。
2007/07/30(月) 23:06:52ID:mh1RLDn7そういう前提で作ってるし。
0174名前は開発中のものです。
2007/08/02(木) 18:38:56ID:IqLuhQEt結局スパゲティかよ('A`)
0175名前は開発中のものです。
2009/01/02(金) 22:08:59ID:qteump49目的に合わせた複数の言語を作り、共通の中間コードにコンパイルして、共通のVMで動作させる予定なのだが、VMの仕様で悩み中
最初はCOMET互換のものを作ってたんだが、スタックマシンの方がシンプルになりそうな気がする
フラグレジスタとか考えなくていいし、そもそもソフトウェアで動作させるんだからレジスタとかいらなくね?みたいな
他のスクリプトのVMの実装を知らないんだが参考までに、おまいらの意見をいただけないでしょうか
0176名前は開発中のものです。
2009/01/03(土) 19:42:11ID:LhDhqbivただ内部データ(登場時刻、位置、画像、移動パターン)に変換するのみ
0177名前は開発中のものです。
2009/01/04(日) 23:05:16ID:ZWLW/6f7前にゲーム製作技術板でゲーム用DSLにJVMのサブセット実装してた人がいたよ。
(しかもコンパイラはJavaを使うらしいw)
まあ、再発明になると面白みがないだろうがポータブルな実装つくるのもいいんでないのかな?
0178名前は開発中のものです。
2009/01/04(日) 23:06:00ID:ZWLW/6f70179名前は開発中のものです。
2009/02/03(火) 21:19:13ID:AbbFosQL0180名前は開発中のものです。
2009/02/06(金) 12:39:51ID:sIJNyM9NWhat is "Ypsilon"?
0181名前は開発中のものです。
2009/02/06(金) 20:54:52ID:MuHkM83Cもしかして、リトルウイングのScheme処理系?
http://www.littlewingpinball.com/contents/ja/ypsilon.html
0182名前は開発中のものです。
2009/10/16(金) 20:40:03ID:ZrBg9mxX0183名前は開発中のものです。
2010/07/27(火) 16:50:26ID:Wuh12NAUニートで何が悪い
Scheme処理系作ったら本気出す
0184名前は開発中のものです。
2010/08/08(日) 21:17:40ID:JbWPlsYy0185名前は開発中のものです。
2010/09/30(木) 20:19:23ID:RMd6Ohi3なんという定義ファイル
0186名前は開発中のものです。
2011/07/07(木) 04:18:10.46ID:zE+DGvJmできるだけ単純に書けて、単純な出力をするスクリプト言語を作った。
定義ファイル代わり+シーケンスも多少は書けるってとこ。
興味があったらどうぞ。
ttp://kushi.lv9.org/teco/index.html
0187名前は開発中のものです。
2011/07/07(木) 12:17:50.82ID:kgWPk38Hhttp://hibari.2ch.net/test/read.cgi/tech/1301414458/
こっちの方が近いと思う。
0188186
2011/07/07(木) 13:21:45.30ID:zE+DGvJmゲーム用途を考えてたからここに書き込んだんだけど、あんまり関係ないのかな?
このスレの最初の方の人達に見てもらいたくって。
向こうにも書き込んでみようかな。
0189名前は開発中のものです。
2012/02/01(水) 23:20:06.94ID:2Eijr2Ns0191名前は開発中のものです。
2012/03/04(日) 23:48:04.51ID:IYAv19lc
両方使ったことない
0193名前は開発中のものです。
2012/04/24(火) 10:34:48.93ID:wzzo7GXM0194名前は開発中のものです。
2012/06/03(日) 18:46:09.62ID:tMZzvBuc0196名前は開発中のものです。
2013/12/27(金) 00:30:00.81ID:BInQBZ9j■ このスレッドは過去ログ倉庫に格納されています