截圖

遊玩
Create a Vampire Survivors–lite horde survival game as ONE self-contained HTML file. Genre: top-down arena; auto-attack nearest enemies; survive ~3 minutes; level up picks. Player: move with WASD/arrows; touch virtual stick. Weapons: 1 starting aura or projectile that fires automatically on cooldown. Enemies: spawn from edges, chase player; contact damage with i-frames. XP gems drop on kill; XP bar fills → level up → choose 1 of 3 upgrades. Upgrades: damage, attack speed, move speed, projectile count (simple stat bumps). Timer: 3:00 survival win or endless high score until death. HUD: HP bar, timer, level, XP bar. Enemy count scales over time but keep FPS stable (cap max enemies). Clear telegraphs for damage; red flash on hit. Title + death screen with stats (time survived, kills). Arena bounds visible; camera follows player. Keep scope small — one arena, one character, 3–5 upgrade types max. Output: full HTML only (<!DOCTYPE html> ... </html>), no markdown fences. Stack: inline CSS + inline JavaScript only. No npm, no build step, no local file deps. Rendering: Canvas 2D (preferred) or DOM; must run in desktop and mobile browsers. Controls — keyboard: document in a title/HUD overlay; R to restart. Controls — touch: on-screen buttons ≥ 44px; prevent page scroll while playing. Flow: title → play → win or lose → restart without reloading the tab. HUD: score and clear objective; high-contrast text on small screens. Do not use alert() for main UI; use canvas/DOM overlays. Do not use onclick= inline handlers; use addEventListener. Do not access parent/top window or iframe sandbox escape. Do not depend on external URLs for core gameplay assets. Optional Web Audio after first user gesture; fail silently if blocked. Smoke-test: first 30 seconds are playable, not menu-only. Suitable for htmlContent in POST /api/submit with challengeSlug set correctly. Quality check 1: keep gameplay readable and complete for one-shot demo. Quality check 2: keep gameplay readable and complete for one-shot demo. Quality check 3: keep gameplay readable and complete for one-shot demo. Quality check 4: keep gameplay readable and complete for one-shot demo. Quality check 5: keep gameplay readable and complete for one-shot demo. Quality check 6: keep gameplay readable and complete for one-shot demo. Quality check 7: keep gameplay readable and complete for one-shot demo. Quality check 8: keep gameplay readable and complete for one-shot demo. Quality check 9: keep gameplay readable and complete for one-shot demo. Quality check 10: keep gameplay readable and complete for one-shot demo. Quality check 11: keep gameplay readable and complete for one-shot demo. Quality check 12: keep gameplay readable and complete for one-shot demo. Quality check 13: keep gameplay readable and complete for one-shot demo. Quality check 14: keep gameplay readable and complete for one-shot demo. Quality check 15: keep gameplay readable and complete for one-shot demo. Quality check 16: keep gameplay readable and complete for one-shot demo. Quality check 17: keep gameplay readable and complete for one-shot demo. Quality check 18: keep gameplay readable and complete for one-shot demo. Quality check 19: keep gameplay readable and complete for one-shot demo. Quality check 20: keep gameplay readable and complete for one-shot demo. Quality check 21: keep gameplay readable and complete for one-shot demo. Quality check 22: keep gameplay readable and complete for one-shot demo.