Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌊 WAKE — 航跡

スピードボートで、手続き的に生成された海をどこまでも走る。

ブラウザだけで動くインタラクティブな3D海洋ワールドです。Gerstner 波で生成した海面を、自作の軽量な挙動制御で動くスピードボートが駆け抜けます。物理エンジンは使っていません。チャンネルマーカーを順に抜けるタイムアタックと、海に浮かぶブイ集めが遊べます。

Three.js WebGL Vite No Physics Engine

🔗 https://wake.1qaz.jp


📸 スクリーンショット

ブースト走行と航跡

灯台のある島


🎮 操作方法

操作 動作
W / 前進(スロットル)
S / 後進・減速
A D / 操舵(左右)
Space ブースト🔥
R リセット

モバイルは画面下の方向ボタン+🔥ボタンで操作できます。光るゲートを順に抜けると 1 周のタイムが計測されます。


✨ 特徴

  • 手続き的な Gerstner 波の海 — 数本の波の重ね合わせで海面を生成。同じ波パラメータを GPU の頂点シェーダーと CPU のサンプラーで共有しているので、船は「描かれている水面」に正確に乗ります。
  • 物理エンジン不使用 — 船の前進・操舵・浮き・波への傾き・旋回時のバンクはすべて自作の軽量アーケード制御。バンドルが軽い(gzip 約 146KB)。
  • 航跡トレイル — 船尾から伸びる泡のリボンを、頂点を毎フレーム更新して描画。速度に応じて広がり、フェードします。
  • タイムアタック — 赤緑のチャンネルマーカー 6 ゲートを順に周回。ベストラップは localStorage に保存。
  • ブイ集め+クリア演出 — 海に浮かぶ 24 個のブイを全部集めるとインスタンス描画の紙吹雪。
  • 低ポリの世界 — 灯台のある島、ヤシの木、遠景の岩礁、空のグラデーションと水面に映る太陽のグリッター。

🛠️ 技術スタック

カテゴリ 技術
3D Three.js (r0.184)
海面 Gerstner 波 GLSL 頂点シェーダー + CPU 高さ/法線サンプラー(共有パラメータ)
演出 カスタム GLSL(空グラデ+太陽ディスク、フレネル水面、太陽グリッター、航跡リボン)
物理 自作アーケード制御(物理エンジンなし)
ビルド Vite
ホスティング nginx 静的配信 + Let's Encrypt

📁 ディレクトリ構成

wake/
├── index.html
├── src/
│   ├── main.js      # シーン統合・入力・チェイスカメラ・HUD
│   ├── water.js     # Gerstner 波の海面(GPU頂点シェーダー+CPUサンプラー)
│   ├── boat.js      # アーケード船操作+航跡トレイル
│   ├── world.js     # 島・灯台・ブイ・チャンネルマーカーのゲート
│   ├── race.js      # タイムアタック(周回・ベストラップ)
│   ├── fx.js        # 紙吹雪
│   └── style.css
├── docs/            # スクリーンショット
├── vite.config.js
└── package.json

🚀 セットアップ

# 依存をインストール
npm install

# 開発サーバを起動(http://localhost:5173)
npm run dev

# dist/ に本番ビルド
npm run build

ライセンス

License: MIT

このプロジェクトは MIT ライセンス のもとで公開しています。

© 2026 masafykun (https://github.com/masafykun)

About

🌊 WAKE (航跡) — pilot a speedboat across a procedural Gerstner sea. Three.js, no physics engine.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages