본문 바로가기
Games

스팀(STEAM) 게임 취향 추천 사이트 rgsteam.kr

by 왕고미 2025. 12. 17.

RGSteam 추천 페이지

 


안녕하세요!

 

사이드 프로젝트 관련 포스팅으로는 오랜만에 인사드립니다.

 

스팀에서 여러모로 내 취향 게임을 찾기 어렵고, 위시리스트에만 잔뜩 넣어놓고 결국은 플레이 하지 못했던 경험들때문에 이 웹사이트를 제작해보게 되었습니다.

 

 

 

나의 스팀 라이브러리를 싱크하고 게임들에 '좋아요 싫어요'를 누를 수록 취향 벡터값이 변하게 되어 추천되는 게임이 변경되는 알고리즘을 가지고 제작하였습니다.

 

       해봤어요: 이미 플레이한 게임 (추천에서 제외)

       해보고싶어요: 관심 게임위시리스트 자동 추가

       관심없어요: 해당 장르/태그 가중치 감소

       재미없었어요: 강한 부정 피드백, 해당 태그 페널티

 


게임 추천 알고리즘 상세

1.데이터 수집

1.1) 사용자 데이터

Steam Web API 통해 다음 데이터를 수집합니다:

1.     보유 게임 목록: IPlayerService/GetOwnedGames

2.     플레이타임: playtime_forever ( 단위)

3.     최근 2 플레이타임: playtime_2weeks

4.     마지막 플레이 시간: rtime_last_played

1.2) 게임 메타데이터

       장르: 액션, RPG, 전략, 시뮬레이션

       카테고리: 싱글플레이어, 멀티플레이어, 협동, PvP

       태그: SteamSpy 기반 사용자 태그 (투표 포함)

       메타크리틱 점수: 게임 품질 지표

       HLTB 플레이타임: HowLongToBeat 기반 예상 플레이 시간

2. 취향 벡터 계산

2.1) 장르 벡터 (Genre Vector)

Engagement Score 계산:

baseScore = √(playtimeHours) + (playtimeHours × 0.01)

보정 요소:

       최근 2 플레이 보너스: ×1.3

       30 플레이 보너스: ×1.2

       경쟁 게임 (PUBG, Dota2 ) 감소: ×0.8

       일반 멀티플레이어 감소: ×0.9

2.2) 태그 벡터 (Tag Vector)

tagWeight = (votes / totalVotes) × engagement

피드백 반영:

       해봤어요: +100%

       해보고싶어요: +60%

       관심없어요: -40%

       재미없었어요: -70%

3. 추천 점수 계산

3.1) 기본 점수 공식

태그 데이터가 있는 경우:

finalScore = (genreSim × 0.50) + (tagSim × 0.20) + (quality × 0.20) + (fatigue × 0.10)

 

태그 데이터가 없는 경우:

finalScore = (genreSim × 0.70) + (quality × 0.30) + 0.05

3.2) 코사인 유사도 (Cosine Similarity)

similarity = (A · B) / (||A|| × ||B||)

3.3) 품질 점수 (Quality Score)

qualityScore = min(0.5, log₁₀(recommendations + 1) / 10) + (metacritic / 100) × 0.5


여러분에게는 어떤 게임들이 추천될까요?

지금 바로 한번 방문해서 확인해보세요 ㅎㅎ

 

https://rgsteam.kr