Звук (Web Audio API) + несколько раскладок coop-карты

Клиент: audio.js синтезирует эффекты без внешних файлов (выстрел,
взрыв, разрушение кирпича, победа/поражение) — вписывается в
"чистый HTML/CSS/JS" стек. AudioContext разблокируется по клику
"готов" (браузеры блокируют автовоспроизведение без жеста).

Сервер: 3 варианта раскладки coop-карты (случайный выбор при старте
матча) вместо одной фиксированной.

Fix: сервер разрушал кирпичи в своей копии карты, но никогда не сообщал
об этом клиенту — стена оставалась видимой навсегда, хотя сквозь неё уже
можно было стрелять. Теперь game.state включает destroyed_tiles,
клиент убирает соответствующий спрайт стены.
This commit is contained in:
2026-08-06 12:42:52 +05:00
parent 79aa4a0c48
commit f2a5657740
5 changed files with 150 additions and 13 deletions
+2
View File
@@ -1,6 +1,7 @@
import { Network, ServerMessage } from './network.js';
import { ClientMessage } from './protocol.js';
import { startBattle } from './battle.js';
import { unlockAudio } from './audio.js';
const container = document.getElementById('lobby');
@@ -106,6 +107,7 @@ container?.addEventListener('click', (e) => {
net.joinRoom(btn.dataset.roomId);
break;
case 'ready':
unlockAudio();
net.send(ClientMessage.GAME_READY);
break;
case 'leave':