13 KiB
🎮 Rediseño Pixel Art - Documentación Web
📋 Resumen de Cambios
Se ha transformado completamente el diseño de la documentación web (src/server/views/**) desde un estilo moderno con glassmorphism y gradientes a un diseño pixel art retro inspirado en RPGs de 8/16 bits.
🎨 Cambios Visuales Implementados
1. Sistema de Fuentes
- Primary:
'Press Start 2P'(Google Fonts) - Para títulos y UI importante - Secondary:
'VT323'(Google Fonts) - Para texto general y código - Aplicado
image-rendering: pixelatedglobalmente
2. Paleta de Colores Retro
--pixel-bg-dark: #0f0a1e /* Fondo oscuro principal */
--pixel-bg-medium: #1a1433 /* Contenedores */
--pixel-bg-light: #2d2347 /* Cards y cajas */
--pixel-accent-1: #ff006e /* Rosa/Magenta (misiones) */
--pixel-accent-2: #8338ec /* Púrpura (IA) */
--pixel-accent-3: #3a86ff /* Azul (minijuegos) */
--pixel-accent-4: #06ffa5 /* Verde/Cyan (economía) */
3. Elementos UI Pixel Art
Botones (.pixel-btn)
- Bordes de 4px con efecto 3D
- Box-shadow con desplazamiento al hover
- Fuente Press Start 2P
- Transiciones instantáneas (0.1s)
Cajas/Contenedores (.pixel-box)
- Bordes cuadrados (border-radius: 0)
- Box-shadow con offset de 8px
- Borde doble con
::beforepseudo-element - Animación de pulso sutil
Navbar Pixel (.pixel-navbar)
- Borde inferior de 4px
- Franja animada con degradado en la parte inferior
- Logo con moneda pixelada animada
Badges (.pixel-badge)
- Fuente pequeña (10px) Press Start 2P
- Animación de rebote (
pixelBounce) - Box-shadow 3D
Tablas
border-spacing: 4pxpara separación visual- Headers con fondo morado y fuente pixel
- Hover con glow verde
Scrollbar Personalizado
- Track oscuro con bordes
- Thumb con color accent-2
- Efecto inset 3D
📁 Archivos Creados/Modificados
Archivos CSS Nuevos
1. /src/server/public/assets/css/pixel-art.css
Propósito: Estilos base pixel art y componentes reutilizables
Contenido principal:
- Variables CSS globales
- Reset con pixelated rendering
- Componentes:
.pixel-btn,.pixel-box,.pixel-badge,.pixel-navbar - Animaciones:
pixelGlow,pixelPulse,pixelScroll,pixelBounce,pixelShake - Elementos decorativos:
.pixel-heart,.pixel-coin,.pixel-hp-bar - Tooltips pixel art
- Scrollbar custom
Líneas clave:
/* Fuentes */
@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&family=VT323&display=swap');
/* Background grid */
.pixel-grid-bg {
background-image:
linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px);
background-size: 16px 16px;
}
2. /src/server/public/assets/css/pixel-sections.css
Propósito: Sobrescribir estilos de secciones individuales
Contenido principal:
- Estilos para
<section>con bordes pixel - Títulos H2/H3/H4 con fuentes pixel
- Listas con bullets custom (
■) - Code blocks con borde de acento
- Tablas responsive
- Forms con estilo retro
Sobrescrituras importantes:
section {
background: var(--pixel-bg-medium) !important;
border: 4px solid var(--pixel-border) !important;
box-shadow: 8px 8px 0 0 rgba(0, 0, 0, 0.5) !important;
}
section h2 {
font-family: 'Press Start 2P', cursive !important;
text-shadow: 3px 3px 0px rgba(0, 0, 0, 0.8), 0 0 20px var(--pixel-accent-4) !important;
}
Archivos EJS Modificados
1. /src/server/views/layouts/layout.ejs
Cambios:
- ✅ Eliminado config de Tailwind con animaciones smooth
- ✅ Incluido
pixel-art.cssypixel-sections.css - ✅ Cambiado body class:
pixel-grid-bgen lugar de gradiente - ✅ Eliminado los 3 blobs animados (
animate-float) - ✅ Footer rediseñado con
.pixel-boxy.pixel-status-bar
Antes:
<body class="min-h-screen bg-gradient-to-br from-slate-950 via-slate-900 to-slate-950 text-slate-100">
<!-- Blobs animados -->
<div class="absolute ... bg-purple-500/20 ... animate-float"></div>
Después:
<body class="min-h-screen pixel-grid-bg pt-14">
<!-- Sin blobs, solo grid background -->
2. /src/server/views/index.ejs
Cambios:
- ✅ Badge con
.pixel-badgeen lugar de gradientes - ✅ Títulos H1/H2 sin
bg-clip-text(texto sólido) - ✅ HP bar decorativo con corazones pixel
- ✅ Descripción dentro de
.pixel-box - ✅ Botones con
.pixel-btny.pixel-btn-secondary - ✅ Stats footer con
.pixel-boxindividuales
Antes:
<div class="inline-flex ... bg-gradient-to-r from-indigo-500/10 ...">
<span class="animate-ping ..."></span>
<span class="bg-clip-text text-transparent bg-gradient-to-r ...">
<%= appName %> • v<%= version %>
</span>
</div>
Después:
<div class="inline-block">
<div class="pixel-badge">
<%= appName %> • v<%= version %>
</div>
</div>
3. /src/server/views/partials/navbar.ejs
Cambios:
- ✅ Clase principal:
.pixel-navbar - ✅ Logo con
.pixel-coinanimado - ✅ Links con
.pixel-tooltip(hover muestra info) - ✅ Fuente Press Start 2P para el nombre del bot
Antes:
<nav class="fixed ... bg-slate-950/70 backdrop-blur">
<a href="#" class="text-white font-bold"><%= appName %></a>
Después:
<nav class="fixed ... pixel-navbar">
<a href="#" class="flex items-center gap-2">
<div class="pixel-coin" style="width: 20px; height: 20px;"></div>
<span class="font-['Press_Start_2P'] text-sm"><%= appName %></span>
</a>
4. /src/server/views/partials/toc.ejs
Cambios:
- ✅ Contenedor:
.pixel-box - ✅ Título con
.pixel-cornerdecorativo - ✅ Links con símbolo
►en lugar de emojis - ✅ Navegación simplificada con fuente pixel
Antes:
<nav class="... bg-slate-900/80 backdrop-blur-xl border ...">
<ul>
<li><a href="#primeros-pasos">🚀 Primeros Pasos</a></li>
Después:
<nav class="... pixel-box ...">
<div class="font-['Press_Start_2P'] ... pixel-corner">
≡ Índice
</div>
<ul>
<li><a href="#primeros-pasos">► Primeros Pasos</a></li>
🎭 Componentes Pixel Art Disponibles
Clase .pixel-btn
Botón principal con efecto 3D
<a href="#" class="pixel-btn">► Comenzar ahora</a>
Clase .pixel-btn-secondary
Botón secundario con colores alternativos
<button class="pixel-btn pixel-btn-secondary">☰ Ver comandos</button>
Clase .pixel-box
Contenedor con borde pixel y sombra
<div class="pixel-box">
<p>Contenido aquí</p>
</div>
Clase .pixel-badge
Badge animado con rebote
<div class="pixel-badge">NEW!</div>
Clase .pixel-navbar
Navbar con franja animada inferior
<nav class="pixel-navbar">...</nav>
Clase .pixel-tooltip
Tooltip que aparece al hover
<a href="#" class="pixel-tooltip" data-tooltip="Info aquí">Link</a>
Clase .pixel-corner
Decoración de esquinas tipo RPG
<div class="pixel-corner">
<h3>Título</h3>
</div>
Clase .pixel-hp-bar
Barra de corazones decorativa
<div class="pixel-hp-bar">
<div class="pixel-heart"></div>
<div class="pixel-heart"></div>
<div class="pixel-heart"></div>
</div>
Clase .pixel-status-bar
Barra de estado con fuente pixel
<div class="pixel-status-bar">
<span>VER 1.0.0</span>
<span>•</span>
<span>LVL 50</span>
</div>
Clase .pixel-coin
Moneda giratoria animada
<span class="pixel-coin"></span>
🎬 Animaciones Implementadas
@keyframes pixelGlow
/* Uso: títulos H1 */
animation: pixelGlow 2s ease-in-out infinite;
Efecto de brillo pulsante en texto
@keyframes pixelPulse
/* Uso: backgrounds de .pixel-box::before */
animation: pixelPulse 3s ease-in-out infinite;
Opacidad que varía de 0.1 a 0.3
@keyframes pixelScroll
/* Uso: franja inferior de .pixel-navbar::after */
animation: pixelScroll 2s linear infinite;
Desplazamiento horizontal de colores
@keyframes pixelBounce
/* Uso: .pixel-badge */
animation: pixelBounce 1s ease-in-out infinite;
Rebote vertical de -4px
@keyframes pixelShake
/* Uso: errores o alertas */
animation: pixelShake 0.5s;
Shake horizontal de ±2px
@keyframes pixelRotate
/* Uso: .pixel-coin */
animation: pixelRotate 3s linear infinite;
Rotación 3D en eje Y
@keyframes pixelBarScroll
/* Uso: .pixel-status-bar-fill::after */
animation: pixelBarScroll 1s linear infinite;
Patrón de líneas en movimiento
📊 Comparativa Antes/Después
| Elemento | Antes (Glassmorphism) | Después (Pixel Art) |
|---|---|---|
| Fuente principal | Default sans-serif | Press Start 2P |
| Fuente código | Monospace | VT323 |
| Bordes | border-radius: 24px |
border-radius: 0 |
| Sombras | Smooth blur | Hard offset (8px 8px) |
| Colores | Gradientes suaves | Paleta limitada (5 colores) |
| Animaciones | Smooth (0.3s ease) | Instantáneas (0.1s) |
| Background | 3 blobs animados | Grid pixel estático |
| Botones | Hover scale + gradiente | 3D push effect |
| Navbar | Backdrop blur | Borde con franja animada |
| Tables | Bordes colapsados | Border-spacing 4px |
| Scrollbar | Default | Custom pixel art |
🔧 Cómo Usar los Componentes
Crear una sección nueva
<section id="mi-seccion" class="pixel-box">
<h2>🎮 Mi Sección</h2>
<p>Descripción aquí</p>
<div class="pixel-corner">
<h3>Subsección</h3>
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
</div>
<a href="#" class="pixel-btn">Acción</a>
</section>
Agregar tooltips
<span class="pixel-tooltip" data-tooltip="HP: 100/100">
♥ Salud
</span>
Crear barra de progreso
<div class="pixel-status-bar">
<span>EXP:</span>
<div class="pixel-status-bar-fill" style="width: 75%"></div>
<span>750/1000</span>
</div>
Mostrar código pixel art
<pre><code class="language-bash">!minar
!pescar
!pelear</code></pre>
🚀 Próximos Pasos Sugeridos
1. Agregar Iconos Pixel Art Custom
Crear sprites para reemplazar emojis:
- ⚔️ → Espada pixel (16x16)
- 🛡️ → Escudo pixel (16x16)
- 💎 → Diamante pixel (16x16)
2. Loading States
.pixel-loading {
animation: pixelBounce 0.6s infinite;
}
3. Notificaciones/Toasts
<div class="pixel-box" style="position: fixed; top: 20px; right: 20px;">
<p>✓ Guardado exitoso</p>
</div>
4. Modo Oscuro/Claro
Agregar toggle para cambiar paleta:
[data-theme="light"] {
--pixel-bg-dark: #f0f0f0;
--pixel-text: #1a1433;
}
5. Sound Effects
Agregar sonidos 8-bit en botones (requiere JS):
document.querySelectorAll('.pixel-btn').forEach(btn => {
btn.addEventListener('click', () => {
new Audio('/assets/sounds/click.wav').play();
});
});
🐛 Troubleshooting
Las fuentes no cargan
Solución: Verificar que Google Fonts está accesible. Backup:
@font-face {
font-family: 'Press Start 2P';
src: url('/assets/fonts/PressStart2P.woff2') format('woff2');
}
Los estilos no se aplican
Solución: Verificar orden de carga de CSS:
<link rel="stylesheet" href="/assets/css/pixel-art.css">
<link rel="stylesheet" href="/assets/css/pixel-sections.css">
<link rel="stylesheet" href="/assets/css/styles.css"> <!-- Este último -->
Las animaciones van lentas
Solución: Reducir box-shadows complejos en elementos grandes. Usar will-change:
.pixel-btn {
will-change: transform, box-shadow;
}
Scrollbar custom no funciona en Firefox
Solución: Agregar soporte Firefox:
* {
scrollbar-width: thin;
scrollbar-color: var(--pixel-accent-2) var(--pixel-bg-dark);
}
📝 Notas Finales
- ✅ Backup creado en:
src/server/views.backup - ✅ Todos los archivos EJS mantienen la misma estructura de contenido
- ✅ Solo cambió la capa visual (CSS)
- ✅ Compatible con dispositivos móviles (responsive)
- ✅ Accesibilidad: todos los colores tienen contraste suficiente (WCAG AA)
🔗 Referencias
Última actualización: <%= new Date().toLocaleDateString('es-ES') %>
Versión diseño: 1.0.0 (Pixel Art RPG)