見出し画像

ScuffedWallsを使ってNoodle譜面をつくる

長くなりました、ごめんなさい

準備するもの

ここからダウンロードしてください

あと、壁を置いたりアニメーションをつけた場合クロマッパー上で確認することはできないのでゲーム内で確認することになります。そのため、ゲームをデスクトップモードで起動する必要があります。詳しい使い方はこちらを参照

つかいかた

①譜面をフォルダごと、.exeにドラッグします。
②編集したい難易度を指定します。
③譜面のフォルダ内に生成された.swファイルを編集する。(Ctrl+Sを押すと実行されます)

あとはドキュメントを見ながら思いのままにNoodle譜面を作るだけ!

使い方

(ビート数):(関数)
    (いろいろなパラメータ):(何かしらの数字)
  (いろいろなパラメータ):(何かしらの数字)
                ⋮

といった感じで、関数をビート数に対して実行していきます。そのしたに設定したいパラメータを入力することで細かく設定できるようになります。

ここからはNoodle譜面といえば壁譜面だと思うのでWall関数を例に使い方を詳しく書きます。手っ取り早く使用例が見たい人は飛ばしてください。

下準備

また下準備です。準備が8割です。まず譜面ファイルを作成します。

Ex+の譜面にChromaのライトイベントとNoodle が必要なノーツを置きます。
まず、Tabキーをおしてサイドメニューを開きます。そこのクロマメニューをおします。クロマイベントの設置を有効にしてからライティングレーンにイベントを置きます。色は何でもいいです。

クロマイベントの設置

次にノーツを設置するレーンでQキーを押すとマス目関係なく自由に置けるようになります。Qキーを押しながら好きなところにノーツを置いてください。

Qを押しながらノーツを置く

上の操作で置いたライトイベントとノーツは後で削除しても大丈夫です。
この操作をすることで譜面のSuggestionsとRequirementsにChromaとNoodle Extensionsを追加することができます。
info.datから直接追加することも可能ですが、今回の記事では初心者を対象としているためこちらの手順を紹介します。
余力がある人はSong CoreやHeckのwikiを読んで譜面の設定方法を学んでみてください。

こうなってればOK

ここで譜面を保存して難易度選択画面に戻ります。
Ex+をExにコピーします。

ここまでで譜面の下準備は完了です。

譜面をフォルダごとSucffedwall.exeにドラッグします。
そこで次のように文字を打ち込んでエンターを押していきます。(最後は"y"で大丈夫です)

これで、譜面フォルダ内にSucffedwallExpertPlusStandard.swが生成されていれば大丈夫です。このファイルにコマンドを打ち込むことで様々な演出を作ることができます。
.swファイルを編集中はscuffedwall.exeは起動させておいてください。

次にSucffedwallExpertPlusStandard.swを開いて、

1:Import
   path:ExpertStandard.dat

と入力して上書き保存してください。これはExの譜面をEx+にコピーする関数です。先ほど操作したSucuffedwallが正常に動いていたら準備完了です!

二つの難易度を用意することで、通常のノーツ配置をExで行い、そこに演出をつけたものをEx+に書き出すようになります。これはSucuffedwallが譜面ファイルをすべて上書きするようにできているからです。演出を置いてる途中でやっぱりノーツ配置変えたいとなったときにはExを編集することで変更が簡単になります。

壁を置く

まず譜面に壁を置いてみましょう。壁を置くためには"Wall"関数を使います。大文字でも小文字でも大丈夫です。設置するビート数は何でもいいですがプレビューで確認しやすいように若い数字がいいです。

5:wall
  scale:[1,1,1]

"scale"は壁の大きさを指定します。[x,y,z]の座標です。簡単に言うと[よこ、たかさ、おくゆき]です。好きな数字で構いませんがとりあえず一辺の長さが1の立方体を作ってみましょう。上書き保存してscuffedwallが正常に動いていたら書き込みに成功しています。


壁ができました!

大きさ、場所、色を変えてみる

パラメータをいじってみましょう!壁には大きさを指定する"scale"のほかにも"position"(場所),"color"(色)を指定できます。先ほどの壁に追加してみましょう。

5:wall
  scale:[0.3,0.3,5]
  position:[0,5]
  color:[0,1,1,1]

"position"は[x,y]、"color"は[r,g,b,a]です。aはアルファ値です。スケールも変更して細長くしてみました。ゲーム内で確認してみましょう。

いい感じですね

たくさん壁を出す

壁譜面を作るにはたくさん壁があったほうが気分もあがりますね。たくさん出すには"repeat"(繰り返す回数)、"repeataddtime"(繰り返しの間隔)を使います。

5:wall
  repeat:100
  repeataddtime:0.2
  scale:[0.3,0.3,5]
  position:[0,5]
  color:[0,1,1,1]

これで、先ほど作った壁を100個、0.2拍ごとに生成します。こちらもゲーム内で確認してみましょう

いい感じです。もう少し工夫を加えましょう。繰り返し中に動きを持たせるには内部変数の"repaet"を使います。これは繰り返すたびにrepeatが変数として0から1ずつ増えていきます。(今回は0~200まで増える)
パラメータ内で数式を使いたい場合は{中かっこ}で囲みます。

5:wall
  repeat:100
  repeataddtime:0.2
  scale:[0.3,0.3,5]
  position:[{-30+repeat},5]
  color:[0,1,1,1]

これで、最初の壁は[-30,5]に、次の壁は[-29,5]に、その次は[-28,5]…のように少しずつ右にずれていく壁ができるはずです。ゲーム内で確認してみましょう。

ますますいい感じです。ただちょっとださいのでもう一工夫します。scuffedwallでは三角関数を使うことができます。「なんだそれ!?」というひとは何も考えず真似してください。そういう呪文みたいなものです。
ついでに、NJSとオフセットも設定しておきましょう。"njs"と"njsoffset"を使います。

5:wall
  repeat:100
  repeataddtime:0.2
  scale:[0.3,0.3,5]
  position:[{7*Cos(repeat/9)},{7*Sin(repeat/9)}]
  color:[0,1,1,1]
  njs:5        
  njsoffset:10  

計算をする個所は{中かっこ}で囲みます。四則演算は+(たしざん),-(ひきざん),*(かけざん),/(わりざん)で行うことができます。
これで半径5の円状に壁が設置されます。
※三角関数の一文字目は大文字にすることに注意

三角関数がわからない人のために簡単に説明します。Cos(数字)やSin(数字)と書くことで数字に対応した三角比(円みたいな)に変換されます。また、この三角比は0~1の値なので掛け算で大きくすることで大きい円を作ることができます。
円状に配置したいときは上のpositionをコピーしてご利用ください。
円の大きさを変えたい場合は{7*Cos(repeat/9)}の7の部分を変更してください。Sinも同様に
円の間隔を変更したい場合は{7*Cos(repeat/9)}の9の部分を変更してください。Sinも同様に

それではゲーム内で確認してみましょう

きれいですね

アニメーションを加える

さらにもう一歩進んでアニメーションを加えてみましょう。ここからはscuffedwallのドキュメントで詳しく読んでほしいのですがここでは"animatedissolve"を紹介します。

5:wall
  repeat:100
  repeataddtime:0.2
  scale:[0.3,0.3,5]
  position:[{7*Cos(repeat/9)},{7*Sin(repeat/9)}]
  color:[0,1,1,1]
  njs:5         
  njsoffset:10  
 animatedissolve:[0,0],[1,0.2]

[どれぐらい消えるか,時間]で指定します。0は完全に消え、1は完全に表れてる状態です。時間は0から1で表します。
上で書いたのは最初(0)は完全に消えていて(0)、少したつ(0.2)と完全に表れる(1)ようになっています。
ゲーム内で確認してみましょう。

見にくいけど、しっぽがふわっとしてる

ふわっと表れていたら成功です。もっと細かく設定するとついたり消えたりする壁や、目の前で突然消える壁などが作れます。ほかにもアニメーションを作る関数はたくさんあるので遊んでみてください。

なんとなく使い方がわかってきたのではないでしょうか。
エラーが出た場合はつづりが間違えている、.(ピリオド)と,(カンマ)を間違えている、ありえないパラメータをつかってる、英字と日本語入力を間違えてる、scuffedwallにエラーが表示されるときは何行目がおかしいか教えてくれます。そこを見直しましょう。

使用例

関数の打ち方はわかったけどいい感じの壁を作るにはどうしたらいいの?という人のためにいくつか使用例を書きます。ここをコピーして数字を変えてみる使い方もありだと思います。

壁譜面(雰囲気バージョン)

周りにふわーって流れてくるタイプの壁を作りたい場合は"repeat"を使います。

5:wall
  repeat:50 //50個の壁をつくる
  repeataddtime:0.1 //0.1ビートごとに出現する
  scale:[0.5,1,10] //平べったい壁
  position:[{-10+repeat/2},0,0] //repeatをいれると壁が少しずつずれていく
  color:[0,1,1,1] //r,g,b,a
  njs:100 //100ぐらいがちょうどいい
  njsoffset:5 //遠めにしたほうが雰囲気が出る

基本的に壁譜面はこれらの応用ですべていけます。

壁譜面(ひとりでうごくバージョン)

いきのいい壁が作りたいときは
"animateposition"や"animatescale"、"animatelocalrotation"を使います。
時間は0~1で表します。

5:wall
 duration:10
  scale:[1,1,1] //立方体
  position:[1,2,10] 
  color:[1,1,1,1] 
  animateposition:[10,0,0,0],[-5,0,0,0.5]

ちょっとこだわった壁譜面はアニメーションをうまく使いましょう

踊るノーツ

ノーツはプレイヤーに切ってもらわなきゃいけないので暴れた後に本来あるべき場所に来てもらいます。そこで”AssignPathAnimation”を使用します。

10:AssignPathAnimation
  track:hopp
  duration:8
  AnimatePosition:[0,10,0,0],[0,0,0,0.5,"easeOutBounce"],[0,0,0,1]
  easing:easeInOutSine

この後跳ねさせたいノーツを"hopp"トラックに入れます。

プラットフォームを改造する

1:Environment \\ビートは何でもいい 
  id:^BigMirrorEnvironment\.\[0]Environment\.\[18]DoubleColorLaser$ \\Regexの形で書く 
  lookupMethod:Regex \\Regex推奨
  position:[8,1.667,39] \\もともとオブジェクトがあった位置からの移動距離
  scale:[10,1,1]\\大きくしたり、伸ばしたり
  track:DoubleColorLaser \\トラックも指定できる
  active:true

より詳しくは別記事を参照

エフェクトセット

別記事に移しました

さいごに

おつかれさまでした。多分一度読んだだけでは何のことかわからないことがたくさんあると思います。もしわからないことがあれば気軽に私に聞いてください。書いてあることでも書いてないことでも大丈夫です。

もしNoodle譜面が完成したら教えてください!あなたのNoodle譜面を楽しみにしてます!

この記事が気に入ったらサポートをしてみませんか?