3 분 소요

1. 라이브 데모

🎮 steam-service-fdahblckatkerfeawgd5s5.streamlit.app

Streamlit Community Cloud로 무료 호스팅. 게임 검색 → 3탭 분석 + 🤖 AI 코멘트 popover.


2. 전체 화면 구조

화면은 좌측 게임 정보 패널 + 우측 3탭 컨텐츠로 구성됩니다.

좌측 패널 (모든 탭 공통)

  • 게임 헤더 이미지, 이름, 🤖 AI 코멘트 popover 트리거
  • 메타 정보 표 (개발사·배급사·장르·출시일·메타크리틱·게임 설명)
  • 카테고리 배지 전체

우측 컨텐츠 — 3 탭

  1. Overview — 종합 요약
  2. Reviews & Playtime — 리뷰·플레이타임 상세 분석
  3. Price & Players — 가격·동접 분석

3. 탭 1 — Overview

게임의 현재 상태를 한 화면에 압축한 요약 탭입니다.

구성 요소

  • 리뷰 요약 카드 — 총 리뷰 수, 긍정률 게이지, 통합 평가 (Mostly Positive 등)
  • 카테고리 레이더차트 — 긍정 7축 / 부정 7축 (포스트 3의 24 카테고리에서 게임에 의미 있는 것 추림)
  • 패치노트/뉴스 목록 — 최근 패치 클릭 시 anchor 모드 진입
  • 현재 가격 + 평균 동접 카드
  • 동접 일별 라인차트 + 할인 내역 테이블

핵심 기능 — anchor (기준일 연동)

패치노트 한 줄 클릭하면 전체 탭이 그 패치 시점 ±N일 데이터로 자동 필터링됩니다. “이 패치 이후 평가가 어떻게 바뀌었지?”를 한 클릭으로 볼 수 있는 구조.

# session_state로 anchor 관리, 모든 SQL where 절에 주입
def anchor_range(default_days):
    if "anchor_date" in st.session_state:
        ad = st.session_state["anchor_date"]
        return (ad - timedelta(days=default_days), ad + timedelta(days=default_days))
    return None  # anchor 미설정 시 기본 시점 (오늘 기준 N일)

reviews/news/player_counts/category 분석 모두 같은 함수 호출로 통일되어 anchor 모드와 일반 모드가 깔끔하게 분기됩니다.


4. 탭 2 — Reviews & Playtime

리뷰와 플레이타임 패턴 상세 분석.

KPI 카드 4개

  • 총 리뷰 수
  • 통합 평가
  • 평균 플레이타임
  • 긍정 키워드 수

차트들

  • 일별 플레이타임 추이 — 추천/비추천 분리 라인차트 (헤비유저의 만족도 변화 시그널)
  • 일별 리뷰수 스택바 — 긍정/부정 누적, 긍정률 레이블 동시 표시
  • 언어 비중 파이차트 — 추천/비추천 분리 (어느 언어 사용자가 만족도 낮은지)
  • 키워드 빈도 표 TOP 20 — 추천/비추천 분리

리뷰 목록

  • 추천 여부 / 언어 / 번역·원문 / 정렬 필터
  • 페이지네이션
  • 한 줄 요약 + 펼치기

5. 탭 3 — Price & Players

가격 정책과 동시접속자 패턴 분석.

카드 4개

  • 현재 가격 (할인율 동시 표시)
  • 최고 할인율 (역대)
  • 최고 / 최저 동시접속자 (관측 기간 내)

시간대별 동접 히트맵 — 핵심 시각화

x축 = 날짜, y축 = 3시간 bin (0~3시 / 3~6시 / … / 21~24시), 색 = 그 시간 평균 동접.

        00-03  03-06  06-09  09-12  12-15  15-18  18-21  21-24
2026-05  ▢▢▢   ▢▢    ▢     ▤     ▦▦    ▧▧▧   ▨▨▨   ▦▦▦
2026-04  ▢▢    ▢▢    ▢     ▤▤    ▦▦▦   ▧▧▧   ▨▨▨   ▦▦▦
...

할인일은 🏷 마커로 표시 — 세일 효과를 시간대 분포 차원에서 함께 볼 수 있습니다.


6. Steam 다크 테마

UI 스타일은 Steam 클라이언트와 비슷한 다크 톤으로 통일했습니다.

배경: #1B2838 (Steam dark)
액센트: #66c0f4 (Steam blue)
긍정 카드: #5ba32b  부드러운 그린
부정 카드: #c0563f  따뜻한 레드
텍스트: #e0e6ed (밝은 회색, 가독성)

Streamlit의 기본 테마 변수 + st.markdown(unsafe_allow_html=True)로 커스텀 카드를 합친 구조입니다.


7. 성능 — 이중 캐싱

대시보드의 모든 BQ 쿼리는 @st.cache_data(ttl=3600) 데코레이터로 1시간 캐시. 동접처럼 자주 바뀌는 건 ttl=600으로 짧게.

데이터 TTL 이유
게임 목록, 리뷰 요약, 가격 이력 3600s 일별 갱신
동접, 히트맵 600s 3시간 단위 수집이라 보수적
AI 코멘트 3600s 게임별 변화 시간 단위

추가로 AI 코멘트는 st.session_state에 게임별 키로 저장 — popover 닫았다 열어도 결과 유지됩니다.


8. 배포 — Streamlit Community Cloud

GitHub repo 연결만으로 무료 호스팅 가능합니다.

셋업

  • requirements.txt — 대시보드 deps만 (streamlit/plotly/db-dtypes/google-cloud-bigquery 등)
  • .streamlit/secrets.toml — GCP 서비스 계정 JSON을 TOML 형식으로 변환해 등록
  • 배포 시 Application Default Credentials를 임시 파일로 풀어 환경변수 세팅

비용

대시보드 자체는 무료. AI 코멘트의 Gemini 호출만 소액 발생 (포스트 5에서 자세히).


9. 한계와 다음 단계

현재 Streamlit 대시보드는 프로토타입 성격입니다. 풀스택 서비스로 확장한다면:

  • 백엔드 분리 — FastAPI로 BQ 데이터 서빙 API 구축
  • 프론트엔드 — React + Vercel로 SEO 친화적 페이지
  • 인증 — 게임 개발자 vs 일반 사용자 구분, 개발자에겐 본인 게임 상세 KPI 대시보드

지금은 프로토타입으로 가치 검증과 분석 방법론 다듬는 데 집중했습니다.


다음 마지막 포스트에서는 이 프로젝트의 가장 큰 차별화 포인트인 AI 코멘트 (통계 검정 + Gemini 자연어 변환)를 다룹니다.