refactor(sfx.js): use vite imports for npm run build to work properly

This commit is contained in:
pobadoba
2026-05-10 22:03:24 +09:00
parent e4d3d32702
commit 9748c2e2f5
2 changed files with 22 additions and 21 deletions

View File

@@ -218,13 +218,10 @@ window.mazeGameState = {
## Known Issues & Limitations ## Known Issues & Limitations
### ⚠️ Known Behavior ### ⚠️ Known Problems
1. **Chest Memory:** Once a chest is opened, its visual state persists for the remainder of the game session (not reset per level) 1. **Pointer Lock Exit:** Pointer lock may be annoying for newcomers to web browser games
- *Workaround:* Intentional game design—players learn chest locations 2. **Chunk Size Warning:** Built JavaScript is ~9.1 MB due to image assets
2. **Pointer Lock Exit:** Pressing ESC exits pointer lock but doesn't pause gameplay - Not an issue for local play
- *Workaround:* Intentional—players can exit anytime (no pause feature)
3. **Chunk Size Warning:** Built JavaScript is ~9.1 MB due to image assets (job application image is 3MB)
- *Workaround:* Not an issue for local play; consider asset compression for production
### ⭐ Special Features to Note ### ⭐ Special Features to Note
- **Seeded Randomization:** Players can use the same seed to replay identical mazes (debug button: "Randomize seed") - **Seeded Randomization:** Players can use the same seed to replay identical mazes (debug button: "Randomize seed")
@@ -284,12 +281,6 @@ window.mazeGameState = {
- **Babylon.js Playground:** Reference for collision detection and camera control - **Babylon.js Playground:** Reference for collision detection and camera control
- **p5.js Documentation:** Async setup pattern for p5.js 2.0+ (no `preload()`) - **p5.js Documentation:** Async setup pattern for p5.js 2.0+ (no `preload()`)
- **MDN Web Audio API:** Context priming for cross-browser audio compatibility - **MDN Web Audio API:** Context priming for cross-browser audio compatibility
- **Vite Documentation:** Asset bundling and import resolution
### Game Design Inspiration
- *Portal series:* Puzzle-based spatial reasoning and exit goals
- *Deus Ex:* Multiple approaches to objectives (fast routing vs. exploration)
- *Pac-Man:* Time pressure and progressive difficulty
--- ---

View File

@@ -1,12 +1,22 @@
// Import audio files as modules so Vite bundles them
import chestCloseUrl from "../../sfx/sfx_chest_close.wav";
import chestOpenUrl from "../../sfx/sfx_chest_open.wav";
import clickUrl from "../../sfx/sfx_click.wav";
import clockUrl from "../../sfx/sfx_clock.wav";
import keyUrl from "../../sfx/sfx_key.wav";
import loseUrl from "../../sfx/sfx_lose.wav";
import stepUrl from "../../sfx/sfx_step.wav";
import winUrl from "../../sfx/sfx_win.wav";
const soundFiles = { const soundFiles = {
chestClose: "/sfx/sfx_chest_close.wav", chestClose: chestCloseUrl,
chestOpen: "/sfx/sfx_chest_open.wav", chestOpen: chestOpenUrl,
click: "/sfx/sfx_click.wav", click: clickUrl,
clock: "/sfx/sfx_clock.wav", clock: clockUrl,
key: "/sfx/sfx_key.wav", key: keyUrl,
lose: "/sfx/sfx_lose.wav", lose: loseUrl,
step: "/sfx/sfx_step.wav", step: stepUrl,
win: "/sfx/sfx_win.wav", win: winUrl,
}; };
const sounds = {}; const sounds = {};