A Java-based recommendation engine that helps users discover new games based on their Steam library and preferences. The engine uses fuzzy search algorithms and tag-based analysis to provide personalized game recommendations.
Game.Search.Demo.mp4
- Steam Integration: Automatically imports user's Steam library and playtime data
- Smart Recommendations: Uses tag-based analysis and playtime data to suggest relevant games
- Fuzzy Search: Intelligent game name matching using fuzzy search algorithms
- GUI Interface: Clean JavaFX-based user interface with:
- Game browser with Steam store integration
- Search functionality with autocomplete
- Library management
- Like/Dislike system for better recommendations
- Adaptive Algorithm: Adjusts recommendations based on user feedback
- Playtime Analysis: Considers time spent in games to weight preferences
- Core: Java
- GUI Framework: JavaFX
- External APIs:
- Steam Web API
- Apache Commons CSV
- FuzzyWuzzy for string matching
- Database: CSV-based game dataset
- Logging: Apache Log4j
The project is organized into several key components:
Database.java: Manages game data and provides search functionalityGame.java: Game object model with metadata and comparison methodsGameSearch.java: Core recommendation engine logicUserData.java: User preference and library management
SearchApp.java: Main application controllerGameWindow.java: Game browser and recommendation interfaceSearchWindow.java: Search interface with autocompleteLoginWindow.java: Steam login handler
-
Prerequisites:
- Java JDK 11 or higher
- Maven for dependency management
- Steam API key for library integration
-
Configuration:
# Clone the repository git clone https://github.com/yourusername/gamesearch-engine.git # Install dependencies mvn install # Set up Steam API key Add your Steam API key to GameSearch.java
-
Run the application:
mvn javafx:run
-
User Authentication:
- Users can either log in with their Steam ID or use the search interface
- Steam login imports the user's game library and playtime data
-
Recommendation Process:
- Analyzes user's game library and playtime
- Creates a weighted tag profile based on played games
- Suggests games with matching tags and high review scores
- Adjusts recommendations based on likes/dislikes
-
Search Algorithm:
- Uses fuzzy matching for flexible game name search
- Considers popularity and review scores in results
- Provides autocomplete suggestions from the game database
- Steam Web API for game data access
- Apache Commons and FuzzyWuzzy for core functionality
- JavaFX community for UI components