ITGギミック作成記1: Red Swan D21の最初を作る (ワープ、global BGanimation)

一通りStepManiaもしくはITGの譜面が作れるようになって、ちょっとギミックを使って演出を強化したりプレイヤーの邪魔をしたりしたいな、という方向けにいくつか記事を書いていこうと思います。

 

まずはITG公式曲にも多く使われているような簡単な演出から始め、最終的にはとりあえずChase Me D23の譜面逆流やGargoyle full song S20の強制SUDDEN/HIDDENが書けるようになるところを目指します。

 2019/6/12現在、章立てとしては次のようになる予定です。

 

1. Red Swan D21の最初を作る (ワープ、global BGanimation) ←本記事

2. 続・Red Swan D21の最初を作る (FGテンプレ)

3. Twist of Fate D20の低速を作る (オプション固定)

4. Chase Me D23の開幕を作る (オプション読み込み、"Update形式"でのオプション変化)

5. Chase Me D23の落ちサビを作る (連続的なオプション変化)

 

これらをnotITGで実現するのが目標です*1。また、譜面作成ソフトとしてArrowVortexを利用できることが望ましいです。このソフトは、譜面の読み込み・書き出し時に余計な変換や書き込みをほとんどしないので後から譜面を修正したりするのに便利です。

 

それでは今回の目標紹介です。

Red Swan D21 (Pump It Up Prime)

この譜面の最初の、同時を踏むと画面が光って譜面がワープしてくる演出を作ります。最初の連続停止はスタッタ―ギミックと呼ばれるもので、これを作る機能はArrowVortexに標準搭載されているので割愛します。

この演出は譜面ワープ画面フラッシュの二つの要素からできていますので、これらを別個に作っていきます。

 

譜面ワープ

譜面をワープさせるにはいくつかの方法があります。

1. マイナスSTOPを利用する

2. マイナスBPMを利用する

3. BPMを9999999などにしてワープさせたい部分だけ一瞬で流す

このうち、3.の超大BPMは数値によって上手く動かないことがありますので*2、ただワープさせることだけが目的ならば、1.か2.のマイナス指定を使う方法を推奨します。

またマイナス指定でワープを作るときはArrowVortexのx modモードを利用することを推奨します。ワープする区間が表示されてわかりやすいうえ、c modモードにすることで音との整合性もすぐにチェックできるためです。

f:id:paraphrohn:20190612205536p:plain

とりあえず譜面を作りました。この譜面・リズムをもとに、

・7歩目の←を踏むと1小節ワープして

・8歩目の→が突然現れる

ワープを作ろうと思います。

 

とにもかくにも1小節ワープするので、まずはワープよりも先の部分を1小節後にズラします。

f:id:paraphrohn:20190612205847p:plain

緑で囲んだ部分をワープさせる予定です。きちんとワープすれば、上の画像と同じリズムで同じ譜面が降ってきます。

 

1. マイナスSTOPを利用する

STOPでマイナスの数字を指定すると、指定した秒数だけワープさせることができます。

例えば、BPM120の曲ならば1拍あたり0.5秒なので、-2秒のSTOPを指示すれば1小節飛ばせます。

f:id:paraphrohn:20190612210228p:plain

-2.000のSTOPを仕込みました。1小節分だけ譜面が赤く表示されているのが分かると思いますが、これが実際にマイナスSTOPでワープする範囲になります。参考までに、x modモードとc modモードでの譜面画像を下に並べます。

f:id:paraphrohn:20190612210614p:plain

左側x modで赤く囲まれている部分が、右側c modだと表示されておらず、結果として元の譜面と同じ形になっています。つまり赤で囲まれた部分はワープで飛ばされているというわけです。

x modモードでこの譜面を再生するとこんな感じになります。ワープが正しく動いてますね。

 

2. マイナスBPMを利用する

BPMでマイナスの値を指定すると、妙な挙動になります。

f:id:paraphrohn:20190612211057p:plain

このようにBPM-120を置いただけでは特に何も起こりませんが、

f:id:paraphrohn:20190612211133p:plain

2拍後にBPM120を置くと、1小節分が赤く表示され、結果として1小節のワープとなります。ここで、マイナスBPMの値を-60にすると、1.5小節分のワープになります。

基本的には、元のBPMをそのままマイナスにして、ワープさせたい長さの半分の場所に元のBPMを置けば望みの長さのワープが作れるということです。BPM170の曲を1小節ワープさせたかったら、BPM-170にして2拍後にBPM170を置けば1小節ワープします。8小節ワープなら4小節後に置けば大丈夫です。

この手法はマイナスSTOPに比べるとめんどくさいですが、STOPが秒数指定なのに対してこちらは拍数指定なので細かなズレが無いという利点があります。また拍数→秒数の変換が不必要なのも利点です。

 

ところでStepManiaやITGではワープ中の実ノートの判定が消失します。これがどういうことかといえば、上の画像のようなワープを置いた場合、7歩目←は、ノートの前側にしか判定が無く、後ろ側を踏んでも反応しない(強制早入り)状態になります。

流石にこれではゲームにならないので、ワープの位置を多少ずらしてやる必要があります。16分くらいの猶予があれば、よっぽど難しい譜面出ない限り大丈夫だと思います。

f:id:paraphrohn:20190612211917p:plain

この現象は超大BPMを用いた場合でも発生しますのでご注意ください。

ともあれこれでワープは完成です。動きとしては下の動画のようになります。

 

画面フラッシュ

実はStepMania系列のゲームにはglobal BGanimationと呼ばれる、特に何もしなくても使えるBG群があります*3。その中に画面フラッシュもありますので、実は簡単に実装できます。それではさっそくArrowVortexを閉じてください。

f:id:paraphrohn:20190612212302p:plain

 

先ほどのsmファイルをterapadで開いた図です。画面をフラッシュさせるにはBGCHANGESを使います。global effectとしてのフラッシュの書式は以下の通りです。

(光らせたい拍)=flash=1=0=0=1====#(カラーコード)=

例えば上で作った譜面でワープするタイミング(10拍目)に白色で画面を光らせたいなら、

BGCHANGES: 10.000=flash=1=0=0=1====#FFFFFF=;

となります。ちなみに、カラーコードを入力しなかった場合は白で光ります。これを再生すると下の動画になります。

 そういえばArrowVortexはflashとかには対応してないので確認にはStepManiaかnotITGを使う必要があります。見てわかる通り矢印の裏側 (=BG, background) が光っています。これでかなりRed Swanに近づきました。あとはワープ後の矢印がゆっくり上がってくるようにすれば完成のように見えます。

しかしRed Swan D21を改めて見ると矢印の手前側が光っています、なので上で作ったものは完全再現ではないです。こういう時に使うのがFGCHANGESです。これはFG = foregroundの名の通り、矢印の手前側を色々弄ることができる機能で、ここを使えるようになると一気に演出の幅が広がります (例: 音割れストーム)。

なので、FGCHANGESにflashの記述を動かせば矢印の手前が光る……と思っていたのですが、実はFGCHANGESはglobal BGanimationに対応していないことが判明しました。というわけで、矢印の手前側を光らせるのは次回「続・Red Swan D21の最初を作る」で紹介しようと思います。

 

なんとも尻切れトンボな終わり方になってしまいましたが、ちょっとFGCHANGESが対応していないというのは予想外だったのでご容赦ください……FGCHANGESを真面目に使おうとすると解説がめちゃくちゃ長くなってしまうのです。

それではまた次回。次こそRed Swan D21の最初を完成させます。

*1:StepMania5は.luaファイルを、openITG/notITGは.xmlファイルを、StepMania3.9は.iniファイルをそれぞれ読み込みます。筆者は.xmlしか書けないので、基本的にはnotITGでしか動きません

*2:2^31の約2兆を超えるとバグると思います

*3:どんなものがあるか興味がある方は、notITGの譜面EDIT画面でBを押し、global BGanimationを選択してみてください。BGanimationのほかにも様々なglobal機能がありますので、これを網羅することは困難です。