5. Copy the the example files `steam_settings.EXAMPLE\configs.xxx.EXAMPLE.ini` and paste them inside your own `steam_settings` folder, then the postfix `.EXAMPLE`.
Make sure to only keep the options you need, don't sepecify everything
You can override the name of the base folder `GSE Saves` to whatever you want per game, to do this modify `configs.user.ini` inside your `steam_settings` folder and change the value of `saves_folder_name`.
If you want to set custom ips (or domains) which the emulator will send broadcast packets to, make a list of them, one on each line in: `GSE Saves\settings\custom_broadcasts.txt`
If the custom IPs/domains are specific for one game only you can put the `custom_broadcasts.txt` in the `steam_settings` folder.
An example is provided in `steam_settings.EXAMPLE\custom_broadcasts.EXAMPLE.txt`
---
## Achievements, Items or Inventory:
Create a file named `items.json` and/or `achievements.json` inside the `steam_settings` folder which will contain every item/achievement you want to have in your game.
An example can be found in `steam_settings.EXAMPLE` that works with Killing Floor 2.
The `items.json` syntax is simple, you **MUST** validate your `.json` file before trying to run your game or you won't have any item in your inventory.
Just look for "online json validator" on your web brower to valide your file.
You can use https://steamdb.info/ to list items and attributes they have and put them into your .json, you can also use the command line tool `generate_emu_config`.
Keep in mind that some item are not valid to have in your inventory.
---
For example, in PayDay2 all items below `item_id``50000` will make your game crash.
*`items.json` should contain all the item definitions for the game,
*`default_items.json` is the quantity of each item that you want a user to have initially in their inventory. By default the user will have no items.
It is recommended to use the command line tool `generate_emu_config` for that matter
---
## Leaderboards:
By default the emulator assumes all leaderboards queried by the game `FindLeaderboard()` exist and creates them with the most common options (sort method descending, display type numeric).
In some games this default behavior doesn't work and so you may need to tweak which leaderboards the game sees.
To do that, you can put a `leaderboards.txt` file in the `steam_settings` folder.
The format is:
`LEADERBOARD_NAME=sort method=display type`
For the sort methods:
* 0 = none
* 1 = ascending
* 2 = descending
For the display type
* 0 = none
* 1 = numeric
* 2 = time seconds
* 3 = milliseconds
An example can be found in `steam_settings.EXAMPLE`
---
## Stats:
By default this emulators assumes all stats do not exist unless they have been written once by the game.
This works for the majority of games but some games might read a stat for the first time
and expect a default value to be read when doing so.
To set the type for each stat along with the default value, put a `stats.txt` file in the `steam_settings` folder.
The format is:
`STAT_NAME=type=default value`
The type can be
* int
* float
* avgrate
The default value is simply a number that represents the default value for the stat.
You can use the command line tool `generate_emu_config` to generate a stats config
Create a `steam_settings\http\` folder which should contain the domain name and path to the files that will be returned by steamHTTP like so \(For example this url: `https://en.wikipedia.org/wiki/Main_Page`\):
Do not run more than one steam game with the **same appid** at the same time on the same computer with this emu or there might be network issues (dedicated servers should be fine though).
You can place a `.wav` file called `overlay_achievement_notification.wav` inside either the local `steam_settings/sounds` folder of the game, or inside `GSE Settings/settings/sounds` folder, which will be played whenever an achievement is unlocked.
You can place a `.wav` file called `overlay_friend_notification.wav` inside either the local `steam_settings/sounds` folder of the game, or inside `GSE Settings/settings/sounds` folder, which will be played whenever a friend sends an invitation.
Or if you want to configure a game yourself, find the `vdf` file for `xbox360` or `xbox one` controller of the game and use the tool `parse_controller_vdf`, you should be able to figure things out.
For example to get the vdf file for the game Crystar: https://steamdb.info/app/981750/config/
If you look at: `steamcontrollerconfigdetails`, you will see something like: `1779660455/controller_type: controller_xbox360`
`1779660455` refers to a file id that you can dl using your favorite steam workshop downloader site.
The url would be: https://steamcommunity.com/sharedfiles/filedetails/?id=1779660455
The glyphs directory contains some glyphs for the controller buttons for the games that use the `GetGlyphForActionOrigin()` function.
If you want to use the real steam glyphs instead of the free ones in the example directory copy them from: `<Steam Directory>\tenfoot\resource\images\library\controller\api` folder.
### Valid digital button names:
* DUP
* DDOWN
* DLEFT
* DRIGHT
* START
* BACK
* LSTICK
* RSTICK
* LBUMPER
* RBUMPER
* A
* B
* X
* Y
* DLTRIGGER (emulated buttons, the joy ones are used by games in menus for example. When the game wants to know if the trigger is pressed without the intensity)
* DRTRIGGER
* DLJOYUP
* DLJOYDOWN
* DLJOYLEFT
* DLJOYRIGHT
* DRJOYUP
* DRJOYDOWN
* DRJOYLEFT
* DRJOYRIGHT
### Valid analog names:
* LTRIGGER
* RTRIGGER
* LJOY
* RJOY
* DPAD
---
## Auth token (app ticket):
By default the emu will send the old token format for various APIs, like:
*`Steam_GameServer::GetAuthSessionTicket()`
*`Steam_User::GetAuthSessionTicket()`
*`Steam_User::GetAuthTicketForWebApi()`
You can make the emu generate new ticket data, and additionally the GC token.
## Enable non-LAN behavior in `steam_matchmaking_servers`:
By default, match making servers (which handles browsing for matches) will always return LAN servers list whenever the game inquires about the available servers with a specific type (Internet, Friends, LAN, etc...).
You can make the emu return the proper/actual servers list for the given type, by modifying `configs.main.ini` and setting `matchmaking_server_list_actual_type-1`.
Also, match making servers will return the info of the server from the incoming local packets, you can make the emu retrieve the actual server info by performing a source server query, this is enabled by setting `matchmaking_server_details_via_source_query-1` inside `configs.main.ini`.