空のノート - note of void.


Menu

Navi
Auther
Webclap
Search
Categories
Archives
Recent
Comments
Trackbacks
Advertise
RSS1.0 XML


Entries


2009-06-09

Tugumi inline-if 演算子

前回書いたように現在構文解析器を書き直しているわけですが、都合でスクリプトエンジンも幾らか構造変更することになりました。 その影響でIIf関数の仕様が普通の関数になる(戻る)ため、短絡評価(選ばれない方の式は評価されない)をさせるために新しく演算子を追加しようと思っています。

そこで問題なのが構文です。 既存の言語でもこの類の演算子は大抵存在するものの、構文は言語によってまちまちであり、Tugumiに取り入れるに当たってどのようなものにしようか迷っているわけです。

候補としては以下のようなものを考えています。

# SRCのIIf関数の代替構文
#   value = IIf(Cond, Then_value, Else_value)
# condが真ならthen_valueを返し、偽ならelse_valueを返す

# 1.Python風
value = Then_value if Cond else Else_value

# 1B.Python風+endif
value = Then_value if Cond else Else_value endif

# 2.C風
value = Cond ? Then_value : Else_value

# 3.単純インライン化
value = if Cond then Then_value else Else_value endif

# 4.他の構文
# 5.追加しない

最初は1にしようかと思ったのですが、それで良いかどうかにはあまり確信がありません。 まあ大した事ではないと言えばその通りですが、何か意見等あればどうぞ。 特に何も無ければ適当に決めようと思います。


2009-06-05

R-TYPE FINAL コンプリート

全101機体、やっとのことで開発完了。 結構時間が掛かりましたが、内容的には楽しんでプレイ出来たのではないでしょうか。 理不尽に見えるようなミスも少なく、いらいらする事があまり無かったのも良い点だったと思います。 ところで最後の3機は見た目以外は全く同じなんでしょうかね?

ちなみに究極互換機を使ったカスタムも幾つか試してみましたが、現在使っているのは以下のような組み合わせです。

機体R-100 CURTAIN CALL
波動砲超新星波動砲
フォースシャドウ・フォース
ビットグリーン・ポッド
ミサイル6Wayミサイル

見ての通りとにかく多量の弾幕を張る射撃型で、フォースを付け替えなくても全方位攻撃を出来るのが長所。 シャドウフォースの高速リターンも地味に使い易いです。 火力は射撃で十分なので、波動砲は地形貫通要員ということで炸裂型を選択。 衝撃波動砲や圧縮炸裂波動砲でも良いのですが、微妙にこちらのほうが威力が高い(ような気がする)ので。 この構成でとりあえず通しプレイしてみた所Cルートであっさりノーコンティニュークリア出来てしまって吃驚でした。


2009-05-30

boost::spirit v2

前回で書いた構文解析が遅い件、どうもspiritのast_parseを使って構文木を構築する部分が遅いような感じです。 プログラム上、そこを変更するとなると解析部全体の見直しが必要になるため、結局パーザを最初から書き直すことに。 解析ライブラリを再度選ぶに当たってはlex/yaccやre2c/bison等という手も考えたのですが、APIが再入可能でなかったり出来れば依存ライブラリを増やしたくないという事情もあり、折角なのでboostに1.36から入ったspirit v2を使ってみる事にしました。 ドキュメントがまだ不完全なのである程度自分でソースを調べながら使わなければならないのですが、やはり新しいものということで実際に使ってみたいというわけです。

v2の今までと違う最大の点といえば、karma書式化出力ライブラリ、lex字句解析ライブラリ、qi構文解析ライブラリ(+phoenix)という構造に分割された事でしょうか。 と言っても今までの機能に相当するのはqiだけで、他の二つは実質新規追加のようなものです。 lexは元々別のlexertlというライブラリをspiritに取り込んで協調動作のためのラッパを被せたものらしいです。 ちなみにTugumiでは出力は不要なのでkarmaは使いません。

これらは内部的にはboost::proto(Expression Templateライブラリ)を使っているので、ソースが従来に輪をかけて激しく読みづらいです。 ステップ実行がほとんど無理な程入り組んでいるので使い始めてからちょっと後悔しましたが、何とか判ってきたのでこのまま頑張ってみようと思います。


2009-05-21

boost::spiritは遅いのか?

Tugumiの開発は進んでいますが、今回はちょっとeveファイルの構文解析が予想以上に遅いという問題が浮上して困りました。 しかもまだ解決していません。

戦闘アニメの動作確認を行うためにアニメのイベントファイルを全て読み込ませてみた所、最適化後でも解析終了まで5分ほど掛かる事が判り、問題の解決法を模索する事に。 現状ではあまりにも遅いため、最低限今の20倍は高速化しないと実用に耐えません。 解析ライブラリには今の所boost::spirit (classic)を使っているのですが、使い方が悪いのかライブラリが遅いのか判らないので改善の取っ掛かりがまだ掴めないでいます。 コンパイルが遅いのはもう諦めましたが、実行時の速度まで遅いのはやはり問題です。 今から解析部を書き直すというのも億劫ですし、どうしたものでしょうかね…。


2009-05-08

R-TYPE FINAL プレイ中

機体が沢山あって中々面白いです。 R-TYPEは3しかプレイ経験は無いのですが、STGも中々楽しめます。 と言っても下手の横好きであり、難易度最低で丁度いいくらいで…それでもFinal-Cはクリア出来ていませんが、まあそれはそれとして。

そういうわけで出現機体も60機くらいで、まだ全部は揃っていません。 バイド系機体の「B-3B METALIC DAWN」が出た辺りです。 ちなみに使用頻度では、(機体出現のための使用を除けば)序盤は「R-9A3 LADY LOVE」「R-9C WAR-HEAD」、中盤以降は「R-9AX2 DINNER BELL」「R-11S TROPICAL ANGEL」が高めでした。 お気に入りは「R-9C WAR-HEAD」「W-2 KIWI BERRY」でしょうかね。 ショットガンレーザーや竜巻レーザーは強力で中々気分がいいです。 「R-9S STRIKE BOMBER」のメガ波動砲も強いですが、逆に強過ぎてインチキしている気分になるのであまり使いませんでした…。