NetHack 3.7.0 (Development) を WebAssembly にコンパイルし、Canvas ベースの描画エンジンによりブラウザ上で動作させるプロジェクトです。日本語翻訳表示および各種入力デバイスへの対応を目的としています。
[ 🎮 デモ (Desktop/Canvas) ] / [ 📱 デモ (Mobile/DOM) ]
- NetHack 3.7.0 対応: 開発版 NetHack を Wasm 上で動作。
- 混合描画方式:
- Canvas を用いた描画。
- タイル表示とフォントベース(ASCII/漢字)の同一行での混在表示に対応。
- 日本語(JIS X 0208)フォントのレンダリングをサポート。
- モバイル向け軽量 DOM UI (
mobile.html):- モバイル端末向けに、Canvas を使用しない DOM ベースのレンダリング エンジンを搭載。
- 文字が鮮明で、バッテリー消費を抑えた高速な動作を実現。
- デスクトップ版への 「セーブして遷移」 機能を搭載。
- 翻訳機能:
- アイテム構成要素(数量、状態、変化値等)を解析し、日本語として再構成するエンジンを搭載。
- 辞書マッチングによるメッセージの翻訳表示。
- セーブデータ保持:
- IndexedDB (IDBFS) によるブラウザ内での永続化。
- 定期的なオートセーブおよび終了時の保存機能を実装。
- モバイル・PWA対応:
- PWA仕様に準拠し、ホーム画面からアプリとして起動可能。
- レスポンシブレイアウト最適化: 各種スマホ・タブレットの解像度に合わせて、ステータス欄やメッセージ欄を動的に再配置。
- 自律型カメラセンタリング: 幾何学的な座標補正により、どのような画面比率でもキャラクターが常に可視領域の中央に維持されます。
- バーチャルパッドの最適化: 画面下半分への配置、最大幅の制限、および動的リサイズにより、大画面でも小画面でも快適な操作性を実現。
- 移動: 方向キー / テンキー
- 特殊コマンド (修飾キー): ブラウザのキー衝突を避けるため、Spaceキーを修飾キーとして使用します。
Space+X:Ctrl+X相当の入力(^X)Space単体押しの場合は、通常の Space キーとして機能します。
- Gamepad: 全ボタン・レバーに対応。
- アナログスティック: (左レバー)自由な移動(テンキー相当の入力)。
- ボタンカスタマイズ:
LT/RT/LB/RBなどを修飾キーとして組み合わせた多層的なマッピングに対応。 - 設定方法: 下記の「ゲームパッドマッピングツール」にて設定可能。
- Touch Panel: スマートフォン・タブレット向けのバーチャルパッドを搭載。
- コンテキスト依存: 移動、メニュー選択、YN回答など、ゲームの状態に応じてボタン配置が自動的に切り替わります。
- 設定方法: 下記の「タッチパネルマッピングツール」にて設定可能。
- (Gamepad, Touch Panelともにデフォルト値は調整不足、未調整です。よいレイアウトが出来たら教えてください。)
- (マッピング状態はツールでExport/Importできます。)
- Core: NetHack 3.7.0 (C)
- Runtime: WebAssembly (Emscripten / Asyncify)
- Frontend: JavaScript (Vanilla JS / ES6+)
- Graphics: HTML5 Canvas API / DOM Rendering (Mobile)
- Storage: IndexedDB (IDBFS via Emscripten)
翻訳検証や各種マッピング設定などは、コンフィグ画面からアクセス可能です。
- 翻訳検証ツール: 翻訳ロジックや辞書パターンの検証。
- ゲームパッドマッピングツール: ゲームパッドのボタンへのキー割り当て。
- タッチパネルマッピングツール: バーチャルパッドのボタン配置カスタマイズ。
リポジトリをダウンロードし、HTTP サーバー(Python の http.server など)を起動してアクセスしてください。
git clone https://github.com/e3-sh/Nethack-wasm-webUI.git
cd Nethack-wasm-webUI
# HTTPサーバーの起動例
python -m http.server 8000起動後、ブラウザで http://localhost:8000 を開きます。
- NetHack 3.7.0 の Wasm コンパイル
- 基本的な描画システムの構築
- 漢字・記号・タイルの混合描画対応
- IndexedDB によるセーブ機能の実装
- アイテム名パースエンジンの実装
- モダンなコンフィグ画面と設定永続化の実装
- コンテキスト対応 Gamepad UI & タッチ操作の実装
- モバイルレイアウト(座標補正・全画面対応)の最適化
- [/] 日本語メッセージ辞書の拡充(進行中)
- NetHack: NetHack General Public License
- WebUI Logic: MIT License
Developed by e3-sh