KiSS制作における課題

ここにあるのは当方のKiSS制作における課題点などを羅列した、メモ書きの
ようなページです。FKiSS周りの話が分からないと意味不明かとは思いますが
そういうページなのであしからず。

※また、下記の内容は私が実際にKiSS作成する過程で感じた事や、知った事柄であり
実際のKiSSの仕組みや仕様と異なって理解している場合があります。
ご了承ください。

movevyx,yにおけるマイナス軸への移動。

あるオブジェクトに連動し対象オブジェクトの位置を移動させる事のできる
FKiSS2 (version 2)の命令
movebyx(#n,i,j)*x軸(=横方向)と
movebyy(#n,i,j)*y軸(=縦方向)がある。

使用法として今回は縦軸への移動を試そうと思うので
movebyy(移動させるオブジェクト#,対象となるオブジェクト#,移動させる値)
で合っているはず。

実際この命令を記述しテストしてみるとy軸方向への移動は実行される。
基本的に対象となるオブジェクトの頂点を0として入力した数値分
対象となるオブジェクトの位置も移動されるという寸法のようだ。

なるほどね、と思ったがこれを実際どのように利用するかは思案のしどころ。
KiSSデータはFKiSSになってからインタラクティブな要素が大幅に増えたが
従来の着せ替えセットを作っている身からすると、なにをどうできるのか結構
考えてしまう物らしい。

と言った話題はさておいて、現在の課題点。
上記の通りオブジェクトに連動し、他のオブジェクトを移動させる事ができるのは
わかった。ただしこれは正の値の話で、負の値、つまりマイナス方向への値の指定が
今の所出来ていない。
上記命令文の数値の部分に[10]と入れても[-10]と入れても下方向(つまりx軸への
正の数値分)へ10移動する。

なお、これはMac上での話でありWindows10上でKISSLDを用いた場合マイナスの値は
反映される。
つまりMac上ではマイナスの値が使えないと見て良さそうだ。

movebyy、movebyxでマイナスの値を使いたい場合、最悪Macを切り捨てる
必要があるという事だろうか? どちらにせよ現行のMacはローダーが未対応という
事なので10.7以降のマックユーザーは試遊出来ないという事にかわりは無いが…

transparent( )の処理

FKiSSには初期バージョンからtransparent( )の命令が存在する。これはセルを
透過させる命令だ。KiSSでアルファチャンネルを扱える…

の!?

の。

(正確にはアルファチャンネルとは違う)
にわかには信じがたいが16色のデータでもセル単位で透過処理を施せる。
そんなのがあるんならもっと早く教えてくださいよー!
と私は声を大にして言いたい。

そこでrtd15cで初めてtransparent( )命令を用いてみた。
kissldではtransparent( )の命令が正常に機能していたので、Mac上でも確認を…
と思った所、french kiss carbonではtransparent( )が機能していない。
これもまたkissldとfrench kiss carbonの差なのだろうか?

と思っていたのだが、ネット上の資料を見ていて
セルの;に続く末尾にも透過命令を書き込める事を知る。

#0 ex.cel : 0 ;%t127

上で言うと;以降の%t127が透過の命令。%t以降の数値0〜255の範囲で指定でき、
0は完全不透明、255は完全透明となる。
※255ではなく256という資料もあり謎。ただ多少大きめの数値にしてもエラーを
吐いたりと言う事は無い様子。

この命令と;@EventHandler以降の命令構文は何が違うのか?

セルの末尾に書くと単純にそのセルの透明度が設定される。
なおこの場合transparent( )命令をサポートしていないローダーでも
作用するとの事だが、確認できる環境に無いのでよくわからない。
とりあえずkissld、french kiss carbonでは機能している。

そして、;@EventHandler以降はイベントに対するアクションとして使える。
例えばあるセルとクリックすると服が透ける…などと言うアクションに
使用出来るという事だ。
つまりrtd15cでの使用法はあまり意味をなしていない。

なお、french kiss carobon上で;@EventHandler以降のアクションを使う場合
対象となるセルに;%t[数値]を書かないといけないようだ。※不透明の場合でも。
ただし;%t0だとなぜかtransparent( )の命令が実行されないので;%t1に設定するか
;@initialize()で透明度を0にしてしまえば良いはず。
※どうやらそんな事は無い模様。調査を続ける。

※追記

透過の命令は数値で行われるが、例えばボタンAを押したら
透過度50(;@transparent("ex.cel" ,50))
ボタンBを押したら
透過度100(;@transparent("ex.cel" ,100))
などと設定したとする。

理想ではボタンに応じてセルの透明度を50、100にして欲しい所だが
実際には透過度は重複される。

つまりボタンAを押したあとにボタンBを押すと、ボタンAの透過度50に
ボタンBの透過度100が加算されex.celの透過度は150となる。
同じようにボタンAを押したあと、再度ボタンAを押すと
透過度は50+50で100となる。
無論ボタンAを押すとボタンAもアンマップされる、などの処理を
しているならその限りではないが、それだと透過しっぱなしという
事になる。

一度きりの命令で透明度を設定するならともかく、ボタンなどで透明度を
いじれるようにしたい場合は透明度を一度256(完全不透明)に設定してから、
再度、実際に指定したい値を入れるのが良いと思う。
なお、透明度の数値にはマイナス値も使用可能。

rtd17c.lzhでは

;@press(#57)sound("click05.wav")
;@map(#61)
;@transparent("shirt.cel",-256)
;@transparent("shirt.cel",30)
;@press(#58)sound("click05.wav")
;@map(#61)map(#62)
;@transparent("shirt.cel",-256)
;@transparent("shirt.cel",60)

と言ったような感じでcnfを書いている。ここでは透過度を一度
-256で完全不透明にしたのち、改めて透過度を設定している。
逆にrtd16c.lzhではプラスマイナスのボタンを作って透過度を
上げ下げできる仕組みだった。

というかこの値、0で透明、数値が上がるとどんどん不透明になっていくので
正しくは”透明度”ではなく”不透明度”なのかもしれない。

※なぜこんなことを書いたのかだが。
正しくは0は不透明、256で完全透明である。真逆のことを書いていた。

セルの配置と順番

cnf最下段はセルの配置位置が記録されている。セルは記述した順に
上層となる。当然ながら

#1 1.cel : 0 1 2 3 4 5 6 7 8 9 ;
#0 1000.cel : 0 1 2 3 4 5 6 7 8 9 ;

セル固有の名前は配置順に何の意味ももたらさない。上の例では
1.celが1000.celの上に配置される。

#マークもセルの配置順位は意味をもたらさない。上記同様
#0と#100の配置順はcnfに記述した順番。

そしてセルの配置はx,yで行われている。
ローダーを使用しセルの配置と保存を行う事で$0以降にセルの
位置を示す座標が記録される。

02
これを見るとわかるように、$0以降に*マークに一つずつ#に
割り当てられたセルの座標が記録される。#に割り当てられた
セルが無い場合や、座標が0,0(左上の初期位置)の場合*マークの
ままのようだ。

つまり座標さえわかっていればローダーを用いずにセルの配置が可能
という事になる、あくまで理論上可能というレベルだが。
また$0はパレット組を持っている場合にパレットの番号を指定できる。
パレット組を持っていない場合は$0以外を記述する意味は無い。

 そして最近まで勘違いしていたが、オブジェクト番号は連続している
必要は無いことが判明。#0,#1.#2...と欠けること無くつなげていかないと
いけない物となぜか勝手に思ってたが、実際は全くそんなことはない。

つまりセルの分類ごとに番号を振れると言うことになる。
ただあくまで振れるのは数字であり#Aや#☆などは無理。
またこの番号を膨大な数にしても認識するのかも不明。
調べりゃいい話だが…

グラフィックコンバーター

KiSSデータの作成…と言うかcel化する作業において現状のOSXでそれができるのは
グラフィックコンバーター一択であると思うのは今も変わらない。
というか他に手があるならぜひとも試してみたい。が、KiSS作成ツールを
このご時世に作成しようと言う人というのもいないのだろう。
windowsならともかく、Macじゃ特に…

そんなグラフィックコンバーターでセル化する作業をしていて、頻繁に落ちる事態に
遭遇した。原因が突き止められるならともかく、それが皆目分からず途方にくれ
windowsでのセル化作業を行うか悩んだが、グラフィックコンバーターの
初期設定ファイル(.plistのファイル)を捨てた所、すんなりセル化作業が終了。

celに変換するのに際しては、パレットファイル(.KCF)をDo not createにしても
勝手に作成されるという既知の問題がある。
パレットファイルはKiSSデータに必須なので「作成」のチェックを入れる。そうすると
以後はどちらにチェックを入れてもKCFが作成されてしまう。どうもこれも
トラブルに関係している気がする…気がする止まりだが。

なお、これも初期設定ファイルの削除でDo not create状態になり、KCFの作成が
止まる。

グラフィックコンバーターでの作業でソフトが頻繁に落ちるなどという場合は
初期設定ファイルを捨ててみるのが良いかもしれない。
その場合、ファイルは

/Users/○○(ユーザー名)/Library/Preference/com.lemkesoft.graphicconverter.plist

にあると思う。

 余談になるが、French Kiss Carbonが使用できないos10.7以降でも
グラフィックコンバーターではセルデータの作成は可能なのだろうか?
セルは作れて、cnfファイルは書けても、肝心のローダーが動かない環境は
嫌だなぁ…

How to KiSS

KiSSに関する資料はネット上でも散見できるが、現行で情報が最も充実しているのは
KISSLDのヘルプかもしれない。ここにはKISSLDの操作におけるノウハウだけでなく
KiSS全体、特にセルやパレット、.cnf構文の情報や知識も載せられている。

例えば私が久しく頭を悩ませていたfrench kiss carbonでセルの配置を行うと落ちる
問題に付いても、そのヒントがちゃんとある。

01

>基本的にどんなコンフィグファイルでも10セット分の情報を
>入れておくのが無難でしょう。

そーなのかー

セルの固定値

KiSSにおけるセルには固定値を設定できる。これは

#0.10 ex.cel

のように、指定番号に続く.以後の数値で設定され、0もしくは未記載なら
最初から自由にセルの移動が出来るが、数値が設定されている場合、
その回数分操作しないとセルが動かないと言うもの。
 操作と言う言葉は実に適切で、この仕組みをパッと説明しようとしても
セルをクリックなのか、移動なのか理解が難しい。とにかくセルを動かそうと
回数分操作すると、以後は普通に動かせるようになるという仕組みである。

で、コレを設定しないと、背景の画像や特にセット本体のボディとなるセルが
動いてしまい、着せ替えが容易に出来ないなどの問題が生じる。
と同時に、この固定値はKiSSデータ周りでは珍しい変数をもった構文であり
FKiSSと絡めると…何かが出来そう。

 あいかわらずふわふわした言いようだが、事実FKiSSにはこの固定値を
使用した命令がいくつか見受けられる。これに関してもこれまで作って来た
CシリーズのKiSSでは手を出していない。

さて、
今回気になったのは固定値は999にすると移動不能のセルになる
というもの。
私は誰に教わったわけでもなく、固定値を999に設定するとそのセルは
999回操作しても動かせない=完全固定されるものと理解していた。
まあ実際に999回も操作する人はいないだろうが(言い切れんけど…)。

 しかしKiSSの仕様書のどこを見ても「固定値999でセルがロックされる」等の
記述は見当たらない。余談だが固定値は32767まで指定できるという記述は
見つけた。

そこで、固定値998あるいは1000の場合どうなるのかを確認して
みることにした。

今回使ったのはkissldではなくMac上のFrench Kiss Carbon。
French Kiss Carbonはカーソルがハンドカーソルになっているので
セルをつかんだ際、手が握られて移動可能かのセルが簡単に判別できると
言う利点が実はある。
kissldは普通に矢印カーソルだからね。

早速試した所、固定値999でカーソルは変化しなかった。うむうむ。
なので次に固定値を998にしてみたところ…やっぱりカーソルが変化しない。

あれ???

当初の予定では。998そして1000なら移動可能で999のみ移動不可に
なると踏んでいたのだがコレは一体…
と言うか1000でも997でも移動できないじゃないか…

試しに999回操作してみるか?
いやいやいや…

なので、一度固定値を100にしてみた所やっぱりカーソルに変化は
見られなかった。ちなみに、この状態でマウスをクリックしまくってみたのだが
セルは移動せず。100回はクリックした…はずなのだが。

 そこで固定値を99にした所…どうなったと思う?
セルを掴めたのだ。

つまりセルは固定値99まではその回数分操作すれば
移動可能だが100以上になると完全固定される。

と見てよさそうだが、あくまでこれはFrench Kiss Carbonの
仕様であって、KiSS全体でそうであるという保証が持てない。
 事実kissldでは固定値を100に設定して何度も操作を繰り返したら
セルの移動が出来た。やはりローダーによって差があることは確かだ。

 このことから、調べたくはないが固定値を999にしても
kissld上で999回操作を繰り返したらセルが動かせる可能性が
捨てきれない。

そう考えるとKiSSデータにおいて動かしてほしくないセルに固定値を
設定する場合、上限目一杯の32767を設定しておくのが正解なのだろうか?
あくまで999は「そんなに操作する人はいないだろうw」程度の数値だと?

さらに余談になるが固定値を1億とかにしたら落ちるだろうか?
と思い試した所、French Kiss Carbonでは落ちないどころか
固定値自体が認識されない(=つまり固定値なしと認識されて、
セルを自由に動かせる)。
 kissldではしっかり固定されているので、つまりこれは1億回操作しないと
動かせない…? 狂気を感じる……

なお、これについてkissldのヘルプにある「最大固定オブジェクト」
というのがそれの説明の気がするのだが、読んだ限りでは
今ひとつ意味が分からなかった…。


HOME © 2017 六原短期大学