Steam Roulette

Steam Roulette es una herramienta gratuita que elige aleatoriamente un juego de tu biblioteca de Steam, ayudándote a decidir a qué jugar a continuación.

Next.jsReactTypeScriptTailwind CSSGSAPHowler.jsFramer MotionExpress.jsNode.jsSteam Web API+1
Steam Roulette

Steam Roulette

Steam Roulette es una app web gratuita diseñada para resolver una pregunta muy común entre jugadores: ¿qué juego debería jugar ahora?

La aplicación se conecta con bibliotecas públicas de Steam, permite agregar uno o varios usuarios y selecciona aleatoriamente un juego mediante una ruleta visual inspirada en las animaciones de loot boxes de CS:GO. La experiencia combina utilidad, juego y presentación visual para hacer que elegir un juego sea más rápido y divertido.

El problema

Muchos usuarios tienen bibliotecas grandes en Steam, pero terminan jugando siempre los mismos títulos o pierden tiempo decidiendo qué abrir. El problema se vuelve todavía más común cuando varias personas quieren jugar juntas y necesitan encontrar un título que todos tengan disponible.

Steam Roulette fue creado para reducir esa fricción: el usuario agrega su perfil de Steam, aplica filtros si lo necesita y deja que la ruleta elija por él.

La solución

Steam Roulette permite ingresar Steam IDs o Vanity URLs, obtener la biblioteca de juegos y lanzar una ruleta animada que selecciona un juego disponible. También soporta múltiples usuarios, por lo que puede encontrar juegos compartidos entre varias bibliotecas.

La experiencia incluye:

  • Agregar uno o varios perfiles de Steam.
  • Resolver Vanity URLs automáticamente.
  • Obtener bibliotecas públicas de Steam.
  • Detectar juegos compartidos entre usuarios.
  • Filtrar por tiempo mínimo de juego.
  • Filtrar juegos cooperativos o multijugador.
  • Mostrar imágenes de los juegos desde Steam.
  • Ejecutar una animación tipo carrusel/loot box.
  • Reproducir efectos de sonido durante la selección.
  • Mostrar el ganador con confetti y acciones posteriores.

Características principales

CaracterísticaDescripción
Soporte multiusuarioPermite agregar varios perfiles de Steam para encontrar juegos compartidos.
Filtros avanzadosIncluye filtros por tiempo de juego y criterios de juego cooperativo/multijugador.
Ruleta animadaUsa una animación horizontal estilo CS:GO para hacer más emocionante la selección.
Integración con SteamObtiene bibliotecas, perfiles, imágenes y detalles desde Steam.
Experiencia gamificadaIncluye sonidos, confetti, transiciones y una presentación visual atractiva.
Responsive designFunciona correctamente en desktop y mobile.

Flujo de uso

  1. El usuario ingresa un Steam ID, Vanity URL o enlace de perfil.
  2. La app resuelve el identificador y obtiene el perfil.
  3. Se carga la biblioteca pública de juegos.
  4. Si hay múltiples usuarios, se calculan los juegos compartidos.
  5. El usuario puede aplicar filtros.
  6. La ruleta gira y selecciona un juego.
  7. El usuario puede abrir el juego, visitar su página en Steam o volver a girar.

Arquitectura

El proyecto está construido con Next.js usando App Router. La aplicación separa la experiencia en componentes, hooks, contexto global y rutas de API.

ÁreaRol
components/UserInput.tsxManeja el ingreso y administración de usuarios de Steam.
components/Filters.tsxPermite filtrar por género, tiempo de juego y opciones de juego compartido.
components/Roulette.tsxContiene la lógica visual y funcional de la ruleta.
contexts/AppContext.tsxCentraliza el estado global de usuarios, juegos, filtros y configuración.
hooks/useSteamAPI.tsEncapsula la integración con Steam y la lógica para obtener datos.
hooks/useSound.tsAdministra efectos de sonido durante la experiencia.
app/Contiene páginas, rutas y estructura del App Router de Next.js.

Integración con Steam

Steam Roulette utiliza la Steam Web API para obtener la información necesaria de los usuarios y sus juegos. La app puede resolver Vanity URLs, cargar bibliotecas públicas, obtener datos de perfil y enriquecer información de juegos usando detalles de Steam Store.

API / EndpointUso
ISteamUser/ResolveVanityURLConvierte Vanity URLs en Steam IDs.
IPlayerService/GetOwnedGamesObtiene la biblioteca pública de juegos del usuario.
Steam Store APIEnriquece juegos con imágenes, categorías, géneros y detalles visuales.

Lógica de selección

La ruleta trabaja sobre la lista de juegos disponibles después de aplicar filtros. Para un solo usuario, usa la biblioteca pública del perfil. Para múltiples usuarios, calcula la intersección entre bibliotecas y conserva solamente los juegos compartidos.

Además, la aplicación evita duplicados por appid y por nombre normalizado, lo que ayuda a limpiar casos donde Steam puede devolver versiones repetidas o entradas equivalentes.

Animación y experiencia

Uno de los diferenciales del proyecto es su presentación visual. En lugar de elegir un juego de forma instantánea, Steam Roulette usa una ruleta horizontal con aceleración, movimiento constante y desaceleración. Esta mecánica hace que la selección se sienta más como una experiencia de juego que como una simple utilidad.

La experiencia se complementa con:

  • Sonido de giro.
  • Sonido de parada.
  • Efecto de victoria.
  • Confetti.
  • Modal de ganador.
  • Imágenes de juegos desde Steam CDN.
  • Transiciones suaves entre estados.

Tech stack

CategoríaTecnologías
FrontendNext.js, React, TypeScript
EstilosTailwind CSS, shadcn/ui, Radix UI
AnimacionesGSAP, Framer Motion
Sonido y efectosHowler.js, react-confetti
Backend / API proxyNode.js, Express.js
APIs externasSteam Web API, Steam Store API
DeployVercel

Resultado

Steam Roulette transforma una decisión cotidiana en una experiencia interactiva. El proyecto combina APIs externas, estado global, animaciones avanzadas, filtros útiles y una interfaz responsive para crear una herramienta simple pero memorable.

Es especialmente útil para jugadores con bibliotecas grandes o grupos de amigos que quieren encontrar rápidamente un juego en común sin revisar manualmente sus colecciones.

Construyamos algo con este nivel de claridad

Podemos ayudarte a convertir una idea, proceso interno o producto existente en una experiencia digital seria y medible.

Steam Roulette | FENCODE | Fencode