GH GambleHub

Avatar, states e presence

1) Ruolo avatar e stato in UX

L'avatar è l'ancoraggio visivo della personalità e lo status è il contesto della sua attività. Insieme, loro:
  • forniscono riconoscibilità (elenchi, chat, tabelle)
  • forniscono un feedback immediato della presenza (online/offline);
  • fanno sentire l'interfaccia vivace (soprattutto nei giochi real-time, nelle PvP, nelle chat);
  • aumentano la fiducia e il coinvolgimento nelle interazioni tra i giocatori.

2) Tipologia

ElementoDestinazioneEsempio di visualizzazione
AvatarID utente visivoMiniatura circolare o quadrata 32-64 px
PresenceStato connessione correntePunto verde/grigio, «in rete», «inattivo»
ActivityAzione corrente«Gioca a Book of Ra», «Nel torneo», «Scommette»
Custom statusFirma personalizzata«Non disturbare», «in pausa»

3) Dimensioni e forma

32 px è la dimensione minima (elenchi, tabelle, chat).
40-48 px - profili, schede, barra di navigazione.
64-96 px - grandi blocchi di profilo, strim room.
Forma: rotonda - standard, quadrata - per marchi/operatori.
Raggio: «50%» per il cerchio o «8-12 px» per il quadrato morbido.


4) Caricamento e fallback

I formati supportati sono JPEG, PNG, WebP, SVG (fino a 2-3 MB).
Resource e ottimizzazione sul server (ad esempio 128, 256, 512 px).
In assenza, l'avatar iniziale è la prima lettera del nome, lo sfondo della tavolozza.
Errore durante il caricamento di placeholder finto con l'icona utente.

html
<img class="avatar" src="/u/123/avatar.jpg" alt="Аватар игрока Alex" onerror="this.src='/assets/avatar-fallback.png'">

5) Tavolozza colore e sfondo

La generazione automatica dello sfondo per hash è un colore stabile, ma unico.
Il contrasto dell'AA tra sfondo e iniziali.
Per il tema oscuro, l'oscuramento è 15-20%.
Evitare combinazioni casuali «velenose»; limitare la tavolozza (6-10 toni).


6) Indicazione presence

6. 1 States di base

StatoColoreTestoComportamento
OnlineVerde ('# 00C853')In reteConnesso al WebSocket
IdleGiallo ('# FFD600')InattivoNessuna azione> 5 minuti
Busy / DNDRosso ('# D32F2F')Non disturbareIn gioco o disattivato notifiche
OfflineGrigio ('# 9E9E9E9E')Non in reteNessuna connessione> 2 minuti

6. 2 Activity-level presence

In alternativa, è possibile visualizzare le azioni seguenti:
  • «Gioca»
  • «Scommette»
  • «Nel torneo»
  • «In pausa»

6. 3 Implementazione tecnica

Invia «heartbeat» ogni 30 secondi in un WebSocket.
Senza segnale> 60 secondi «offline».
In caso di attività (scroll, click, bet), aggiorna lo statò online ".
In archivio: TTL 120 secondi (Redis/Realtime API).


7) Cartelli di visualizzazione

7. 1 Nelle liste degli utenti

Avatar + stato punto in basso a destra (8-10 px).
Tooltip: «Online »/« Ultimo ingresso 5 minuti fa».

7. 2 In chat

Avatar + nick + mini-presence ('online/offline').
Ultimo messaggio e ora.
Sincronizza tramite socket event'user _ presence '.

7. 3 Nella tabella dei leader

Avatar + nome + livello/grado.
Hover → il profilo mini (ultima attività, paese, vittorie).

7. 4 Nella scheda del giocatore (PvP/Live)

Avatar di grandi dimensioni (64-80 px).
«In gioco», «In pausa», «In attesa di un avversario».
Colore traccia = stato ('border-color'var).


8) Disponibilità (A11y)

«alt», con nome e stato, «L'avatar del giocatore Alex è online».
Per gli stati sono duplicati di testo, non solo il colore.
"aria-live =" polite "quando cambia lo stato.
Contrasto dell'AA per lo stato del fondo.
Non usare indicatori lampeggianti.


9) Stati di avvio e errori

Loading: cerchio grigio/skeleton senza cornici.
Errore: icona fallback + suggerimento «Avatar non caricato».
Empty: placeholder iniziale o di sistema.


10) Privacy

L'utente deve controllare la visibilità della presence (on/off).
Impostazioni: Mostra stato online/Mostra ultima attività.
Per gli account degli ospiti, presence è nascosta.
Nel PvP - è possibile visualizzare solo «disponibile/occupato», senza tempi precisi.


11) Implementazione dell'API presence

json
{
"userId": "u123",
"presence": "online",
"activity": "playing",
"lastSeen": "2025-11-03T18:52:00Z"
}
Server:
  • Abbonamento al canale «/presence/{ userId} ».
  • Ping/pong periodico tramite socket.
  • Aggiornamento automatico dello stato per TTL.
Client:
js socket.on('presence:update', data => {
document.querySelector(`#u${data.userId}.status`).dataset.state = data.presence;
});

12) Specificità del iGaming

Giochi live: Stato Numero 12, Spacciatore in attesa, Distribuzione in arrivo.
Tornei, badge «Partecipa», timer finale.
PvP cooperative: attività «Rivale trovato/inattivo».
Nastri sociali: avatar con mini-badge torneo o VIP di livello.
Scommesse: «In fase di puntata» (busy) «Pronto» (online).


13) Metriche e performance

Presence latency: 1 secondo dall'evento all'aggiornamento UI.
Heartbeat success rate: ≥ 99%.

CPU load su client: 5% con 1000 aggiornamenti/min

TTL accuracy: gli utenti non sono «appesi» online dopo l'uscita.
Memory leak test - Pulisce gli ascoltatori scritti.


14) Antipattern

Avatar senza alt o senza sfondo è un buco in UI.
Solo il colore per lo stato (senza testo/tooltip).
I punti lampeggianti/gli anelli pulsanti sono fastidiosi.
Nessun limite per l'aggiornamento del sovraccarico.
Visualizza «last seen» con precisione di secondo (violazione della privacy).
Formati e proporzioni diversi degli avatar nella stessa griglia.


15) Token di progettazione (esempio)

json
{
"avatar": {
"sizes": { "xs": 24, "sm": 32, "md": 40, "lg": 64 },
"radius": { "circle": "50%", "square": 8 },
"border": { "width": 2, "color": "var(--bg-elevated)" }
},
"presence": {
"dotSize": 10,
"gap": 2,
"colors": {
"online": "#00C853",
"idle": "#FFD600",
"busy": "#D32F2F",
"offline": "#9E9E9E"
}
},
"motion": {
"updateMs": 150,
"fadeMs": 120
},
"a11y": {
"contrastAA": true,
"textLabel": true
}
}

16) Lista assegni QA

UI

  • Le dimensioni e i raggi sono consistenti; avatar centrato.
  • Contrasto dell'AA; non ci sono stati di colore puri.
  • Falback iniziale vediamo e leggiamo.
  • Tooltip o stato di testo è presente.

Presence

  • Lo stato viene aggiornato in 1 secondo dopo l'evento.
  • Offline → Online è corretto durante il recupero.
  • Non si verificano picchi (deduplicazione degli eventi).
  • Si tiene conto dell'inattività (idle> 5 min).

Privacy

  • Le impostazioni di visibilità presence funzionano.
  • Last seen viene arrotondato a minuti/ore.
  • Non ci sono attività di divulgazione eccessiva (ad esempio, scommesse).

Performance

  • Heartbeat è stabile, WebSocket auto-riconnect con backoff.
  • Nessuna perdita di memoria con 1000 aggiornamenti.
  • TTFF ≤ 100 ms quando viene visualizzato.

17) Documentazione in progettazione

Компоненты: `Avatar`, `PresenceDot`, `UserCard`, `ActivityBadge`, `LiveStatus`.
Pattern: Avatar con fallback, Stato punto, Real Time aggiornamento presence, Modalità privata.
Token: dimensioni, colori, raggi, aggiornamenti TTL, contrasto.
Do/Don't: colore senza testo (don't), forme rotonde e quadrate in un unico elenco (don't), dimensioni e tratti stabili (do).


Breve riepilogo

Gli avatar e gli stati non sono solo elementi decorativi, ma un linguaggio di comunicazione tra gli utenti e il sistema. I colori consistenti, le firme leggibili, la sincronizzazione corretta e il rispetto per la privacy generano una sensazione di spazio vivente, particolarmente importante nell'arena, nel torneo, nella chat live o nelle scommesse con gli amici. Presence rende l'interfaccia dinamica e umana - ma solo con un equilibrio di informazione e silenzio.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.