Last Updated: 8/19/2022, 10:39:25 PM

# .NET (C#) SDK Getting Started Guide

# Overview

You can use AccelByte Cloud’s .NET (C#) SDK to implement our backend services within your game. The SDK acts as a bridge between your game and our services. This guide will show you how to create an application that uses .NET (C#) Server SDK from scratch.

# Prerequisites

  • AccelByte Cloud (demo environment):
    • Use https://demo.accelbyte.io (opens new window) for AB_BASE_URL environment variable.
    • Create an Oauth Client with client type Confidential.
    • Use Client ID value for AB_CLIENT_ID environment variable.
    • Use Client Secret value for AB_CLIENT_SECRET environment variable.
  • Git
  • .NET SDK 6.0
  • C# IDE, e.g., Visual Studio Code, Visual Studio 2022, etc.

# Tutorial

# Create a .NET (C#) Project

  1. Create a new solution and a new console project inside the solution using dotnet CLI.
$ mkdir -p /path/to/mysolution
$ cd /path/to/mysolution
$ dotnet new sln --name mysolution      # Create a new solution: mysolution
$ dotnet new console -o myproject       # Create a new console project myproject
$ dotnet sln add myproject/myproject.csproj     # Add myproject to mysolution

# Add to Project Dependency

  1. Get a release version of the AccelByte C# Server SDK (opens new window) and add it as C# project dependency.
  2. Replace {VERSION} with a specific release version tag from releases (opens new window).

NOTE

We recommended using the .NET (C#) Server SDK version that matches your AccelByte Cloud version.

$ git clone https://github.com/AccelByte/accelbyte-csharp-sdk.git   # Clone AccelByte C# Server SDK
$ cd accelbyte-csharp-sdk
$ git checkout {VERSION}                                            # Switch to a specific release {VERSION} 
$ cp -rv AccelByte.Sdk /path/to/mysolution/AccelByte.Sdk            # Copy AccelByte C# Server SDK source code
$ cd /path/to/mysolution
$ dotnet sln add AccelByte.Sdk/AccelByte.Sdk.csproj             # Add AccelByte C# Server SDK to solution
$ cd myproject
$ dotnet add reference ../AccelByte.Sdk/AccelByte.Sdk.csproj    # Add AccelByte C# Server SDK as a dependency of C# project

# Use in Code

  1. Create an SDK instance, log in using user credentials, and call an AccelByte Basic API in program.cs.
  2. The DefaultConfigRepository gets its values from AB_BASE_URL, AB_CLIENT_ID, and AB_CLIENT_SECRET environment variables.
using System;
using System.Collections.Generic;

using AccelByte.Sdk.Core;
using AccelByte.Sdk.Api;
using AccelByte.Sdk.Api.Legal.Model;

namespace AccelByteExample
{
    internal class Program
    {
        static int Main(string[] args)
        {
            AccelByteSDK sdk = AccelByteSDK.Builder
                .UseDefaultHttpClient()
                .UseDefaultConfigRepository()
                .UseDefaultTokenRepository()
                .Build();

            bool login = sdk.LoginUser("myUsername", "myPassword");
            if (!login)
            {
                Console.WriteLine("Login failed");
                return 1;
            }

            try
            {
                List<RetrieveAcceptedAgreementResponse>? response = sdk.Legal.Agreement.RetrieveAgreementsPublicOp.Execute();
                if (response == null)
                    throw new Exception("Response is null");

                foreach (var aggreement in response)
                    Console.WriteLine(aggreement.PolicyName);
            }
            catch (HttpResponseException e)
            {
                Console.WriteLine(e.Message);
                return 2;
            }

            bool logout = sdk.Logout();
            if (!logout)
            {
                Console.WriteLine("Logout failed");
                return 1;
            }

            return 0;
        }
    }
}

# Run the Code

  1. Set the required environment variables and run the code using go run main.go.
$ export AB_BASE_URL="https://demo.accelbyte.io"              # AccelByte Cloud Base URL e.g. demo environment
$ export AB_CLIENT_ID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"      # AccelByte Cloud OAuth Client ID
$ export AB_CLIENT_SECRET="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # AccelByte Cloud OAuth Client Secret
$ cd /path/to/mysolution/myproject
$ dotnet run

# SDK Examples

See our .NET (C#) SDK example repo (opens new window) for a selection of test cases you can use to customize your game. You can also view the .NET (C#) Server SDK README.md (opens new window) for more information.

IAM

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Iam.Model;
using AccelByte.Sdk.Api.Iam.Operation;
using AccelByte.Sdk.Api.Iam.Wrapper;
Basic

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Basic.Model;
using AccelByte.Sdk.Api.Basic.Operation;
using AccelByte.Sdk.Api.Basic.Wrapper;
Social

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Social.Model;
using AccelByte.Sdk.Api.Social.Operation;
using AccelByte.Sdk.Api.Social.Wrapper;
Platform

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Platform.Model;
using AccelByte.Sdk.Api.Platform.Operation;
using AccelByte.Sdk.Api.Platform.Wrapper;
Group

API Docs (opens new window)

SDK reference (opens new window)

    using AccelByte.Sdk.Api.Group.Model;
    using AccelByte.Sdk.Api.Group.Operation;
    using AccelByte.Sdk.Api.Group.Wrapper;
Cloud Save

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Cloudsave.Model;
using AccelByte.Sdk.Api.Cloudsave.Operation;
using AccelByte.Sdk.Api.Cloudsave.Wrapper;
DSM Controller

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Dsmc.Model;
using AccelByte.Sdk.Api.Dsmc.Operation;
using AccelByte.Sdk.Api.Dsmc.Wrapper;
Session Browser

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Sessionbrowser.Model;
using AccelByte.Sdk.Api.Sessionbrowser.Operation;
using AccelByte.Sdk.Api.Sessionbrowser.Wrapper;
Lobby

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Lobby.Model;
using AccelByte.Sdk.Api.Lobby.Operation;
using AccelByte.Sdk.Api.Lobby.Wrapper;
Achievement

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Achievement.Model;
using AccelByte.Sdk.Api.Achievement.Operation;
using AccelByte.Sdk.Api.Achievement.Wrapper;
DS Log Manager

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Dslogmanager.Model;
using AccelByte.Sdk.Api.Dslogmanager.Operation;
using AccelByte.Sdk.Api.Dslogmanager.Wrapper;
UGC

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Ugc.Model;
using AccelByte.Sdk.Api.Ugc.Operation;
using AccelByte.Sdk.Api.Ugc.Wrapper;
Leaderboard

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Leaderboard.Model;
using AccelByte.Sdk.Api.Leaderboard.Operation;
using AccelByte.Sdk.Api.Leaderboard.Wrapper;
GDPR

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Gdpr.Model;
using AccelByte.Sdk.Api.Gdpr.Operation;
using AccelByte.Sdk.Api.Gdpr.Wrapper;
Legal

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Legal.Model;
using AccelByte.Sdk.Api.Legal.Operation;
using AccelByte.Sdk.Api.Legal.Wrapper;
Matchmaking

API Docs (opens new window)

SDK reference (opens new window)

using AccelByte.Sdk.Api.Matchmaking.Model;
using AccelByte.Sdk.Api.Matchmaking.Operation;
using AccelByte.Sdk.Api.Matchmaking.Wrapper;