Game Search
approvedby calvin
Help insert game metadata into game notes or vaults, optionally sync with Steam Library and Wishlist
Obsidian Game Search Plugin
Forked From
https://github.com/anpigon/obsidian-book-search-plugin/
Description
Use to query game using a game title (uses RAWG Game API to get the game information.)
How to Install
Click the link to install the Game Search plugin: Install Link Or, search 'Game Search' in the Obsidian Community plugin directory and install it from there.
Basic Usage
- Acquire an API key from RAWG
- Enter your RAWG API key into the Game Search plugin settings
- Select a location for your game notes to be created
- Enter a file name format
- Select a file to use as a note template
- Use the command
Create New Game Noteto search for a game - Select a game from the search results
- Your note has been created :]
Steam Sync
Optionally, you can auto-sync your Steam Library and Wishlist.
- Acquire an API key from Steam
- Make note of your user SteamId (navigate to your profile on the web and check the URL)
- Enter your Steam API key and Id into the Game Search plugin settings
- Ensure your Steam Privacy Settings have your wishlist set to
Publicif you wish to sync wishlist items - (Optional) provide metadata to be injected into
wishlisted and/or owned games
- For example, I add
status: backlogto wishlist games andowned_platform: steamto owned games
- For example, I add
- Use command
Sync Steamto begin a sync.- This is not speedy, especially with larger libraries. There is a progress bar to provide some feedback but just...heads up
- NOTE: Synced Steam games will automatically have a
steamIdmetadata property added. Don't remove this.
Templating
It is recommended to pair this plugin with Templater so that you can auto-generate content for your game notes.
Example Template
The following is an example template.
Note that including data from lists or
complex objects may require templater to extract what you want
(e.g genres, platforms, stores, publishers, developers in example template)
A complete list of template variables provided by the plugin can be found under Template Variable Definitions.
---
tag: Game 🎮
id: {{id}}
genres: <%= {{genres}}.map(g => `${g.name}`) %>
platforms: <%= {{platforms}}.map(p => `${p.platform.name}`) %>
release_date: {{released}}
background_image: {{background_image}}
metacritic_score: {{metacritic}}
stores: <%= {{stores}}.map(n => `${n.store.name}`) %>
publishers: <%= {{publishers}}.map(p => `${p.name}`) %>
developers: <%= {{developers}}.map(d => `${d.name}`) %>
---

Regenerating File Metadata
Acknowledging that you may adjust your template after adding many many games, the plugin provides a button within the settings panel to regenerate all of your game note metadata.
Previous versions of this plugin this button would completely regenerate the files, and you would lose any non-templated content in them.
As of v0.2.0 this feature only replaces the metadata of your game files with regenerated metadata from the template. The motivation behind this is that it is likely that the body of a game note is used for keepsake/TODO lists/personal notes, while the main portion of the templating will happen in the metadata. I'm open to revisiting this if it proves to be a bad idea.
Note: steamId, steamPlaytimeForever, steamPlaytime2Weeks, and any user-provided
metadata to be injected into Steam games (added via settings) will be preserved.
Other Settings
New file location
Set the folder location where the new file is created. Otherwise, a new file is created in the Obsidian root folder.
New file name
You can set the file name format. The default format is {{name}} - {{published}}.
You can use {{DATE}} or {{DATE:YYYYMMDD}} to set a unique file name.
If you are using the Steam integration portion of the plugin you can also flip a toggle in settings to try and immediately match any created game notes with a game in your Steam library to so that steam metadata gets immediately injected. THIS WILL ONLY MATCH GAMES IN YOUR LIBRARY ALREADY
Template variables definitions
The following table lists and describes each variable that can be used in your template.
To use a simple string variable in your template, simply write the variable name
surrounded by curly braces (e.g, {{name}}).
| Name | Description |
|---|---|
| id | (number) RAWG database ID |
| slug | (string) RAWG game slug |
| name | (string) Name of the game |
| name_original | (string) Original name of the game |
| description | (string) Description of the game (HTML) |
| description_raw | (string) Description of the game (Text) |
| released | (string) Release date of the game |
| tba | (boolean) Unknown release date flag |
| background_image | (string) Background image URL |
| rating | (Rating) |
| rating_top | (number) Highest rating |
| ratings | (array) of Ratings |
| ratings_count | (number) Number of ratings |
| reviews_text_count | (string) Number of text reviews |
| metacritic | (number) Metacritic score |
| metacritic_platforms | (array) of MetacriticPlatform) |
| playtime | (number) Estimated playtime in hours |
| updated | (string) Last updated date in RAWG database |
| esrb_rating | (ESRB) ESRB rating |
| platforms | (array) of Platforms |
| stores | (array) of Stores |
| score | (number) |
| tags | (array) of Tags |
| saturated_color | (string) Color in hexadecimal format (without #) |
| dominant_color | (string) Color in hexadecimal format (without #) |
| genres | (array) of Genres |
| short_screenshots | (array) of ScreenShots |
| website | (string) URL of game website, if one exists |
| publishers | (array) of Publishers |
| developers | (array) of Developers |
Developer Object
{ id: number, name: string, slug: string, games_count: number, image_background: string }
Publisher Object
{ id: number, name: string, slug: string, games_count: number, image_background: string }
Metacritic Platform Object
{ metscore: number, url: string, platform: [Platform](#platform_object) }
Rating Object
{ id: number, title: string, count: number, percent: number }
ESRB Object
{ id: number, name: string, slug: string, name_en: string, name_ru: string }
Platform Object
{ platform: { id: number, name: string, slug: string } }
Store Object
{ id: number, name: string, slug: string }
Tag Object
{ id: number, name: string, slug: string, language: string, games_count: number, image_background: string }
Genre Object
{ id: number, name: string, slug: string }
ScreenShot Object
{ id: number, name: string, slug: string }
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.