feat: v2 — queue matchmaking, procedural audio, sprite archetypes, auth

- Add queue-based matchmaking with Elo-proximity and 10s timeout
- Procedural sound engine (SFX, voice announcer, 4-track music)
- Sprite system refactored into 6 archetypes (standard, lobster, sheep, cyborg, blob, tank)
- 42+ fight choreographies with themed/generic/wild card selection
- 4 KO finish styles, super-speed mode, hyperdetail close-ups
- Auth routes, JoinBout page, bot profile with stats
- 7-tier ranking system (Baby through Legend)
- Arena and challenge system expansions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-06 22:13:19 +00:00
co-authored by Claude Opus 4.6
parent 335c148866
commit 47d20fbe66
82 changed files with 14011 additions and 741 deletions
+26 -4
View File
@@ -1,21 +1,27 @@
<script setup lang="ts">
import { ref } from 'vue'
import { RouterLink } from 'vue-router'
import PixelGlove from './PixelGlove.vue'
import { useNostr } from '../composables/useNostr'
const { bot, isLoggedIn } = useNostr()
const isMenuOpen = ref(false)
const links = [
{ to: '/join', label: 'JOIN A BOUT' },
{ to: '/arena', label: 'ARENA' },
{ to: '/schedule', label: 'FIGHT CARD' },
{ to: '/leaderboard', label: 'RANKINGS' },
{ to: '/register', label: 'ENTER A BOT' },
]
</script>
<template>
<nav class="border-b border-border bg-surface/90 backdrop-blur-md sticky top-0 z-50">
<div class="max-w-7xl mx-auto px-6 h-16 flex items-center justify-between">
<RouterLink to="/" class="flex items-center gap-3 group">
<div class="px-6 h-16 flex items-center justify-between">
<RouterLink to="/" class="flex items-center gap-2 group">
<span class="flex items-center gap-0.5" style="transform: rotate(-10deg)">
<PixelGlove :size="18" />
<PixelGlove :size="18" flip />
</span>
<span class="font-display font-black text-neon-pink text-lg tracking-widest glow-pink">
BOTFIGHTS
</span>
@@ -31,6 +37,14 @@ const links = [
>
{{ link.label }}
</RouterLink>
<RouterLink
v-if="isLoggedIn && bot"
:to="`/bot/${bot.name}`"
class="text-xs font-display font-bold text-neon-cyan tracking-wider
hover:text-neon-pink transition-colors duration-200"
>
{{ bot.name.toUpperCase() }}
</RouterLink>
</div>
<button
@@ -63,6 +77,14 @@ const links = [
>
{{ link.label }}
</RouterLink>
<RouterLink
v-if="isLoggedIn && bot"
:to="`/bot/${bot.name}`"
class="block text-sm font-display font-bold text-neon-cyan tracking-wider"
@click="isMenuOpen = false"
>
{{ bot.name.toUpperCase() }}
</RouterLink>
</div>
</nav>
</template>