Grand Horizon
16〜17世紀頃の世界169港を巡り、126種の交易品を売買しながら船団運用、依頼、航海イベントを進めるブラウザゲームです。
- 現在地
- 公開中
- 分野
- ゲーム
- 使っているもの
- React 19・Vinext・MapLibre・Three.js・GeographicLib・Cloudflare Workers・D1・ElevenLabs(BGM・環境音・効果音の生成AI活用)

16〜17世紀の世界を巡る、ブラウザ向け海洋交易・探索ゲーム。
Grand Horizonは、世界169港を舞台に、126種の交易品を売買しながら未知の海へ進むゲームです。港間交易、自由航海、複数船の船団運用、自動貿易、酒場依頼、航海イベントを、一つの航海記録として進められます。
| 世界 | 交易 | 船団・航海 |
|---|---|---|
| 169港と港湾風景 | 126交易品と歴史静物画 | 6船種・自由航海・自動貿易 |
ゲームでできること
- タイトル画面から出発港を選び、新しい航海を始める
- 港で交易品、水、食料、探索道具、船を購入する
- 自由航海や港を指定した航海を計画し、複数の航路を航路帳へ保存する
- 風、海流、天候、季節、時間帯の影響を受けながら船を進める
- 複数の船を船団として運用し、体積、重量、必要水夫数を管理する
- 船を自動貿易航路へ割り当て、継続収益を得る
- 酒場で配送、輸送、測量の依頼を受け、報酬と名声を獲得する
- 商館で地域の相場情報を購入し、積荷を高く売れる港を価格や距離で比較する
- 漂流物、順風、霧、疲労など、航海中の出来事を選択して乗り切る
- 未知の港を発見し、世界海図と交易範囲を広げる
169港から、航海を始める
全169港には、1600年代の港湾都市を描いた16対9のイメージショットを用意しました。地域の建築、船、服装、当時の交易背景を手がかりに、それぞれの港らしい景観を描いています。
入港時には港名を大きく表示する到着演出が入り、停泊中は左上のミニマップがその港の風景へ切り替わります。航海中や海上待機中は、ふたたび広域海図が表示されます。
126交易品を売買する
交易品には地域ごとの特産品があり、相場は港や取引量によって動きます。売却画面では、平均仕入れ額、受取額、差益を確認してから取引を確定できます。
海図の上を、本当に航海しているように
表示にはMapLibre GL JSとOpenFreeMap、距離と方位の計算にはWGS84楕円体上のGeographicLibを使用しています。港、船、航路、相場、ゲーム進行はGrand Horizon独自のゲームデータです。
- 海面には、風向と風力に連動するうねり、沿岸の浅瀬、自船の航跡を表示
- 陸地は羊皮紙の地色、紙目、植生、砂浜、海岸線、広域の起伏陰影で海図調に再構成
- 瀬戸内海では詳細なOSM coastline、世界では軽量なNatural Earth陸海マスクを使って海陸を判定
- 港周辺から長距離まで解像度を切り替える階層型航路探索で、陸地を避ける航路を生成
- 航路点を緩やかな曲線でつなぎ、曲率に応じて船が減速し、直線では加速
停泊中は「近隣の港」から行き先を選ぶだけで、陸地を避けた航路を自動作成できます。完成した航路は、海陸判定、海岸との交差、最低離岸距離を再検証しています。
ゲーム内の航路は演出専用です。現実の船舶運航や安全判断には利用できません。
港と航海の音
ElevenLabsで生成した音楽、効果音、環境音を導入しています。停泊中は港の環境曲と地域曲、航海中は帆走音が流れ、出入港時はフェードしながら自然に切り替わります。
BGMと環境音は船長メニューから個別にON/OFFでき、音量も0〜100%で調整できます。設定は航海データとは分けて端末へ保存されます。
スマートフォンでも遊べる画面
市場などのパネルは画面いっぱいのシートとして開き、補給品や探索道具は必要なときだけ展開できます。省データ設定、低性能端末、動きを減らす端末設定では、海面のアニメーションを静止表示へ切り替えます。
最新アップデート
現在の公開版は V0.2.5(2026年8月31日) です。
- 入港や投錨で船が停まった後、航海中に描かれた白い航跡がすぐ消えるように修正
- 地域ごとの相場情報を購入できる「商館」を追加
- 入港時の港名表示と、停泊中に港の風景へ切り替わる表示を追加
- 169港すべての港湾都市イメージを、出発港選択と寄港地情報へ組み込み
- 交易品を63種から126種へ増やし、すべての品に歴史静物画を追加
技術構成
- 画面: React 19、Vinext、Vite
- 地図・3D: MapLibre GL JS、OpenFreeMap、Three.js
- 測地・航路: GeographicLib、独自の航路・地形データ
- 音: Web Audio APIによるBGM・環境音の多層ループ再生
- 運用: Cloudflare Workers、D1、Workers Builds
- 品質確認: Node.js test runner、ESLint、本番ビルド
ゲームの状態はブラウザのlocalStorageへ保存されます。ブラウザ版はインストールせずに遊べ、次に開いたときは保存済みの航海から再開できます。
作り始めた理由
小学生のころ、同じ学校の友人から、どんなゲームかも知らずに借りた光栄の『大航海時代II』に夢中になりました。スーパーファミコンで最も長く遊んだ作品の一つで、日本の地名を「桃太郎電鉄」で覚えたように、世界の地理は『大航海時代II』から学んだ記憶があります。ヨーロッパの地名やアフリカ沿岸の港町に今でも妙に詳しいのは、このゲームの影響です。
その後、兄のPC-98でアートディンクの『THE ATLAS』を遊び、地図を開拓していく面白さにも強く惹かれました。『A列車で行こう3』『A列車で行こう4』などと同じく、当時エイデンに置かれていたソフト自動販売機「TAKERU」で、フロッピーディスクへ書き込んで購入した思い出があります。
それから約30年。ふと、あのころの航海や開拓のゲームをもう一度遊びたいと思いました。昔の作品を気軽に遊べる環境がなかなかないのなら、今の地図技術やWeb技術を使って新しく作れないだろうか。そう考えたことが、Grand Horizonを始めたきっかけです。
完成形や明確なゴールは、まだ決めていません。まずは交易システムを作り、航海、船団、依頼、世界の広がりを、実際に遊びながら少しずつ考えていく。昔夢中になった感覚を手がかりに、今の自分が遊びたい航海ゲームへ育てています。
公開について
独自ドメインのブラウザ版を公開しています。タイトル画面から出発港を選んで新しい航海を始めるか、端末に保存した航海を再開できます。ゲームの内容、画面、更新情報はこのページで紹介していきます。
プロジェクトのロードマップ
ここまでと、これから
世界169港と自由航海
完了世界169港を収録し、出発港を選んで未知の港を探しながら自由航海できる形にしました。
交易と船団運用
完了126交易品、6船種、体積と重量を持つ積荷、複数船の船団、自動貿易、酒場依頼を実装しました。
タイトル画面と航海の再開
完了出発港を選ぶニューゲームと、ブラウザへ保存した航海の続きから再開できるタイトル画面を追加しました。
地形を避ける曲線航路
完了地形を避ける階層型航路探索に、角を緩やかにつなぐ曲線化と、曲率に応じた加減速航行を加えました。
港と航海の音を実装
完了ElevenLabsで生成した港のBGM・環境音・帆走音を、停泊中と航海中で自動的に切り替えて再生する形で公開しました。音量や種類ごとのON/OFFは船長メニューから調整できます。
169港と126交易品を絵で表現
完了世界169港それぞれの港湾都市イメージと、126交易品すべての歴史静物画を追加し、出発港選択、寄港地情報、市場へ組み込みました。
商館と入港演出を追加
完了地域ごとの相場情報を購入できる商館、入港時に港名を表示する到着演出、停泊中に港の風景へ切り替わるミニマップを追加しました。
海面と陸地の表現を海図調に
完了一色塗りだった海面に風連動のうねりと浅瀬、航跡を加え、陸地を羊皮紙調の地色と紙目で再構成しました。
世界と遊びやすさを拡張
進行中航海、交易、依頼、相場のバランスを見ながら、世界設定と遊べる内容を増やしています。
開発日記