public static void Initialize() { if (!Steamworks.Load()) { throw new SteamException("Unable to load steamclient library."); } try { ClientEngine = Steamworks.CreateInterface <IClientEngine>("CLIENTENGINE_INTERFACE_VERSION002"); } catch (Exception ex) { throw new SteamException("Unable to get IClientEngine interface.", ex); } try { SteamClient = Steamworks.CreateInterface <ISteamClient009>("SteamClient009"); } catch (Exception ex) { throw new SteamException("Unable to get ISteamClient interface.", ex); } if (ClientEngine == null) { throw new SteamException("Unable to get IClientEngine interface."); } Pipe = ClientEngine.CreateSteamPipe(); if (Pipe == 0) { throw new SteamException("Unable to aquire steam pipe."); } User = ClientEngine.ConnectToGlobalUser(Pipe); if (User == 0) { throw new SteamException("Unable to connect to global user."); } ClientFriends = GetInterface <IClientFriends>( () => { return(ClientEngine.GetIClientFriends(User, Pipe, "CLIENTFRIENDS_INTERFACE_VERSION001")); }, "Unable to get IClientFriends interface." ); SteamUser = GetInterface <ISteamUser014>( () => { return(SteamClient.GetISteamUser(User, Pipe, "SteamUser014")); }, "Unable to get ISteamUser interface." ); SteamUtils = GetInterface <ISteamUtils005>( () => { return(SteamClient.GetISteamUtils(Pipe, "SteamUtils005")); }, "Unable to get ISteamUtils interface." ); OnStateChange = new Callback <PersonaStateChange_t>(PersonaStateChange_t.k_iCallback); }