Files
SoundGame/web/hunt/index.html
T
xsl 005851d01a feat(hunt): 《围猎》2-4人实时联机纯音频协作守卫——纯音频MMORPG第一阶段切片
- 设计:docs/design/23-hunt.md + voice-ids(84 id,166条)+ 13号断言登记,§15记录10+1条设计裁决
- 服务器:零依赖WebSocket(ws.js)+ 房间管理/服务端权威战斗/bot AI(hunt-room.js),断线30s宽限resume回槽、超时转bot;修复package.json模块类型误判的既有破坏
- 客户端:web/hunt/ 全套(教学T0-T4/听觉视野裁剪R1-R8/结算排行榜/guide接入),playtest 211断言
- 引擎:audio.js 后向兼容 opts.pan(StereoPannerNode),web-engine-api.md 同步
- 资产:166条TTS语音(QC无离群)+ 13件合成sfx(真峰值≤-3dBFS)+ 2首Mureka BGM,终检全绿
- 平衡:bot调参至挂机局71%失守/C、3bot局71% A/B(hunt-balance-scan.mjs 24种子扫描)
- 接线:大厅卡片、profiles.js hunt桶、README/roadmap MMO路线条目

验证:hunt-sim 16/16 + api-smoke 12/12 + hunt playtest 211/211 + 既有10游戏与引擎回归零回退 + 真服务器WS端到端冒烟通过
2026-09-13 11:08:01 +08:00

44 lines
1.6 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<!-- viewport 锁缩放,viewport-fit=cover 适配刘海屏 -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover">
<title>围猎 · SoundGame Web</title>
<link rel="stylesheet" href="../engine/style.css">
</head>
<body>
<!-- 全屏根元素:手势全屏捕获层,封面图放里面 -->
<div id="game-root">
<img class="cover" src="cover.png" alt="">
</div>
<!--
标准接线流程(每个游戏都一样):
1. new WebAudioEngine('audio/') —— basePath 相对本页面
2. new HuntGame(audio, root)
3. await audio.showStartOverlay() —— 遮罩"轻触开始",首次点按/空格/回车解锁音频
4. game.start() + attachGestures() —— 解锁后才接管手势,避免开始那次点按误触
联机端点 /ws/hunt 与静态/REST 同服务器同端口(game.js 内按 location 拼接)。
-->
<script type="module">
import { WebAudioEngine } from '../engine/audio.js';
import { attachGestures } from '../engine/gesture.js';
import { HuntGame } from './game.js';
async function main() {
const root = document.getElementById('game-root');
const audio = new WebAudioEngine('audio/');
const game = new HuntGame(audio, root);
await audio.showStartOverlay({ cover: 'cover.png' });
// 走到这里 AudioContext 已解锁,可以出声了
game.start();
attachGestures(root, (g) => game.onGesture(g));
}
main();
</script>
</body>
</html>