K-Shoot maniaのレーザーオブジェクトについて(ケーシューエディタでの仕様とテキストエディタでの編集)


この獣人の証である獣耳があり、空色の髪をなびかせて、その美しさと八重歯の輝きに、太陽さえ思わず目を細めてしまうほどの無性別美少女*1は、誰でしょうか…

そう、私です!*2

…もとい、TapeStop100 というグループでペットの猫として存在しています*3、化け猫です。みゃん*4

9日目は TP100 のアドカレにしては珍しいケーシューの記事です*5

今回は K-Shoot mania のレーザーオブジェクトについてです。
ケーシューエディタのレーザーがそれぞれの詳細度*6の時に、レーザーオブジェクトをどこに配置することができるのか気になりませんか?
私は気になるので、それについて調べたものを記事にしようという算段です。*7

また、ケーシューエディタ以外を使ってレーザーオブジェクトを編集することがあるので、その時の編集の様子も共有しようと思います。

まずはkshフォーマットを理解しよう

本題に入る前に、まずは現行 (2020/12/09 現在) のケーシュー譜面のフォーマットである ksh フォーマットについて理解する必要があります。
今回はレーザーオブジェクトについて解説していくので、その他の部分は理解しなくても大丈夫です。

それでは、実際に ksh ファイルの中身を見てみましょう。
ケーシューの譜面が書かれている ksh ファイルをテキストエディタ*8で開いてみると、このようになっている事がわかると思います。

ksh 内容スクショ

自作の譜面をテキストエディタで開いたもの
フォントは MyricaM M を使用しています

このようなものを見たことがない人にとっては「なんのこっちゃ」となることかと思います。
ですが、各セクションごとに見ていけば、理解しやすいかと思います。頑張って。

BT・FX

本題とは別のことなので、こちらはまとめて説明します。
先程の画像で説明すると、左側の4レーンが BT を表していて、縦線を挟んでその右の2レーンが FX を表しています。

bt_fx

ksh ファイルの BT と FX の場所

他にも細かい仕様はありますが、本題ではないため割愛します。

レーザーオブジェクト

FX のさらに左側には、レーザーオブジェクトの情報が書かれています。
左側が青色、右側が赤色のレーザーです。

lazer

レーザーオブジェクトの場所

-(ハイフン)、:(コロン)

-:はレーザーが繋がっているかどうかを表しています。
-はレーザーが存在しないことを表し、:はレーザーが繋がっている状態を表しています。
また、これらの記号は省略されることはありません。*14

数字やアルファベット

数字やアルファベットは、レーザーの横座標を表しています*15
一番左端が0そこから9まで行ったあとはAへと続き、Zのあとはaとなり、左端はoとなっています。
順番に並べると、0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnoの51段階です。

以上の内容を分かりやすくするために、こちらの画像をご用意しました。

lazer_info
レーザー部分の見方

説明を参照しながら画像を見ると、分かりやすいかと思います。

また、レーザーオブジェクトが移動する方向などは、数字やアルファベットを見れば分かります。

補足として、ケーシューは長さが32分以下のレーザーは全て直角レーザーとして解釈されます。

補足情報

ケーシューエディタでは譜面は下から上に書いていきますが、テキストエディタで開いた時は上から下へと見ていきます。
プログラミングをしている方は分かると思いますが、データを上から下へと書いていくことで、データを読み込むプログラムが書きやすくなります。*16

それぞれの詳細度の時のレーザーオブジェクトの置かれ方

とりあえず必要な仕様の説明が終わりましたので、ここからようやく本題に入っていきます。

ケーシューのレーザーオブジェクトには、横幅が等倍のものと、二倍のものの二種類があります。
ここではそれぞれの詳細度でレーザーが置ける場所に「○」を入れた表を、両方の倍率で提示します。

・横幅が等倍のとき
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmno
標準
詳細
最も詳細

まず、標準は5つ飛ばしの11箇所に置くことができます。
また、最も詳細では飛ばさずに 0(左端)~o(右端) 全ての場所に置くことができます。
一方詳細の場合は少々特殊です。詳細は標準で置けるところの間にそれぞれ一つずつ置けるところを追加したものですが、ちょうど間に置くことはできません (例えば 0 と 5 のちょうど間になるような場所に置くことは不可能)*17
そこで、P(中央) より左側は少々左寄りに、右側は少々左側になるように設定されております。*18

・横幅が二倍のとき
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmno
標準
詳細
最も詳細

横幅が二倍の場合は、標準は等倍の時の詳細と全く同じに、二倍の詳細は最も詳細と全く同じになります。

テキストオブジェクトをレーザーオブジェクトで編集してみる

ここまでの内容で、ksh ファイルのフォーマットについてはなんとなーく理解できたかと思います (レーザーオブジェクトは特に)。
フォーマットを理解すると、やろうと思えばテキストエディタでも譜面を作成することが可能になります。
が、実際はテキストエディタひとつで譜面を作成するのは現実的ではありません。
BT や FX などは殆どが専用のエディタで事足りますし、レーザーオブジェクトも同じエディタで編集可能です。

ただ、そのエディタでレーザーを最も詳細で編集していると、ちゃんと狙った場所に置けているのか分からなくなってくるんですよね (気にしない場合はそれでもいいのですが)。
そこで、レーザーオブジェクトを狙った場所に置くためにテキストエディタで編集することがあります (筆者の場合)。

せっかく ksh フォーマットの一部を紹介したので、テキストエディタを利用したレーザーオブジェクトの編集の様子もお見せします。

どのようなレーザーを置くか

今回置くレーザーはこちらです。

todays_lazer
きょうのレーザー

緑色の線が P(真ん中) を表します。
また、黒色の4本の縦線は等間隔でならんでいるものとします。
イメージ的には4本のグリッドの上にレーザーの中継点を置いていくような感じです。
このようなレーザーはテキストエディタで編集したほうがやりやすいことがあります。

どのラインがどの位置かを決める

今回は横幅は二倍ほどではなく、1.5倍ほどの大きさで配置していこうと思います。
色々考えた結果、端を中心(P)から18離れたところ(7, h)にもって来ることにしました*19
そうすると、左から 7, J, V, h の所にグリッドがあることにしてレーザーを配置すればいいと言うことが分かります。

glid_decide
それぞれのグリッドの場所が決まった

テキストエディタで編集するための準備

テキストエディタで編集する前に、まずはケーシューエディタ上に雑にレーザーを配置します。
雑とは言っても、縦の位置、タイミングはしっかり合わせた方が後々楽になります。

rough_sketch
タイミングはしっかりと 横の位置は雑でいい

スクショでは忘れていますが、はみ出しレーザーで置いた方が後々楽です (今回の場合)*20
また、今回はしていませんが、実際の譜面制作の場合はレーザーを置いたところに注釈を書いた方が、テキストエディタで開いた時に検索機能で見つけやすいです。

テキストエディタで編集する

レーザーを置いたら一旦保存して、同じファイルをテキストエディタで開きましょう。

open_texteditor
テキストエディタで開いた図

もしこのスクショのようにレーザーをはみ出し指定をせずに置いてしまった場合は、laserrange_l=2xlaserrange_r=2xレーザーが出現する直前に入れましょう。
そして、対応する数字やアルファベットの部分を、7, J, V, h のいずれかに書き換えて行きます。
テキストエディタでどこを弄れば狙った部分を反映させられるのかわからない場合は、細かく注釈を付けてみるのもいいかもしれません。

そして完成へ

テキストエディタでの作業が一通り終わったら保存を忘れずに行い、再びケーシューエディタで譜面を開き確認します。
想定した通りになっていない部分があればテキストエディタで都度調整し、ケーシューエディタで確認するのを繰り返します。
想定通りの形になれば完成です。

lazer_complete
完成した図

今日書いたこと、ケーシューのレーザーオブジェクトについて

いかがでしたか? (TP100 アドカレクソブログレギュ遵守)
ksh ファイルのフォーマット、専用エディタでのレーザーオブジェクトの配置のされ方、テキストエディタを使ったレーザーオブジェクトの編集。
どれも知っていて直ぐに役に立つかどうかと言われると微妙な所ですが、知っていると思わぬ所で役に立つ時が来るかもしれません。*21

また、ksh ファイルのフォーマットについては、K-Shoot mania の開発者である masaka さんが github で公開しているので、気になる方はご覧になってみては如何でしょうか。 この記事で紹介したのはほんの一部でもありますし、過去のバージョンのことも載っていて面白いですよ!



以下 footnote

*1:無性別のかわいい方

*2:実はこのようなセリフが出てくる作品は見ていないです。ただ、気にはなっているのでアマプラであれば見たいなと思っています。

*3:???

*4:かわいい

*5:昨日までの8日間のうちケーシューの話題が出てきたのは2日だけです。うち1日は文字数がとても少ない。

*6:メニューバーのツールにある標準、詳細、最も詳細のやつ

*7:実は10ヶ月くらい温めていたネタ

*8:メモ帳でよい

*9:ケーシュー以外でも役に立つ情報かもしれない

*10:"//" で始まる行は、コメント行を表すので数えません

*11:4分の4拍子の場合

*12:1小節に4分音符が3つある拍子ということから、感覚的に1行が6分音符でないことは分かるかと思います。

*13:少ない行数なら感覚的に求めることも可能でしょう。しかし、1小節に48行もある場合などは、感覚的に求めるのが大変になってきます。

*14:仮に省略することを許してしまうと、レーザーが存在するのか否かが分からなくなってしまう。

*15:縦座標はどの行に文字があるかで表現される。

*16:私は下から上へと書かれているファイルを読み込むプログラムは書きたくないです。

*17:0 から o までが全て等間隔であると仮定した場合。開発の観点などから考えると全てが等間隔であると考えるのが自然である。

*18:これにより詳細で P を中心に線対称なレーザーを置くことができる。

*19:等倍の両端を100% 、二倍の両端を200%としたときの150%が端に来るようにしたい。二倍の時の100%は25なので、それに1.5をかけると37.5になる。その数字に近最も近く、4本のグリッドを等間隔に並べられるのは36。7 と h はそれぞれ P から18ずつ離れている (36÷2)。

*20:レーンから一切はみ出さない場合は、はみ出しレーザーで無くても良い。

*21:実際、私自身も ksh フォーマットでのレーザーオブジェクトの表され方を理解していたので、テキストエディタでレーザーオブジェクトを編集するという発想に至りました。