mirror of
https://github.com/Detanup01/gbe_fork.git
synced 2024-12-27 02:44:16 +08:00
35c0c408b9
* changed the environment variable `SteamAppPath` to `GseAppPath` * allow loading `config.ini` from global settings path + merge it with the local one, and allow the local one to override the global one * fixed the path returned by `get_user_appdata_path()` to include the path separator * updated readmes
616 lines
26 KiB
Markdown
616 lines
26 KiB
Markdown
|
|
====Goldberg Steam Emulator====
|
|
---
|
|
|
|
An emulator that supports LAN multiplayer without steam.
|
|
https://gitlab.com/Mr_Goldberg/goldberg_emulator
|
|
|
|
---
|
|
|
|
## How to use:
|
|
1. Replace the `steam_api(64).dll` (Windows) or `libsteam_api.so` (Linux) from the game with the emu.
|
|
2. Use the command line tool `generate_emu_config` to generate the `steam_settings` folder
|
|
3. Use the command line tool `generate_interfaces` to generate the file `steam_interfaces.txt`,
|
|
then move it inside the folder `steam_settings`
|
|
4. Move the entire folder `steam_settings` beside the emu .dll/.so.
|
|
5. Copy the the example file `steam_settings.EXAMPLE\configs.EXAMPLE.ini` and paste it inside your own `steam_settings` folder, then rename it to `configs.ini`
|
|
|
|
|
|
Mr.Goldberg's note:
|
|
> If the game has DRM (other than steamworks) you need to remove/crack it first.
|
|
|
|
---
|
|
|
|
## Various configurations:
|
|
Due to the various changes and additions, it became tedious to document everything,
|
|
so it is recommended to check each example file in the `steam_settings` folder, and the various options inside `configs.ini`.
|
|
|
|
---
|
|
|
|
## Saves location:
|
|
* On Windows:
|
|
`%appdata%\Goldberg SteamEmu Saves\`
|
|
For example, if your user Windows user name is `Lion`, the save location would be:
|
|
`C:\Users\Lion\AppData\Roaming\Goldberg SteamEmu Saves\`
|
|
* On Linux:
|
|
* if `XDG_DATA_HOME` is defined:
|
|
`$XDG_DATA_HOME/Goldberg SteamEmu Saves/`
|
|
* Otherwise, if `HOME` is defined:
|
|
`$HOME/.local/share/Goldberg SteamEmu Saves/`
|
|
* Otherwise:
|
|
`SAVE/Goldberg SteamEmu Saves/` (relative to the current directory, which might not be the same as app/game directory)
|
|
|
|
You can override the name of the base folder `Goldberg SteamEmu Saves` to whatever you want per game, to do this modify `configs.ini` inside your `steam_settings` folder and change the value of `saves_folder_name`.
|
|
Check the example file in `steam_settings.EXAMPLE\configs.EXAMPLE.ini`.
|
|
|
|
---
|
|
|
|
In the global settings folder, in that save location, you will find these files (if you have used the emulator at least once):
|
|
* `account_name.txt`: edit this file to change your name
|
|
* `listen_port.txt`: edit this file if you want to change the UDP/TCP port the emulator listens on, you should probably not change this because everyone needs to use the same port or you won't find yourselves on the network
|
|
* `user_steam_id.txt` this is where your steam id is saved, you can change it, if your saves for a game are locked to a specific steam id see below for a way to change it on a per game basis, but it has to be valid
|
|
* `language.txt`: edit this to change the language the emulator will report to the game, default is `english`, it must be a valid steam language name or the game might have weird behaviour (list provided at the end of this readme)
|
|
* You can also create the file `configs.ini` and specify the most common options you usually set, you can use the provided example file `steam_settings.EXAMPLE\configs.EXAMPLE.ini` as a base. Note that you do not have to specify everything
|
|
|
|
Note that these are global so you won't have to change them for each game. For game unique stuff (stats and remote storage) a folder is created with the appid of the game.
|
|
If you want to change your steam_id on a per game basis, simply create a settings folder in the game unique directory (Full path: `C:\Users\<Your windows user name>\AppData\Roaming\Goldberg SteamEmu Saves\<appid>\settings`)
|
|
In that settings folder create a `user_steam_id.txt` file that contains the valid steam id that you want to use for that game only.
|
|
|
|
You can also make the emu ignore certain global settings by using a `force_account_name.txt`, `force_language.txt`, `force_listen_port.txt` or `force_steamid.txt` that you put in your `steam_settings\` folder.
|
|
See the `steam_settings.EXAMPLE` folder for an example.
|
|
|
|
If for some reason you want it to save in the game directory, you can create a file named `local_save.txt` right beside steam_api(64).dll (libsteam_api.so on linux) or inside your `steam_settings` folder.
|
|
The only thing that file should contain is the name of the save directory. This can be useful if you want to use different global settings like a different account name or steam id for a particular game.
|
|
Note that this save directory will be beside where the emu dll (or .so) is, which may not be the same as the game path.
|
|
|
|
---
|
|
|
|
## DLC:
|
|
By default the emulator will try to unlock all DLCs (by returning `true` when the game calls the `BIsDlcInstalled()` function).
|
|
If the game uses the other function you will need to provide a list of DLCs to my emulator.
|
|
|
|
To do this first create a `steam_settings` folder right beside where you put my emulator.
|
|
In this folder, put a `DLC.txt` file. (path will be `<path where my emu lib is>\steam_settings\DLC.txt`)
|
|
|
|
If the DLC file is present, the emulator will only unlock the DLCs in that file. If the file is empty all DLCs will be locked.
|
|
|
|
The contents of this file are:
|
|
`appid=DLC name`
|
|
|
|
See the `steam_settings.EXAMPLE` folder for an example.
|
|
|
|
---
|
|
|
|
## Languages:
|
|
You can include a `steam_settings\supported_languages.txt` file with a list of languages that the game supports.
|
|
|
|
If the global emu language setting is not in this list of languages, the emu will default to the first language in the list.
|
|
|
|
See the `steam_settings.EXAMPLE` folder for an example.
|
|
|
|
---
|
|
|
|
## Depots:
|
|
This is pretty rare but some games might use depot ids to see if dlcs are installed.
|
|
You can provide a list of installed depots to the game with a `steam_settings\depots.txt` file.
|
|
|
|
See the `steam_settings.EXAMPLE` folder for an example.
|
|
|
|
---
|
|
|
|
## Subscribed Groups:
|
|
Some games like payday 2 check which groups you are subscribed in and unlock things based on that.
|
|
You can provide a list of subscribed groups to the game with a `steam_settings\subscribed_groups.txt` file.
|
|
|
|
See `steam_settings.EXAMPLE\subscribed_groups.EXAMPLE.txt` for an example for payday 2.
|
|
|
|
---
|
|
|
|
## Subscribed Groups (Clans):
|
|
Some games like counter-strike check which groups you are subscribed in and allow you to choose a group clan.
|
|
You can provide a list of subscribed group ids, names, and tags to the game with a `steam_settings\subscribed_groups_clans.txt` file.
|
|
|
|
Group ids must be valid and can be obtained by pasting '`/memberslistxml/?xml=1`' at the end of a Steam group page.
|
|
|
|
See `steam_settings.EXAMPLE\subscribed_groups_clans.EXAMPLE.txt` for an example.
|
|
|
|
---
|
|
|
|
## App paths:
|
|
Some rare games might need to be provided one or more paths to app ids.
|
|
For example the path to where a dlc is installed.
|
|
This sets the paths returned by the `Steam_Apps::GetAppInstallDir` function.
|
|
|
|
See `steam_settings.EXAMPLE\app_paths.EXAMPLE.txt` for an example.
|
|
|
|
This file should be put here: `steam_settings\app_paths.txt`
|
|
|
|
Note that paths are treated as relative paths **from where the steam_api dll is located**.
|
|
---
|
|
|
|
---
|
|
|
|
## Mods:
|
|
* Put your mod in the `steam_settings\mods\<MOD NUMBER>\` folder
|
|
* Modify `mods.json` and specify `primary_filename` and `preview_filename`, other options in this json file are optional.
|
|
* Put the mod image/preview inside `steam_settings\mod_images\<MOD NUMBER>`
|
|
|
|
Mod data folder must be a number corresponding to the file id of the mod.
|
|
|
|
See the `steam_settings.EXAMPLE` folder for an example.
|
|
|
|
---
|
|
|
|
## Steam appid:
|
|
Put your `steam_appid.txt` in the `steam_settings` folder because this is where the emulator checks first.
|
|
|
|
If there is no `steam_appid.txt` in the `steam_settings` folder it will try opening it from the run path of the game.
|
|
If one isn't there it will try to load it from beside steam api dll.
|
|
|
|
The steam appid can also be set using the `SteamAppId` or `SteamGameId` env variables (this is how real steam tells games what their appid is).
|
|
|
|
But it is highly recommended to always create this file inside `steam_settings` folder
|
|
---
|
|
|
|
---
|
|
|
|
## Offline mode:
|
|
Some games that connect to online servers might only work if the steam emu behaves like steam is in offline mode.
|
|
If you need this, modify `configs.ini` and set `offline=1`
|
|
|
|
---
|
|
|
|
## Disable networking:
|
|
If you want to disable all the networking functionality of the emu, modify `configs.ini` and set `disable_networking=1`.
|
|
**This will of course break all the networking functionality** so games that use networking related functionality like lobbies or those that launch a server in the background will not work.
|
|
|
|
---
|
|
|
|
## Custom Broadcast IPs:
|
|
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: `Goldberg SteamEmu 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
|
|
|
|
If you don't want the emu to create unknown leaderboards, modify `configs.ini` and set `disable_leaderboards_create_unknown=1`.
|
|
|
|
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
|
|
|
|
---
|
|
|
|
## Build id:
|
|
Add a `steam_settings\build_id.txt` with the build id if the game doesn't show the correct build id and you want the emu to display the correct one.
|
|
|
|
An example can be found in `steam_settings.EXAMPLE`
|
|
|
|
---
|
|
|
|
## SteamHTTP:
|
|
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`\):
|
|
|
|
* Create a folder `steam_settings\http\en.wikipedia.org\wiki\Main_Page`
|
|
* The `Main_Page` **file** would contain the data returned by the steamHTTP api when it tries to access: `https://en.wikipedia.org/wiki/Main_Page`
|
|
|
|
An example that was made for payday 2 can be found in `steam_settings.EXAMPLE`
|
|
|
|
To allow external downloads which will be stored in this `steam_settings\http` folder modify `configs.ini` and set `disable_lan_only=1`.
|
|
|
|
---
|
|
|
|
## Donwload Steam HTTP(S) requests:
|
|
|
|
You can make the emu attempt to download external http(s) requests madia via `Steam_HTTP::SendHTTPRequest()`, by modifying `configs.ini` and setting `download_steamhttp_requests=1`.
|
|
All the responses will be downloaded and saved locally inside: `steam_settings\http\`.
|
|
|
|
Make sure to change these options:
|
|
* set `disable_lan_only=1`
|
|
* set `disable_networking=0`
|
|
|
|
Note that this will **not** work if the app is using native/OS web APIs, also support for this feature is very basic and will fail in many cases.
|
|
|
|
You can use this feature, for eaxmple, to know which requests are made by the app.
|
|
It's up to you afterwards to specify the correct responses for these requests by changing the content of the files inside `steam_settings\http\`.
|
|
|
|
Check the example file in the `steam_settings` folder
|
|
|
|
---
|
|
|
|
## Force the API `Steam_HTTP::SendHTTPRequest()` to always succeed:
|
|
|
|
You can force the API `Steam_HTTP::SendHTTPRequest()` to always report success, by modifying `configs.ini` and setting `force_steamhttp_success=1`.
|
|
|
|
Check the example file in the `steam_settings` folder
|
|
|
|
---
|
|
|
|
## Avatar:
|
|
Copy a `png`, or a `jpg`, or a `jpeg` image file to your `Goldberg SteamEmu Settings\settings` folder and name it `account_avatar`.
|
|
You can also place this file inside the local `steam_settings` folder of the game.
|
|
|
|
Players avatars are shared over the local network
|
|
|
|
You can disable this feature by modifying `configs.ini` and setting `disable_account_avatar=1`
|
|
|
|
You can find an example in `steam_settings.EXAMPLE`
|
|
|
|
---
|
|
|
|
## Support for CPY steam_api(64).dll cracks (Windows only):
|
|
See the build in the experimental folder.
|
|
|
|
**Notes:**
|
|
You must all be on the same LAN for it to work.
|
|
|
|
**IMPORTANT:**
|
|
Do not run more than one steam game with the **same appid** at the same time on the same computer with my emu or there might be network issues (dedicated servers should be fine though).
|
|
|
|
---
|
|
|
|
## Overlay:
|
|
**Note: at the moment this feature is only enabled in the experimental builds**
|
|
**It's a highly experimental feature, use at your own risk**
|
|
---
|
|
|
|
This is made possible using the amazing third-party library `Ingame Overlay project`: https://github.com/Nemirtingas/ingame_overlay
|
|
|
|
The overlay can be enabled by modifying `configs.ini` and setting `enable_experimental_overlay=1`.
|
|
Use `SHIFT-TAB` to open the overlay.
|
|
|
|
This is for games that depend on the steam overlay to let people join multiplayer games.
|
|
|
|
This feature is **highly experimental** and might cause crashes or other problems.
|
|
Alternatively, you can use the dedicated tool `lobby_connect` to join a game lobby.
|
|
|
|
---
|
|
|
|
## Overlay notifications sounds:
|
|
**Note: at the moment this feature is only enabled in the experimental builds for Windows only**
|
|
---
|
|
|
|
You can place a `.wav` file called `overlay_achievement_notification.wav` inside either the local `steam_settings/sounds` folder of the game, or inside `Goldberg SteamEmu 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 `Goldberg SteamEmu Settings/settings/sounds` folder, which will be played whenever a friend sends an invitation.
|
|
|
|
You can find an example in `steam_settings.EXAMPLE`
|
|
|
|
---
|
|
|
|
## Controller:
|
|
**Note: at the moment this feature is only enabled in the Windows experimental builds and the linux builds**
|
|
---
|
|
|
|
SteamController/SteamInput support is limited to **XInput** controllers.
|
|
---
|
|
If your controller is not XInput, there are many tools (at least for windows) that you can use to make it emulate an XInput one.
|
|
|
|
Steam uses things called action sets for controller configuration. An action set is a group of action names.
|
|
Action names are bound to buttons, triggers or joysticks.
|
|
The emulator needs to know for each action set, which button is linked to which action name.
|
|
|
|
Create a `ACTION_SET_NAME.txt` file in the `steam_settings\controller\` folder for every action set the game uses.
|
|
|
|
To see an example for the game Crystar see: `steam_settings.EXAMPLE\controller.EXAMPLE`
|
|
|
|
In the action set txt files the format is:
|
|
* For digital actions (buttons, on or off):
|
|
`ACTION_NAME=BUTTON_NAME`
|
|
* For analog actions (joysticks, triggers):
|
|
`ACTION_NAME=ANALOG_NAME=input source mode`
|
|
|
|
Actions can be bound to more than one button by separating the buttons with, like this:
|
|
`ACTION_NAME=A,B`
|
|
|
|
You can use the command line tool `generate_emu_config` to generate a config file.
|
|
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.
|
|
Modify `configs.ini` and set `new_app_ticket=1` and `gc_token=1`
|
|
|
|
---
|
|
|
|
## Branch name and type:
|
|
|
|
By default the emu will report a `non-beta` branch with the name `public` when the game calls `Steam_Apps::GetCurrentBetaName()`
|
|
|
|
You can modify `configs.ini` and set `is_beta_branch=1` to tell the game you're using a `beta` branch.
|
|
Also, check the relevant file `force_branch_name.txt` in the `steam_settings` folder to change the branch name.
|
|
|
|
---
|
|
|
|
## Crash log/printer:
|
|
|
|
The emu can setup a very basic crash logger/printer.
|
|
This is intended to debug some annoying scenarios, and best used with the debug build of the emu.
|
|
|
|
To enable this feature create a file called `crash_printer_location.txt` inside your `steam_settings` folder,
|
|
and set the path to the crash log file on a single line.
|
|
|
|
Note that forward slashes `/` are encouraged for both Windows & Linux.
|
|
|
|
Check the example file `crash_printer_location.EXAMPLE.txt`
|
|
|
|
---
|
|
|
|
## Fake Windows dll/exe certificate and antivirus software:
|
|
|
|
The Windows build is signed with a fake self-signed certificate, this helps in bypassing some basic checks by apps,
|
|
but it also triggers some antivirus software.
|
|
|
|
First of all, **never** install these certificates to your certificate store, they are randomly generated.
|
|
Second, the project is not a malware, if your antivirus software complains, be sure it's a false-positive.
|
|
|
|
---
|
|
|
|
## List of valid steam languages:
|
|
Check this link for a complete list: https://partner.steamgames.com/doc/store/localization/languages
|
|
Look for the column `API language code`
|
|
|
|
* arabic
|
|
* bulgarian
|
|
* schinese
|
|
* tchinese
|
|
* czech
|
|
* danish
|
|
* dutch
|
|
* english
|
|
* finnish
|
|
* french
|
|
* german
|
|
* greek
|
|
* hungarian
|
|
* italian
|
|
* japanese
|
|
* koreana
|
|
* norwegian
|
|
* polish
|
|
* portuguese
|
|
* brazilian
|
|
* romanian
|
|
* russian
|
|
* spanish
|
|
* latam
|
|
* swedish
|
|
* thai
|
|
* turkish
|
|
* ukrainian
|
|
* vietnamese
|
|
|
|
---
|
|
|
|
## Overlay warnings:
|
|
**Note: at the moment this feature is only enabled in the experimental builds**
|
|
---
|
|
|
|
These configurations inside `configs.ini` allow disabling various overlay warnings:
|
|
* `disable_warning_forced_setting`:
|
|
- disable the warning for the usage of any file `force_*.txt` in the overlay
|
|
- unlocks the settigs menu, this may result in an undesirable output
|
|
* `disable_warning_bad_appid`: disable the warning for bad app ID (when app ID = 0) in the overlay
|
|
* `disable_warning_local_save`: disable the warning for using local save in the overlay
|
|
* `disable_warning_any`: all the above
|
|
|
|
Check the example files in the `steam_settings` folder
|
|
|
|
---
|
|
|
|
## Overlay appearance:
|
|
**Note: at the moment this feature is only enabled in the experimental builds**
|
|
---
|
|
|
|
The configuration file `overlay_appearance.txt` has various options to set for the overlay appearance.
|
|
You can place this file inside the local `steam_settings/` folder, or inside the global settings folder `Goldberg SteamEmu Settings/settings/`.
|
|
|
|
The notifications positions could be set to one of these values:
|
|
* `top_left`
|
|
* `top_center`
|
|
* `top_right`
|
|
* `bot_left`
|
|
* `bot_center`
|
|
* `bot_right`
|
|
|
|
Check the example file in the `steam_settings` folder
|
|
|
|
---
|
|
|
|
## Auto accept game/lobby invites:
|
|
**Note: at the moment this feature is only enabled in the experimental builds**
|
|
---
|
|
|
|
When the overlay is enabled and working, you can bypass it and auto-accept invites (lobby or game) from a list of Steam IDs (SteamID64 format).
|
|
The configuration file `auto_accept_invite.txt` allows you to do that, it works like this:
|
|
* Adding an empty file: will accept invites from anyone (same behavior as if the overlay was disabled)
|
|
* Adding a file with some friends IDs (each on a separate line):
|
|
* If the friend ID is found in this file, the invitation will be accepted automatically
|
|
* If the friend ID is not found, you'll get the regular overlay invitation
|
|
|
|
Check the example file in the `steam_settings` folder
|
|
|
|
---
|
|
|
|
## IP country:
|
|
|
|
You can report a country IP if the game queries it, by setting the 2 characters code in the file `ip_country.txt`.
|
|
Use this link to get the `Alpha-2` country code: https://www.iban.com/country-codes
|
|
|
|
Check the example file in the `steam_settings` folder
|
|
|
|
---
|
|
|
|
## 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.ini` and setting `matchmaking_server_list_actual_type-1`.
|
|
**This is currently broken**.
|
|
|
|
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.ini`.
|
|
**This is currently broken**.
|
|
|
|
---
|
|
|
|
## Overlay hook delay and renderer detector timeout:
|
|
**Note: at the moment this feature is only enabled in the experimental builds**
|
|
---
|
|
|
|
By default the emu will immediately start the renderer detector for the overlay, but you can give it some initial delay,
|
|
which allows some games to initialize properly, otherwise the detector may not detect the current renderer (DirectX, OpenGL, etc...) and the overlay will not work (example games: `Have a Nice Death`, and `Saints Row (2022)`).
|
|
|
|
After that initial delay, the emu will give the detector `15 seconds` as a timeout, after that time if the detector didn't return a valid result, it will fail. This avoids an infinite detection loop and a potential FPS drop on failure.
|
|
|
|
You can control these timings from `configs.ini`:
|
|
* `hook_delay_sec`: controls the amount of seconds to wait for initially before attempting the detection.
|
|
* `enable_experimental_overlay`: controls the timeout of the detection, in seconds.
|
|
|
|
Negative values will be ignored, also the renderer detector timeout cannot be 0.
|
|
|
|
Check the example files in the `steam_settings` folder
|
|
|
|
---
|
|
|
|
## Prevent lobby creation:
|
|
|
|
You can prevent lobby creation (created via steam matchmaking APIs) by modifying `configs.ini` and setting `disable_lobby_creation=1`.
|
|
|
|
---
|
|
|
|
## Sharing leaderboards scores over LAN:
|
|
|
|
You can allow the emu to mutually share leaderboards scores with people playing the same game on the same network, by modifying `configs.ini` and setting `share_leaderboards_over_network=1`.
|
|
|
|
This works best with real LAN, latency from VPN clients might break it.
|
|
|
|
---
|
|
|
|
## Sharing stats and achievements with game servers:
|
|
|
|
By default the emu will mutually share stats with game servers, you can disable this behavior by modifying `configs.ini` and setting `disable_sharing_stats_with_gameserver=1`, this also disables the interface `ISteamGameServerStats`.
|
|
|
|
Game servers and players will not immediately synchronize stats/achievements whey they're changed, they'll wait for the next call to `Steam_RunCallbacks()`.
|
|
You can change this behavior and make them eager to send updated data by modifying `configs.ini` and setting `immediate_gameserver_stats=1`.
|
|
|
|
---
|
|
|
|
## Pretend that the app in running in Steam Deck mode:
|
|
|
|
Modify `configs.ini` and set `steam_deck=1` to pretent that the app is running on a Steam Deck.
|
|
|
|
---
|
|
|
|
## Force achievements functions to succeed:
|
|
|
|
Modify `configs.ini` and set `achievements_bypass=1` to force some achievements functions to succeed.
|
|
|
|
---
|