【SOUND VOLTEX】インペリアル

はじめに

こんにちは。B4UT4thのへびです。先日、かねてから目標にしていたインペリアルになりました。

せっかくの節目なので、そこに至るまで私が何を考え、何を実行し、その結果何が起こったのかを記録として残しておこうと思います。

※データや画像の一部はVaddictのものを使用しています。

vaddict.b35.jp

振り返り

~ VF19.000

こちらの記事に。

lev635.hatenablog.com

VF19.000 ~ VF19.250

クリムゾンの記事にも書きましたが、VF欲しさに19だけを選曲していました。 地力が不足した状態で19を触ると癖がつき、将来19Sを出す際に苦労するという理由から、クリムゾンになってすぐに19に着手するのは得策ではないとされています。 しかし当時の自分は癖という現象への理解が浅く、癖がつくと自分の身に何が起こるのか知らなかったため一旦癖の事は置いておいて19をやる方針をとりました。

これを3ヶ月間続けた結果、無事にクリムゾン2になりました。18Sの個数は53個でした。

VF19.250 ~ VF19.500

クリムゾン2になっても19を選曲し続けました。道中 VAZiLiSQ [MXM] にハードをつけるために粘着した結果まともなスコアが出なくなる事故も起きましたが、 きたさいたま2000 [HVN] で19初Sを決めるなどして順調にVFを伸ばしていきました。

しかし、CLAMARE [MXM] でSを出して到達した VF19.415 で事態が変わります。鳥プラやSが出そうな19が尽き、毎日のように伸びていたVFが全く伸びなくなりました。 この時期は極圏 [HVN] をPフリーで粘着しては失敗するのを毎日のように繰り返していました。サークルの同期のアドバイスもあり、ここで遂に18を埋める決意をしました。

この時の18Sの個数は77個だったのでとりあえず100個まで埋めることにしました。 また、100個埋めたのに効果がなく残念な気持ちになるのを避けるため、 出来る限り難しい譜面を詰めてSを出すことを意識しました。 以上の方針のもと、19の誘惑に耐えながらおよそ1ヶ月かけて18Sを100個出しました。

18Sを100個出したので19を解禁し、試しに極圏 [HVN] を選曲すると。

一発でSが出ました。 この日は他にも19鳥プラが4個出てVFが0.034伸びました。18埋めの威力を思い知らされた瞬間です。

この後は順調にVFが伸び、特に苦労することなくクリムゾン3になりました。19Sは5個、VFの下限は19鳥プラになっていました。

VF19.500 ~ VF19.750

クリムゾン3になってからボルテのプレイ頻度が激減し、代わりにオンゲキで遊ぶようになりました。

ongeki.sega.jp

天狗の落とし文 feat. ytr[LUN] 好きな譜面

2週間ほどオンゲキで遊び、やりたかった事が出来たのでボルテに戻ると不思議なことに18上位や19のSが突発で出るようになっていました。

同じクレジット

ここになぜボルテのスコアが突然伸びたのかという自然な疑問が生まれます。2週間別のゲームで遊んだ結果ボルテの地力が爆発的に伸びてスコアが出るようになったとは考えにくいので別の理由を考えたところ、 ノーツを光らせる意識が芽生えたからだという結論に至りました。 オンゲキは配点の関係から猶予前後33msの最高判定を出すことがスコアにかなり寄与するため、難所以外のノーツも光らせる必要がありました。 その意識のままにボルテをやった結果非本質的な失点が減ってスコアが出るようになったということです。

この流れをボルテだけで完結させるために取り組んだのが17の995埋めです。 当時の私が17で995を出すためには難所以外ではほとんど失点できなかったため、オンゲキをプレイするのと同様の効果が得られると期待してのものです。 この考察は正しかったらしく、その直後毎日のように19Sが出る時期に突入し(院試その他による足止めはありましたが)そのままクリムゾン4になりました。

3列目が19Sの個数

VF19.750 ~ VF20.000

この時期は以下の流れでプレイしていました。

  1. 17や18下位の995を狙う(18UCが出たら嬉しい)
  2. 18上位のSを狙う
  3. 調子が良さそうだったら19を詰める

上の二つは毎回やっていたので17の995や18上位のSは増えました。特に18S難易度のtier2は半分以上Sで埋めました。 しかし、19と戦えるほど調子が良いことが少なく3ヶ月間で1個しか19Sが出ませんでした。

そんな状況の中サークルの部内戦に参加したところ、驚くことにインペリアルとマッチングしていました。 試合を成り立たせるべくプレイする頻度を上げたところ、再び毎日のように19Sが出る時期に突入しました(!)。 1ヶ月間で19Sが11個、20鳥プラが2個出ました。

同じ日に

最後はLachryma《Re:Queen'M》[EXH] で決めました。

1ヶ月

各種データ

VF

17

990が121個、995が63個。

18

990が213個、995が37個。

19&20

感想

  • 自分の経験と周囲の人の状況からして19S30個が大体の目安かと思われます。その上で残りの20枠をどのように埋めるかに個人差があるといった感じでしょうか。私の場合は18UCで埋めることになりました。
  • 狙いやすい19はこれからも増えていくと予想されるので、少なくともインペリアルを狙う上では易しいとされている譜面でSが出なくても悲観することはないと思います。
  • 追加されてまだ日が浅いですがターゲットスコア機能はかなり有用だと思いました。 どこでどの程度失点しているのかの情報を数値として得られるので、詰めるべきかの判断に役立ちました。 例えば逆月 [MXM] や無意識レクイエム (cosmobsp rmx) [MXM] は自己ベストこそSに近いものの、譜面全体を通して失点していることが分かったため詰めない決断に至れました。 逆に、音楽 -resolve- [VVD] はほぼ難所だけで失点していたことが分かったためPフリーでの噛み合い待ちをする判断ができ、結局Sを出せました。

最後に

アドバイスをくれたり、課題曲を投げてくれたりした方々ありがとうございました。これからもよろしくお願いします。

HTMLとCSSでお絵描き【SOUND VOLTEX編】

※この記事は B4UT Advent Calendar 2024 参加記事です。他の方の記事はこちらから。

b4utmzi.wixsite.com

注意

  • パソコンで閲覧することを推奨します。スマホだと表示が崩れる可能性があります。

はじめに

こんにちは。B4UT4th のへびです。

この記事では、HTML と CSS を使用してSOUND VOLTEX(以下ボルテと表記)の譜面のうち、鍵盤の部分を描く方法について紹介します。記事の最後にソースコードを公開しているので是非最後までご覧ください。

HTML? CSS?

本題に入る前にHTML と CSS についてざっくりと説明します。

HTML

Hyper Text Markup Languageの略称で、webサイトの構造を作る言語です。 HTML では、<p> や <a> といった タグ を使って構造を作ります。 例えば、<h2> で囲われた文章は見出しとして扱われ、大きく表示されます。

CSS

Cascading Style Sheetsの略称で、webサイトの見た目を作る言語です。 文字に色を付けたり、 フォントを変更したりすることができ、webサイトの体裁を整えることができます。 お絵描きにおいては要素の背景色を変更する機能 (background-color) を多用します。

はてなブログと HTML, CSS

はてなブログでも HTML を使用できます。ブログの編集画面の「HTML編集」のタブを開き、そこに HTML のコードを書くとその通りに表示されます。

CSS はタグに直接記述するか、デザインCSS 機能などを使うと適用できます。この記事では Github にアップロードした CSS ファイルを読み込ませています。 <script> タグは使用できないようです。

譜面を描いてみる

本題に入ります。HTML と CSS を使ってボルテの譜面の鍵盤の部分を描画します(つまみは再現が困難だったので諦めました)(つまみは譜面ではないという主張ではないです)。

譜面の作りやすさを考えて以下の方針で実装します。以下、簡単のため譜面に4拍間隔で引かれている横線のことを小節線と表記します。

  • 小節線と小節線の間を一つのブロックとする
  • レーン毎に編集できるようにする

背景部分

まずは全ての下地となる背景部分を作成します。

 
 
 
        
<div class="sdvx_background" style="height: 240px">
    <div class="segment">
        <!-- VOL-L -->
        <div class="lane_vol_L">
        </div>
        <!-- VOL-R -->
        <div class="lane_vol_R" style="left: 87.5%">
        </div>
        <!-- FX BT -->
        <div class="chart" style="left: 12.5%">
        </div>
    </div>
</div>
        
    
.sdvx_background {
    transform: scale(1, -1);
    margin: 0px auto;
    width: 240px;
}

.segment {
    position: absolute;
    width: 100%;
    height: 240px;
}

.lane_vol_L {
    position: absolute;
    background-color: #000033;
    border-right: 5px solid #3d9999;
    border-left: 5px solid #3d9999;
    box-sizing: border-box;
    width: 12.5%;
    height: 100%;
}

.lane_vol_R {
    position: absolute;
    background-color: #330000;
    border-right: 5px solid #993d99;
    border-left: 5px solid #993d99;
    box-sizing: border-box;
    width: 12.5%;
    height: 100%;
}

.chart {
    position: absolute;
    background-color: #1a1a1a;
    width: 75%;
    height: 100%;
}
        

sdvx_background が譜面を描く部分になります。transform: scale(1, -1); により上下を反転させています。 これは、CSS による上下の位置指定は上端が基準となっている(webサイトなので当然)が、ボルテの譜面は下から読むためです。

segment が一つのブロックを表します。これを繰り返して譜面を作ります。 これの子要素につまみのレーン (lane_vol_L、lane_vol_R) やノーツのレーン (chart) を置きます。

つまみのレーンにはノーツが流れてこないため、ここでデザインを完成させておきました。

レーン

ノーツが流れてくる部分を作成します。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
        
<div class="sdvx_background" style="height: 480px;">
    <!-- 小節 -->
    <div class="segment">
        <!-- VOL-L -->
        <div class="lane_vol_L">
        </div>
        <!-- VOL-R -->
        <div class="lane_vol_R" style="left: 87.5%">
        </div>
        <!-- FX BT -->
        <div class="chart" style="left: 12.5%">
            <!-- BT-A -->
            <div class="lane_BT">
            </div>
            <!-- BT-B -->
            <div class="lane_BT" style="left: 25%">
            </div>
            <!-- BT-C -->
            <div class="lane_BT" style="left: 50%">
            </div>
            <!-- BT-D -->
            <div class="lane_BT" style="left: 75%">
            </div>
            <!-- FX-L -->
            <div class="lane_FX">
            </div>
            <!-- FX-R -->
            <div class="lane_FX" style="left: 50%">
            </div>
            <div class="lane_border"></div>
            <div class="lane_border" style="left: 25%"></div>
            <div class="lane_border" style="left: 50%"></div>
            <div class="lane_border" style="left: 75%"></div>
        </div>
    </div>
    <div class="segment" style="top:240px">
        <div class="lane_vol_L">
        </div>
        <!-- VOL-R -->
        <div class="lane_vol_R" style="left: 87.5%">
        </div>
        <!-- FX BT -->
        <div class="chart" style="left: 12.5%">
            <!-- BT-A -->
            <div class="lane_BT">
            </div>
            <!-- BT-B -->
            <div class="lane_BT" style="left: 25%">
            </div>
            <!-- BT-C -->
            <div class="lane_BT" style="left: 50%">
            </div>
            <!-- BT-D -->
            <div class="lane_BT" style="left: 75%">
            </div>
            <!-- FX-L -->
            <div class="lane_FX">
            </div>
            <!-- FX-R -->
            <div class="lane_FX" style="left: 50%">
            </div>
            <div class="lane_border"></div>
            <div class="lane_border" style="left: 25%"></div>
            <div class="lane_border" style="left: 50%"></div>
            <div class="lane_border" style="left: 75%"></div>
        </div>
    </div>
</div>
        

.lane_FX {
    position: absolute;
    width: 50%;
    height: 100%;
}

.lane_BT {
    box-sizing: border-box;
    position: absolute;
    width: 25%;
    height: 100%;
}    

.lane_border {
    border: 1px solid #5c5266;
    box-sizing: border-box;
    position: absolute;
    width: 25%;
    height: 100%;
}

        

chart の子要素として lane_FX と lane_BT を定義し、レーンを作成しました。場所を指定することで横に並べています。

要素を横に並べる方法として親要素に display: flex を指定する方法もあります。 今回は BT のレーンと FX のレーンを重ねる都合上使用しませんでした。

レーンを区切る線と小節線(lane_border)は、BT や FX のレーンとは別の要素として実装しました。 大きさを segment と合わせることにより、単純に線を引く方法と比較して以下の恩恵が得られます。

  • ノーツを中央に配置する際に、レーンを区切る線の太さを考慮しなくて良い
  • 小節線が segment の長さに合わせて自動的に引かれる

ノーツ

ここまでで下地は整ったのでいよいよノーツを配置します。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    
<div class="sdvx_background" style="height: 480px">
    <!-- 小節 -->
    <div class="segment">
        <!-- VOL-L -->
        <div class="lane_vol_L">
        </div>
        <!-- VOL-R -->
        <div class="lane_vol_R" style="left: 87.5%">
        </div>
        <!-- FX BT -->
        <div class="chart" style="left: 12.5%">
            <!-- BT-A -->
            <div class="lane_BT">
                <div class="bt" style="top: 25%"></div>
            </div>
            <!-- BT-B -->
            <div class="lane_BT" style="left: 25%">
                <div class="bt" style="top: 50%"></div>
            </div>
            <!-- BT-C -->
            <div class="lane_BT" style="left: 50%">
            </div>
            <!-- BT-D -->
            <div class="lane_BT" style="left: 75%">
                <div class="bt_long" style="height: 100%;"></div>
            </div>
            <!-- FX-L -->
            <div class="lane_FX">
                <div class="fx"></div>
                <div class="fx" style="top: 75%"></div>
            </div>
            <!-- FX-R -->
            <div class="lane_FX" style="left: 50%">
                <div class="fx_long" style="height: 100%"></div>
            </div>
            <div class="lane_border"></div>
            <div class="lane_border" style="left: 25%"></div>
            <div class="lane_border" style="left: 50%"></div>
            <div class="lane_border" style="left: 75%"></div>
        </div>
    </div>
    <div class="segment" style="top:240px">
        <div class="lane_vol_L">
        </div>
        <!-- VOL-R -->
        <div class="lane_vol_R" style="left: 87.5%">
        </div>
        <!-- FX BT -->
        <div class="chart" style="left: 12.5%">
            <!-- BT-A -->
            <div class="lane_BT">
                <div class="bt"></div>
                <div class="bt" style="top: 75%"></div>
            </div>
            <!-- BT-B -->
            <div class="lane_BT" style="left: 25%">
                <div class="bt" style="top: 25%"></div>
            </div>
            <!-- BT-C -->
            <div class="lane_BT" style="left: 50%">
            </div>
            <!-- BT-D -->
            <div class="lane_BT" style="left: 75%">
                <div class="bt_long" style="height: 100%;"></div>
            </div>
            <!-- FX-L -->
            <div class="lane_FX">
                <div class="fx" style="top: 50%"></div>
            </div>
            <!-- FX-R -->
            <div class="lane_FX" style="left: 50%">
                <div class="fx_long" style="height:100%"></div>
            </div>
            <div class="lane_border"></div>
            <div class="lane_border" style="left: 25%"></div>
            <div class="lane_border" style="left: 50%"></div>
            <div class="lane_border" style="left: 75%"></div>
        </div>
    </div>
</div>
        

.fx {
    background-color: #ff9123;
    height: 20px;
    width: 97.5%;
    border-radius: 2% / 50%;
    position: absolute;
    right: 0;
    left: 0;
    margin: 0px auto;
    z-index: 3;
}

.fx_effect {
    background-color: #ffd500;
    height: 20px;
    width: 97.5%;
    border-radius: 2% / 50%;
    position: absolute;
    right: 0;
    left: 0;
    margin: 0px auto;
    z-index: 3;
}

.bt {
    background-color: #eeeeee;
    height: 16px;
    width: 85%;
    border-radius: 5% / 50%;
    position: absolute;
    right: 0;
    left: 0;
    margin: 0px auto;
    z-index: 4;
}

.fx_long {
    background-color: #b35900;
    border-right: 4px solid #ff8000;
    border-left: 4px solid #ff8000;
    box-sizing: border-box;
    width: 95%;
    opacity: 70%;
    position: absolute;
    right: 0;
    left: 0;
    margin: 0px auto;
    z-index: 1;
}

.bt_long {
    background-color: #eeeeee;
    box-sizing: border-box;
    width: 75%;
    position: absolute;
    right: 0;
    left: 0;
    margin: 0px auto;
    z-index: 2;
}        
        

各ノーツは配置されたレーンの子要素として定義しました。ノーツの場所はタグに直接記述することで決定しています。

ノーツの場所を小節線からの距離で指定するために、position: absolute を指定しています。 これでなくてもノーツの位置を動かすこと自体はできますが、例えば position: relative だと指定した位置に加えてこれまで配置したノーツの厚みだけ上にずれます。 下の図がその例で、螺旋階段を置いたはずが I [EXH] の 73 小節以降のようになってしまいます。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

FXとBTが重なった配置を正しく表示するよう z-index を指定しています。 上の譜面で BT ロングが FX ロングの下に隠れていないことからも分かると思います。

デザイン上の小さなこだわりとして、ノーツは丸みを帯びた形状にしました。実際のゲームでもノーツは完全な長方形になっていません。 border-radius プロパティで設定しました。

以上でつまみ以外の全ての要素が完成しました。ピアノ独奏無言歌 "灰燼" [MXM] や freaky freak [GRV] はこれで完全に再現できます。

使用例

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

まとめ

この記事では、HTML と CSS でボルテの譜面を描く方法を紹介しました。 つまみこそ再現できなかったものの、鍵盤に関しては見た目、 HTML 上での譜面制作のしやすさ共に満足のいく仕上がりになりました。 今後の展望としては、譜面の編集を web アプリで可能にすることなどが考えられます。

最後までご覧くださりありがとうございました。 私は使用例を作るにあたって未 S の譜面を何度も見てしまったのでこれから記憶を消してきます。

ソースコード

github.com

追記(2024/12/12)

使用例からSが一つ出ました!嬉しい

【SOUND VOLTEX】クリムゾン

こんにちは。へびです。この度SOUND VOLTEX通称ボルテにおいてクリムゾンになった(なっていた)のでそれまでの経緯とやったことを書き残します。

1. クリムゾンまでの過程

1.1 ~VF18

18.004

アルジェントの間に金枠或帝滅斗を取ったこともあって18を主に遊んでいました。

1.2 ~VF18.5

18.507

エルドラ1になった時と同様に18のAAA+でエルドラ3まで繋いでも良かったですが、17Sが8個しかないのはいかがなものかと思いVF対象の下限までは埋めました(約30個)。その後は18中位(S難易度表のtier3~6)を中心にAAA+を取ってエルドラ3になりました。

ドリームエンド・サバイバーは初めてきちんと詰めて出した18Sになります。PTを2回切った次のプレイでようやく出ました。
VFを稼ぐ目的で19も少し触りました。19はAAAを出すだけで18のAAA+と同じくらい稼げる上、ハードをつけると18S並みに稼げるのでお得です。

この間に暴龍天*1を取得しています(VF18.3ぐらい)。

1.3 ~VF19

18AAA+でもらえる単曲VFは36.8程度なので、エルドラ3以降はそれ以上のリザルトを出す必要があります。

18AAA+より単曲VFが高いリザルトとしては例えば以下のものがあります*2。

  • 17UC (37.3)
  • 19AAA (37.7)
  • 18S (38.1)
  • 19AAA+ (38.8)

普通は18Sで埋めることになりますが、18Sの単曲VFに余裕がないためこれだけだとVF対象のほぼ全てを埋め尽くすことになります*3。ここでどのように楽をするか、あるいは楽をしないかが人によって色の出る部分になります。私は19で楽をすることにしました。19AAA+はかなりの数の18Sに相当する上、AAAによる底上げも嬉しいです。結局、MAYHEMとSheraによるショートカットもあって18S28個でクリムゾンになれました。

19.004

2. 18Sを出すために

前の章で説明した通りクリムゾンになるにあたって18Sは欠かせないものになります。普通は30個ぐらい必要になります*4。私が18Sを出すためにやったことを紹介します。

2.1 18上位

18は難易度の幅が広いため、18上位でAAAやAAA+を取っているとといつの間にか18下位でSが出るようになってます。VFを上げることのみを考える場合、18上位にはいくらでも癖をつけられるのも良いポイントです。

2.2 19

19は非常に難しいので得意そうな譜面を触るだけでも18Sの役に立ちます。ただし、19は18と違ってこれからも付き合う難易度なので深追いはしないようにしました。特に、考えもなしに979や969を詰めるのは危険です。私は月光乱舞が979から全く伸びなくなった時期があります。

 

以上になります。17はUCしないとVFが増えなくなってからはほとんど触りませんでした。

18は非常に多いため、18Sをいくつか出せば似たような譜面を触るだけでクリムゾンに必要な数は集まります。そういう意味では最初の数個を出すところが勝負とも言えます。

 

3. おすすめの18

人によってどの18が得意かは色々あるので抽象的な話になりますが、とりあえずtier表の下の方を触っていけば間違いないと思います。また、tier表の上の方でもAAA+まで出ていてなおかつ感触が良かったものは積極的に詰めていくと良いです。結果的にSまで詰められなくても力がついて他の18でSが出やすくなります。

個人的におすすめできる譜面を挙げると NOT YOUR IDOL [MXM] や SACRIFICE feat. ayame [MXM] あたりになります。どちらも難所以外が易しい譜面になります。

 

4. 終わりに

この記事がクリムゾンを目指す方の役に立ったら嬉しいです。また、最近クリムゾンになった方にもこういう記事を書いて欲しいです。読みます。

 

5. おまけ

実はクリムゾンになったのは今年の8月で、今はクリムゾン2になっています。せっかくなのでそれについても書きます。

19.288

クリムゾン2はクリムゾン1と地続きになっているのかと思いきや、18Sでは38.2程度しかもらえないため、19AAA+や18UC(、19S)が必要になります。クリムゾン1になってしばらくは18Sを増やしていましたが、50個を超えたあたりで飽き*5、Elemental CreationでAAA+が出たのをきっかけに19に着手しました。

19AAA+の出し方ですが、私は座学によって短期決戦で仕留める方針でやっています。癖がつくことは多少割り切ってますが、地力が足りているならすぐに乗るはずだという考えから2クレ程度やって乗る気配がない場合は撤退しています。

来年が終わる頃にはにはインペリアルになっていたらいいなと思ってます。それでは。

*1:Xronièr

*2:全部ハード

*3:18Sと18AAA+のみでクリムゾンになる場合、18Sを40個以上出す必要がある

*4:諸説

*5:執筆時点では60個

【Arcaea】12.00までの軌跡

※この記事はB4UT Advent Calendar 2022 20日目の記事です。

 

こんにちは。B4UT2ndのへびです。この度Arcaeaというゲームにおいてポテンシャル12という前人未到の偉業を成し遂げました。ここにそれまでの軌跡をまとめようと思います。

 

注意

  • ネタバレがあります。
  • 特に断りがない限り、曲名はそのFuture譜面を指します。
  • 譜面定数などの情報はこれを書いている当時のものを使用しています。
  • ベスト枠の画像はLxBotを使用しています。
  • 誤りがあれば私のtwitter(@lev_635)までご一報ください。
  • 個人の主観が含まれます。

自己紹介

Arcaeaを始める前から音楽ゲーム自体はやっていました。やっている機種は以下の通り。

  • DEEMO(Hard11以上未FC2*1 extra未FC4*2)
  • CHUNITHM(最高レート16.96 ベスト枠平均16.9720)
  • SOUND VOLTEX(VF17.159 或帝滅斗)

もともと家でやる音ゲーをやっていたのもあってdynamixやcytusも触っていますが、覇権を握っているプロセカやArcaeaはほとんどやったことがありませんでした。世間の流れから取り残されることへの焦りから今年の11月にArcaeaを始めました。余談になりますが、プロセカはmasterを一曲*3FCしたところで力尽きてやめてしまいました。

 

振り返り

自己紹介を終えたところで本編に入ります。ポテンシャルごとに分けて振り返ります。Arcaeaと言えばやはりPMなので、お役立ち情報としてその時期にPMした譜面も書いておきます。これからArcaeaを始める人の参考になったら嬉しいです。

~ 9.94

自己紹介でArcaeaはやったことがないと書きましたが、実は数年前に一度インストールしたことがあります。わざわざ解禁したRed and Blue, Infinity Heaven (BYD), Glowが全くできず、すぐに引退しました。

この時期に出した主なPM : Vexaria

~ 11.00

ここから今年の話になります。パックを購入しなければ始まらないことは分かっていましたが、先述のことがあったのでポテンシャル11になるまで何も買わずにやることにしました。最初に選んだのはIgnotus。

記念すべき最初のリザルト

レベル10以上の譜面がほとんど(私の場合は全く)存在しない中でポテンシャル11になるにはレベル9の譜面でPM近くのスコアを取る必要があります。得意そうな譜面からPMをつけていくことにしました。その中で憎きRed and BlueとInfinity Heaven (BYD)*4もPMしました。堕落の園を解禁したところでポテンシャル11になりました。

Vexaria

11.00到達時点でのベスト枠

この時期に出した主なPM : Ignotus, Infinity Heaven (BYD), SUPERNOVA, Red and Blue

~ 11.50

World Extendとメインストーリーのパックを右から3つ買いました。前々から目をつけていた G e n g a o z o はここでPMしました。


ポテンシャルを上げる他にはArcaea名物の解禁作業もしました。Axium Crisisをやろうとしたら途中で謎の曲が始まって最後まで遊べなかった時は困惑しました。

レベル9+や10をやっていたらいつの間にか11.50になっていました。定数が高い曲を遊ぶだけでポテンシャルが上がったのでこの時期はあまりPMまで詰めなかったです。

11.50到達時点でのベスト枠

この時期に出した主なPM : G e n g a o z o, Sheriruth, SOUNDWiTCH, Cybernecia Catharsis

~ 12.00

11.50になったのでとりあえずBlack Fateを買いましたが、当然全く歯が立ちませんでした。特に#1f1e33が衝撃的でした。

このままでは800円が無駄になってしまうので地力を上げるために有識者の方にお勧めされたAdverse PreludeとBeyond Chainに必須のAbsolute Reasonを購入しました。
ここまで買っても遊べる曲は90曲程度しかなく、ポテンシャルに寄与する譜面はもっと少なかったためやることがありませんでした。やることがなかったので以前のようにやれそうな曲のPMを狙うことに。

 

それでもポテンシャルは12に遠く及ばず。有識者の方々から10+で高いスコアを取ると良いと教えてもらったので、逃げていた10+に向き合うことに。

向き合った結果

選んだのは後半に人権があり前半のアークが比較的暴れていないDantalion。有識者の方に背中を押してもらいました。粘着のおかげで苦手なアークが改善し、他の高難易度譜面にも立ち向かえるようになりました。CyaeghaとHalcyonでEX+を、Fracture RayでEXを取り、ついでにVicious HeroismでPMを取りました。

ポテンシャルは11.92まで上がりましたが、どうしても足りないということで断腸の思いでCHUNITHMのコラボパックを購入しました。目当てのレベル10+は全く歯が立ちませんでしたがレベル10の4曲を全てベスト枠に入れ、11.99に。

悲惨

最後はGrievous Ladyを詰めて12.00になりました。EXで締められなかったのが心残りですが、今は取れてるので良しとします。

12.00到達時点でのベスト枠

この時期に出した主なPM : Monochrome Princess, Heavens Door, Antagonism, PRAGMATISM, conflict, Vicous Heroism

 

購入したパックはWorld Extendとメインストーリーの右から5つまで、Absolute Reason、CHUNITUM。メモリーアーカイブは0曲。
Future譜面のPMは20個、Beyond譜面のPMは1個。

感想

  • 助けてくれた有識者の皆様ありがとうございました。
  • CHUNITUMのパックを買ってしまったのが悔しいところ。
  • Dantalionを詰めたのがかなり効いていると思います。全てが当時の私にとってちょうどよかったです。これから12.00になる人に勧められる譜面です。
  • 思ったより判定が優しく、PMが頻繁に出て楽しかったです。体感deemoのcharmingよりは優しい。
  • 9~9+の譜面定数が私の感覚とかけ離れていました。SOUNDWiTCHが9.9でGlowが9.2だったり、Antagonismが9.9でSyroが9.2だったり。アークの難易度を軽視しているように感じました*5。逆張り*6が起こるのも当然というか。レベル10は今のところ体感通りなので安心しています。
  • 逆にアーク以外の難易度は高く評価されているようなので意外と他機種の地力でポテンシャルを上げるのは楽なのかもしれません。
  • 自分が下手なのか端末*7のスペックが足りていないのか分かりませんが押してるつもりが押せてない現象が多発してます。前者はどうしようもないですが、後者は他のアプリを終了する、やり直すときにリトライを押さずに曲選択画面まで戻るなどの対策を取っています。
  • 次の目標は12.50ですが今の地力だとパックを大量に買っても厳しいと思ってます。とりあえず余ったメモリーでメインストーリーを買い切ってあとは破産しない程度にちまちま買っていくつもりです。

感謝

ここまで読んでいただきありがとうございました。次回は12.50を予定しています。お楽しみに。

 

*1:Aya, Nightmare Deemo Arr.

*2:ANiMA, RE:UNION -Duo Blade Against-, Scherzo -pain in rain-, Cloud9

*3:トンデモワンダーズ

*4:Glowは未PM

*5:私がアークが苦手過ぎるだけかもしれません

*6:そういえば今年のアドカレにも逆張りに関する記事がありましたね

*7:iPad Air4

AtCoder青になりました

初めまして。ゆかりです。たくさんのいいねとリプライありがとうございます。ちょうどいい機会なので自己紹介と振り返りをしようと思います。有益なことはおそらく書いてありません。

自己紹介

・大学一年生です。理系ですがどういう学部に行くかはまだ決めてないです。早くお酒が飲めるようになりたいですね。

・プログラミングの経験は高校の授業でfizzbuzz問題をやらされただけで全くと言っていいほどないです。AtCoderは周囲にやっている人がいたので始めました。

・数学は強くないです。OMC(?)をやっている人たちは凄いと思います。

・競プロ以外の趣味だと音ゲーがあるでしょうか。何とは言いませんが最近レートが16.75になりました。つまみを回すタイプの音ゲーには興味があります。誰か教えてください。

振り返り

f:id:lev635:20211220004248j:plain

f:id:lev635:20211220011619j:plain

1. コンテストに参加するまで

先述した通り私はプログラミングの経験がなかったので当然ですがまずはそこから始めました。AtCoderのトップページにAPG4bなるものがあったのでそれを使いました。最後の問題が異常に難しくて困ってました。

APG4bを終わらせた後はABCの過去問を少しやって初めてのコンテストに臨みました。結果は4完緑perfでした。Dが累乗を求める問題だったのですが、当時の私は繰り返し二乗法を知らなかったので二乗と四乗を予め計算して何とか間に合わせていました。

当時の提出(かわいい):

atcoder.jp

2. 灰から茶まで

この時期はABC-Cあたりをやってたと思ってましたが記録を見ると結構難しい問題もやってますね。ABC-Cが想像以上に難しくて絶望していた記憶があります。ただこの頃はレートは順調に上がってくれて、ABC203で青perfを出して緑色になりました。正直この時期のことはあまり覚えてないです。

3. 緑

緑色になった直後は謎解きをしていたので競プロをあまりやっていませんでした。これ本当に面白かったのでやってみてください。この感動を共有したい。

0414.works

謎解きが終わってレートを見てみると見事に停滞していてこれはまずいと思い真面目に勉強を始めました。具体的には水diffの問題を解けそうな問題から埋めていきました。結果としてレートは順調に上がり、水色になりました。

4. 水前半

ちょうどこの頃夏休みに入り、まとまった時間ができたのでひたすら水diff以上の問題を解いていました。最初はレートもそれに応じて増えていきましたが徐々に雲行きが怪しくなり、ARCで負けてレートが61減ったこともあって結局夏休みで100程度しかレートが増えませんでした。夏休みを利用して青になろうと思っていただけにこれは残念な結果でした。

夏休みが終わると大学が幅を利かせはじめ、急に忙しくなりました。当時の私はこれに耐えられなかったらしく(?)軽く病んでいました。病んでいる人が良い成績を取れるほど競プロは甘くありません。今度はABCで負けてレートが55も減りました。ちなみにこの負けた二回(ARCとABC)のパフォーマンスは初参加の時より悪いです。

5. 水後半

2か月以上もの間レートが増えなくて最悪でしたが、ABCで負けた頃には私も大学をいなせるようになっていて、(主に精神面で)競プロにリソースを割く余裕が出来てきました。そのおかげかあれだけ伸びなかったレートが急に伸び始めて今に至ります。

いろいろ

解いた問題

f:id:lev635:20211220014723p:plain

f:id:lev635:20211220134026p:plain

解いている方だと思います。Streakは惰性で伸ばしているだけです。これを公開する頃には切れているかもしれません。

ライブラリ

他の記事では知っているアルゴリズムを紹介していることが多いですが「知っているアルゴリズム」という言葉が曖昧で私はあまり好きではないので代わりにライブラリのうち主要なものを紹介します。全てVSCodeのスニペットに保管してあります。

定数

・円周率

・よく使われる素数(後述のmodint構造体と一緒にしています)

mod関連

・modint構造体

・二項係数

・累乗(0^0と指数が負になっていたらREを出すようにしています)

・逆元(ユークリッドの互除法)

・離散対数(ABC-Gを解くためにインターネットから拾ってきたもの)

数学

・有理数(大小比較のみ)

・行列

・エラトステネスの篩(O(NloglogN))

・拡張ユークリッドの互除法

・CRT

データ構造

・UnionFind(union by size)

・セグメントツリー(抽象化)

・遅延評価セグメントツリー(これも抽象化していますが使い方を忘れました)

その他

・全方位木dp(これも使い方を忘れました)

・Z-algorithm(添え字の動きなど細部までは理解していません)

・閉路検出 / トポロジカルソート(実装が面倒なので)

・座標圧縮(1次元)

・配列などの中身を見られるようにするマクロ(強い人の提出から拾ってきました)

知っているアルゴリズムについて少しだけコメントしておくと、普通の水色の人が持っていると予想される知識ぐらいしか持っていないと思います。

感想など

・水色から青になるのに約五か月かかったので黄色になるのは一年以上かかるでしょうか。早くunratedでABCに参加したいですね。

・何故ここに来てレートが増え始めたのか自分でもよく分かりません。多分ここ数回のコンテストに出た問題が得意だったからだと思います。

・これは多くの人が言っていることですが、最近になってようやく「問題が解ける」ことと「コンテスト中に解けること」の違いを認識し始めました。前者の力を伸ばす勉強と後者の力を伸ばす勉強は違う性質のものだという言説も少しわかる気がします。強い人たちがバーチャルコンテストを勧めるのもそういうことなのでしょうか。

・精神状態が良好ではない間は競プロから離れた方が良いと思います。これは競プロ以外にも当てはまりますが。

・これは私が水色になった時もそうだったのですが、ABCに青diffの問題があまり残ってないので困っています。6問ABCの問題のうち残っている青diffはこれを書いている時点で2問しかありません。

・ただそれでも一色上の問題を解くのは(今のところは)間違っていなかったと思います。どうせ色が変わったら一色上の問題も解けなきゃいけなくなるので。

・そろそろARCと戦わなきゃいけない時期になってそうですがそれでもARCから逃げたいです。Aや簡単めのBで事故ってそれ以降が解けなくなるのが怖くて参加できません。

・一方でARCの問題は考えていたらそのうち解けることが多いので楽しいですね。これとか。この「そのうち」が120分に収まるようになったら参加しようと思います。

・ABCの問題は解説ACした方が良いと色々な人が言っていて私もそう思うのですが、解説を読んでみたらただの考察不足だった、というのが怖くてなかなか解説を見られずにいます。これ多分成長を妨げています。

・はてなブログのエディタが狭くて使いにくかったです。誰か使い方を教えてください。

・青くなったのでヘッダーも青くしようと画像を漁っていたのですが、分かりやすく青い画像が自分のBB素材しかなくて困りました。

・学業が崩壊しかけています。助けて。