Revision Difference
#522319
<cat>gettingstarted</cat>
<title>About Facepunch.Steamworks</title>
# What Is Steamworks?
Steamworks is a set of API's made available by Valve to allow developers to create integrations with Steam.
This ranges from the simple things like getting the local player's name, to more complicated things like server lists and UGC (Workshop Stuff).
# What is Facepunch.Steamworks?
Valve's Steamwork library is written in C++. Due to the popularity of Unity a lot of game development is now done in C#.
[Facepunch.Steamworks](https://github.com/Facepunch/Facepunch.Steamworks) is a C# wrapper on top of Valve's steamwork library.
# How does it differ from Steamworks.Net?
[Steamworks.NET](https://steamworks.github.io/) aims to be a faithful wrapper with the C++ version. Facepunch.Steamworks is a re-interpretation of the Api in a C# world. Here's an example
**Getting Friends List on Steamworks.Net**:
```csharp
int friendCount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate);
Debug.Log("[STEAM-FRIENDS] Listing " + friendCount + " Friends.");
for (int i = 0; i < friendCount; ++i) {
⤶
for (int i = 0; i < friendCount; ++i)
{
CSteamID friendSteamId = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate);
string friendName = SteamFriends.GetFriendPersonaName(friendSteamId);
EPersonaState friendState = SteamFriends.GetFriendPersonaState(friendSteamId);
Debug.Log(friendName + " is " + friendState);
Debug.Log( $"{friendName} is {friendState}");
}
```
**Getting Friends List on Facepunch.Steamworks**:
⤶
```⤶
⤶
```csharp⤶
foreach ( var friend in SteamFriends.GetFriends() )
{
Console.WriteLine( "{friend.Id}: {friend.Name}" );
Console.WriteLine( "{friend.IsOnline} / {friend.SteamLevel}" );
Console.WriteLine( $"{friend.Id}: {friend.Name}" );
Console.WriteLine( $"{friend.IsOnline} / {friend.SteamLevel}" );
}
```
# Where can I get it?
You can download a release on the [Github Page](https://github.com/Facepunch/Facepunch.Steamworks).