Files
pinball-duel/index.html
aevgarik bb9f7209ae Post-codex-review-2: mobile controls, turbo bug, AI diff, favicon
- Mobile match controls (codex #1 High): 3 touch zones внизу MatchScene
  (L / BOOST / R). Visible semi-transparent overlay'и; работает и на mouse,
  и на touch. Keyboard input теперь optional (this.keys?), не падает на
  headless mobile.
- Turbo first-hit bug (codex #2): guard на lastHitTime > 0 — иначе первый
  удар по turbo в первую секунду давал 0 очков (now < 0 + 1000).
- AI behavior diff (codex #3): добавлен PersonalityModifier (triggerDistBonus,
  reliabilityMul, reactionMul). Defensive: +reliability, -reaction.
  Aggressive: +trigger distance, -reliability. Ghost: 15% «эхо-double-swing»
  (обе стороны одновременно). Trickster уже имел jitter modifier.
  Поведенческие отличия теперь должны быть различимы за 5 матчей.
- Favicon 404 (codex #4 Low): inline SVG favicon в index.html, no more
  console noise.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 03:59:41 +03:00

53 lines
1.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, viewport-fit=cover" />
<meta name="theme-color" content="#0a0a14" />
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' fill='%230a0a14'/%3E%3Ccircle cx='16' cy='16' r='8' fill='%23ff006e'/%3E%3Ccircle cx='16' cy='16' r='3' fill='%2300f0ff'/%3E%3C/svg%3E" />
<meta name="description" content="Дуэльный пинбол с 4 AI-противниками — у каждого свой характер." />
<title>Пинбол-Дуэль</title>
<style>
html, body {
margin: 0;
padding: 0;
overflow: hidden;
background: #0a0a14;
width: 100%;
height: 100%;
-webkit-tap-highlight-color: transparent;
touch-action: none;
user-select: none;
-webkit-user-select: none;
}
#game-container {
width: 100vw;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
#loading {
color: #ff006e;
font-family: 'Press Start 2P', monospace, sans-serif;
font-size: 14px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
animation: pulse 1.2s ease-in-out infinite;
}
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.4; }
}
</style>
</head>
<body>
<div id="game-container">
<div id="loading">Loading…</div>
</div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>