[もどる]
一括表示
0211 Ver0.160
投稿者:たくみ 2005/05/20(金) 19:07

Ver0.160をリリースしました。

■VARACT 命令を実装しました。
数値変数、文字列変数の相互変換ができるようになりました。
自分で言うのもなんですけど、個人的にこの機能が欲しかった(TT
使い方はマニュアルのほうをご覧ください(すみません…)
さて次だ!

0214 Ver0.161
投稿者:たくみ 2005/05/21(土) 23:04

Ver0.161をリリースしました。

■TASKINFO 命令を実装しました。
現在実行しているスクリプトファイル名と何行目かという情報を、
タスク毎に取得できるようになりました。
今回はテキスト系命令ではないのですが、
デバッグ時に結構有用な機能を実装しておきました。

さて、次回更新予定なのですが、次は 5/27の金曜になります。
来週より、テキスト仕様改善に向けて大規模な手直し及び修正をしますので、
最近やっていた『毎日出来た分を更新』という形態がちょっと出来なくなります。
また、今後に備えてバグを出しにくくするためにも、一度ソースコードの
全体的な修正をしてしまいたいと思います。(リファクタリングというやつです)
で、それが出来ましたら、いろいろ動作チェックした後にリリースしますので、
申し訳ないですがそれまでしばらくお待ちくださいませ。m(_ _)m

0218 Ver0.162
投稿者:たくみ 2005/05/28(土) 05:52

Ver0.162をリリースしました。

今回はテキスト系の実装がメインです。
ただ思ったよりあまり実装できませんでした…すみません(;
もっとかなりガラリと仕様変更する予定だったのですが、
Aを実装するにはまずBを、Bを実装するにはCを、という感じで、
それがGくらいまで続いているような感じでして…(;
その関係もあって、今回よりソースコードの全体的な修正をかけ始めているのですが、結構大変だぁ…(;
ただうまくいけば実行ファイルサイズが減り、実装速度がさらにアップしそうです。
が、ひとまずは実装メインで引き続き頑張ります。もう少々お待ちください。

■文字表示自体を高速化しました。
文字表示に関しては前々から少しずつ高速化してきてはいたのですが、
もうムリかな…と思っていたらまだかなり無駄な処理をさせている部分があることが分かりまして、
ソース全体修正のついでにといろいろチューニングしていたら、かなり高速化できちゃいました。
CPUによりますが200〜400%くらい速くなってます(^^;
MMX Pentium-266MHzマシンで、10000文字の描画計算をするのに 12.6秒もかかっていたのですが、それが 3.2秒になりました。
この速くなった時間を利用していろいろな演出ができるようになりそうです(^^

■文字のアンチエイリアスの有無を設定できるようにしました。
遅いマシンではアンチエイリアスを切って文字表示を速くするという用途に使えるかな…と思いましたが、
今回文字表示の高速化に成功しちゃいましたので、いらないかも…(;
でも例えば、フォントによっては何も加工をしないでそのまま出力したい、という場合にも使えると思います。

■現在表示されているテキスト内容を取得できるようになりました。
システム変数 $_TEXT に、現在表示されているテキストが格納されます。
今後これを利用して、文章履歴を実装していく形になります。
もうひとつ $_TEXT_FLAG というシステム変数も実装予定で、今回の更新で実装してしまいたかったのですが、
間に合いませんでした(TT

■TEXTINFO 命令の E, A, X, Y, MODE キーワードを削除しました。
CGINFO 命令で代用できるようになりました。
今後さらに CG 系の命令に置き換えていく予定です。
そして、将来的にテキストレイヤという概念はなくなる予定です。
そうすることでいままでのいろいろな制限がなくなります。

0226 Ver0.163
投稿者:たくみ 2005/06/07(火) 10:38

Ver0.163をリリースしました。

今回の更新は画像加工の実装とコード見直しによる速度改善がメインです。
また現在、「新・文字表示機能」や「文章履歴」の実現に向けて、
スクリプトを機能毎にパーツ化、モジュール化しようとしているのですが、
現在のYU-RISでは仕様がしっかりしていないためにそれが不可能なため、
先に根本であるYU-RISの仕様の改善を迫られてきてしまいました。
なのでまずはその実装をしておきたいと思います。

■レイヤーの回転、ぼかしが使えるようになりました。
拡大縮小回転と、これでようやくある程度の画像加工が整いました。
文字の回転等もこれを利用していく形になります。
ただし速度上はまだ遅かったり、アンチエイリアスもかかっていないので、
そのあたりは追って改善していく予定です。

■MOVIE2 命令でのムービー表示を高速化しました。
コードを久しぶりに見直したら、文字表示の時と同じ様なかなりの無駄がありまして…(@@;ゞ
MMX266マシンで実験用ムービーをノーウェイト再生で計測してみたところ、
再生終了まで50秒かかっていたのが34秒で再生できるようになりました。
まだチューン出来そうなのですが、時間がかかりそうなのでちょっと後回しにします。
というか今回、以前にゆういちさんより要望のありましたAVIファイルのパック化に成功しまして、
実際にメインマシンやそのひとつ前のマシン等では動いているのですが、
このMMX266マシンでだけ、パックすると原因不明のエラーで再生されない現象が起きてしまいまして…(xx;
パックしないとちゃんと再生されるのですが…なんだろう…;
というわけで、AVIファイルのパック機能はまだ見合わせています。すみません…。

■Jpeg読込処理が若干速くなりました。
実行ファイルサイズが多少(8KB程度)大きくなってしまいましたが、
Jpegの読込はもともと遅かったので、若干とは言えどメリットは大きいと思います。

■@_PAD_UP と @_PAD_DOWN が逆だったのを修正しました。
樹さん不具合報告ありがとうございます(^^)

0236 Ver0.164
投稿者:たくみ 2005/06/12(日) 22:31

Ver0.164をリリースしました。

■拡大縮小回転を高速化しました。
拡大縮小回転の処理があまりに遅いのに耐えかねて、コードを一から見直して高速化しました。
浮動小数演算していたところを徹底的に排除したところ約2倍の高速化が果たせました。
これでようやくなんとか実用レベルの速度になったかな、というところです。
でもまだ遅いので、今後もチューンしていきたいと思います。
その前に各種仕様変更を完了させてしまわないと…;

■@_PAD_LEFT と @_PAD_RIGHT が逆だったのを修正しました。
上下左右全て逆になっていた原因が分かりました。単純なケアレスミスでした…。
樹さん重ねて報告ありがとうございますm(_ _)m

0251 Ver0.165
投稿者:たくみ 2005/07/18(月) 10:10

Ver0.165をリリースしました。

■スクリプト位置のセーブロードができるようになりました。
つ…ついに…(;;
特殊な仕様だっただけに、決定するのに時間をかけすぎたのがいけませんでした。本当にすみません…;
ただ、まだちょっと完全とは言えず、ADVシステムとして実際に使用するには、
残りのテキスト仕様変更も完了させてしまわなければなりません。
(以前から言っていた、テキスト表現が自由自在になるという仕様がそれです)
それと組み合わせることで、飛躍的に自由に組めるようになります。
とはいえ現状でも工夫次第でいろいろ出来ます。
簡単なサンプルが YU-RIS Ver0.165 の sample4 フォルダに入っていますので、
よろしければ実行してみてください。

で、今回よりスクリプト位置のセーブロードができるようになったわけですが、
上でも述べましたが他のシステムと違いましてちょっと特殊になります。
どういうものか簡単に説明しますと、
『現在のスクリプト位置情報を1個の変数に保存して管理する』という考え方になります。

今回実装された機能として、TASK 命令と TASKINFO 命令のそれぞれ機能追加がありまして、
・TASKINFO 命令 → 現在のスクリプト位置情報を取得し、変数に格納する。
・TASK 命令 → 現在のスクリプト位置情報を設定し、実行位置を変える。
という機能が実装されたのですが、
これを利用することで、
例えばセーブする時は、TASKINFO 命令を使ってスクリプト位置情報を変数に保存した後、
SAVE 命令を使ってその変数をファイルに保存すれば、事実上スクリプト位置のセーブになり、
ロードする時は、LOAD 命令で変数をファイルからロードした後、
TASK 命令を使ってその変数に格納されているスクリプト位置情報をセットしてやれば、
事実上スクリプト位置のロードになるという感じです。

『スクリプト位置をファイルとして保存する』という専用の命令を作らずに、
『1個の変数』として保存して管理する、という仕様にしたことにより、
いろんなタイプのセーブロードシステムに汎用的に対応できるようになります。
特に、ちょっと特殊なセーブロードシステムを組もうとするとき、この仕様が活きてくると思います。
例として、
『文章読み返し(バックログ)画面から、任意の位置の文章を選択して、いつでもそこへロードできる』
なんていう機能を持ったシステム(※実際にあります)も、特殊なことをさせずに組む事が可能になります。
また、スクリプト位置情報のセーブロードと、フラグ変数などのセーブロードが独立していますので、
例えばセーブデータのフラグだけリセットさせたい、という場合なども楽に対応できます。

と、いろいろ出来る出来ると言っても、何もサンプルがなければ具体的な記述方法が分からないと思いますので(@@;ゞ
今後、機能を追加次第、サンプル4に順次追加して載せていく予定です。
お待ち下さいませ。


#IF命令のAND、OR対応等の拡張は今回間に合いませんでした…;

0255 Ver0.166
投稿者:たくみ 2005/07/26(火) 01:15

Ver0.166をリリースしました。

■GIFファイルが読み込めるようになりました。
静止画 GIF ファイルの読込に対応しました(^^
アニメーション GIF に関してはまだ検討中です。

■MOVIE2 命令を排除し、CG 命令へと統合しました。
「MOVIE2」を「CG」に書き換えていただければそのまま動作すると思います。
将来的に、アニメーション GIF ファイルに対応する時や、
独自形式のアニメーションファイルに対応する際も、
今後 CG 命令の FRAME キーワードを利用していく形になります。

■CGINFO 命令に FRAME, TOTALFRAME キーワードをそれぞれ追加しました。
読み込んだAVIファイルの「現在のフレーム値」と「総フレーム値」を
調べられるようになりました。

■MOVIEINFO, MOVIEEND 命令を実装しました。
MOVIE 命令ひとつでひとまず事足りていましたが、
他の命令群と規則を統一させるため、機能に応じて
「〜INFO系命令」と「〜END系命令」に命令を分割させました。

■その他各種修正
複数のムービーを読み込むと正常に表示されなかった不具合や、
ウィンドウサイズ(デフォルトだと640x480)以外のサイズのムービーファイルが
正常に表示されなかった不具合を修正しました。

0256 Ver0.167
投稿者:たくみ 2005/08/07(日) 21:54

Ver0.167をリリースしました。
リリースが延びてしまいましてすみませんでした…;

今回、各種演算子に対応させるため、式の展開アルゴリズムを根本から変更しようと
本体とコンパイラともにいろいろ修正していたのですが、
なんだかんだでかなり大がかりになってしまいました(;;
やはり1年以上前に書いたコードは相当汚い…;(今もか;) でも本当に修正した甲斐があって、
本体とコンパイラ合わせてEXEサイズが60KB程度小さくなったうえに、式の演算速度が向上しました(^^
式はコンパイラのほうで解析し、最適化するように設計しましたので、
括弧を多用したり配列変数をネストして使ったり等という複雑な計算においては、かなり高速化しています。
また将来性も備えた設計なので、これからさらに速度を向上させる余地もかなり残っていまして、
正式版リリースの時にでもまた高速化させようと思っています(^^

あぁ…でも、これでようやくIF命令が便利に使えるように…;
こんな調子で早くテキストやセーブロードも便利に使えるように、
今月中には極力いろいろと実装してしまいたいと思います!



■計算式や条件式に論理演算子等が使用できるようになりました

IF[@A==2 && @B==3]
などと記述できるようになりました。
この場合、『Aの値が2で、かつ、Bの値が3なら』という条件式になります。
また、
IF[@A==2 || @B==3] //(←「|」は「SHIFT」キーを押しながら「\」キーを押すと出る記号です)
と記述した場合、『Aの値が2、または、Bの値が3なら』という条件式になります。
これらを利用することで、条件が複数ある場合にその分だけIFを用意せずに済むようになりました。
早速シューティングサンプルのスクリプトを書き換えてみました。

また、計算式中にも論理演算子が記述できるため、
@A=(@B==5)
などと書けるようになりました。この場合どうなるかと言うと、C言語と同様に、
『@Bの値が5なら真として1を返し、@Bの値が5以外なら偽として0を返す』
という評価をします。
@Z=(5>3)
も同様です。この場合、5は3より確かに大きいので、
評価は真となり、変数Zには1が格納されます。

あとついでにビット演算子にも対応しました。
C言語と同様、ANDには「&」、ORには「|」、XORには「^」を使用します。
このあたりは使うことはほとんどないと思いますが、ついでに実装しておきました(^^;
一度に全て説明しきれないので、追ってマニュアルのほうで説明していこうと思います。すみません…;
パソコンのデータの型(ビット等)の知識がちょっとだけ必要になりますが、
ただYU-RISの重要な機能とかではないので、特に知らなくても問題はないです(^^
シフト演算子「<<」「>>」に関してはまだ使用できません。

また文字列変数の条件式での記述ですが、今回の実装でもちょっとまだ出来ませんでした。
これはテキスト系の拡張時に必要な機能になるので、追って出来るようにしたいと思います。



■変数表示方法の仕様が変わりました
いままで変数の中身を表示するのに、@[A] や $[A] と記述していましたが、
これだと変数の値をそのまま表示するだけしかできず、よって、
ただ簡単な計算結果を表示させたいだけなのにいちいち変数を用意しなくてはならなかったり、
また変数に何か最終的な計算、加工などをして表示させたい、等という場合に
対応できませんでした。
それを解決するため、今回のバージョンより仕様を少し改善しました。
新しい仕様では、アンダーバー「_」を使用しまして、
_[@A]
と記述します。
これで、例えば値に5を足して出力したい場合は、
_[@A+5]
とかけますし、ただ単純に数値を出力したい場合、
_[2+3]
と記述できます。
文字列も同様に
_[$A]
_["ABC"]
_["「"$A+"」"]
などと記述できるようになりました。



■文字列変数の文字列一部をカットおよびコピーできるようになりました。
VARACT 命令に CUT キーワード、COPY キーワード、HANTOZEN キーワード、ZENTOHAN キーワードを追加しました。
COPYが「任意の位置から任意の文字だけ取得する」で、
CUTが「任意の位置から任意の文字だけ切り抜き、残ったほうを取得する」という考え方になります。
詳しくはマニュアルの VARACT の項目をご覧下さいませ。



■文字列の記述の仕様が少し変更になりました
文字列の記述の際にダブルクォーテーション「”」の記述が必須になりました。
いままで、
$A=ABC
のように、明らかに文字列とわかる場合は、ダブルクォーテーションの記述が
省略できていました(「+」を使って文字を連結する場合は必須でした)が、
今回の設計変更に伴い、
$A="ABC"
と、必ず「”」で括らなければならなくなりました。
記述が少しだけ面倒になってしまいますが、視認性は良くなるかと思います(^^

ただし、ラベル名の指定に限っては特別に、
いままで通り「”」を付けなくても記述はできます。
ただ検討中でして、今後の仕様変更で記述必須になる可能性はあります。



■対応OSに Windows2003 を追加しました。
MSDN から Windows2003 を入手いたしまして、
動作確認が取れる環境を構築できるようになりまたので、
正式に加えることにしました。
将来的に WindowsVista にも対応予定です。



…と、こんなところでしょうか。
こ、今回は文章が長くなってしまった…。

ここまでお読み頂きありがとうございました…m(_ _;)m

0259 Ver0.168
投稿者:たくみ 2005/08/19(金) 16:34

Ver0.168をリリースしました。
ちょびちょびとリファクタリングを続けています。
機能は増えているのにコードの量が減っていっているのが
なんだか気持ちいいです(^^


■文字列の比較評価が出来るようになりました。

IF[$A=="りんご"] // $Aの中身が「りんご」なら真

このような記述が可能になりました。
これでようやく、文字列変数の中身に応じて処理を変える、ということが可能になりました(^^
これはテキスト系命令の拡張時にいろいろ使うことになると思います。


■各種PNG画像の読み込みに対応しました。
グレースケールPNGや、各色16bitPNG、また8bit以外のインデックスカラーPNG画像などが
読み込めるようになりました。


■複数ゲームパッドの検出に対応しました。
それに伴い、@_PAD_〜系のシステム変数を配列変数に変更しました。

@_PAD_BUTTON1(0) // ID=0として検出されたゲームパッドのボタン1の押下状態

という感じになります。
ゲームパッドの検出IDに関してですが、パッド関連の実装にDirectInputを使用していまして、
その関係上ゲームパッドが検出される順番は残念ながら保証されません。
たとえば「プレステ2用のゲームパッド」と「パソコン用のゲームパッド」の2つを繋いでいたとしまして、
どちらがID=0になるか、ID=1になるかは分からないです。環境によっても多分変わります。
もしかしたら良いやり方があるのかも知れませんが、今のところ分からないです。
なので、もしパッドの順番を変えたい場合は、現状では
パッドのID設定画面などを作って、スクリプトで対処するしかなさそうです…;

※一度、DirectInputを使わない実装を試したのですが、一瞬動きが止まったり等、
なんだか挙動が不安定だったので、あきらめました…;

0260 Ver0.169
投稿者:たくみ 2005/08/22(月) 02:40

Ver0.169をリリースしました。
今回は仕様変更と不具合修正がメインになります。

■macro.yst ファイルと global.yst ファイルが存在しなくても動作するようにしました。
もしグローバル変数を使用しなかったりマクロを使わなくても良い場合など、
ファイルを置かなくてもコンパイルできるように仕様変更しました。

■sysmacro.yst ファイルを排除。マクロ定義は全て macro.yst ファイル内で行うように変更しました。
いままでマクロ定義は sysmacro.yst と macro.yst の2ファイルで定義していましたが、
今回より macro.yst ファイルだけで行うように変更になります。
これは今後、別の形で、複数ファイルによるマクロ定義を可能にするための準備になります。
もし以前のスクリプトを流用したい方で、sysmacro.yst 内でマクロ定義しているものがありましたら、
お手数ですがそれをそのままカット&ペーストで macro.yst のほうへ貼り付けてくださいm(_ _)m

■レイヤをはみ出して文字を描画した場合に強制終了してしまう致命的な不具合を修正しました。
レイヤをはみ出す位置では文字は描画されないように急きょ修正しました。

■サウンド関連のエラーが発生した場合、メッセージが表示されずにフリーズしてしまっていたのを修正しました。
環境によって違うのですが、最悪、OGGファイル名の指定を間違うだけでもプログラムが応答なしになってしまう
場合がありました…。大変失礼いたしました;