YU-RIS サポート掲示板

0464 また「SAVE」と「LOAD」について
投稿者:Deathworks 2006/05/26(金) 23:21

今日は、Deathworksです。

> おぉっ、外人さんからの書き込みだ!凄い!

> > ありがとうございます。おぉ、グローバルに認められた…嬉しい m(T▽T)m

私がそんなに偉くないと思いますけど(汗)。

> それでは、近いうちに「フォルダ(save/)」と「拡張子(.sd)」を変更できるように、あとパスの指定もできるようにします。
> > あと、実は SAVE, LOAD 命令の仕様を少し変更しようと思っています。
> OPEN, CLOSE 命令を追加したいと思っていまして、
> SAVE, LOAD 命令の前と後ろに OPEN, CLOSE 命令をそれぞれ書かないといけないようになります。
> ↓サンプルとして下のような感じです。
> > OPEN[FILE="userdata.dat"]
> SAVE[DNO=1 SET=@A()]
> SAVE[DNO=2 SET=$B()]
> SAVE[DNO=3 ID=LAYER]
> CLOSE[]
> > いままでより少し面倒になりますが、けれど、セーブの速度がUPするというメリットがあります。

拡張子など変化出来るようになると助かります。「OPEN」と「CLOSE」はあって私にとって問題ではありませんけど、「CLOSE」を忘れる人がいればどうなるのがちょっと気になります。私の考えでは、ローカルの変数と同じく、自動的に「.yst」ファイルの終わりや「RETURN」命令で「CLOSE」になるのが一番安全だと思います。まぁ、今だけ出来た考えだけです。

「LOAD」の命令のマニュアルの説明で小さな間違いがありそうです。キーワードのチャートでDNOが0〜8192で大丈夫だと書いてありますけど、でも実際は1〜8192です。「SAVE」の説明で正しい様に書いてありますから、多分問題になりませんけど。

そして、「SAVE」と「LOAD」の機能についてもう一つの質問と考えがあります:
INT[@Source(3,3)]
INT[@Target(7,7)]
SAVE[FILE="kamawan" DNO=13 SET=@Source()]
LOAD[FILE="kamawan" DNO=13 LET=@Target()]
そうすれば、@Target()がどんな内容になりますか?それとも「LOAD」の失敗になります?そして、@Source()と@Target()の配列としての大きさが逆なら、平気ですか?

実は、ちょっとRPGについて考えたら、「LOAD」と「SAVE」に「END1」「END2」「END3」。。。「END8」のキーワードがあればいいと思います。配列なら、「ENDn」でn次の大きさを決定出来るように:
INT[@Source(3,3)]
INT[@Target(7,7)]
SAVE[FILE="kamawan" DNO=13 SET=@Source()]
LOAD[FILE="kamawan" DNO=13 LET=@Target() END1=3 END2=3]
そうすれば、@Source()のデータが@Target(0,0)から@Target(2,2)へコピーされる。
「SAVE」に同じような機能があれば、配列の部分をセーブすることが出来ます。

RPGのマップについて考えたら、こんなことが浮かびました。だって、プログラムの中のマップは大体

MACRO[NAME="X_Max" STR="200"]
MACRO[NAME="Y_Max" STR="200"]

G_INT[@DW_Map(\[X_Max],\[Y_Max])]

のようなマップの最大の大きさを持つような配列になります。でも、これより小さなマップの方が多いですから、35x20などのマップの場合のデータファイルの大きさが気になりました。

> > なるほど。const 定数ですね。
> IF[@X > \MaxX] @X=\MaxX IFEND[]
> こんな感じに使えますね(^^

うん。コードが分かり易くなります。そして何かの変化があれば、簡単に直します:例えば、配列を作るにも使えますから、後で「この配列が小さ過ぎる!」などのことがあっても、一つの「MACRO」の変化ですむことです。

> > レイヤの部分コピー命令ですね。
> まだ公開していませんが、もうほとんど機能は完成しています。
> もうすぐ公開しようと思っています(^^)
(T〜T)嬉しいです。

> > レイヤセット自体には「ID」しか使えないですが、
> レイヤセットの中のレイヤなら、「ID」「NO」両方使えます。
> > たとえば、
> > CG[ID=A/ SX=400 SY=300 Z=1] //400x300のレイヤセット「LSET」を作成
> > CG[ID=A/AA NO=1 Z=10 FILE="〜〜"] //レイヤ「AA」を作成
> CG[ID=A/BB NO=2 Z=30 FILE="〜〜"] //レイヤ「BB」を作成
> CG[ID=A/CC/ Z=20 SX=200 SY=200] //レイヤセット「CC」を作成
> > CG[ID=A/CC/AAA NO=1 Z=8 FILE="〜〜"] //レイヤ「AAA」を作成
> CG[ID=A/CC/BBB NO=2 Z=7 FILE="〜〜"] //レイヤ「BBB」を作成
> CG[ID=A/CC/CCC/ Z=1 SX=600 SY=500] //レイヤセット「CCC」を作成
> > 上のように、レイヤセットの中のレイヤにもNOが使えます。

なるほど、そうなら楽に使えると思います。

> 有り難うございますー(^^)
> ただ、吉里吉里やHSPでしか出来ない事もかなりたくさんありますから、
> 私もまだまだ頑張らないといけません。
> もっとたくさんの機能を追加したら、正式版(Ver1.0)を公開したいと思っています。

今のバージョンでも色々な事が出来ると思います。ところで、一つだけが気になりました。「Eris」というのはノベルのシステムですね。なぜ、皆さんがノベルのシステムを作るかしら。他のシステムと比べたら、ノベルのシステムの方が圧的に多いです。無敵の「Nscripter」からスクリーンのLayoutに上手な「ComicMaker」と初心者に対して優しいな「Yuuki!Novel」だけではありません、もう星の数ほどのシステムがあります。比べたら、インタネットからもらうの2DRPGシステム、例えば、は大体「Like A Quest Hyper」と「J-RPG」と「ERPG」だけになります。(「Cardwirth」と「SRC」がちょっと違うRPGタイプですから、ここに出ません。)勘違いしないで下さい。私もデジタルノベルが大好きです。ただ、この数の違いが不思議だと思います。一度聞きたいと思うことでしたから、ついに出てしまいましたけど、よろしければ考えを教えてくれませんか。

それでは、

Deathworks


- 関連一覧ツリー (■ をクリックするとツリー全体を一括表示します)