Skip to content

e3sh/Nethack-wasm-webUI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

146 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NetHack-wasm-webUI

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)

⚒️ 開発支援ツール

翻訳検証や各種マッピング設定などは、コンフィグ画面からアクセス可能です。

[ 🔧 設定・デモ (Config) ]

  • 翻訳検証ツール: 翻訳ロジックや辞書パターンの検証。
  • ゲームパッドマッピングツール: ゲームパッドのボタンへのキー割り当て。
  • タッチパネルマッピングツール: バーチャルパッドのボタン配置カスタマイズ。

📦 セットアップ

ローカルでの実行

リポジトリをダウンロードし、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 & タッチ操作の実装
  • モバイルレイアウト(座標補正・全画面対応)の最適化
  • [/] 日本語メッセージ辞書の拡充(進行中)

📜 ライセンス


Developed by e3-sh

About

use NetHack 3.7.0 wasm shim-interface

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors