音ゲーマーの取り扱い方
※この記事は苫小牧高専アドベントカレンダー2021 14日目の記事です。
どうもこんにちは、音ゲーマーのみみねこです。高専といえば音ゲー、高専生といえば音ゲーマー、ということで音ゲーマーの話をします。
昨日の記事はつくつくさんの僕の○○が課金制出会い系サイトに引っ掛かりかけた話|つくつく|noteでした。出会い系サイトはやってません。皆さんもデマには気を付けましょう。
※この記事ではゲームセンターにある音楽ゲームの話しかしません。スマホ音ゲーは誰でもできる種類が多すぎて紹介しきれないからです。ゲーセンに行って金を落とせ!!
音ゲーマーって何がすごいの?
自画自賛です。音ゲーが上手い人はそもそも何がすごいのかを紹介します。
体力の使い方が上手い
ゲームセンターの音ゲーは体を大きく使うものが多いです。1曲あたりの曲の長さは2分から3分ですが、その間ずっと動き続けられるだけの体力が必要です。しかも、ただ筋肉があるだけではだめで、休憩地帯(他と比べてノーツの密度が低い箇所)で適度に脱力して体力をセーブする能力も必要になってきます。自分の体を知りつくし、一番ベストな動き方で限界まで遊ぶのが音ゲーマーです。
音ゲーマーの目標
人によって目標は違います。音ゲーマーが何を目標にして遊んでいるかを知れば、ゲーム画面の何を見て応援すればよいかがわかるようになります。
パターンA: クリアできるかどうか
いわゆる「エンジョイ勢」はここ。たまに嘘ついてる超上級者もいますが。
音ゲーにはたいていクリアという概念があります。これは大きく2種類に分けられます。
- タイミングよく叩くとゲージが増え、ミスするとゲージが減る。ゲージを一定基準以上溜めた状態で終了すればクリア:太鼓の達人、beatmania IIDX、BeatStream、pop'n music、CHUNITHM*1、など
- 曲全体での達成率が一定以上ならクリア:maimai、シンクロニカ、ギタドラ、jubeat*2、など
上記に当てはまらない例外を2つ紹介します。
- オンゲキ:音ゲーのスコアに加え、使用するカードの強さによって成績が決まる。(音ゲー単体のスコアも出るので実力を測れないわけではない)
- MUSECA:そもそもクリアの概念がなくスコアの計算のみだが、Graficaの効果でスコア上限も変化する。
クリアの概念が実力に関係しないタイプの音ゲーは、自分で緩めの目標を決めてプレイすることが多いです(全体の90%以上、とか)。
パターンB: ノーミスかどうか
ノーツを正しいタイミングで叩けないとミスになります。パターンBの音ゲーマーは、ミスをゼロにする、つまり全てのノーツを捌けるか?を目標に遊んでいます。
パターンC: パーフェクトかどうか
ノーツの判定はたいてい3種類以上あり、「完璧に叩けた」→「少しずれて叩いた」→「大きくずれていた」→…というように細かく分かれています。この中でも、全てのノーツを「完璧に叩けた」判定で叩くことをオールパーフェクト、略してAPとかパフェとか言ったりします(音ゲーによって呼び方が変わる)。ガチ勢とか、ランカーとか言われる人はAP前提でプレイしてます。
あくまで目標なので、実際にはずれて叩いた判定を○○個まで抑えてノーミスクリアする、とか、ミスを○○個まで抑えてクリアする、とか言う風に目標を設定しながら、音ゲーマーはパターンAからCに向かって徐々に成長していきます。
音ゲーマーの褒め方
ゲーセンに遊びに行ったとき、音ゲーマーは音ゲーしかやりません。音ゲーマーはUFOキャッチャーが嫌いです。音ゲーしている音ゲーマーとどう付き合うか。
雑に褒めてはいけない
結局、その音ゲーマーが何を目標にしてプレイしているかは本人に聞いてみないとわからないです。なので、高い目標を掲げていた音ゲーマーに対して「ノーミスじゃん!」とか褒めると、(当たり前だろ…)とか思われてしまいます。いやそうじゃないんだよと。褒めてくれる気持ちもわかるけど、ずれてる判定が××個も出てるからこのリザは褒められるに値しないんだよと。俺がひねくれすぎているだけかもしれない。
いつ褒めるべき?
一番わかりやすい褒めるタイミングは、自己ベストを更新したタイミングです。これは明らかに過去のどの自分よりも上手かった証拠なので、「すごい!自己べ更新おめでとう!」と言ってあげましょう。
そのほかにも、本人がなんか嬉しそうにしていたら褒めておきましょう。たいてい自分の中で設定していた目標を達成したときです。
先に目標を聞いておく
いっそのことプレイ前に、どれくらいできたら(本人にとって)凄いのか、その基準を聞いておくのもアリです。きっと楽しそうに自分の基準を語ってくれるはず。褒めるタイミングも明確になるので最高。
おわり
以上です。ブログで音ゲーの話をするのは初めてだったのでホントはあと5倍くらい音ゲーの話をしたかったのですが、投稿日になってしまったのでここでやめます。オチはありません。
ちなみにアドベントカレンダーはまだ空いているので、気が向いたら技術系の話を書くかも…しれません。たぶん書く。
明日はLa+あおてん( 'ω') (@osaten_KKG) | Twitterの15日目の記事です。お楽しみに!
過去にタイムスリップする方法
※今日は12月3日ですが、この記事は 苫小牧高専 Advent Calendar 2021 - Adventar 2日目の記事です。
以上、分身したみみねこでした。どうやら14日目も担当しているようですので、お楽しみに。
明日の記事はおおやま君の TypeScriptの型でFizzBuzz | おおやま手記 でした!
昨日の記事はさたけ君(https://twitter.com/satakenkoki)が担当します!
AtCoder Beginner Contest 205参加記(~E問題)
あんまりおもしろくなかったな。知識不足
ZONeエナジー プログラミングコンテスト “HELLO SPACE”参加記(~D問題)
ABC級のコンテスト。ストーリーの関係でCとDの配点が逆転していた。
A - UFO Invasion
文字列中に含まれるZONe
の数をカウントする。大文字小文字の区別や、文字配列の範囲外参照などに気を付けて実装する。
計算量は。
B - Sign of Friendship
それぞれの遮蔽物ごとに分けて考える。その遮蔽物しかないと仮定すると、その遮蔽物の頂点とUFOの座標を結んだ直線とタワーの交点が最適解(最小値)となる。これは、三角関数などを用いてで求めることができる。
よって、すべての遮蔽物について考えたときの最適解の最大値が答え。全体の計算量は。
ちなみに、解となる高さを二分探索しても解が求まる。この解法の計算量は。
C - MAD TEAM
人の各パラメータの最大値の最小値の最大値を求める。(????)
一気に考えると混乱するので、ひとつずつ考察を詰めていく。愚直解はでダメ。
まず、最終的になにかの最小値の最大化をしたい。これは今話題の典型90問でも取り上げられていたが、「解の二分探索」が有効である場合がある。今回も解の二分探索をする方針で考察を進める。
解の二分探索を適用すると「人の各パラメータの最大値の最小値を以上にできるか?」という簡単な問題になる。しかしこのままだと結局この小問題を解くのにかかるので、もう一工夫必要。
選ばれる人のうち、誰かのあるパラメータが以上なら、そのパラメータについては必ず条件を満たす。あるパラメータの数値が以上(必ず条件を満たせるライン)なら、そうでないならとすることで、選ばれた人の各パラメータの論理和がすべてなら条件を満たしているということができる。さらに、各人の各パラメータの数値は通りなので、個ある選択肢を個に圧縮することができる。これなら全探索しても通りの組合せしかないため、十分高速である。
計算量は…公式解説に倣って、パラメータの個数を、選ぶ人数を、二分探索の上限値をとしてである。
D - Message from Aliens
操作を「文字の追加」「文字対の削除」の2つのフェーズに分ける。
(1) 文字の追加
愚直に操作を実行すると、文字列を反転するたびにの計算量がかかってしまうため、全体の最悪計算量はとなる。反転しても文字列の並びは変わらないことを利用して、「今文字列が反転しているか?」というフラグを持ち、このフラグがtrueのときは反転しているとみなして処理を行う。つまり、反転しているときは文字列の先頭に文字を追加する。
(2) 文字対の削除
ある隣接する同じ文字の組(文字対)を削除しても、他の文字対が削除できなくなることはない(状況が悪化しない)ので、文字対を見つけたら貪欲に削除してよい。stackを用いると、この操作をで出来る。
出力するとき、文字列の反転フラグを参照することを忘れない。全体の計算量は。
E - Sneaking
への移動を使うことはないと考察して動的計画法を書いたがWA。グラフの最短距離を求める問題に帰着できるらしい。
感想
あ
AtCoder Regular Contest 120参加記(~C問題)
一か月ぶりの参加。
A - Max Add
が決まっているときの数列の最大値をとする。数列の値はすべて正なので、のときの値はとなり、これまでの最大値を更新する。この状態でのときの操作を行うと、の値はとなる。このようにしてまでの操作を終えたときのの番目の値は
となる。これの総和は、
となる。ここで、
と定義すると
であり、2項目は累積和を用いることでで計算できる。各に対して前から計算することで、全体の計算量はとなる。
B - Uniformly Distributed
最初DPかな?と思ったけど違った。考察は大事。
マス目からの領域を切り取って考えると、左上から右下へ行く方法は2通りある。このとき、もし左下のマスの色と右上のマスの色が異なる場合、これら以外のマス目をどう塗ろうと赤に塗られたマスの数が異なる経路が存在してしまう(このような配置が一か所でもある場合答えはとなる)。
なので、例えば左下がR
で右上が.
の場合、条件を満たすためには右上のマスを赤に塗るしかない。左下も右上も.
の場合は、両方とも同じ色に塗ればいいので赤赤か青青の通りとなる。
斜め方向、厳密にはが等しいようなマスはすべて同じ色で塗る必要がある。これらのマスがすべて.
なら答えを倍していけばよい。計算量は。
C - Swaps 2
操作の特徴をつかむ。
番目にあった数を番目の位置に移動させたときの値はとなる。つまり、の最終的な位置はから絞ることができる。
また、すべてのに対して、番目の数を番目の位置に移動させると決めたときの操作回数は、バブルソートの交換回数に等しい。バブルソートの交換回数は転倒数と等しく、で求める方法がある。
の移動先の候補が複数通りある場合、をに一致させることが可能ならば、同じ移動先の候補を持つ数がの中に移動先の候補の数だけ存在する。さらに、移動先の候補が等しいつの数を「操作」によって交換しても見かけ上の値は変わらない(つまり交換する必要がない)。よって、移動先の候補が等しい数のうち左から番目の数を、移動先の候補の左から番目に移動させると決めるのが最適である。
例)の場合、の移動先をで表すとするととなる。この数列の転倒数はであり、これが解となる。
移動先を調べるのはmapを用いた。全体の計算量は。
感想
これで水パフォなのか