コーディングに疲れた人のためにSUSHI-ThemeというVSCodeのジョーク拡張機能を作りました。
ただ「タイピングに合わせて寿司が飛ぶ」、それだけです...
上のGifではいくらだけですが他にもマグロやエビなどもあります。
パラメータの調整によってはうるさくてコードが見えづらいかもしれませんが、
疲れているときはどうせコードなんて頭に入っていないので、
おとなしく寿司でも眺めておくのがリフレッシュにいいんじゃないでしょうか
主な機能
寿司インジケーター
フィーバーモード
こだわった点
寿司の動きとジョーク拡張機能に求められる軽量さを両立させるため
重厚なゲームエンジンなどを入れず、この拡張機能のために軽量なエンジンを一から開発しました。
ビルドされた拡張機能はVSCodeが提供するもの以外は自作コードのみで、外部依存はありません。
パラメータ
デフォルトの状態はなるべくコーディングの邪魔にならないような設定になっています。

これでは面白くない!
といった方にPCのパフォーマンスを犠牲にして色々カスタマイズできるパラメータを用意しています。
基本(表示・種類)
-
sushiTheme.effectType (降ってくるネタ)
タイピング時に飛んでくる寿司の種類を選べます。デフォルトはrandomですが、マグロ(maguro)、イクラ(ikura)、エビ(ebi)、抹茶(matcha)から「推しネタ」だけを延々と降らせることも可能です。
「今日はマグロの気分だな」という時にどうぞ。 -
sushiTheme.enableStatusBar (寿司メモリインジケーターの表示)
ステータスバーに表示される、PCのメモリ使用量を寿司の数で表す機能のON/OFFを切り替えます。 -
sushiTheme.particleLifespanMultiplier (寿司の鮮度 / 表示時間)
お寿司が画面に留まる時間(寿命)の倍率です。数値を大きくすると、画面の底にどんどん寿司が積み重なっていきます。
※メモリ消費にご注意ください。
物理エンジンのチューニング(動き・壁・衝突)
物理エンジンの挙動をコントロールできます。
-
sushiTheme.enableParticleCollision (寿司同士の衝突判定)
これをONにすると、寿司同士がぶつかってリアルにバウンドするようになります。
寿司の山を作りたい場合は必須の設定です。 -
sushiTheme.particleSpeedMultiplier (射出スピード)
タイピングした瞬間に飛び出す寿司の初速を調整します。
数値を上げると、キーを叩くたびに親の仇のように凄まじい勢いで寿司が飛んでいきます。 -
sushiTheme.bounceTopDistance (天井までの距離)
カーソル位置からどれくらい上に飛んだら跳ね返るか(天井の高さ)を設定します。
0にすると天井がなくなり、種類によってはそのまま上へ消えていきます。 -
sushiTheme.bounceBottomDistance (床までの距離)
エディタ上のどこに「床」を作るかを設定します。
値を大きくするほど画面の下の方でバウンドして溜まります。0にすると床が消滅し、寿司は底へ落ちていきます。 -
sushiTheme.bounceLeftDistance / bounceRightDistance (左右の壁)
左右の壁までの距離を設定します。
上下左右の壁を設定して反発係数を上げると、ピンボールのようになります。 -
sushiTheme.particleRestitution (全体の反発係数)
寿司が壁や床、他の寿司にぶつかった際の「弾みやすさ」です。
1.0でスーパーボールのように弾み、0にするとボテッと重々しく落ちます。 -
sushiTheme.particleBouncinessMultiplier (ネタごとの反発力倍率)
「イクラはマグロより弾む」といった、寿司ネタごとの個別の弾みやすさの倍率を調整します。 -
sushiTheme.particleMassMultiplier (寿司の質量)
寿司の重さです。衝突時の動きに影響します。 -
sushiTheme.particleFrictionMultiplier (寿司の摩擦力)
床を滑る際の滑りにくさです。
数値を上げると、床に落ちたあとピタッと早く止まるようになります。
爽快感の調整(コンボ・フィーバー設定)
無心でコードを書くためのモチベーション管理設定です。
-
sushiTheme.comboUnit (レベルアップの閾値)
何文字タイプしたら寿司のエフェクトが豪華になるか(コンボの単位)を設定します。
デフォルトは5です。 -
sushiTheme.comboTimeoutMs (コンボの猶予時間)
タイプを止めてからコンボが途切れる(リセットされる)までのミリ秒数です。
デフォルトは1500(1.5秒)。焦らされるのが嫌な人は長めに設定してください。 -
sushiTheme.feverTriggerCombo (フィーバー突入ノルマ)
フィーバータイムを発動させるために必要なコンボ数です。デフォルトは50コンボ。 -
sushiTheme.feverDurationMs (フィーバー継続時間)
フィーバータイムがどれくらい続くかを設定します(デフォルトは10000=10秒)。
長すぎると画面がうるさくてコーディングどころではなくなります。 -
sushiTheme.feverSpawnCount (フィーバー中の寿司の量)
フィーバー中、1回のタイピングで同時にいくつの寿司を降らせるかを設定します。
デフォルトの5でも相当な量が降ってきます。
パフォーマンス設定(PCへの優しさ)
癒やしのためにPCをフリーズさせては元も子もないので、負荷調整も可能です。
-
sushiTheme.fps (フレームレート)
エフェクトの描画滑らかさを 15, 30, 60, 120 から選べます。
ヌルヌル動かしたいなら60や120、バッテリー消費を抑えたいなら15や30がおすすめです。
※VS Codeの描画限界により、高FPSを指定しても制限がかかる場合があります -
sushiTheme.throttleMs (描画の間引き間隔)
連続で猛スピードでタイピングした際、エディタが重くなるのを防ぐための最小描画間隔(ミリ秒)です。
タイピングのラグを感じる場合は、この値を 100〜150 程度に上げると軽くなります。
さいごに
是非このSUSHI-Theme拡張機能をいれて、コーディングに疲れた時に寿司を飛ばして癒されてください!
リポジトリ: SUSHI-Theme_ForVSCode



