鉄道シミュレーターにおいて、プレイヤーが最も触れる部分は「マスコン(マスターコントローラー)」です。
実車のような専用コントローラーを使えないブラウザゲームだからこそ、マウスやタッチ操作でも「重み」や「質感」を感じられるUIを目指しました。
CSSで描くリアルな質感
今回のマスコンUIには、画像素材を一切使用していません。すべてCSSの linear-gradient(グラデーション)と box-shadow(影)を組み合わせて描画しています。
特にこだわったのは、レバー部分のプラスチック感です。光の当たり方を計算し、ハイライトとシャドウを多重にかけることで、立体的な「握り」の部分を表現しました。
/* レバーハンドルのCSS例 */
input[type=range]::-webkit-slider-thumb {
-webkit-appearance: none;
width: 24px; height: 50px;
background: linear-gradient(to right, #444, #888, #444);
border: 1px solid #000;
border-radius: 4px;
box-shadow: 0 5px 10px rgba(0,0,0,0.5); /* 落ち影で浮遊感を出す */
margin-top: -20px;
position: relative; z-index: 10;
}
操作感へのこだわり
実装にはHTML標準の <input type="range"> を使用していますが、そのままではスルスルと動いてしまい、電車のノッチ特有の「カチッ、カチッ」というクリック感がありません。
そこで、step 属性を活用しつつ、JavaScriptで現在の値を監視し、ノッチが切り替わった瞬間に効果音を鳴らす等のフィードバックを入れることで、擬似的なクリック感を演出しています。
また、ブレーキ(B1〜EB)と力行(P1〜P5)の間に「N(ニュートラル)」を広めに設けることで、誤操作を防ぐ工夫もしています。
スマホとPCのUI最適化
最も苦労したのはレスポンシブ対応です。PCでは画面左下に配置したリッチなパネルで操作できますが、スマートフォンの狭い画面では地図が見えなくなってしまいます。
そこで、モバイル端末(幅600px以下)ではPC用のパネルを非表示にし、画面下部に固定した「モバイル専用コントローラー」を表示するように切り替えています。
スマホ版ではスライダー操作は指で隠れてしまい難しいため、あえて「加速ボタン」「減速ボタン」という物理ボタン風のレイアウトに変更し、親指だけで運転できるUXを採用しました。
まとめ
UIは単なる飾りではなく、体験そのものです。今後も、より直感的で、かつ「鉄道模型をいじっている」感覚になれるようなインターフェースを追求していきたいと思います。