> For the complete documentation index, see [llms.txt](https://kb.heathen.group/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kb.heathen.group/old-kb/steam/multiplayer/game-server-browser/configuration.md).

# Configuration

{% hint style="success" %}

#### Like what you're seeing?

Support us as a [GitHub Sponsor](/old-kb/where-to-buy/become-a-sponsor.md) and get instant access to all our assets, exclusive tools and assets, escalated support and issue tracking and our gratitude.\
\
These articles are made possible by our [GitHub Sponsors](/old-kb/where-to-buy/become-a-sponsor.md) ... become a sponsor today!
{% endhint %}

## &#x20;Introduction

{% hint style="info" %}
Note For a server to be listed properly in the Steam Game Server Browser you must set the server name.
{% endhint %}

<figure><img src="/files/KFyWM3h4OcAEBjW1Fc6M" alt=""><figcaption><p>Screen shot of a Heathen Steam Settings object with the Game Server config expanded</p></figcaption></figure>

If you're working in C# and not using scriptable objects at all you can create a [SteamGameServerConfiguraiton ](/old-kb/old-toolkit-for-steamworks/unity/objects/classes/steam-game-server-configuration.md)and pass that to the [API.App.Server.Initialization(...)](/old-kb/old-toolkit-for-steamworks/unity/api-extensions/app.server.md#initialize) method.

## Raw API

Heathen's API is a direct wrapper of the raw Steam API so there is no black magic to worry about. You can review our code for initialization in the `API.App.cs` file. The following notes might help those looking to work with the raw API.

### Values

You must set your configuration values before you call Log On and after Initialization.

```csharp
var Initialized = GameServer.Init(serverConfiguration.ip, 
                                  serverConfiguration.gamePort, 
                                  serverConfiguration.queryPort, 
                                  eMode, 
                                  serverConfiguration.serverVersion);
                                         
//...
if(Initialized)
{
   SteamGameServer.SetModDir(serverConfiguration.gameDirectory);
   SteamGameServer.SetProduct(appId.ToString());
   SteamGameServer.SetGameDescription(serverConfiguration.gameDescription);
   SteamGameServer.SetMaxPlayerCount(serverConfiguration.maxPlayerCount);
   SteamGameServer.SetPasswordProtected(serverConfiguration.isPasswordProtected);
   SteamGameServer.SetServerName(serverConfiguration.serverName);
   SteamGameServer.SetBotPlayerCount(serverConfiguration.botPlayerCount);
   SteamGameServer.SetMapName(serverConfiguration.mapName);
   SteamGameServer.SetDedicatedServer(serverConfiguration.isDedicated);

   //...

   SteamGameServer.LogOnAnonymous();
   // or NOT BOTH
   SteamGameServer.LogOn(Configuration.gameServerToken);
}

```

The one exception to this rule is that `SteamGameServer.SetAdvertiseServerActive(true);` which can be set after login and toggled on and off as required.

{% hint style="info" %}
`SteamGameServer.SetAdvertiseServerActive(true);`

This is what tells the server to advertise itself on the Steam Game Server Browser system. if this is false it will not be listed, if it lacks a name it will not be listed.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://kb.heathen.group/old-kb/steam/multiplayer/game-server-browser/configuration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
