こんにちわ。久しぶりに投稿させていただきます。
現在、STGを作っていまして、敵の出現とか移動とかをスクリプトでやろうかなと思っています。
方法としては、テキストファイルに書いて解析かなにかするという方法、プログラムに直接書く(これは避けたい)という方法が思い浮かんでます。
インタプリタがなんちゃらかんちゃらとかも聞いたことありますね。
Luaとか勧められたこともあるんですが、よくわからないのでやめておきました。
みなさんならどうされますか?
言語はC++です。
敵のスクリプト
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 敵のスクリプト
簡単なのを試しに作ってみたらどうでしょうか?
スクリプト言語を本気でやるとLuaより難しくなってしまうと思います。
テキストに
[コマンド パラメータ]
をずらっ~と並べて、これを読み込んで配列などに格納することで制御できると思いますよ。
コマンドやパラメータは良く考えて設計しないといけませんが。
スクリプト言語を本気でやるとLuaより難しくなってしまうと思います。
テキストに
[コマンド パラメータ]
をずらっ~と並べて、これを読み込んで配列などに格納することで制御できると思いますよ。
コマンドやパラメータは良く考えて設計しないといけませんが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 敵のスクリプト
はじめまして。
スクリプトの構文解析は自分でやろうとするとかなり敷居が高い(ごく単純なスクリプトなら別ですが)ので、luaはいいと思いますよ。
市販ゲームにも使われてますし。
ところで、luaのような組み込みスクリプト言語で、Unicode(ワイド文字列)に対応したものってありますか?
つまり、wchar_tで表すような文字列を使いたいんです。
スクリプトの構文解析は自分でやろうとするとかなり敷居が高い(ごく単純なスクリプトなら別ですが)ので、luaはいいと思いますよ。
市販ゲームにも使われてますし。
ところで、luaのような組み込みスクリプト言語で、Unicode(ワイド文字列)に対応したものってありますか?
つまり、wchar_tで表すような文字列を使いたいんです。
Re: 敵のスクリプト
普通に、
move 2, 3 // x座標を2ふやし、y座標を3ふやす
とかでいいんですかね。(txtファイルかなんかに書いた場合
Luaは、確かに市販ゲームにも使われていると聞きましたね。考えておきます。
ワイド文字に対応してるのはわかりませんw 申し訳ございません。
お2人ともありがとうございました。
ほかの方もできれば回答よろしくお願いします。
move 2, 3 // x座標を2ふやし、y座標を3ふやす
とかでいいんですかね。(txtファイルかなんかに書いた場合
Luaは、確かに市販ゲームにも使われていると聞きましたね。考えておきます。
ワイド文字に対応してるのはわかりませんw 申し訳ございません。
お2人ともありがとうございました。
ほかの方もできれば回答よろしくお願いします。
Re: 敵のスクリプト
テキストファイルをPerlで前処理してバイナリデータにパックして、char配列に読み込んで逐次実行というふうにすることが多いです。
move 2, 3
なら
0x00 0x02 0x00 0x03 0x00
というふうにバイナリデータに変換します。
0x00 → move命令に振った番号
0x02 0x00 → 2バイトのリトルエンディアンで2
0x03 0x00 → 2バイトのリトルエンディアンで3
というふうに自由に仕様を決めてやります。
前処理で文法や構文をチェックできますし、分岐のオフセット計算も済ませておけるので、メインプログラムをシンプルにできます。
move 2, 3
なら
0x00 0x02 0x00 0x03 0x00
というふうにバイナリデータに変換します。
0x00 → move命令に振った番号
0x02 0x00 → 2バイトのリトルエンディアンで2
0x03 0x00 → 2バイトのリトルエンディアンで3
というふうに自由に仕様を決めてやります。
前処理で文法や構文をチェックできますし、分岐のオフセット計算も済ませておけるので、メインプログラムをシンプルにできます。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 敵のスクリプト
ISLeさんの前処理は、PerlじゃなくてもvbscriptでもC#でもC++で得意な言語で処理すれば良いと思います。
Excelにコマンドを書いて、VBAで前処理をさせる方法もあります。
ただ、前処理は一種の中間言語コンパイルですので一手間増えることになります。
どちらにしても内部に取り込むときに中間言語化は必要なんですけどね。
コマンドは色々アプローチがありますね。
move 2, 3 // x座標を2ふやし、y座標を3ふやす
これもひとつの方法だと思います。
とりあえず実装は置いておいて、自分に必要な制御を出来るコマンドを組み立ててみることから始めて見てください。
Luaは複雑な条件制御とかを考えないなら不要かなぁと思う次第です。
Excelにコマンドを書いて、VBAで前処理をさせる方法もあります。
ただ、前処理は一種の中間言語コンパイルですので一手間増えることになります。
どちらにしても内部に取り込むときに中間言語化は必要なんですけどね。
コマンドは色々アプローチがありますね。
move 2, 3 // x座標を2ふやし、y座標を3ふやす
これもひとつの方法だと思います。
とりあえず実装は置いておいて、自分に必要な制御を出来るコマンドを組み立ててみることから始めて見てください。
Luaは複雑な条件制御とかを考えないなら不要かなぁと思う次第です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 敵のスクリプト
ISLeさん
なるほど、そういうやり方があるんですね。参考になりました。ありがとうございます・
softyaさん
中間言語化ですか、聞いたことぐらいしかありませんでした。
言語は、というかC++しかまともに組めないので、それでいこうかなと思いますw
お2人ともありがとうございました。やってみます。
なるほど、そういうやり方があるんですね。参考になりました。ありがとうございます・
softyaさん
中間言語化ですか、聞いたことぐらいしかありませんでした。
言語は、というかC++しかまともに組めないので、それでいこうかなと思いますw
お2人ともありがとうございました。やってみます。