GH GambleHub

Awatary, statusy i obecność

1) Rola awatara i status w UX

Awatar jest wizualną kotwicą osobowości, a status jest kontekstem jej działalności. Razem:
  • zapewnić uznanie (w wykazach, czatach, tabelach);
  • zapewnia natychmiastowe informacje zwrotne o obecności (online/offline);
  • stworzyć poczucie żywotności interfejsu (zwłaszcza w grach w czasie rzeczywistym, PvP, czaty);
  • zwiększenie zaufania i zaangażowania w interakcje między graczami.

2) Typologia

ElementPowołanieWyświetl przykład
AvatarIdentyfikator użytkownika wizualnegoMiniatura okrągła lub kwadratowa 32-64 px
ObecnośćAktualny status połączeniaZielona/szara kropka, online, nieaktywna
DziałalnośćBieżące działanie„Gra Księga Ra”, „W turnieju”, „Stawki”
Status niestandardowyNiestandardowy podpis„Nie przeszkadzaj”, „Na przerwie”

3) Wymiary i kształt

32 px - minimalny rozmiar (listy, tabele, czaty).
40-48 px - profile, karty, panel nawigacyjny.
64-96 px - duże bloki profilowe, pokoje strumieniowe.
Kształt: okrągły - standardowy, kwadratowy - dla marek/operatorów.
Promień: '50%' dla okręgu lub '8-12 px' dla kwadratu miękkiego.


4) Załadunek i odpływ

Obsługiwane formaty: JPEG, PNG, WebP, SVG (do 2-3 MB).
Zasoby i optymalizacja na serwerze (na przykład 128, 256, 512 px).
W przypadku nieobecności - początkowy awatar: pierwsze litery nazwy, tło z palety.
Błąd wczytywania → fałszywy znacznik z ikoną użytkownika.

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

5) Palety kolorów i tło

Automatyczne generowanie tła po nazwie hash: stabilny, ale unikalny kolor.
Kontrast ≥ AA pomiędzy tłem a inicjałami.
Dla ciemnego tematu - ściemnianie 15-20%.
Unikać przypadkowych kombinacji „trujących”; ograniczyć paletę do 6-10 ton.


6) Wskazanie obecności

6. 1 Podstawowe statusy

StatusKolorTekstZachowanie
OnlineZielony ('# 00C853')OnlinePodłączony do WebSocket
BezczynnośćŻółty ('# FFD600')Jest nieaktywnyBrak działania> 5 min
Zajęty/DNDCzerwony ('# D32F2F')Nie niepokoićPowiadomienia w grze lub wyłączone
OfflineSzary („# 9E9E9E”)OfflineBrak połączenia> 2 min

6. 2 Obecność na poziomie aktywności

Dodatkowo można pokazać działania:
  • „Gry”
  • „Robi zakład”
  • „W turnieju”
  • „Na przerwie”

6. 3 Realizacja techniczna

Wysyłanie „bicia serca” co 30 sekund przez WebSocket.
Jeśli nie ma sygnału> 60 sekund → 'offline'.
Kiedy aktywny (przewiń, kliknij, zakład), status 'online' → zaktualizowany.
W magazynie: TTL 120 sec (Redis/Realtime API).


7) Wzory wyświetlania

7. 1 Na listach użytkowników

Avatar + status z kropką w prawym dolnym rogu (8-10 px).
Wskazówka: „Online „/” Ostatnie logowanie 5 min temu ”.

7. 2 W czacie

Avatar + przydomek + mini-obecność („online/offline”).
Ostatnia wiadomość i czas.
Synchronizacja za pomocą zdarzenia „user _ presence”.

7. 3 Na tablicy liderów

Avatar + nazwa + poziom/ranga.
Hover → mini-profil (ostatnia aktywność, kraj, zwycięstwa).

7. 4 Na karcie gracza (PvP/Live)

Duży awatar (64-80 px).
Status na żywo: „W grze”, „Na przerwie”, „Czekając na przeciwnika”.
Kolor udaru = stan ('border-color' var).


8) Dostępność (A11y)

'alt' z nazwą i statusem:' Alex Player Avatar - Online '.
Dla statusów - duplikaty tekstu, nie tylko kolor.
"aria-live =" grzeczny ", gdy zmienia się status.
Kontrast ≥ AA dla statusu w tle.
Nie używać świateł migających.


9) Pobierz stany i błędy

Załadunek: szary okrąg/szkielet bez ramki.
Błąd: ikona fallback + „Avatar nie załadowany” wiersz.
Pusty: początkowy lub systemowy odtwórca.


10) Prywatność

Użytkownik musi kontrolować obecność (włączony/wyłączony).
Ustawienia: „Pokaż status online „/” Pokaż ostatnią aktywność ”.
Obecność jest ukryta dla kont gości.
W PvP - można pokazać tylko „dostępne/zajęte”, bez dokładnego czasu.


11) Wdrożenie API obecności

json
{
"userId": "u123",
"presence": "online",
"activity": "playing",
"lastSeen": "2025-11-03T18:52:00Z"
}
Serwer:
  • Subskrybuj kanał '/presence/{ اId} '.
  • Okresowy ping/pong przez gniazdo.
  • Automatyczna aktualizacja stanu za pośrednictwem TTL.
Klient:
js socket.on('presence:update', data => {
document.querySelector(`#u${data.userId}.status`).dataset.state = data.presence;
});

12) Specyfika iGaming

Gry na żywo: status „W pokoju nr 12”, „Czeka na dealera”, „Dystrybucja jest w toku”.
Turnieje: Odznaka uczestnicząca, timer końcowy.
Spółdzielnia PvP: znaleziony przeciwnik/nieaktywna aktywność.
Kanały społeczne: avatar z mini-odznaką turnieju lub poziomu VIP.
Zakłady są zajęte → online.


13) Metryka i wydajność

Opóźnienie obecności: ≤ 1 sekunda od aktualizacji zdarzenia do interfejsu użytkownika.
Wskaźnik skuteczności bicia serca: ≥ 99%.
Obciążenie procesora klienta: ≤ 5% przy 1000 aktualizacjach/min.
Dokładność TTL: użytkownicy nie „powiesić” online po zwolnieniu.
Testy wycieku pamięci: wyczyszczenie słuchaczy bez podpisu.


14) Antypattery

Avatar bez 'alt' lub bez tła - „dziura” w interfejsie użytkownika.
Tylko kolor dla stanu (brak tekstu/końcówki narzędzi).
Migające kropki/pulsujące pierścienie - irytujące.
Brak limitu aktualizacji → Przeciążenie WebSocket.
Wyświetlanie „ostatni widziany” do najbliższej sekundy (naruszenie prywatności).
Różne formaty/proporcje awatarów w tej samej sieci.


15) Żetony systemu projektowania (przykład)

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 kontrolna QA

INTERFEJS UŻYTKOWNIKA

  • Wymiary i promienie są spójne; avatar centered.
  • Kontrast ≥ AA; nie ma czystych statusów kolorów.
  • Folback początkowy zobacz i przeczytaj.
  • Obecny jest podpowiedź lub status tekstu.

Obecność

  • Status jest aktualizowany ≤ 1 sekundy po zdarzeniu.
  • Offline → Online jest poprawny podczas ponownego połączenia.
  • Brak kolców (deduplikacja zdarzeń).
  • Rozważa się bezczynność (bezczynność> 5 min).

Prywatność

  • Ustawienia obecności działają.
  • Ostatnio widziany w zaokrągleniu do minut/godziny.
  • Nie ma zbędnego ujawniania działalności (na przykład zakłady).

Wydajność

  • Bicie serca jest stabilne, WebSocket automatycznie ponownie połączyć z backoff.
  • Brak wycieków pamięci z 1000 aktualizacjami.
  • TTFF ≤ 100 ms po wyświetleniu.

17) Dokumentacja w systemie projektowym

Кобонента: „Avatar”, „Na”, „Na Kartę”, „Na Odznakę”, „Na”.
Wzory: „Avatar z awaryjnym”, „Punkt statusu”, „Obecność aktualizacji w czasie rzeczywistym”, „Tryb prywatny”.
Żetony: rozmiary, kolory, promienie, aktualizacje TTL, kontrast.
Nie rób/Nie: kolor bez tekstu (nie), kształty okrągłe i kwadratowe w jednej liście (nie), stabilne wymiary i ruchy (do).


Krótkie podsumowanie

Awatary i statusy to nie tylko elementy dekoracyjne, ale język komunikacji między użytkownikami a systemem. Spójne kolory, czytelne napisy, prawidłowa synchronizacja i szacunek dla prywatności tworzą poczucie „życia” w przestrzeni, szczególnie ważne w iGaming: na arenie, w turnieju, na czacie na żywo lub podczas zakładów z przyjaciółmi. Obecność sprawia, że interfejs jest dynamiczny i ludzki - ale tylko z równowagą treści informacji i ciszy.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.