うさむねhello.work

スーパーマリオ64のRTA(リアルタイムアタック)を専門に活動している人のブログです

メニュー

【マリオ64】『ツイッタスク』のルートを考えてみる

まえがき

マリオ64では"タスク"と呼ばれる競技がある。

簡単に言うと、指定された条件をクリアした後、最終条件(スター回収など)をクリアするまでを競う競技だ。

 

この"タスク"と呼ばれる競技は、『タスク内容を通知する場所』と『参加者』さえそろっていればいつでも成り立つ競技で、これを『ツイッターでやろう』というのが、"ツイッタスク"となっているみたいだ。(ぼくは全く関与していない)

ツイッタスク(Twittask) (@Twittask64) | Twitter

残念ながら、現在はサイレント終了してしまっているが、企画としてはなかなか面白いものだと思うし、たまには人が作ったタスクをやってみたいという気持ちもあるので、復活を望んでいるというのがぼくの本音である。

ただ、タスクを頻繁(毎週とか)に開くと、毎日タスクに追われるような感覚になり、次第に参加者も減ってしまうと思うので、例えば、月1で開くとか、モチベーションがある時に開くとかにしてみるのが良いのではないかと思う。

 

前座はこれぐらいにして、今回の記事でどういうことを書くかを話す。

今回は、この"ツイッタスク"で提示されているタスクを1つ取り上げて、普段ぼくがどのようにルートを作っているのか、一例を見せていく。(あくまで一例)

あれこれ考えながら書いていくので、皆もぜひ、脳内でマリオを動かしながら一緒に考えてみてほしい。

 

タスクの選択

この企画では以下2つのタスクが行なわれていたらしい。

- タスク①

f:id:circumark994:20190222031208p:plain

https://twitter.com/Twittask64/status/1002526840467013632

 

- タスク②

f:id:circumark994:20190222031300p:plain

https://twitter.com/Twittask64/status/1003118585475039232

 

『バッタンキングのとりで』はタスクでは常連ステージで、ステージをグルグルまわれる分色々なことができるステージとなっている。

一方、『さむいさむいマウンテン』は、縦の移動の仕方がある程度決まっているせいで、ルートもある程度絞られてしまうので、タスクで使うにはちょっとクセのあるステージとなっている。

以上より、条件はともかくとして、『バッタンキングのとりで』のほうがルート構築しやすいステージなので、ぼくは『タスク①』を選択することにした。

 

条件の考察

まず最初に、条件の考察をする。

なぜ条件の考察をするかというと、条件の内容によっては、道筋が確定する場合があるからだ。また、道筋が確定しない場合でも、どの条件をメインにルートを作っていくかは決めないといけない。

 

タスク①の条件は以下となっている。

メイン条件:

1. 赤コインを4枚以上回収する

2. 2ヶ所以上のパックンフラワーを倒す

3. ミニバッタンを1匹倒す

終了条件:

- 任意のスターを取得する

 

念のために、オブジェクト達の配置画像も貼っておく。

f:id:circumark994:20190222171851p:plain

 
あなたはこの条件達を見た時、どのようにルートを作っていくだろうか。

各条件に対するぼくの考えと、ルート作成手順を以下に書く。

■ 1. 赤コインを4枚以上回収する

 赤コインはステージに満遍なく散らばっているので、考えるのは後回しで良い。

■ 2. 2ヶ所以上のパックンフラワーを倒す

 3匹しかいないパックンのうち2匹を倒さなければならないので、導線をある程度確定させやすい。優先度は高め。

■ 3. ミニバッタンを1匹倒す

 2匹のうち1匹を倒さなければならないので、導線を確定させやすい。また、条件に使われるオブジェクト達は右側に集中しているので、右側のバッタンを倒すほうが良さそうに見える。

f:id:circumark994:20190222210230p:plain

■ 任意のスターを取得する

 『バッタンキングのとりで』のスターのうち、遅いスターは以下である。

 - バッタンキングスター: バトルシーンが長いので使えない。

 - 赤コインスター、100枚スター: スター出現アニメーションがあるので、極力避けたい。

 - とりでのてっぺんスター: 塔を登るところで時間がかかるので使いにくい。

 - 鳥かごスター: 全ての条件を取り終わった段階で浮島にいない限りは遅い。

 ゆえに、まずは『ぶっこわスター』か『ひとっとびスター』で考えていくべきだと思った。

 

以上が各条件に対するぼくの考えとなっている。

そして、各条件を踏まえたルート作成手順は、以下である。

① 取得するスターを決める

② 『ミニバッタンを1匹倒す』を満たすルートを考える

③ ②を元にして他条件も満たせるルートを考える

④ ルート候補を見直す

なぜこのような手順になるかは、以降を読めば分かると思うので、ここでは説明せず進めていく。

 

① 取得するスターを決める

取得しやすいオブジェクトを中心にルートを作ってしまうと、想定外のルートが見つけ出せない可能性があるため、全体の道筋から虱潰しのように考えていくのが、ベストなやり方だと思っている。

全体の道筋を決めるためには、『開始地点』と『終了地点』がないといけないのだが、『任意のスターで終わる』系のタスクでは、『終了地点』が固定でないので、こちらで仮決めしてあげる必要がある。

 

『どのスターを"終点地点"にすればいいの?』と思うかもしれないが、ひとまずは好みで良いと思う。

『バッタンキングのとりで』にて、候補となるスターは『ぶっこわスター』『鳥かごスター』『ひとっとびスター』の3つだが、歴代タスクで一番多いのは『ひとっとびスター』終了なので、今回はこのスターを選択した。

この後、『ひとっとびスター』において先で挙げた②③④の工程をやるのだが、本気でやるならば、『ひとっとびスター』を終えた後に、『ぶっこわスター』『鳥かごスター』においても同じ②③④工程をするべきである。(今回は省略する)

 

② 『ミニバッタンを1匹倒す』を満たすルートを考える

今回は、この『ミニバッタンを1匹倒す』という条件が、一番パターンが少なかったので、これから考えることに決めた。

ミニバッタンを1匹倒して『ひとっとびスター』を取得するルートは、以下2ルートしかない。

f:id:circumark994:20190222230520p:plain f:id:circumark994:20190222181500p:plain

それぞれ、『左ルート』『右ルート』という名前を付けて話していく。

先の条件考察でも話したが、オブジェクトは右側に集中しているので、右ルートのほうが条件を取るには有利に見える。

 

この後すぐ③に行きたいところなのだが、この段階でひとつやっておかないといけないことがある。それは『目安となるタイムを作る』ことである。

当たり前の話だが、どのようなタスクにも『これ以上は絶対出ない』というタイムが存在し、それを先に知っておくと、突き詰める時に楽になる。

 

では、『これ以上は絶対出ない』タイムを知るにはどうすれば良いかというと、今回の場合であれば、先に挙げた『左ルート』『右ルート』を試してタイムを確認すれば良い。

作成過程は省略するが、『左ルート: 12.93秒』『右ルート: 12.83秒』となった。

f:id:circumark994:20190222233922p:plain f:id:circumark994:20190222233853p:plain

 

つまり、『これ以上は絶対出ない』タイムは12.8秒ぐらいということになる。

なぜこれが『これ以上は絶対出ない』タイムかというと、このタスクには『ミニバッタンを1匹倒す』以外にも条件があり、それらの条件を取れば必然的にこのタイムより遅くなるからである。

 

③ ②を元にして他条件も満たせるルートを考える

先のセクションの結果を元にして、『赤コインを4枚以上回収する』『2ヶ所以上のパックンフラワーを倒す』も満たせるルートを考える。

 

★ 左ルート

f:id:circumark994:20190222230520p:plain

この導線に近いオブジェクト達は、左下のオブジェクト群になる。(オレンジ枠)

f:id:circumark994:20190222232831p:plain

オレンジ枠の赤コインは、アプローチに少し難がありそうだが、下手に別の赤コインを取るよりはこっちを取った方が良いと思われる。

なので、この段階で『赤コイン3枚』と『パックン1匹』が確定となる。

残りの『赤コイン1枚』と『パックン1匹』の候補は、近場から考えると以下の2パターンぐらいしかなさそうに見える。(緑枠)

f:id:circumark994:20190222233351p:plain f:id:circumark994:20190222233413p:plain

 

ここから先は実際に作ってみないと分からないので、作ってみることにした。本当はここで作った時の過程を書きたいのだが、今回は全体的なルート作成の過程を見せるのがメインなので、省略する。

まず、左の絵のルートを作ってみると"19.73"秒となった。

動画: ツイッタスク WF 19.73grab - YouTube

続いて、右の絵のルートだが、左の絵のルートを作った時に間に合っていた回転リフトに間に合わなかったので、リフトの時点で『遅い』と思って作らなかった。

ここまでが、左ルートとなる。

 

★ 右ルート

f:id:circumark994:20190222181500p:plain

この右ルートにおいて、以下の2匹のオレンジ枠のパックンを倒すことを考えると、導線上に3匹目のパックンがいて、倒すことになってしまう。

f:id:circumark994:20190223000038p:plain

つまり、右ルートにおいては、3匹目のパックン(オレンジバツ)を倒すのは確定となり、残りのパックンは、オレンジ枠のパックンのうち、どちらか一方を倒すことになる。

また、3匹目のパックン(オレンジバツ)のすぐそばに赤コインがあるので、それも取得確定となる。

 

残りの『赤コイン3枚』と『パックン1匹』を考える。

この『赤コイン3枚』と『パックン1匹』の組合せは、全部調べようとするとかなりのパターン数試さなければならないことになるので、ある程度絞るために、パターン数の少ない方を固定して考えていく。

今回のタスクでは、右下のパックンを選んだ場合と、左のパックンを選んだ場合で、分けて考える。

 

右下のパックンを選んだ場合

この場合は、左側にある赤コインは全て無視して考えてよい。

つまり、以下の緑枠の赤コイン5枚から3枚選択することになる。

f:id:circumark994:20190223001634p:plain

選び方は全部で10通りあると思う。

10通りぐらいであれば、全て試した方が速いかもしれないが、『速そうだと思うルートから順に作っていき、ある特定のタイミングのタイムを見て速いタイムが出るかどうかを判断する』というやり方のほうが賢いと思う。

 

せっかくなので、賢いやり方で話を進めていく。まずはじめに、以下の2パターンの取り方を考える。左からAルート、Bルートと呼ぶ。

f:id:circumark994:20190223002437p:plain f:id:circumark994:20190223002417p:plain

この2パターンはどちらとも、赤コイン3枚目(カゴ近くの浮島上の赤コイン)から先は同じ動きをすることになる。つまり、Aルートを作成した後、Bルートの赤コイン3枚目まで作成し、そこまでのタイムを比較するだけで結論を出すことができる。

実際に作ってみたところ、Aルートでは"11.43"で赤コイン3枚目を回収していたのだが、Bルートでは"12.23"で赤コイン3枚目を回収していた。

よって、Aルートのほうが速いことが分かった。

f:id:circumark994:20190223004814p:plain f:id:circumark994:20190223004833p:plain

Aルート動画: ツイッタスク WF 18.96grab - YouTube

 

続いて調べたのは、以下の2パターンである。左からCルート、Dルートと呼ぶ。

f:id:circumark994:20190223005143p:plain f:id:circumark994:20190223005310p:plain

これらのパターンでは、先で作成した動画と『赤コイン4枚目』以降が同じなので、『赤コイン4枚目』のタイムを見ればよい。(Aルートのタイムは"13.20")

それぞれの『赤コイン4枚目』のタイムは以下だった。

f:id:circumark994:20190223033810p:plain f:id:circumark994:20190223011637p:plain

CルートはAルートと比べて"0.76"遅く、Dルートは"1.50"遅いらしい。

 

続いて調べたのは、以下の2パターンである。左からEルート、Fルートと呼ぶ。

f:id:circumark994:20190223013414p:plain f:id:circumark994:20190223013439p:plain

まずEルートを作ってみると、以下のタイムとなった。

f:id:circumark994:20190223014203p:plain f:id:circumark994:20190223014218p:plain

Aルートでは、ミニバッタンが初めてジャンプするのが"15.40"'(以下の画像)なので、EルートはAルートよりも"1.16"遅いことになる。

f:id:circumark994:20190223014343p:plain

Fルートの赤コイン4枚目は"13.43"だった。Eルートと比べると"0.23"速いのだが、Aルートと比べると"1.16 - 0.23 = 0.93"遅いので、没となる。

f:id:circumark994:20190223014941p:plain

 

続いて調べたのは、以下の2パターンである。左からGルート、Hルートと呼ぶ。

f:id:circumark994:20190223020926p:plain f:id:circumark994:20190223020903p:plain

Gルートは、DルートとFルートの"赤コイン3枚目"を比較することでタイムを算出できる。

f:id:circumark994:20190223021727p:plain f:id:circumark994:20190223021748p:plain

DルートはAルートと比べて"1.50"遅い。また、上記画像よりDルートはFルートと比べて"0.43"遅いことが分かる。これより、GルートはAルートと比べて"1.50 - 0.43 = 1.03"遅いことになる。

読んでいて混乱するかもしれないが(書いている側も混乱している)、こういった『過去に作った動画を参照してタイムを算出する』方法は、タスクだけでなくアイデアのタイムを算出するのにも役立つので、こういう方法があるということだけ覚えてもらえれば良いと思う。

Hルートは実際に作ってみないと分からないので、作ってみる。結果は、ミニバッタンが初めてジャンプしたフレームが"17.53"だった。

f:id:circumark994:20190223022949p:plain

Aルートでは、ミニバッタンが初めてジャンプするのが"15.40"'なので、HルートはAルートよりも"2.13"遅いことになる。

 

最後の2パターンは以下となる。左からIルート、Jルートと呼ぶ。

f:id:circumark994:20190223023131p:plain f:id:circumark994:20190223023147p:plain

『細い足場の赤コイン』と『ドッスンの頭の上の赤コイン』の相性が悪いので、この2つのルートは遅くなると予想される。なので、わざわざ作らなくても良いだろう。

 

長旅になってしまったが、以上より、右下のパックンを選んだ場合は、以下の『Aルート』が最速となると考えられる。

f:id:circumark994:20190223002437p:plain

 

左のパックンを選んだ場合

この場合は、左側のパックンを倒しに行くことを考えると、以下の『赤コイン3枚』は確定となる。

f:id:circumark994:20190223023943p:plain

左側のパックンを倒しに行くには、ふつうにぶっこわしにいく導線も考えられるが、ぶっこわのタイムを見る限り、パックンの位置に到達するのに最低でも8秒程度はかかる。

坂を登ってパックンの位置に到達するのも、同じぐらいのタイムとなるので、『ぶっこわ導線』と『坂から導線』を比較すると、『坂から導線』のほうが赤コインを1枚取れる分有利なので、『坂から導線』が確定する。

ゆえに、『左のパックンを選んだ場合』は坂の赤コイン取得が確定する。

 

残りの『赤コイン1枚』パターンは以下3パターンある。それぞれ、αルート、βルート、γルートとする。

f:id:circumark994:20190223025301p:plain f:id:circumark994:20190223025325p:plain f:id:circumark994:20190223025343p:plain

これ以外の可能性は、先の『右下のパックンを選んだ場合』の試行を元に除外した。

βルートとγルートの差も『右下のパックンを選んだ場合』から算出することができるが、ほぼ一緒ぐらいだったので、あらためて作り直すことにする。

 

作成した結果、ミニバッタンが初めてジャンプするフレームはそれぞれ以下だった。

f:id:circumark994:20190223030727p:plain f:id:circumark994:20190223030741p:plain f:id:circumark994:20190223030756p:plain

αルートは少し遅いことが分かる。γルートは14秒台が出ているが、ダメージを食らってしまっているため、最速でバッタンを倒すことができない。よって、バッタンを倒すまでのタイムを見てみないと分からない。

以上より、ひとまずのルート候補はβルートとγルートの2つとなる。

 

④ ルート候補を見直す

最後のセクションになる。先のセクションの調査を踏まえて、ルート候補は以下となっている。

『Aルート』『βルート』『γルート』

バッタンを最速で倒せるタイムはそれぞれ以下となっていた。

f:id:circumark994:20190223034817p:plain f:id:circumark994:20190223034837p:plain f:id:circumark994:20190223034858p:plain

どうやら、『γルート』は最速でバッタンを倒せなくても速いらしい。

作ったタスは、お試しでしかないので、最適化次第で結果が変わるかもしれないが、今回は速い順に『γルート』<『βルート』<『Aルート』という結果となった。

ただし、実際に人間がやった場合でも結果が変わるので、その点を考慮するならば、この3つのルートは全て試したほうが良いと思われる。

 

むすび

今回は、"ツイッタスク"で提示されているタスクを1つ取り上げて、普段ぼくがどのようにルートを作っているのかの一例を見せた。

最終的なルート候補3つを参考用に紹介する。

Aルート: ツイッタスク WF 18.96grab - YouTube

βルート、γルート: ツイッタスク(Twittask) on Twitter: "比較動画です… "

 

ただし、誤解しないでほしい点が以下3点ある。

- 今回は『ひとっとびスター』前提しか考えていない。『ぶっこわスター』等の他スターを前提とした場合も考えるべきである。

- 作成したタスは結構手抜きなので、ちゃんと作ったら結果が大幅に変わる可能性がある。

- 今回はオーソドックスなぼくの作り方を見せたが、ステージや条件によっては、もっと別の作り方をする場合がよくある。

 

今回の話で伝わったと思うが、タスクのルート構築は、深く調べれば調べるほど味が出てきて、楽しくなってくる。

『でも、時間めちゃくちゃ使うんでしょ?』と思ったかもしれないが、この記事を書くに当たって調べた時間はたぶん半日も使ってないぐらいだと思う。

無駄に数を打つのではなく、一度作ったタス(動画)をうまく活用していけば、どんなタスクでも、少なくとも1日程度でルート構築できるはずだ。

もし今後、(誰主催のタスクか関係なく)タスクの参加を考えている場合は、ぜひ、ぼくが紹介した方法を試してみてほしい。

また、ぼくはタスクを主催する側であることが多いが、他の人のタスクをやってみたいと思っているので、『我こそは』という方は、ぜひタスクを開いてほしい。