Ludex is a fully offline, hybrid Content-Based + Collaborative Filtering recommendation engine designed to provide high-quality, diverse, and personalized Steam game suggestions. Built as an academic project, its goal is to outperform Steam’s default discoverability algorithm by combining metadata, player history, and diversity-aware ranking.
Ludex works by blending three components:
-
Content-Based Filtering (CBF)
Uses metadata such as descriptions, tags, genres, and developers. -
Collaborative Filtering (CF)
Finds similar users and recommends games based on behavior patterns. -
MMR Re-ranking (Maximal Marginal Relevance)
Ensures recommended games are both relevant and diverse.
The project includes a crawling pipeline using the Steam Store API, with a fallback HTML parser based on Requests + BeautifulSoup (no Selenium or undetected-chromedriver required).
Ludex/
│── CBF/
│── CF/
│── crawlers/
│── main.py
│── requirements.txt
│── LICENSE
│── .env
|── data/
|── raw/
|── processed/
The crawler collects:
- Titles
- Descriptions
- Tags, genres
- Developers, publishers
- Screenshots & release info
Used on descriptions, tags, genres, and titles.
Used for developers & publishers.
Combined into one multi-block feature vector for cosine similarity ranking.
Analyzes:
- User playtime
- Owned games
- Behavioral similarity
This enables discovery of games beyond metadata similarity.
Uses:
- Weighted CBF + CF blending
- Optional SVD latent factors
- Score normalization
- Playtime scaling
MMR ensures diversity by balancing:
- Relevance
- Variety
pip install -r requirements.txt
python main.py
data/raw/game_details.csv— scraped metadatadata/raw/user_game_playtime_top20.csv— interactions for CFdata/processed/recommender_matrix.npz— CBF embeddingsdata/processed/cf_als_model.pkl— CF modeldata/processed/cf_als_index.pkl— CF mapping (item/user IDs)
- Python
- scikit-learn
- pandas
- NumPy
- SciPy
- BeautifulSoup
- undetected-chromedriver
- Selenium
Follow these steps to run Ludex locally:
git clone https://github.com/yourusername/ludex.git
cd ludexEnsure that python version = 3.12.xx
python -m venv myenv
source myenv/bin/activate # Linux/Mac
myenv\Scripts\activate # Windowspip install -r requirements.txtCopy .env.example to .env: Edit .env and insert your Steam API key:
cp .env.example .env
STEAM_API_KEY=YOUR_KEY_HERESTEAM_API_KEY=YOUR_KEY_HERERun the crawler scripts to populate data/raw/ with game metadata:
python crawlers/spider.py
python crawlers/spider_refiner.py
python crawlers/spider_details.py
python crawlers/user_topgames.pypython main.py <steamid64>MIT License
© 2025 Ludex Project Authors