Lab/lab-rogue

ローグライク公開中2026

自前実装のダンジョン生成とFOVを持つ本格ローグライク。BSP/セルオートマトン生成、再帰シャドウキャスティング、Dijkstraマップ敵AIをすべてTypeScriptで手作りしたブラウザゲーム。

サイトを開く
lab-rogue(ブラウザローグライク)

Screenshots

lab-rogue(ブラウザローグライク) スクリーンショット 1

Overview

概要

1プレイ10〜20分の本格ローグライクです。rot.js等のライブラリを使わず、ダンジョン生成・視界計算・敵AIまで全ロジックを自前のTypeScriptで実装。描画はCanvas 2Dに等幅ASCII記号(@ # . g)を描く古典スタイルで、外部アセットはゼロ。ターン制でbump attack、満腹度やレベルアップを備え、地下15階のアミュレットを取って地上へ戻ればクリア、倒れれば終わりのパーマデスです。到達階・金貨・累計EXPからスコアを算出しランキングに記録します。

How to use

遊び方・使い方

矢印/WASD/vi(hjklと斜めyubn)で移動し、敵に向かって進むと攻撃(bump attack)します。ポーション・パン・武器・防具・巻物・金貨を拾って強化しつつ、満腹度を切らさないよう進行。視界は部屋と洞窟で変化し、一度見た地形は記憶されます。敵8種はそれぞれ追跡・ランダム・遠距離射撃・自然回復などの挙動を持ちます。地下15階のアミュレットを取得して地上へ帰還すればクリア。タッチ環境は8方向の仮想パッドで操作します。

Tech stack

技術スタック

TypeScriptNext.js 16React 19Canvas 2DTailwind CSS v4

追加npm依存はなく、地形レイヤーはオフスクリーンCanvasにキャッシュ。HUDのみuseSyncExternalStoreで公開し、盤面はReact外で描画します。効果音はWebAudioの矩形波・ノイズで手続き合成、OG画像はnext/ogで動的生成しています。

Highlights

工夫した点

  • ダンジョンはBSPによる部屋型(再帰分割+L字通路+BFS接続性検証)とセルオートマトンによる洞窟型(45%壁初期化→平滑化→連結成分抽出)を階層で切替。乱数はシード再現可能なxorshift32を自作
  • 視界は8オクタントの再帰シャドウキャスティングを純関数computeFovで実装し、可視セルはSet、探索済みはUint8Arrayで記憶マップを管理
  • 敵AIはプレイヤー起点のDijkstraマップを毎ターン1回だけ計算して全追跡敵で共有し、遠距離型はBresenhamで射線を判定。ターン制ゆえにrAF常駐を避け、入力駆動の純関数reducerで状態遷移

To improve

改善したい点

  • アイテム・敵・特殊床のバリエーションを増やし、戦略の幅を広げたい
  • モバイルの仮想パッド操作の快適性に伸びしろがある
  • スコアランキングはローカル保存で、オンライン比較には未対応

What's next

今後の展望

  • 職業・種族やスキルなどビルド要素の追加
  • アイテムの識別要素(未鑑定ポーション等)による探索の駆け引き強化
  • 日替わりシード・チャレンジモードの実装

Category

ゲーム

Genre

ローグライク

Year

2026

Status

公開中