XYZ ...

기믹패턴의 기초 (2)

part 1

이번 포스트에서는 지난번 포스트에서 설명한 ‘워프 정지’를 이용해서 부드러운 애니메이션을 만들어보는 방법을 적어보려고 합니다.

지뢰노트

위의 영상의 기믹처럼 일반노트로 기믹을 만들 경우 절대로 플레이 할 수 없는 패턴이 나옵니다. 따라서 앞으로 설명할 ‘노트 애니메이션’을 구현하려면 보이지만 플레이어가 처리하지 않아도 되는 지뢰노트가 거의 필수적이라고 할 수 있습니다. 하지만 BMSE와 iBMSc에서는 지뢰노트를 지원하지 않기 때문에 직접 텍스트 편집기를 이용해 편집해야하는 다소 번거로운 방법을 사용해야 합니다. 不可視地雷コンバータ for LR2를 사용하면 그 수고를 다소 덜 수 있습니다.

노트 애니메이션

애니메이션은 기본적으로 정지된 이미지(노트 배열)을 적절하게 빠른 간격으로 바꿔가며 보여주는 것입니다. BMS에서는 저번 포스트에서 설명한 ‘워프 정지’에서 정지 시간을 1/30초 정도 미만(1/60정도로 하면 원래 노트와 거의 차이가 없는 정도로 부드럽게 할 수 있습니다)으로 하면 부드러운 애니메이션을 구현할 수 있습니다.

이번에는 위처럼 간단히 위로 올라가는 마디선을 만들어보겠습니다. bpm이 180이라고 하면, stop 숫자가 1에 해당하는 실제 시간은 60 * 4 / 180 / 192 = 0.007이므로 60fps의 한 프레임 1/60 = 0.016정도에 맞추려면 2정도가 적당할 것입니다. bpm을 180000으로 맞추고 stop을 2000으로 정했습니다.

backward

대략적인 형태는 위와 같이 됩니다. 만드는데 상당히 수고가 들지만, 복사 붙여넣기를 이용하여 만들면 생각보다 금방 하실 수 있습니다. 배율이 낮아서 모든 정지오브젝트가 마디선과 같은 위치에 있는 것처럼 보이지만 한마디마다 1/192씩 정지오브젝트가 마디선보다 낮아집니다.

앞서 만든 거꾸로 가는 마디선을 이용해 이번에는 위 동영상의 차분인 Engine[EXPLODE]의 1:30에 나오는 마디선으로 노트를 나타내게하는 효과를 만들어봅시다.

noteback

아까 만든 마디선 기믹의 끝에 위와 같은 모양의 계단노트를 있는 상황을 가정합니다. 지뢰노트를 사용해야 하므로 ctrl + 클릭을 통해 투명오브젝트로 먼저 만들어줍니다. 계단노트의 위치는 애니메이션상에서 항상 일정하므로 1번키의 위치는 항상 정지오브젝트의 위치에 1/16을 더한 곳으로 해야합니다.

위의 영상의 0:00~1:50 처럼 역시 규칙성이 있을 경우 복사붙여넣기를 하면 2배씩 늘어나므로 빠르게 넣을 수 있습니다. 마디선이 노트를 그려내는 효과이므로 마디선 아래에 가있는 노트들은 영상의 1:50~처럼 모두 제거하면 노트는 완성입니다.

그 뒤 투명노트를 위에서 언급한 컨버터를 이용해 바꿔줘야합니다. 실제 과정은 영상처럼 하면 됩니다. 다만 지뢰노트가 들어간 BMS파일을 BMSE등으로 열고 다시 저장할 경우 지뢰노트가 모두 사라지게 되므로 채보를 모두 완성한 다음에 지뢰노트로 변환해야 합니다.

설명을 글로하다보니 다소 부실한데 완성된 BMS 파일지뢰노트를 넣기 전 파일을 보시면 참고가 될 것 같습니다. 지금까지 설명한 기술을 응용하면 Engine [EXPLODE]에 나오는 것과 같은 기믹은 모두 만들 수 있을 것입니다.

기믹패턴이 영상으로 볼 때는 이목을 끌 수 있지만 과하게 넣거나 조금만 잘 못 넣어도 그냥 플레이어의 짜증만 유발하는 요소가 될 수 있습니다. 아마 한 패턴에 1~2번 정도나, 동봉보면을 따로 만들고 스페셜 보면으로 기믹을 많이 넣은 패턴을 하나 넣는 식으로 가는 것이 이상적이라고 생각합니다.

더 쓰고 싶은 내용이 많았지만 그냥 이정도만 쓰겠습니다.. 질문은 댓글로 남겨주시거나 트위터로 해주시면 답변해드리겠습니다.

ギミック譜面の基礎 (2)

このポストは、韓国語で書かれた後、機械翻訳で翻訳されました。厄介な部分があっても理解してください。

part 1 今回のポストは、前回の記事で説明した「ワープ停止」を利用して滑らかなアニメーションを作ってみる方法を書き留めてみようと思います。

地雷ノート

上記の映像のギミックのように一般的なノートにギミックを作成する場合は、絶対にプレイすることができない譜面が出てきます。したがって、今後説明する「ノートアニメーション」を実装するには、見えますが、プレーヤーが処理する必要のない地雷ノートがほぼ必須とすることができます。しかし、BMSEとiBMScでは、地雷ノートをサポートしていないため、直接テキストエディタを用いて編集する必要があり、多少面倒な方法を使用する必要があります。 不可視地雷コンバータ for LR2を使用すると、その手間をやや少ないことができます。

ノートアニメーション

アニメーションは、基本的に静止された画像(ノート配列)を適切に迅速間隔で変えながら表示することです。BMSは、前回の記事で説明した「ワープ停止」で停止時間を1/30秒程度未満(1/60程度にすると、元のノートとほとんど差がないほどスムーズに行うことができます)にすると滑らかなアニメーションを実装することができます。

今回は、上記のように簡単に上に上がる節線を作成しましょう。bpmが180とすると、stop数字が1に該当する実際の時間は、60*4/180/192=0.007であるため、60fpsのフレーム1/60=0.016程度に合わせるには2程度が適当でしょう。bpmを180000に合わせstopを2000に指定しました。

backward

おおよその形は、上記のようになります。作るのはかなり手間がかかるが、コピー&ペーストを利用して作成すると、思ったよりもすぐことができます。倍率が低く、すべての停止のオブジェクトが一言線と同じ場所にいるかのように見えるが、一言ごとに1/192ずつ停止オブジェクトが一言線より低くなります。

先に作成された逆行節線を利用して、今回は、上記動画の差分であるEngine[EXPLODE]の1:30に出てくる単語線でノートを示すようにする効果を作ってみましょう。

noteback

さっき作った節線ギミックの終わりに上記のような形の階段ノートを持っている状況を想定します。地雷ノートを使用するのでctrl +クリックを使用して、透明オブジェクトに最初に作成されます。階段ノートの位置はアニメーション上で常に一定なので1キーの位置は常に停止オブジェクトの位置に1/16を加えた場所にする必要があります。

上記の映像の0:00〜1:50のように、やはり規則性がある場合、コピー&ペーストをすると、2倍ずつ増えるので、すぐに置くことができます。一言線がノートを描き出す効果なので、線の下にあるノートは、映像の1:50〜のようにすべて削除すると、ノートは完成です。

その後、透明ノートを上記のコンバータを利用して置き換える必要があります。実際のプロセスは、画像のようにします。ただし地雷ノートが入ったBMSファイルをBMSEなどで開いて保存し直す場合地雷ノートがすべて消えてしまうため採譜をすべて完成した後に地雷ノートに変換する必要があります。

完成したBMSファイル地雷ノートを入れる前ファイルを見れば参考になると思われる。これまで説明した技術を応用すればEngine[EXPLODE]に出てくるようなギミックは両方を作成できるようになります。

ギミック譜面が映像で見る時は注目を集めることができますが、過度に挿入するか、少しだけよくない入れてもそれだけでプレイヤーのイライラだけ誘発する要因となることがあります。おそらく譜面に1〜2回程度、同梱みるとを別々に作成しスペシャル見ればでギミックを多く入れた譜面を一つ入れるように行くのが理想的だと思います。

より書きたい内容が多かったが、それだけでこの程度だけ書きます。質問は、コメントに記入するか、Twitterでいただければお答えします。

기믹패턴의 기초 (1)

본 포스트는 BMSE의 노트배치, 마디길이 변경, 마디 삽입 등 기본적인 조작법의 숙지를 필요로 합니다. 또한 제가 BMSE에 익숙해져있기에 BMSE 기준으로 설명하지만 iBMSC로도 거의 동일한 조작을 할 수 있을 것이라고 생각합니다.

기믹패턴이란?

위 동영상을 보는 것 만으로도 기믹패턴이 무엇인지 충분히 알 수 있을 것이라 생각합니다.


시작하기 전에 기초지식

위의 패턴을 언뜻보면 노트가 거꾸로 올라가거나 사이 간격이 변하는 것 같지만, BMS에서 노트 사이의 간격은 절대로 변하지 않으며, 노트를 아래 외의 방향으로 움직이게 할 수 없습니다. 아래 그림과 같이 아주 길쭉한 종이 위에 노트가 그려져 있고, 이것이 BPM에 비례하는 속도로 아래로 내려가고 있다고 생각하면 편합니다. Music Box


Wave 변속

빨라졌다 느려졌다하는 변속을 Wave 변속이라고 칭하겠습니다.

1/2배속 -> 1.5배속 형태

비교적 부드러운 느낌을 주는 원 bpm의 1/2배속이 각 구간에서 1/4, 1.5배속이 3/4을 차지하고 있는 꼴입니다. 1/4이 1/2의 속도로, 3/4가 3/2의 속도로 가서 (1/4) / (1/2) + (3/4) / (3/2)를 하면 1이 됩니다.

Wave

좌측과 같은 패턴이 우측으로 바뀐 것입니다. 배경키음의 변화도 주목해주세요.

2배속 -> 1/2배속 -> 1배속 형태

2배속이 각 구간의 1/2, 1/2배속이 각 구간의 1/4, 1배속이 각 구간의 1/4을 차지하고 있는 형태의 변속입니다. 배경키음이 있어도 움직임을 계산하기 쉬운 것이 장점입니다.

Wave2

위의 두 형태의 변속을 각 변속의 길이는 유지한채 위치만 바꿔쓰면 다른 효과를 낼 수 있습니다. 예를 들어, 아래의 1번키의 시간 간격은 모두 1/4마디로 동일합니다.

Wave Variation


워프

위의 영상처럼 노트가 갑자기 나타나거나 사라지게 하는 기믹을 ‘워프’라고 하겠습니다. 거의 모든 기믹들은 이 워프를 기반으로 작동합니다. 구현은 생각보다 간단한데, 사라지게 만들고 싶은 구간의 bpm을 아래와 같이 최대한 크게 하면 됩니다.

Warp

간단히 설명하자면, 스크래치 노트를 친 직후에 bpm이 65535(bmse에서 직접 입력할 수 있는 가장 큰 bpm)라는 매우 큰 값으로 바뀌면서 bpm이 120이 되기 전까지 한 순간에 이동하게 되어 순간이동한 것 처럼 보이게 되는 것입니다.

이 때 65535는 충분히 큰 bpm이 아니므로 더욱 큰 값으로 직접 수정해줘야합니다. bms 파일을 텍스트편집기로 열어 65535라는 값을 찾아 #BPMXX 65535를 적절히 큰 값으로 수정해줍니다. 이 때 새로운 값은 원 bpm의 1000배, 10000배와 같은 값이 좋습니다.

#WAVO0 gl16.ogg
#WAVO1 gl17.ogg
#WAVO2 gl18.ogg
#WAVO3 gl19.ogg

#BMP01 bga.mpg

#BPM02 1740000
#BPM03 1740000
#BPM04 1740000
#BPM05 1740000
#BPM06 1740000
#BPM07 1740000
#BPM08 1740000

저장해준뒤 bmse를 다시 실행시켜보면 다음과 같이 되어있습니다.

Warp BPM

이제부터는 저 값을 (ctrl + 드래그)로 끌어서 쓰면 다시 텍스트 편집기로 직접 편집해주는 수고를 덜 수 있습니다.


워프 정지 애니메이션

워프와 정지를 번갈아가면서 쓰면 위와 같은 효과를 낼 수 있습니다.

아래와 같은 원본 패턴을 예로 만들어보겠습니다.

Warp Stop Before

배경 키음에 따라 마디선이 바뀌게 하려고 하므로 간격을 계산해보면 한 칸이 1/16이므로 각 노트는 4/16, 6/16, 4/16만큼 떨어져 있습니다. BMSE에서 stop의 숫자는 1이 1/192을 의미하므로 계산해보면 각각 48, 72, 48이라는 수치만큼 떨어져있다고 볼 수 있습니다. 노트를 모두 bgm쪽으로 옮기고 (우클릭 -> 마디삽입) 기능을 이용해 마디를 많이 삽입해준 뒤, 마디 길이를 조절해 원하는 모양을 만들어줍니다.

Warp Stop Before2

이제 변속을 넣어야 합니다. 워프변속을 넣을 때의 요령으로 매우 큰 변속을(원래 변속의 1000배, 10000배인 것이 계산하기 편합니다) 넣어줍니다. 만약에 아래처럼 원 bpm이 180인 곡에 bpm 180000을 넣었다면 stop도 똑같이 1000배 해준 값을 넣어주면 됩니다. (만약 stop 값이 65535보다 크다면 역시 텍스트 편집기에서 직접 수정해줘야 합니다) 이 경우에는 각각 48000, 72000, 48000이 그 값이 됩니다.

Warp Stop

마지막에 원래 bpm으로 돌아가는 것도 잊지 않고 넣어주어야 합니다.


부록

bpm 65535를 쓰면 왜 안될까?

bpm 65535에서 4/4마디의 실제 시간은 60 * 4 / 65535가 되어 약 0.0037초가 됩니다. 이런 오차는 별 것 아닌것 같지만 이를 100번 쓰게되면 0.3초, 1000번 사용하게 되면 3초라는 엄청난 오차가 생기게 됩니다. 그러므로 적어도 1000000이상의 bpm을 사용하기를 권장합니다.

배경음에 키음이 있어 타이밍이 안맞을 경우

bgm problem

위와 같이 51, 52번 키음에 타이밍을 맞춰 애니메이션을 넣으려고 하는데 1~8번 키음이 사이사이에 들어있어 그대로 할 경우 배경음이 망가지는 경우가 있습니다. 이럴 때는 다음 두 가지 방법 중에서 선택하여 쓰시면 됩니다.

BMX2WAV등을 사용하여 배경 키음을 합치기

key bms

새로운 BMS파일을 만들고 위와 같이 방해가 되는 배경키음들을 모두 #000마디에 새로 배치하여 저장해줍니다. 그 뒤 BMX2WAV를 적절히 사용하여 위 BMS를 wav파일로 만들어주고, 원본 BMS에 새로 생긴 wav파일을 기존 키음대신 넣어주면 됩니다.

같은 프레임을 연달아 재생

key bms2

상당히 번거로운 방법이지만 위와 같이 같은 프레임을 나누어 가만히 있는 것처럼 보이지만 키음이 타이밍 맞게 재생되고 있게 만드는 방법도 있습니다.


쓰다보니 내용이 상당히 길어져서 일단은 여기까지만 적겠습니다. 다음 포스트에는 위의 워프 정지를 이용해서 더 부드러운 애니메이션을 구현하고 여기에 지뢰노트를 넣는 것과, 그 외 팁들을 적어보겠습니다.

ギミック譜面の基礎 (1)

本ポストは韓国語で、最初に作成された後、翻訳機を使って翻訳されました。ややぎこちない点があっても理解してください。

本ポストは、BMSEのノート配置、小節の長さの変更、小節の挿入などの基本的な操作法の熟知を必要とします。また、私はBMSEに慣れているのでBMSE基準に説明するがiBMSCもほぼ同じ操作をすることができるだろうと考えています。

ギミック譜面とは?

上記の動画を見るだけでも、ギミック譜面が何であるかを知ることができると確信しています。


開始する前に基礎知識

上記のパターンを一見するとノートが逆に上がったりの間の間隔が変化するようだが、BMSでノート間の間隔は絶対に変わらないし、ノートを下以外の方向に動くようにすることはできません。下の図のように、非常に細長い紙の上にノートが描かれており、これがBPMに比例する速度で下に降りて行っていると思うと楽です。 Music Box


Wave 変速

1/2倍速 -> 1.5倍速 形

比較的柔らかい感じを与える員bpmの1/2倍速が各区間で1/4、1.5倍速の3/4を占めている格好です。1/4が1/2の速度で、4分の3が3/2の速度で移動し(1/4)/(1/2)+(3/4)/(3/2)をすると1になります。

Wave

左のような譜面が右に変わったことです。背景キークリックの変化にも注目してください。

2倍速 -> 1/2倍速 -> 1倍速 形

2倍速が各区間の1/2、1/2倍速が各区間の1/4、1倍速は、各区間の1/4を占めている形態の変速です。背景キー音があっても動きを計算しやすいのが利点です。

Wave2

上記の二つの形態の変速を各変速の長さは、保ったまま位置のみ変えて使用すると、他の効果を出すことができます。例えば、下記の1番キーの時間間隔は、すべて1/4節で同じです。

Wave Variation


ワープ

上記の映像のようにノートが突然現れたり消えするギミックを「ワープ」と名前をやっております。上記のlot minedsで見た特殊効果はほとんどこのワープで動作します。実装は、思ったより簡単なのに、ワープしたい区間のbpmを以下のように可能な限り大きくします。

Warp

簡単に説明すると、スクラッチノートを打つ直後にbpmが65535(bmseで直接入力することができる最大のbpm)という非常に大きな値に変わり、bpmが120になるまで一瞬にして移動するようになって瞬間移動したかのように見えるようになるになります。

このとき65535は十分に大きいbpmではないので、さらに大きな値に直接変更してくれるとします。bmsファイルをテキストエディタで開いて65535という値を見つけ#BPMXX 65535を適切に大きな値に変更します。このときに、新しい値は、ウォンbpmの1000倍、10000倍と同じ値がお勧め。

#WAVO0 gl16.ogg
#WAVO1 gl17.ogg
#WAVO2 gl18.ogg
#WAVO3 gl19.ogg

#BMP01 bga.mpg

#BPM02 1740000
#BPM03 1740000
#BPM04 1740000
#BPM05 1740000
#BPM06 1740000
#BPM07 1740000
#BPM08 1740000

保存してくれた後、bmseを再度実行してみると次のようになっています。

Warp BPM

これからはその値を(ctrl+ドラッグ)にドラッグ&ドロップ使えば再びテキストエディタで直接編集する手間を省くことができます。


ワープ停止アニメーション

ワープと停止を交互に使えば上記のような効果を出すことができます。

以下のようなソース譜面を例に作成しましょう。

Warp Stop Before

背景キー音に基づいて効果を出そうとしようとするので、間隔を計算してみるとしたカーンが1/16であるため、各ノートは4/16、6/16、4/16ほど離れています。BMSEでstopの数は、1/192を意味するので、計算してみると、それぞれ48、72、48という数値だけ離れていると見ることができます。ノートをすべてbgmに向かって移動し右クリック - >節の挿入機能を利用して節を多く挿入してくれた後、小節の長さを調節して所望の形状を作ってくれます。

Warp Stop Before2

今変速を配置する必要があります。ワープ変速を入れるときの要領で非常に大きな変速を(元の変速の1000倍、10000倍が計算する楽)に入れます。もし次のように円形bpmが180である曲にbpm180000を挿入した場合stopも同じように1000倍してくれたの値を入れてくれれば良いです。(もしstop値が65535よりも大きい場合も、テキストエディタで直接編集してくれます)この場合には、それぞれ48000、72000、48000がその値になります。

Warp Stop

最後に、元のbpmに帰るのも忘れずに入れます。


付録

bpm65535を使えば、なぜだめ?

bpm65535で4/4小節の実際の時間は、60*4/65535になって、約0.0037秒になります。このような誤差は、別のないようだが、これを100回書いてしまえば0.3秒、1000回使用すると、3秒という驚異的な誤差が生じます。したがって、少なくとも1000000以上のbpmを使用することをお勧めします。

背景音にキー音があり、ワープ停止アニメーションのタイミングが合わない場合

bgm problem

上記のように51、52番のキー音にタイミングを合わせてアニメーションを入れようとするが、1〜8回のキー音が間の間に入っていて、そのままする場合背景音が壊れる場合があります。このようなときは、次の2つの方法の中から選択して使わなければなり

BMX2WAVなどを使用して、背景のキー音を併合

key bms

新しいBMSファイルを作成し、上記のように邪魔になる背景のキー音をすべて#000節に新たに配置して保存します。その後BMX2WAVを適切に使用して作成されたBMSをwavファイルにしてくれて、元のBMSに新しくできたwavファイルを既存のキー音の代わりに入れていただければされます。

同じフレームを時間間隔をおいて相次いで再生

key bms2

かなり面倒な方法ですが、上記のように、同じフレームを分けてじっとしているかのように見えますが、キー音がタイミング合わせ再生されるようにする方法もあります。


書いてみると内容が大幅に長くなって一度はここまで書きました。 次のポストには、上記のワープ停止を利用して、より滑らかなアニメーションを実装して、ここで地雷ノートを入れる方法と、その他の有用なものを書く予定です。