98 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Gaseous Server
 | |
| 
 | |
| This is the server for the Gaseous system. All your games and metadata are stored within.
 | |
| 
 | |
| ## Requirements
 | |
| * MySQL Server 8+
 | |
| * Internet Game Database API Key. See: https://api-docs.igdb.com/#account-creation
 | |
| 
 | |
| ## Third Party Projects
 | |
| The following projects are used by Gaseous
 | |
| * https://dotnet.microsoft.com/en-us/apps/aspnet
 | |
| * https://github.com/JamesNK/Newtonsoft.Json
 | |
| * https://www.nuget.org/packages/MySql.Data/8.0.32.1
 | |
| * https://github.com/kamranayub/igdb-dotnet
 | |
| 
 | |
| ## Configuration File
 | |
| When Gaseous-Server is started for the first time, it creates a configuration file at ~/.gaseous-server/config.json if it doesn't exist. Some values can be filled in using environment variables (such as in the case of using docker).
 | |
| 
 | |
| ### DatabaseConfiguration
 | |
| | Attribute | Environment Variable |
 | |
| | --------- | -------------------- |
 | |
| | HostName  | dbhost               |
 | |
| | UserName  | dbuser               |
 | |
| | Password  | dbpass               |
 | |
| 
 | |
| ### IGDBConfiguration
 | |
| | Attribute | Environment Variable |
 | |
| | --------- | -------------------- |
 | |
| | ClientId  | igdbclientid         |
 | |
| | Secret.   | igdbclientsecret     |
 | |
| 
 | |
| ### config.json
 | |
| ```json
 | |
| {
 | |
|   "DatabaseConfiguration": {
 | |
|     "HostName": "localhost",
 | |
|     "UserName": "gaseous",
 | |
|     "Password": "gaseous",
 | |
|     "DatabaseName": "gaseous",
 | |
|     "Port": 3306
 | |
|   },
 | |
|   "IGDBConfiguration": {
 | |
|     "ClientId": "<clientid>",
 | |
|     "Secret": "<secret>"
 | |
|   },
 | |
|   "LoggingConfiguration": {
 | |
|     "DebugLogging": false,
 | |
|     "LogFormat": "text"
 | |
|   }
 | |
| }
 | |
| 
 | |
| ```
 | |
| 
 | |
| ## Deploy with Docker
 | |
| Dockerfile and docker-compose.yml files have been provided to make deployment of the server as easy as possible.
 | |
| 1. Clone the repo with "git clone https://github.com/gaseous-project/gaseous-server.git"
 | |
| 2. Change into the gaseous-server directory
 | |
| 3. Switch to the develop branch with "git checkout develop"
 | |
| 4. Open the docker-compose.yml file and edit the igdbclientid and igdbclientsecret to the values retrieved from your IGDB account
 | |
| 5. Run the command "docker-compose up -d"
 | |
| 6. Connect to the host on port 5198
 | |
| 
 | |
| ## Adding Content
 | |
| While games can be added to the server without them, it is recommended adding some signature DAT files beforehand to allow for better matching of ROM to game.
 | |
| 
 | |
| These signature DAT files contain a list of titles with hashes for many of the ROM images that have been found by the community.
 | |
| 
 | |
| Currently only TOSEC is supported, though more will be added.
 | |
| 
 | |
| ### Adding signature DAT files
 | |
| 1. Download the DAT files from the source website. For example; from https://www.tosecdev.org/downloads/category/56-2023-01-23
 | |
| 2. Extract the archive
 | |
| 3. Copy the DAT files to ~/.gaseous-server/Data/Signatures/TOSEC/
 | |
| 
 | |
| ### Adding game image files
 | |
| 1. Ensure your game image file is unzipped, and clearly named. Attempting a search for the game name on https://www.igdb.com can help with file naming. If a hash search is unsuccessful, Gaseous will fall back to attempting to search by the file name.
 | |
| 2. Copy the file to ~/.gaseous-server/Data/Import
 | |
| 
 | |
| Image to game matching follows the following order of operations, stopping the process at the first match:
 | |
| ### Get the file signature
 | |
| 1. Attempt a hash search
 | |
| 2. Attempt to search the signature database for a rom matching the file name - sometimes the hash can not be matched as a highscore table for example was saved to the image
 | |
| 3. Attempt to parse the file name - clues such as the extension being used to define which platform the file belongs to are used to create a search criteria
 | |
| 
 | |
| ### Create a list of search candidates
 | |
| Before beginning, remove any version numbers.
 | |
| 1. Add the full name of the image
 | |
| 2. Add the name of the image with any " - " replaced by ": "
 | |
| 3. Add the name of the image with text after a " - " removed
 | |
| 4. Add the name of the image with text after a ": " removed
 | |
| 
 | |
| ### Search IGDB for a game match
 | |
| Loop through each of the search candidates searching using:
 | |
| 1. "where" - exact match as the search candidate
 | |
| 2. "wherefuzzy" - partial match using wildcards
 | |
| 3. "search" - uses a more flexible search method
 | |
| 
 | |
| Note: that if more than one result is found, the image will be set as "Unknown" as there is no way for Gaseous to know which title is the correct one. | 
