Giter Club home page Giter Club logo

nakama-unity's Introduction

This is Heroic Labs' UnityEngine monorepository that contains libraries for accessing two different backend services, Nakama and Satori.

The clients are built on the .NET client with extensions for Unity Engine. They require the .NET 4.6 scripting runtime version to be set in the editor.

Nakama

Nakama is an open-source server designed to power modern games and apps. Features include user accounts, chat, social, matchmaker, realtime multiplayer, and much more.

Full documentation is online - https://heroiclabs.com/docs/unity-client-guide

Getting Started

You'll need to setup the server and database before you can connect with the client. The simplest way is to use Docker but have a look at the server documentation for other options.

Installing the SDK

  1. Install and run the servers. Follow these instructions.

  2. Install the Unity SDK. You have three options for this.

    1. To use an official release, you may download either the .unitypackage or .tar from the releases page and import it into your project. If you chose the .tar option, you can import it from a dropdown in the Unity Package Manager window.

    2. Alternatively, if you'd like to checkout a specific release or commit from Github and are using Unity 2019.4.1 or later, you can add the following to the manifest.json file in your project's Packages folder:

          "com.heroiclabs.nakama-unity": "https://github.com/heroiclabs/nakama-unity.git?path=/Packages/Nakama#<commit | tag>"
    3. Your final option is to download prebuilt binaries from the Asset Store.

  3. Use the connection credentials to build a client object.

    using Nakama;
    const string scheme = "http";
    const string host = "127.0.0.1";
    const int port = 7350;
    const string serverKey = "defaultkey";
    var client = new Client(scheme, host, port, serverKey, UnityWebRequestAdapter.Instance);

Usage

The client object has many methods to execute various features in the server or open realtime socket connections with the server.

Authenticate

There's a variety of ways to authenticate with the server. Authentication can create a user if they don't already exist with those credentials. It's also easy to authenticate with a social profile from Google Play Games, Facebook, Game Center, etc.

var deviceId = SystemInfo.deviceUniqueIdentifier;
var session = await client.AuthenticateDeviceAsync(deviceId);
Debug.Log(session);

Sessions

When authenticated the server responds with an auth token (JWT) which contains useful properties and gets deserialized into a Session object.

Debug.Log(session.AuthToken); // raw JWT token
Debug.LogFormat("Session user id: '{0}'", session.UserId);
Debug.LogFormat("Session user username: '{0}'", session.Username);
Debug.LogFormat("Session has expired: {0}", session.IsExpired);
Debug.LogFormat("Session expires at: {0}", session.ExpireTime); // in seconds.

It is recommended to store the auth token from the session and check at startup if it has expired. If the token has expired you must reauthenticate. The expiry time of the token can be changed as a setting in the server.

const string prefKeyName = "nakama.session";
ISession session;
var authToken = PlayerPrefs.GetString(prefKeyName);
if (string.IsNullOrEmpty(authToken) || (session = Session.Restore(authToken)).IsExpired)
{
    Debug.Log("Session has expired. Must reauthenticate!");
};
Debug.Log(session);

Requests

The client includes lots of builtin APIs for various features of the game server. These can be accessed with the async methods. It can also call custom logic as RPC functions on the server. These can also be executed with a socket object.

All requests are sent with a session object which authorizes the client.

var account = await client.GetAccountAsync(session);
Debug.LogFormat("User id: '{0}'", account.User.Id);
Debug.LogFormat("User username: '{0}'", account.User.Username);
Debug.LogFormat("Account virtual wallet: '{0}'", account.Wallet);

Requests can be supplied with a retry configurations in cases of transient network or server errors.

A single configuration can be used to control all request retry behavior:

var retryConfiguration = new RetryConfiguration(baseDelay: 1, maxRetries: 5, delegate { System.Console.Writeline("about to retry."); });

client.GlobalRetryConfiguration = retryConfiguration;
var account = await client.GetAccountAsync(session);

Or, the configuration can be supplied on a per-request basis:

var retryConfiguration = new RetryConfiguration(baseDelay: 1, maxRetries: 5, delegate { System.Console.Writeline("about to retry."); });

var account = await client.GetAccountAsync(session, retryConfiguration);

Per-request retry configurations override the global retry configuration.

Requests also can be supplied with a cancellation token if you need to cancel them mid-flight:

var canceller = new CancellationTokenSource();
var account = await client.GetAccountAsync(session, retryConfiguration: null, canceller);

await Task.Delay(25);

canceller.Cancel(); // will raise a TaskCanceledException

Socket

The client can create one or more sockets with the server. Each socket can have it's own event listeners registered for responses received from the server.

var socket = client.NewSocket();
socket.Connected += () => Debug.Log("Socket connected.");
socket.Closed += () => Debug.Log("Socket closed.");
await socket.ConnectAsync(session);

If you'd like socket handlers to execute outside Unity's main thread, pass the useMainThread: false argument:

var socket = client.NewSocket(useMainThread: false);

Errors

You can capture errors when you use await scaffolding with Tasks in C#.

try
{
    var account = await client.GetAccountAsync(session);
    Debug.LogFormat("User id: '{0}'", account.User.Id);
}
catch (ApiResponseException e)
{
    Debug.LogFormat("{0}", e);
}

Error Callbacks

You can avoid the use of await where exceptions will need to be caught and use Task.ContinueWith(...) as a callback style with standard C# if you prefer.

client.GetAccountAsync(session).ContinueWith(t =>
{
    if (t.IsFaulted || t.IsCanceled)
    {
        Debug.LogFormat("{0}", t.Exception);
        return;
    }
    var account = t.Result;
    Debug.LogFormat("User id: '{0}'", account.User.Id);
});

Satori

Satori is a liveops server for games that powers actionable analytics, A/B testing and remote configuration. Use the Satori Unity Client to coomunicate with Satori from within your Unity game.

Full documentation is online - https://heroiclabs.com/docs/satori/client-libraries/unity

Getting Started

Create a client object that accepts the API you were given as a Satori customer.

using Satori;

const string scheme = "https";
const string host = "127.0.0.1"; // add your host here
const int port = 443;
const string apiKey = "apiKey"; // add the api key that was given to you as a Satori customer.

var client = new Client(scheme, host, port, apiKey);

Then authenticate with the server to obtain your session.

// Authenticate with the Satori server.
try
{
    session = await client.AuthenticateAsync(id);
    Debug.Log("Authenticated successfully.");
}
catch(ApiResponseException ex)
{
    Debug.LogFormat("Error authenticating: {0}", ex.Message);
}

Using the client you can get any experiments or feature flags, the user belongs to.

var experiments = await client.GetExperimentsAsync(session);
var flag = await client.GetFlagAsync(session, "FlagName");

You can also send arbitrary events to the server:

await client.EventAsync(session, new Event("gameLaunched", DateTime.UtcNow));

This is only a subset of the Satori client API, so please see the documentation link listed earlier for the full API.

Unity WebGL

For both Nakama and Satori WebGL builds you should make sure the IHttpAdapter passed into the client is a UnityWebRequestAdapter.

var client = new Client("defaultkey", UnityWebRequestAdapter.Instance);

For Nakama, use the NewSocket() extension method to create the socket OR manually set the right ISocketAdapter per platform.

var socket = client.NewSocket();

// or
#if UNITY_WEBGL && !UNITY_EDITOR
    ISocketAdapter adapter = new JsWebSocketAdapter();
#else
    ISocketAdapter adapter = new WebSocketAdapter();
#endif
var socket = Socket.From(client, adapter);

When testing our example WebGL scene before 2021.1, be sure to go into the Build Settings and set the C++ Compiler Configuration to Release instead of Debug due to an outstanding issue in Unity WebGL builds: https://issuetracker.unity3d.com/issues/webgl-build-throws-threads-are-not-enabled-for-this-platform-error-when-programs-built-using-debug-c-plus-plus-compiler-configuration

Contribute

The development roadmap is managed as GitHub issues and pull requests are welcome. If you're interested to enhance the code please open an issue to discuss the changes or drop in and discuss it in the community forum.

This project can be opened in Unity to create a ".unitypackage".

License

This project is licensed under the Apache-2 License.

nakama-unity's People

Contributors

andrievsky avatar hasbean avatar humbertodias avatar lugehorsam avatar mofirouz avatar novabyte avatar prodigga avatar radwan92 avatar renanse avatar tmiv avatar tomglenn avatar zyro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nakama-unity's Issues

ISocket.SendMatchStateAsync() recipients confusion

Hello again, guys ๐Ÿ‘‹

About my issue: #83
and forum post: https://forum.heroiclabs.com/t/sendmatchstateasync-for-all-players-including-the-sender/363

Here are Yes / No simplified questions:

[1]
On the

ISocket.SendMatchStateAsync (string matchId, long opCode, byte[] state, IEnumerable<IUserPresence> presences = null);

Is the presences parameter a list of users (in the same match) who will receive the match state code?

[2]
Does the match have to be marked authoritative=True for the state code to be broadcast to ALL users (including the sender)?

Requesting a cleaner way to compare byte[] ID's

I frequently need to compare the ID's of users/matches/etc when working with Nakama.

The ID's are byte[]'s, and you can't just compare them directly for equality to see if they are the same ID (myUser.ID == otherUser.ID only returns true if the references are the same, not if the byte[]'s are identical in content).

I've written my own utility method to compare each element in 2 byte[]'s for equality.

This works fine for me, but since this is something almost everyone will need when working with Nakama, I feel like there should be a nicer way to compare the ID's built in to Nakama.

Can we store the ID's as 'long's instead of byte[]'s or something? Then comparison becomes simple.

Missing script after client import from the asset store

After I imported the Unity Nakama client from the asset store there were these errors:

  1. NakamaScriptObject was missing a script

which I supposed was DemoScene.cs, so I attached it and updated the references to the respective buttons. The problem now is:

  1. The buttons don't have actions associated with them

MatchMaker returns empty match ID

Hi!

Is it normal for MatchMaker to return an empty/nil match ID for "matched" matches?

In the following snippet:

socket.OnMatchmakerMatched += (object _, IMatchmakerMatched matched) =>
{
        Debug.Log("Got a match with ID: " + matched.MatchId + ", token: " + matched.Token + ", ticket: " + matched.Ticket);
};

only matched.MatchId is null/empty. Both token and ticket are in tact. Unless there is another way to send real time messages without using the match ID, I can't relay information to other clients via socket.SendMatchState, which requires the match ID.

Conflict on NUsersFetchMessage.Builder with params overload

Description

If you try to create a NUsersFetchMessage using an empty builder (var message = NUsersFetchMessage.Builder();), so you can later iterate and Add() the user ids in say a foreach loop, the compiler issues the following error:

The call is ambiguous between the following methods or properties: 'NUsersFetchMessage.Builder.Builder(params byte[])' and 'NUsersFetchMessage.Builder.Builder(params string[])'

Workaround

An ugly workaround is to extract the first argument of the users array, feed it to the Builder method, and then iterate the ids using a for loop, skipping the first element (i = 1).
If anyone knows a better workaround please let me know.

Environment

  • Custom build from latest (ab453fc) nakama-unity/master
  • Unity 5.6.1f1
  • MacOS Sierra 10.12.5

Nakama.Client missing definitions

I just imported a fresh package from the asset store, as well as the releases, and both seem to be missing a lot of references in the Nakama.Client class.

The following image shows everything that is missing.
capture

Unable to find libc

I'm running Unity 2019.1.6f1 and testing with a Pixel 3. On creating a new connection this scene freezes.
Client client = new Client("http", "[addressofmyserver].com/", 7350, "defaultKey");

When I run logcat I'm seeing this error:
Unable to find libc

Then if I try to create a session it results in a null exception, as the client wasn't created due to the libc error.

NullReferenceException: Object reference not set to an instance of an object

I've tried changing build settings and targets, but no improvements.

Unity WebGL ReferenceError: Can't find variable: callback Object

Hi. When i build my test project in Unity WebGL error: ReferenceError: Can't find variable: callback Object. Nakama is support Unity WebGL?

My test script:

using UnityEngine;
using Nakama;
using System;

public class ServerTest : MonoBehaviour
{
INClient client;
INSession session;

void Start()
{
    client = new NClient.Builder("defaultkey")
    .Host("127.0.0.1")
    .Port(7350)
    .SSL(false)
    .Build();

    string id = SystemInfo.deviceUniqueIdentifier;
    var request = NAuthenticateMessage.Device(id);
    client.Login(request, (INSession session) =>
    {
        Debug.Log("Player Logged in successfully");
        this.session = session;

    }, (INError error) =>
    {
        Debug.LogErrorFormat("ID login '{0}' failed: {1}", id, error);

        if (error.Code == ErrorCode.UserNotFound)
        {
            client.Register(request, (INSession session) =>
            {
                Debug.Log("Player Register in successfully");
                this.session = session;

            }, (INError err) =>
            {
				Debug.LogErrorFormat("ID login '{0}' failed: {1}", id, err);

            });
        }
    });
}

}

Socket immediately disconnects

First, I want to say that Nakama is awesome! Thanks to the brilliant team who made it!

My issue is this: I run the following code, which seems to work at first, but about 2-5 seconds after I get a "Socket Connected" message, I get a "Socket Disconnected" message.
account.cs:

    socket = client.CreateWebSocket();
    multiplayer.SetupCallbacks();

    await socket.ConnectAsync(session);
    multiplayer.Join();

multiplayer.cs (SetupCallbacks):

    account.socket.OnConnect += (sender, evt) => Debug.LogFormat("Socket connected");
    account.socket.OnDisconnect += (sender, evt) => Debug.LogFormat("Socket disconnected");

multiplayer.cs (Join):

    match = await account.socket.CreateMatchAsync();

I'm not sure where the issue could be, if anyone needs more code I will gladly post it here. Thanks in advance!

iOS Linker fails with undefined symbols error

When exporting the Unity application build to an Xcode project, the xcode ld fails finding references to native NTransportJavascript.jslib file as it is not included with the build. This is intentional as it should only be bundled with the WebGL builds.

However, the linker should not even find or try to compile the NTransportJavascript.cs file. I suspect one of the preprocessors are buggy and is not excluding the file.

I've tested the hypothesis and the project compiles if the two files are removed before exporting to XCode.

400 Bad Request after custom Authenticate Custom Call

I'm using a custom ID that successfully creates a user. However, when I launch the game again, I get a 400 when I try to create a socket.

       session = await client.AuthenticateCustomAsync(custom_id);
        Debug.LogFormat("New user: {0}, {1}", session.Created, session);
        var socket = client.NewSocket();
        socket.Connected += () =>
        {
            Debug.Log("Connected");
            TestingUtils.SetMessage("Connected");
        };

        socket.Closed += () =>
        {
            TestingUtils.SetMessageAdditive("Closed");
        };

        await socket.ConnectAsync(session);

No other code is running, but I get:

InvalidHttpResponseCodeException: 400 Bad Request

It succeeds on creation, however.

Socket error running unity 2019 on iOS

Hello I'm getting this stack trace when testing the JollyRoger sample game. I'm on Unity 2019 and updated the Nakama Unity client to v2.4.0. I did notice a JNI call in the stack trace. Is this client only for Android?

An error has occured while connecting socket: System.NotSupportedException: linked away
  at Nakama.Ninja.WebSockets.Internal.Events.ClientConnectingToIpAddress (System.Guid guid, System.String ipAddress, System.Int32 port) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.Socket+<>c__DisplayClass54_0.<ConnectAsync>b__2 (System.Threading.Tasks.Task`1[TResult] _) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine._AndroidJNIHelper.GetSignature[ReturnType] (System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.Ninja.WebSockets.WebSocketClientFactory.GetStream (System.Guid loggingGuid, System.Boolean isSecure, System.Boolean noDelay, System.String host, System.Int32 port, System.Threading.CancellationToken cancellationToken) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.Socket+<>c__DisplayClass54_0.<ConnectAsync>b__2 (System.Threading.Tasks.Task`1[TResult] _) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine._AndroidJNIHelper.GetSignature[ReturnType] (System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.Ninja.WebSockets.WebSocketClientFactory.ConnectAsync (System.Uri uri, Nakama.Ninja.WebSockets.WebSocketClientOptions options, System.Threading.CancellationToken token) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.Socket+<>c__DisplayClass54_0.<ConnectAsync>b__2 (System.Threading.Tasks.Task`1[TResult] _) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncTaskCache.CreateCacheableTask[TResult] (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.WebSocketAdapter.Connect (System.Uri uri, System.Int32 timeout) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.Socket.ConnectAsync (Nakama.ISession session, System.Boolean appearOnline, System.Int32 connectTimeoutSec) [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager+<>c__DisplayClass49_0.<InitializeFacebook>b__0 (Facebook.Unity.ILoginResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine._AndroidJNIHelper.GetSignature[ReturnType] (System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager.ConnectSocketAsync () [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager+<>c__DisplayClass49_0.<InitializeFacebook>b__0 (Facebook.Unity.ILoginResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[TResult].Create () [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager+<>c__DisplayClass49_0.<InitializeFacebook>b__0 (Facebook.Unity.ILoginResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[TResult].Create () [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.WriteTournamentRecordRequestTournamentRecordWrite..ctor () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.TaskCompletionSource`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.TaskCompletionSource`1[TResult].SetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action`1[T].Invoke (T obj) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.UnityWebRequestAdapter+<SendRequest>d__11.MoveNext () [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) [0x00000] in <00000000000000000000000000000000>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Collections.Concurrent.ConcurrentDictionary`2+Tables[TKey,TValue]..ctor (System.Collections.Concurrent.ConcurrentDictionary`2+Node[TKey,TValue][] buckets, System.Object[] locks, System.Int32[] countPerLock) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.Socket+<>c__DisplayClass54_0.<ConnectAsync>b__2 (System.Threading.Tasks.Task`1[TResult] _) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine._AndroidJNIHelper.GetSignature[ReturnType] (System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.Ninja.WebSockets.WebSocketClientFactory.ConnectAsync (System.Uri uri, Nakama.Ninja.WebSockets.WebSocketClientOptions options, System.Threading.CancellationToken token) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.Socket+<>c__DisplayClass54_0.<ConnectAsync>b__2 (System.Threading.Tasks.Task`1[TResult] _) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncTaskCache.CreateCacheableTask[TResult] (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.WebSocketAdapter.Connect (System.Uri uri, System.Int32 timeout) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.Socket.ConnectAsync (Nakama.ISession session, System.Boolean appearOnline, System.Int32 connectTimeoutSec) [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager+<>c__DisplayClass49_0.<InitializeFacebook>b__0 (Facebook.Unity.ILoginResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine._AndroidJNIHelper.GetSignature[ReturnType] (System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager.ConnectSocketAsync () [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager+<>c__DisplayClass49_0.<InitializeFacebook>b__0 (Facebook.Unity.ILoginResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[TResult].Create () [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager+<>c__DisplayClass49_0.<InitializeFacebook>b__0 (Facebook.Unity.ILoginResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[TResult].Create () [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.WriteTournamentRecordRequestTournamentRecordWrite..ctor () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.TaskCompletionSource`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.TaskCompletionSource`1[TResult].SetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action`1[T].Invoke (T obj) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.UnityWebRequestAdapter+<SendRequest>d__11.MoveNext () [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) [0x00000] in <00000000000000000000000000000000>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Collections.Concurrent.ConcurrentDictionary`2+Tables[TKey,TValue]..ctor (System.Collections.Concurrent.ConcurrentDictionary`2+Node[TKey,TValue][] buckets, System.Object[] locks, System.Int32[] countPerLock) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.Socket+<>c__DisplayClass54_0.<ConnectAsync>b__2 (System.Threading.Tasks.Task`1[TResult] _) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncTaskCache.CreateCacheableTask[TResult] (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.WebSocketAdapter.Connect (System.Uri uri, System.Int32 timeout) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.Socket.ConnectAsync (Nakama.ISession session, System.Boolean appearOnline, System.Int32 connectTimeoutSec) [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager+<>c__DisplayClass49_0.<InitializeFacebook>b__0 (Facebook.Unity.ILoginResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine._AndroidJNIHelper.GetSignature[ReturnType] (System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager.ConnectSocketAsync () [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager+<>c__DisplayClass49_0.<InitializeFacebook>b__0 (Facebook.Unity.ILoginResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[TResult].Create () [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager+<>c__DisplayClass49_0.<InitializeFacebook>b__0 (Facebook.Unity.ILoginResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[TResult].Create () [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.WriteTournamentRecordRequestTournamentRecordWrite..ctor () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.TaskCompletionSource`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.TaskCompletionSource`1[TResult].SetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action`1[T].Invoke (T obj) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.UnityWebRequestAdapter+<SendRequest>d__11.MoveNext () [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) [0x00000] in <00000000000000000000000000000000>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager+<>c__DisplayClass49_0.<InitializeFacebook>b__0 (Facebook.Unity.ILoginResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine._AndroidJNIHelper.GetSignature[ReturnType] (System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager.ConnectSocketAsync () [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager+<>c__DisplayClass49_0.<InitializeFacebook>b__0 (Facebook.Unity.ILoginResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[TResult].Create () [0x00000] in <00000000000000000000000000000000>:0 
  at DemoGame.Scripts.Session.NakamaSessionManager+<>c__DisplayClass49_0.<InitializeFacebook>b__0 (Facebook.Unity.ILoginResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[TResult].Create () [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.WriteTournamentRecordRequestTournamentRecordWrite..ctor () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action.Invoke () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ContextCallback.Invoke (System.Object state) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.TaskCompletionSource`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 

  at System.Threading.Tasks.TaskCompletionSource`1[TResult].SetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Action`1[T].Invoke (T obj) [0x00000] in <00000000000000000000000000000000>:0 
  at Nakama.UnityWebRequestAdapter+<SendRequest>d__11.MoveNext () [0x00000] in <00000000000000000000000000000000>:0 
  at UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) [0x00000] in <00000000000000000000000000000000>:0 

SendMatchStateAsync() echo to sender

Hello, guys.

In this โ€œSend Data Messagesโ€ documentation you guys have on this link:

"A user in a match can send data messages which will be received by all other opponents."

But there are overloads of ISocket.SendMatchStateAsync() to specify players you want to receive your message (match state code).

I did try this:

await m_socket.SendMatchStateAsync(m_currentMatch.Id, (int)stateCode, string.Empty, m_playersInMatch);

where m_playersInMatch is a list of all presences in the match (the sender included) but here's the deal:

  • The sender doesnโ€™t get the state code even if I specify him as one of the receivers.

Linked forum post: https://forum.heroiclabs.com/t/sendmatchstateasync-for-all-players-including-the-sender/363
Linked gitter question: https://gitter.im/heroiclabs/nakama?at=5da405af894dee56e53c9bee#

P.S. I'm trying to send a match state code to all players in the match. All players including the sender of the state code.

WebGL can't connect to nakama

If we call anything to connect to nakama in WebGL we will get an error

For example if we call (same with other auths) :

 var message = NAuthenticateMessage.Facebook(oauthToken);
client.Login(message, (session)

We will get:

writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead! 
InvalidStateError: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.,Error: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.

Unity 2017.2.0f3 All browsers

WebGL doesn't run with Nakama ( stops on login/register )

Invoking error handler due to
Uncaught abort(-1) at Error
at jsStackTrace (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:1:22715)
at stackTrace (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:1:22898)
at abort (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:37:54048)
at _pthread_create (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:1:321327)
at fgq (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:29:197393)
at Hhq (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:29:216003)
at o5p (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:29:4417)
at n5p (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:29:4208)
at s5p (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:29:7494)
at A7p (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:29:38311)
If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.
blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:1 Uncaught abort(-1) at Error
at jsStackTrace (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:1:22715)
at stackTrace (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:1:22898)
at abort (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:37:54048)
at _pthread_create (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:1:321327)
at fgq (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:29:197393)
at Hhq (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:29:216003)
at o5p (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:29:4417)
at n5p (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:29:4208)
at s5p (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:29:7494)
at A7p (blob:http://terahard.org/33819d6a-fab4-413b-bef5-7b1b559a7c19:29:38311)
If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.

Some issues getting started based on documentation

Getting started trying out Nakama, woo! I ran into a couple confusing things, posting here after the suggestion on gitter:

  • Neither the docs nor the droplet description are clear enough about the Nakama droplet in the marketplace. Why isn't it production ready? Was it installed using the binary? I'm assuming it doesn't use Docker (it's not mentioned in software included)...is that assumption correct?
  • The docs mention the one-click install of Nakama, and then also walk you through installing and using Docker. I installed the Nakama droplet, and then started installing Docker...until I realized I was duplicating my effort and should just use a base Ubuntu install with the Docker setup and not the droplet
  • Assuming the Nakama droplet doesn't use Docker, there's no droplet that uses Docker, which is inconvenient
  • The docs suggest Ubuntu 16.04, but the droplet in the marketplace is 18.04. Does that also mean if I set up an install with Docker, I can use 18.04? That's my plan, hopefully it's ok...

How do we send message in match reliable and unrelible?

How do we send message in match reliable and unrelible?
I found this:
_socket.SendMatchStateAsync
But it has not a parameter to say it to send over UDP(unreliable) or TCP(reliable)!
Some messages is suited to be sent unreliable, for example positions for characters change frequently.

Additional parameter in Unity client

In authentication methods like Client.AuthenticateEmailAsync(), the parameters create or username are not exposed.

This also happens in all the Client.Authenticate*Async() methods.

There are other methods in Client that don't expose all the available parameters, for example Client.CreateGroupAsync()...

Nakama Unity Storage Engine Not Work

My script is nakama site examples:

using UnityEngine;
using Nakama;
using System;

public class ServerTest : MonoBehaviour
{
INClient client;
INSession session;

void Start()
{
    client = new NClient.Builder("defaultkey")
    .Host("127.0.0.1")
    .Port(7350)
    .SSL(false)
    .Build();

    var deviceid = "998c7f46-d78a-11e7-90fd-37965f77ee64";
    var request = NAuthenticateMessage.Device(deviceid);
    client.Login(request, (INSession session) =>
    {
        Debug.Log("Player Logged in successfully");
        this.session = session;
        Storage();

    }, (INError error) =>
    {
        Debug.LogErrorFormat("ID login '{0}' failed: {1}", deviceid, error);

        if (error.Code == ErrorCode.UserNotFound)
        {
            client.Register(request, (INSession session) =>
            {
                Debug.Log("Player Register in successfully");
                this.session = session;
                Storage();

            }, (INError err) =>
            {
                Debug.LogErrorFormat("ID login '{0}' failed: {1}", deviceid, err);

            });
        }
    });


}

public void Storage()
{
    Debug.Log("Storage init");

    var json = "{\"coins\": 100, \"gems\": 10, \"artifacts\": 0}";

    var message = new NStorageUpdateMessage.Builder()
        .Update("myapp", "wallets", "wallet", new NStorageUpdateMessage.StorageUpdateBuilder()
            .Init("/foo", json)
            .Incr("/foo/coins", 10)
            .Incr("/foo/gems", 50)
            .Build())
        .Build();
    client.Send(message, (INResultSet<INStorageKey> list) =>
    {
        Debug.Log("Storage complite");
        foreach (var record in list.Results)
        {
            var version = record.Version;
            Debug.LogFormat("Stored record has version '{0}'", version);
        }
    }, (INError error) =>
    {
        Debug.LogErrorFormat("Error: code '{0}' with '{1}'.", error.Code, error.Message);
    });
}

}

Step1: Player Logged in successfully
Step2: Storage init
Step3: Nothing happens

Nakama v 1.3.0 http://c2n.me/3Q0i9px.png
Nakama Unity Plugin v0.10.2
Cockroach 1.1.3
Unity 2017.2.0f3

Nakama 2.x is no longer supported in WebGL (Potentially because of System.Threading in Nakama Dotnet)

Seems like Nakama 2.x no longer works in WebGL probably because of the use of System.Threading in Nakama Dotnet

Steps to Reproduce

  1. Create a new Project in Unity (version 2018.2.12f1)
  2. Go to Asset Store, get Nakama client (version 2.0.0), or get 2.1.0 release Unity package from Github
  3. Change the .NET version in the Unity project settings to 4.x
  4. Restart Unity as required
  5. Create a game object and add SimpleSocket script
  6. Works fine in the Editor
  7. Build and run a WebGL build and get SystemException: Thread creation failed

Full error (Chrome 71)
UnityLoader.js:4 SystemException: Thread creation failed.
UnityLoader.js:4 at System.Threading.Thread.StartInternal (System.Security.Principal.IPrincipal principal, System.Threading.StackCrawlMark& stackMark) [0x00000] in <00000000000000000000000000000000>:0
UnityLoader.js:4 Rethrow as TypeInitializationException: The type initializer for 'System.Threading.Timer.Scheduler' threw an exception.
UnityLoader.js:4
UnityLoader.js:4 Rethrow as TypeInitializationException: The type initializer for 'System.Threading.Timer' threw an exception.
UnityLoader.js:4 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <00000000000000000000000000000000>:0
UnityLoader.js:4 --- End of stack trace from previous location where exception was thrown ---
UnityLoader.js:4 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <00000000000000000000000000000000>:0
UnityLoader.js:4 --- End of stack trace from previous location where exception was thrown ---
UnityLoader.js:4 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <00000000000000000000000000000000>:0
UnityLoader.js:4 --- End of stack trace from previous location where exception was thrown ---
UnityLoader.js:4 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <00000000000000000000000000000000>:0
UnityLoader.js:4
UnityLoader.js:4 (Filename: currently not available on il2cpp Line: -1)
UnityLoader.js:4
blob:http://localhost:59767/91a41be4-4741-4ab2-a4f8-ddac4b001d76:2 warning: 2 FS.syncfs operations in flight at once, probably just doing extra work

Is there any plan to support this? Or should I look into creating a fork of Nakama Dotnet. Thanks so much!

Assembly error when importing Nakama

I used the released package on github page in Unity 2019.2.3.
But I'm receiving this error:

Error: Could not load signature of Nakama.ClientExtensions:NewSocket due to: Could not resolve type with token 01000007 (from typeref, class/assembly Nakama.ISocket, Nakama, Version=2.3.1.0, Culture=neutral, PublicKeyToken=null) assembly:Nakama, Version=2.3.1.0, Culture=neutral, PublicKeyToken=null type:Nakama.ISocket member:(null) signature:<none>

How can I solve this?

Demoscene is failing to join DM Topic

The Demoscene is failing with the next error when the Join DM Topic is pressed.

NullReferenceException: Object reference not set to an instance of an object
Google.Protobuf.ByteString.CopyFrom (System.Byte[] bytes)
Nakama.NTopicJoinMessage+Builder.TopicDirectMessage (System.Byte[] userId) (at Assets/Nakama/Plugins/Nakama/NTopicJoinMessage.cs:73)
DemoScene.Player1JoinTopic () (at Assets/Nakama/Example/DemoScene.cs:225)
UnityEngine.Events.InvokableCall.Invoke (System.Object[] args) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:154)
UnityEngine.Events.InvokableCallList.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:637)
UnityEngine.Events.UnityEventBase.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:773)
UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:52)
UnityEngine.UI.Button.Press () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:35)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:44)
UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261)
UnityEngine.EventSystems.EventSystem:Update()

stream.State is null

Hi, this is with reference to the discussion we had on gitter, we are opening an issue for this.. We tried to read the message on a stream, the message was received but the state was null. Here are the details with sample code:

#Server Code
We subscribed a user to a stream through Lua code on server as follows:

local stream_id = { mode = 123, label = "my custom stream", subject = context.user_id }
local hidden = true
local persistence = false
nk.stream_user_join(context.user_id, context.session_id, stream_id, hidden, persistence)

Then we sent a message on this stream for the user:

local stream_id = { mode = 123, label = "my custom stream", subject = context.user_id }
local payload = nk.json_encode({ some = "Data" })
nk.stream_send(stream_id, payload)

#Client code
On Unity, we wrote the following code to process the message:

_socket.OnStreamState += _socket_OnStreamState; 

To receive message and inside

_socket_OnStreamState() {
    Debug.Log( (stream.State == null));
} 

This printed true, confirming that the stream.State received was null. Do let us know in case you need more info / logs / code on this.

Best,

Should we have simple demo for unity game

Hi,
I found it is awesome client - server support for Unity.
But it is still lack of document and demo. Would you please add some demo for the simple game, so we can study idea how to build a real game from it!
Thank so much!

Server dispatcher.broadcast_message() with nil data will disconnect client socket and raises an Exception

Sending message from server using nil in data parameter:
dispatcher.broadcast_message(101, nil, nil, nil)
will cause Unity socket to disconnect and raises the following exception:
ArgumentNullException: Value cannot be null.
Parameter name: s
System.Convert.FromBase64String (System.String s) (at :0)
Nakama.MatchState.get_State () (at <5d5477e0de7d4f1abb47203789b43738>:0)

Please note that this exception is not catched unless you execute the OnMatchState event in Unity main thread!

The only workaround now is to pass empty string "" if you don't want to send any data
dispatcher.broadcast_message(101, "", nil, nil)

Server version: Nakama 2.5.1
Client version: Unity 2.1.0

Dokumentation PDF Error Page 9

Error in the passage

Fetch Self
The client can retrieve the currently logged-in user data from Nakama. This data includes common
fields such as handle, fullname, avatar URL and timezone. Self will also include userโ€™s login
information such as a list of device IDs associated and their social IDs.

var message = NSelfFetchMessage.Default();
client.Send(message, (INSelf self) => {
    Debug.LogFormat ("The user's ID is '{0}'.", self.Id);
    Debug.LogFormat ("The user's fullname is '{0}'.", self.Fullname); // may be null
    Debug.LogFormat ("The user's handle is '{0}'.", user.Handle);
}, (INError error) =>
{
    Debug.LogErrorFormat ("Could not retrieve self: '{0}'.", error.Message);
});

user.Handle should be self.Handle.

NullReferenceException when using NLeaderBoarRecordsListMessage.FilterByOwnerIds()

Description

When filtering the leaderboards records with a list of user ids, by using the FilterByOwnerId() call, a NullReferenceException is thrown with the following (abridged) trace:
NullReferenceException: Object reference not set to an instance of an object Nakama.NLeaderboardRecordsListMessage+Builder.FilterByOwnerIds (IList'1 ownerIds) (at Assets/Extensions/Nakama/Plugins/Nakama/NLeaderboardRecordsListMessage.cs:79)

Workaround

This is caused when trying to access message.payload.LeaderboardRecordsList.OwnerIds.OwnerIds because message.payload.LeaderboardRecordsList.OwnerIds is actually null.
My ugly workaround is to prepend the loop (at NLeaderboardRecordsListMessage.cs:76) with a message.payload.LeaderboardRecordsList.OwnerIds = new TLeaderboardRecordsList.Types.Owners(); which seems to take care of the problem with no (visible) side effects.
If anyone knows a better workaround please let me know.

Environment

  • Custom build from latest (ab453fc) nakama-unity/master (but also present in the previous release)
  • Unity 5.6.1f1
  • MacOS Sierra 10.12.5

Fail on build with error: CS0535

It's error when I build

Platform: WebGL

Full error message

Assets\Plugins\Nakama\JsWebSocketAdapter.cs(32,39): error CS0535: 'JsWebSocketAdapter' does not implement interface member 'ISocketAdapter.Connect(Uri, int)'

CORS error when authenticating with wrong credentials (only on WebGL), behaves properly otherwise

CORS blocks XMLHttpRequest and throws No 'Access-Control-Allow-Origin' header is present on the requested resource..

Happens only on WebGL and when trying to authenticate with invalid credentials (e.g what should throw invalid e-mail format, incorrect password or other useful logs, instead throws a CORS error and no information about what actually failed).

Non-WebGL platforms throw proper ApiResponseException. PS: I assume this is not server-related as I use the same server for a Godot project. FWIW the WebGL version is hosted at: https://kag-rewritten.github.io/ (and code at respective repo) if you feel the description is not enough.

Synchronous API

Please provide synchronous version of the methods in the library.
It's hard to use async/await methods in new Unity ECS.

WebGL+Android+Docker?

Hello,
Thank you very much for this gem!

I installed Nakama as a docker server on the LAN (Mac because recent cassandra image is not working on Windows) and I try to access it from Android and WebGL (Chrome) client.

I tried UserChat example scene (and had to change it a little bit: player 1 registration and login was not working) but the WebGL client (using only Player2, Player1 is Android) ends with:

Uncaught TypeError: Cannot read property 'send' of undefined at _SendData (blob:http://localhost:63670/3b28ccc2-6816-417a-8188-adaa531e2bd6:9501:9) at _NTransportJavascript_SendData_m3909476563 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1893830:2) at _NTransportJavascript_SendAsync_m1688919634 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1595268:2) at _ZN23InterfaceActionInvoker3IP22ByteU5BU5D_t4116647657bP19Action_1_t269755560E6InvokeEjP11Il2CppClassP12Il2CppObjectS1_bS3 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1555785:47) at _NClient_Send_TisRuntimeObject_m2023337619_gshared (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:816809:2) at _ZN30GenericInterfaceActionInvoker3IP12Il2CppObjectP20Action_1_t1316537604P20Action_1_t3924635697E6InvokeEPK10MethodInfoS1_S1_S3_S5 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1493484:47) at _UserChat_Player1JoinTopic_m3795084677 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1435962:2) at _UnityAction_Invoke_m893829196 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1324099:32) at _InvokableCall_Invoke_m1437964737 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1946641:80) at _UnityEvent_Invoke_m3065672636 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1435345:10) at _Button_Press_m3424674057 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1731030:4) at _Button_OnPointerClick_m1993983012 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1994884:36) at _ZN23InterfaceActionInvoker1IP28PointerEventData_t3807901092E6InvokeEjP11Il2CppClassP12Il2CppObjectS1 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1591932:45) at _ExecuteEvents_Execute_m3613826831 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1683822:2) at _EventFunction_1_Invoke_m2429482587_gshared (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:956713:34) at dynCall_viiii (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1992488:33) at invoke_viiii (blob:http://localhost:63670/3b28ccc2-6816-417a-8188-adaa531e2bd6:16527:26) at _ExecuteEvents_Execute_TisRuntimeObject_m1952955951_gshared (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:592735:6) at _StandaloneInputModule_ProcessMousePress_m1928058611 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:510966:4) at _StandaloneInputModule_ProcessMouseEvent_m1568640827 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:990266:2) at _StandaloneInputModule_Process_m309156323 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1560295:93) at _EventSystem_Update_m1662072334 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:943079:53) at _Z31RuntimeInvoker_Void_t1185182177PFvvEPK10MethodInfoPvPS4 (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1983288:31) at dynCall_iiiii (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1985198:40) at invoke_iiiii (blob:http://localhost:63670/3b28ccc2-6816-417a-8188-adaa531e2bd6:16319:33) at __ZN6il2cpp2vm7Runtime6InvokeEPK10MethodInfoPvPS5_PP15Il2CppException (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1631082:8) at _il2cpp_runtime_invoke (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1884245:9) at __Z23scripting_method_invoke18ScriptingMethodPtr18ScriptingObjectPtrR18ScriptingArgumentsP21ScriptingExceptionPtrb (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1738067:8) at __ZN19ScriptingInvocation6InvokeEP21ScriptingExceptionPtrb (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1219894:7) at __ZN13MonoBehaviour16CallUpdateMethodEi (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1053069:4) at __ZN13MonoBehaviour6UpdateEv (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:2039040:2) at __ZN20BaseBehaviourManager12CommonUpdateI16BehaviourManagerEEvv (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:847642:71) at __ZN16BehaviourManager6UpdateEv (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1727076:2) at __ZZ23InitPlayerLoopCallbacksvEN41UpdateScriptRunBehaviourUpdateRegistrator7ForwardEv (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1651759:67) at __Z17ExecutePlayerLoopP22NativePlayerLoopSystem (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1114598:41) at __Z17ExecutePlayerLoopP22NativePlayerLoopSystem (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1114569:7) at __Z10PlayerLoopv (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1224403:2) at __ZL8MainLoopv (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:1028929:3) at dynCall_v (blob:http://localhost:63670/cd190a70-6b66-4420-bb17-9b1163e2e090:2054363:29) at browserIterationFunc (blob:http://localhost:63670/3b28ccc2-6816-417a-8188-adaa531e2bd6:2783:23) at Object.runIter (blob:http://localhost:63670/3b28ccc2-6816-417a-8188-adaa531e2bd6:2885:5) at Browser_mainLoop_runner (blob:http://localhost:63670/3b28ccc2-6816-417a-8188-adaa531e2bd6:2821:20)

SSL connection through Unity client doesn't work

Trying to connect to the nakama server via SSL in the Unity Editor doesn't work. Error is when you try to login/register:
ID login '' failed: NError(Code=Unknown,Message=Error getting response stream (Write: The authentication or decryption has failed.): SendFailure)

Breaks when using breakpoints in VS

When using breakpoints in visual studio and whilst in a topic or similar it makes user to disconnect ( which makes sense ). Not sure if there's a magic way to prevent that so it makes debugging easier.

Assembly BCCrypto could not be found error.

ArgumentException: The Assembly BCCrypto is referenced by Netcode.IO.NET ('Assets/Nakama/Plugins/Netcode.IO.NET.dll'). But the dll is not allowed to be included or could not be found.
UnityEditor.AssemblyHelper.AddReferencedAssembliesRecurse (System.String assemblyPath, System.Collections.Generic.List1 alreadyFoundAssemblies, System.String[] allAssemblyPaths, System.String[] foldersToSearch, System.Collections.Generic.Dictionary2 cache, BuildTarget target) (at C:/buildslave/unity/build/Editor/Mono/AssemblyHelper.cs:152)
UnityEditor.AssemblyHelper.AddReferencedAssembliesRecurse (System.String assemblyPath, System.Collections.Generic.List1 alreadyFoundAssemblies, System.String[] allAssemblyPaths, System.String[] foldersToSearch, System.Collections.Generic.Dictionary2 cache, BuildTarget target) (at C:/buildslave/unity/build/Editor/Mono/AssemblyHelper.cs:158)
UnityEditor.AssemblyHelper.FindAssembliesReferencedBy (System.String[] paths, System.String[] foldersToSearch, BuildTarget target) (at C:/buildslave/unity/build/Editor/Mono/AssemblyHelper.cs:192)
UnityEditor.BuildPlayerWindow:BuildPlayerAndRun()

NMatchDataSendMessage completed callback always return true

Hi. It's an issue that is discussed in Gitter. Post it here just for reference.
This is what I tested:
I started a match, disabled my internet connection, and sent a message to the match. Surprisingly completed callback got called with the value of true. I waited for OnDisconnected to get called, but after 60 seconds it didn't. So I turned internet connection back on, and then OnDisconnected fired.
Also found a similar issue here:
sta/websocket-sharp#305

Thanks.

WebGL does not compile.

I guess WebGL worked some time ago, but the most recent Asset Store version dpes not compile
because NTransportJavascript does not implement these (new?) methods:

    void SetOnClose(Action<SocketCloseEventArgs> OnClose);
    void SetOnError(Action<SocketErrorEventArgs> OnError);
    void SetOnMessage(Action<SocketMessageEventArgs> OnMessage);
    void SetOnOpen(Action OnOpen);

Null Reference

Running as UDP, got this null reference error when sending data. It was done whilst sending data as normal in the editor

NullReferenceException: Object reference not set to an instance of an object
ReliableNetcode.ReliableMessageChannel.SendMessage (System.Byte[] buffer, Int32 bufferLength)
ReliableNetcode.ReliableEndpoint.SendMessage (System.Byte[] buffer, Int32 bufferLength, QosType qos)
Nakama.NTransportUdp.SendAsync (System.Byte[] data, Boolean reliable, System.Action1 completed) (at Assets/Scripts/Nakama/Plugins/Nakama/NTransportUdp.cs:346) Nakama.NClient.Send (INUncollatedMessage message, Boolean reliable, System.Action1 callback, System.Action1 errback) (at Assets/Scripts/Nakama/Plugins/Nakama/NClient.cs:253) Nakama.NClient.Send (INUncollatedMessage message, System.Action1 callback, System.Action`1 errback) (at Assets/Scripts/Nakama/Plugins/Nakama/NClient.cs:268)

Problems building nakama-unity

I followed the given steps and...

git clone https://github.com/heroiclabs/nakama-unity.git
cd nakama-unity/
brew install gradle
brew install protobuf
brew install doxygen
gradle nugetRestore
gradle nunit
gradle unityPackage

The two last commands gave this error:

:nugetRestore
:protocExec
/Users/.../nakama-unity/server/server: warning: directory does not exist.
/Users/.../nakama-unity/server/server/api.proto: No such file or directory
:protocExec FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':protocExec'.
> Process 'command 'protoc'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 2.518 secs

So I ran:

gradle unityPackage --stacktrace --debug

And got:

19:47:23.933 [INFO] [org.gradle.internal.nativeintegration.services.NativeServices] Initialized native services in: /Users/ro/.gradle/native
19:47:24.413 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClient] Executing build 46332b21-9e7b-41fd-98a1-4019fd59b09f.1 in daemon client {pid=47473}
19:47:24.425 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding IP addresses for network interface utun3
19:47:24.426 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a loopback interface? false
19:47:24.426 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a multicast interface? true
19:47:24.429 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /fe80:0:0:0:a35e:1565:a1e6:73b6%utun3
19:47:24.429 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote multicast interface utun3
19:47:24.429 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding IP addresses for network interface utun2
19:47:24.429 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a loopback interface? false
19:47:24.429 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a multicast interface? true
19:47:24.429 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /fe80:0:0:0:c1b4:d6c3:604a:ff01%utun2
19:47:24.429 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote multicast interface utun2
19:47:24.429 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding IP addresses for network interface utun1
19:47:24.430 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a loopback interface? false
19:47:24.430 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a multicast interface? true
19:47:24.430 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /fe80:0:0:0:9557:d2c8:1418:5db9%utun1
19:47:24.430 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote multicast interface utun1
19:47:24.430 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding IP addresses for network interface utun0
19:47:24.430 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a loopback interface? false
19:47:24.430 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a multicast interface? true
19:47:24.430 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /fd61:e65a:e249:2625:d8be:2370:229a:c51a
19:47:24.430 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /fe80:0:0:0:d8be:2370:229a:c51a%utun0
19:47:24.431 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote multicast interface utun0
19:47:24.431 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding IP addresses for network interface en0
19:47:24.431 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a loopback interface? false
19:47:24.431 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a multicast interface? true
19:47:24.431 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /fe80:0:0:0:1022:5d0a:cdee:dde0%en0
19:47:24.431 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /192.168.1.10
19:47:24.431 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote multicast interface en0
19:47:24.431 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding IP addresses for network interface lo0
19:47:24.431 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a loopback interface? true
19:47:24.431 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a multicast interface? true
19:47:24.432 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Ignoring remote address on loopback interface /fe80:0:0:0:0:0:0:1%lo0
19:47:24.432 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding loopback address /0:0:0:0:0:0:0:1
19:47:24.432 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding loopback address /127.0.0.1
19:47:24.432 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding loopback multicast interface lo0
19:47:24.442 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
19:47:24.444 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
19:47:24.454 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
19:47:24.460 [DEBUG] [org.gradle.internal.remote.internal.inet.TcpOutgoingConnector] Attempting to connect to [4f55297b-3919-4af5-bdb6-9e5d019fca30 port:53912, addresses:[/0:0:0:0:0:0:0:1, /127.0.0.1]].
19:47:24.461 [DEBUG] [org.gradle.internal.remote.internal.inet.TcpOutgoingConnector] Trying to connect to address /0:0:0:0:0:0:0:1.
19:47:24.472 [DEBUG] [org.gradle.internal.remote.internal.inet.TcpOutgoingConnector] Connected to address /0:0:0:0:0:0:0:1:53912.
19:47:24.503 [INFO] [org.gradle.launcher.daemon.client.DaemonClient] Connected to daemon DaemonInfo{pid=46337, address=[4f55297b-3919-4af5-bdb6-9e5d019fca30 port:53912, addresses:[/0:0:0:0:0:0:0:1, /127.0.0.1]], state=Idle, lastBusy=1493333010997, context=DefaultDaemonContext[uid=452eaa01-d521-4168-8327-36e670b189f1,javaHome=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home,daemonRegistryDir=/Users/ro/.gradle/daemon,pid=46337,idleTimeout=10800000,daemonOpts=-XX:MaxPermSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant]}. Dispatching request Build{id=46332b21-9e7b-41fd-98a1-4019fd59b09f.1, currentDir=/Users/.../nakama-unity}.
19:47:24.503 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection] thread 1: dispatching class org.gradle.launcher.daemon.protocol.Build
19:47:24.554 [INFO] [org.gradle.launcher.daemon.client.DaemonClient] Received result org.gradle.launcher.daemon.protocol.BuildStarted@3370f42 from daemon DaemonInfo{pid=46337, address=[4f55297b-3919-4af5-bdb6-9e5d019fca30 port:53912, addresses:[/0:0:0:0:0:0:0:1, /127.0.0.1]], state=Idle, lastBusy=1493333010997, context=DefaultDaemonContext[uid=452eaa01-d521-4168-8327-36e670b189f1,javaHome=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home,daemonRegistryDir=/Users/ro/.gradle/daemon,pid=46337,idleTimeout=10800000,daemonOpts=-XX:MaxPermSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant]} (build should be starting).
19:47:24.548 [INFO] [org.gradle.launcher.daemon.server.exec.LogToClient] The client will now receive all logging from the daemon (pid: 46337). The daemon log file: /Users/ro/.gradle/daemon/3.5/daemon-46337.out.log
19:47:24.548 [INFO] [org.gradle.launcher.daemon.server.exec.LogAndCheckHealth] Starting 6th build in daemon [uptime: 15 mins 32.174 secs, performance: 100%, no major garbage collections]
19:47:24.549 [DEBUG] [org.gradle.launcher.daemon.server.exec.ExecuteBuild] The daemon has started executing the build.
19:47:24.549 [INFO] [org.gradle.launcher.daemon.server.exec.ExecuteBuild] Executing build with daemon context: DefaultDaemonContext[uid=452eaa01-d521-4168-8327-36e670b189f1,javaHome=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home,daemonRegistryDir=/Users/ro/.gradle/daemon,pid=46337,idleTimeout=10800000,daemonOpts=-XX:MaxPermSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant]
19:47:24.551 [INFO] [org.gradle.cache.internal.DefaultCacheAccess] Creating new cache for plugin-use-metadata, path /Users/ro/.gradle/caches/3.5/plugin-resolution/plugin-use-metadata.bin, access org.gradle.cache.internal.DefaultCacheAccess@4495c4dd
19:47:24.551 [INFO] [org.gradle.cache.internal.DefaultCacheAccess] Creating new cache for client-status, path /Users/ro/.gradle/caches/3.5/plugin-resolution/client-status.bin, access org.gradle.cache.internal.DefaultCacheAccess@4495c4dd
19:47:24.553 [INFO] [org.gradle.internal.buildevents.BuildLogger] Starting Build
19:47:24.553 [DEBUG] [org.gradle.internal.buildevents.BuildLogger] Gradle user home: /Users/ro/.gradle
19:47:24.553 [DEBUG] [org.gradle.internal.buildevents.BuildLogger] Current dir: /Users/.../nakama-unity
19:47:24.553 [DEBUG] [org.gradle.internal.buildevents.BuildLogger] Settings file: null
19:47:24.553 [DEBUG] [org.gradle.internal.buildevents.BuildLogger] Build file: null
19:47:24.554 [DEBUG] [org.gradle.initialization.buildsrc.BuildSourceBuilder] Starting to build the build sources.
19:47:24.554 [DEBUG] [org.gradle.initialization.buildsrc.BuildSourceBuilder] Gradle source dir does not exist. We leave.
19:47:24.554 [DEBUG] [org.gradle.initialization.DefaultGradlePropertiesLoader] Found env project properties: []
19:47:24.554 [DEBUG] [org.gradle.initialization.DefaultGradlePropertiesLoader] Found system project properties: []
19:47:24.556 [DEBUG] [org.gradle.initialization.ScriptEvaluatingSettingsProcessor] Timing: Processing settings took: 0.001 secs
19:47:24.556 [INFO] [org.gradle.internal.buildevents.BuildLogger] Settings evaluated using settings file '/master/settings.gradle'.
19:47:24.557 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element '<root>' from state Registered to Created
19:47:24.557 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element '<root>' to state Discovered.
19:47:24.557 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element '<root>' to state Created.
19:47:24.558 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks' (hidden = false)
19:47:24.558 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks' from state Registered to Created
19:47:24.558 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks' rule action Project.<init>.tasks()
19:47:24.558 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks using Project.<init>.tasks()
19:47:24.559 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks' to state Discovered.
19:47:24.559 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks' rule action Project.<init>.tasks()
19:47:24.559 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks using Project.<init>.tasks()
19:47:24.559 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks' to state Created.
19:47:24.559 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'serviceRegistry' (hidden = true)
19:47:24.560 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'buildDir' (hidden = true)
19:47:24.560 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'projectIdentifier' (hidden = true)
19:47:24.560 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'extensionContainer' (hidden = true)
19:47:24.560 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'fileOperations' (hidden = true)
19:47:24.560 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'sourceDirectorySetFactory' (hidden = true)
19:47:24.560 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'taskFactory' (hidden = true)
19:47:24.561 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'instantiator' (hidden = true)
19:47:24.561 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'typeConverter' (hidden = true)
19:47:24.561 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'nodeInitializerRegistry' (hidden = true)
19:47:24.561 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'structBindingsStore' (hidden = true)
19:47:24.561 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'proxyFactory' (hidden = true)
19:47:24.561 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'schemaStore' (hidden = true)
19:47:24.562 [DEBUG] [org.gradle.initialization.ProjectPropertySettingBuildLoader] Looking for project properties from: /Users/.../nakama-unity/gradle.properties
19:47:24.562 [DEBUG] [org.gradle.initialization.ProjectPropertySettingBuildLoader] project property file does not exists. We continue!
19:47:24.562 [INFO] [org.gradle.internal.buildevents.BuildLogger] Projects loaded. Root project using build file '/Users/.../nakama-unity/build.gradle'.
19:47:24.562 [INFO] [org.gradle.internal.buildevents.BuildLogger] Included projects: [root project 'nakama-unity']
19:47:24.563 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.init' (hidden = false)
19:47:24.563 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.wrapper' (hidden = false)
19:47:24.565 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.help' (hidden = false)
19:47:24.565 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.projects' (hidden = false)
19:47:24.565 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.tasks' (hidden = false)
19:47:24.565 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.properties' (hidden = false)
19:47:24.565 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.dependencyInsight' (hidden = false)
19:47:24.566 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.dependencies' (hidden = false)
19:47:24.566 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.buildEnvironment' (hidden = false)
19:47:24.566 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.components' (hidden = false)
19:47:24.566 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.model' (hidden = false)
19:47:24.566 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.dependentComponents' (hidden = false)
19:47:24.567 [INFO] [org.gradle.configuration.project.BuildScriptProcessor] Evaluating root project 'nakama-unity' using build file '/Users/.../nakama-unity/build.gradle'.
19:47:24.568 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Acquiring file lock for Plugin Resolution Cache (/Users/ro/.gradle/caches/3.5/plugin-resolution)
19:47:24.568 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire exclusive lock on Plugin Resolution Cache (/Users/ro/.gradle/caches/3.5/plugin-resolution).
19:47:24.568 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on Plugin Resolution Cache (/Users/ro/.gradle/caches/3.5/plugin-resolution).
19:47:24.569 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Opening cache plugin-use-metadata.bin (/Users/ro/.gradle/caches/3.5/plugin-resolution/plugin-use-metadata.bin)
19:47:24.571 [DEBUG] [org.gradle.api.internal.artifacts.mvnsettings.DefaultLocalMavenRepositoryLocator] No local repository in Settings file defined. Using default path: /Users/ro/.m2/repository
19:47:24.576 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Acquiring file lock for artifact cache (/Users/ro/.gradle/caches/modules-2)
19:47:24.576 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire exclusive lock on artifact cache (/Users/ro/.gradle/caches/modules-2).
19:47:24.576 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on artifact cache (/Users/ro/.gradle/caches/modules-2).
19:47:24.577 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.DefaultArtifactDependencyResolver] Resolving configuration ':classpath'
19:47:24.577 [DEBUG] [org.gradle.internal.resource.transport.http.JavaSystemPropertiesProxySettings] Found java system property 'http.nonProxyHosts': local|*.local|169.254/16|*.169.254/16|bugunildo|*.bugunildo. Will ignore proxy settings for these hosts.
19:47:24.577 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.memcache.InMemoryCachedRepositoryFactory] Creating new in-memory cache for repo 'maven' [c12d174581602785ab9b0cd255906120].
19:47:24.578 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration :nakama-unity:unspecified(classpath).
19:47:24.578 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency :nakama-unity:unspecified(classpath) -> dependency: com.ullink.gradle:gradle-msbuild-plugin:2.15 from-conf: classpath to-conf: null
19:47:24.578 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version com.ullink.gradle:gradle-msbuild-plugin:2.15
19:47:24.578 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for com.ullink.gradle:gradle-msbuild-plugin:2.15 using repositories [maven]
19:47:24.578 [INFO] [org.gradle.cache.internal.DefaultCacheAccess] Creating new cache for metadata-2.23/module-metadata, path /Users/ro/.gradle/caches/modules-2/metadata-2.23/module-metadata.bin, access org.gradle.cache.internal.DefaultCacheAccess@6030d71a
19:47:24.579 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Opening cache module-metadata.bin (/Users/ro/.gradle/caches/modules-2/metadata-2.23/module-metadata.bin)
19:47:24.581 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'com.ullink.gradle:gradle-msbuild-plugin:2.15' in 'maven'
19:47:24.581 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using com.ullink.gradle:gradle-msbuild-plugin:2.15 from Maven repository 'maven'
19:47:24.582 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency :nakama-unity:unspecified(classpath) -> dependency: com.ullink.gradle:gradle-nuget-plugin:2.14 from-conf: classpath to-conf: null
19:47:24.582 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version com.ullink.gradle:gradle-nuget-plugin:2.14
19:47:24.582 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for com.ullink.gradle:gradle-nuget-plugin:2.14 using repositories [maven]
19:47:24.583 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'com.ullink.gradle:gradle-nuget-plugin:2.14' in 'maven'
19:47:24.583 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using com.ullink.gradle:gradle-nuget-plugin:2.14 from Maven repository 'maven'
19:47:24.583 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency :nakama-unity:unspecified(classpath) -> dependency: com.ullink.gradle:gradle-nunit-plugin:1.9 from-conf: classpath to-conf: null
19:47:24.583 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version com.ullink.gradle:gradle-nunit-plugin:1.9
19:47:24.583 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for com.ullink.gradle:gradle-nunit-plugin:1.9 using repositories [maven]
19:47:24.584 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'com.ullink.gradle:gradle-nunit-plugin:1.9' in 'maven'
19:47:24.584 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using com.ullink.gradle:gradle-nunit-plugin:1.9 from Maven repository 'maven'
19:47:24.584 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration com.ullink.gradle:gradle-msbuild-plugin:2.15(default).
19:47:24.584 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency com.ullink.gradle:gradle-msbuild-plugin:2.15(default) -> dependency: net.java.dev.jna:jna:3.5.0, scope: Runtime, optional: false
19:47:24.584 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version net.java.dev.jna:jna:3.5.0
19:47:24.585 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for net.java.dev.jna:jna:3.5.0 using repositories [maven]
19:47:24.585 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'net.java.dev.jna:jna:3.5.0' in 'maven'
19:47:24.585 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using net.java.dev.jna:jna:3.5.0 from Maven repository 'maven'
19:47:24.586 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency com.ullink.gradle:gradle-msbuild-plugin:2.15(default) -> dependency: net.java.dev.jna:platform:3.5.0, scope: Runtime, optional: false
19:47:24.586 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version net.java.dev.jna:platform:3.5.0
19:47:24.586 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for net.java.dev.jna:platform:3.5.0 using repositories [maven]
19:47:24.586 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'net.java.dev.jna:platform:3.5.0' in 'maven'
19:47:24.587 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using net.java.dev.jna:platform:3.5.0 from Maven repository 'maven'
19:47:24.587 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency com.ullink.gradle:gradle-msbuild-plugin:2.15(default) -> dependency: com.google.guava:guava:16.0.1, scope: Runtime, optional: false
19:47:24.587 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version com.google.guava:guava:16.0.1
19:47:24.587 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for com.google.guava:guava:16.0.1 using repositories [maven]
19:47:24.588 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'com.google.guava:guava:16.0.1' in 'maven'
19:47:24.588 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using com.google.guava:guava:16.0.1 from Maven repository 'maven'
19:47:24.588 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency com.ullink.gradle:gradle-msbuild-plugin:2.15(default) -> dependency: commons-io:commons-io:2.4, scope: Runtime, optional: false
19:47:24.588 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version commons-io:commons-io:2.4
19:47:24.588 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for commons-io:commons-io:2.4 using repositories [maven]
19:47:24.589 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'commons-io:commons-io:2.4' in 'maven'
19:47:24.589 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using commons-io:commons-io:2.4 from Maven repository 'maven'
19:47:24.589 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration com.ullink.gradle:gradle-nuget-plugin:2.14(default).
19:47:24.590 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration com.ullink.gradle:gradle-nunit-plugin:1.9(default).
19:47:24.590 [DEBUG] 
```[org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency com.ullink.gradle:gradle-nunit-plugin:1.9(default) -> dependency: org.apache.httpcomponents:httpclient:4.5.2, scope: Runtime, optional: false
19:47:24.590 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version org.apache.httpcomponents:httpclient:4.5.2
19:47:24.590 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for org.apache.httpcomponents:httpclient:4.5.2 using repositories [maven]
19:47:24.591 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'org.apache.httpcomponents:httpclient:4.5.2' in 'maven'
19:47:24.591 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using org.apache.httpcomponents:httpclient:4.5.2 from Maven repository 'maven'
19:47:24.591 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency com.ullink.gradle:gradle-nunit-plugin:1.9(default) -> dependency: de.undercouch:gradle-download-task:3.1.1, scope: Runtime, optional: false
19:47:24.591 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version de.undercouch:gradle-download-task:3.1.1
19:47:24.591 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for de.undercouch:gradle-download-task:3.1.1 using repositories [maven]
19:47:24.592 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'de.undercouch:gradle-download-task:3.1.1' in 'maven'
19:47:24.593 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using de.undercouch:gradle-download-task:3.1.1 from Maven repository 'maven'
19:47:24.593 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency com.ullink.gradle:gradle-nunit-plugin:1.9(default) -> dependency: org.codehaus.gpars:gpars:1.2.1, scope: Runtime, optional: false
19:47:24.593 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version org.codehaus.gpars:gpars:1.2.1
19:47:24.593 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for org.codehaus.gpars:gpars:1.2.1 using repositories [maven]
19:47:24.594 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'org.codehaus.gpars:gpars:1.2.1' in 'maven'
19:47:24.594 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using org.codehaus.gpars:gpars:1.2.1 from Maven repository 'maven'
19:47:24.594 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration net.java.dev.jna:jna:3.5.0(runtime).
19:47:24.594 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration net.java.dev.jna:platform:3.5.0(runtime).
19:47:24.595 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency net.java.dev.jna:platform:3.5.0(runtime) -> dependency: net.java.dev.jna:jna:3.5.0, scope: Compile, optional: false
19:47:24.595 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration com.google.guava:guava:16.0.1(runtime).
19:47:24.595 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration commons-io:commons-io:2.4(runtime).
19:47:24.595 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration org.apache.httpcomponents:httpclient:4.5.2(runtime).
19:47:24.595 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency org.apache.httpcomponents:httpclient:4.5.2(runtime) -> dependency: org.apache.httpcomponents:httpcore:4.4.4, scope: Compile, optional: false
19:47:24.595 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version org.apache.httpcomponents:httpcore:4.4.4
19:47:24.596 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for org.apache.httpcomponents:httpcore:4.4.4 using repositories [maven]
19:47:24.597 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'org.apache.httpcomponents:httpcore:4.4.4' in 'maven'
19:47:24.597 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using org.apache.httpcomponents:httpcore:4.4.4 from Maven repository 'maven'
19:47:24.597 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency org.apache.httpcomponents:httpclient:4.5.2(runtime) -> dependency: commons-logging:commons-logging:1.2, scope: Compile, optional: false
19:47:24.597 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version commons-logging:commons-logging:1.2
19:47:24.597 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for commons-logging:commons-logging:1.2 using repositories [maven]
19:47:24.598 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'commons-logging:commons-logging:1.2' in 'maven'
19:47:24.598 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using commons-logging:commons-logging:1.2 from Maven repository 'maven'
19:47:24.598 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency org.apache.httpcomponents:httpclient:4.5.2(runtime) -> dependency: commons-codec:commons-codec:1.9, scope: Compile, optional: false
19:47:24.599 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version commons-codec:commons-codec:1.9
19:47:24.599 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for commons-codec:commons-codec:1.9 using repositories [maven]
19:47:24.599 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'commons-codec:commons-codec:1.9' in 'maven'
19:47:24.599 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using commons-codec:commons-codec:1.9 from Maven repository 'maven'
19:47:24.599 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration de.undercouch:gradle-download-task:3.1.1(runtime).
19:47:24.600 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency de.undercouch:gradle-download-task:3.1.1(runtime) -> dependency: org.apache.httpcomponents:httpclient:4.4.1, scope: Compile, optional: false
19:47:24.600 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Found new conflicting module version org.apache.httpcomponents:httpclient:4.4.1
19:47:24.600 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration org.codehaus.gpars:gpars:1.2.1(runtime).
19:47:24.600 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency org.codehaus.gpars:gpars:1.2.1(runtime) -> dependency: org.multiverse:multiverse-core:0.7.0, scope: Compile, optional: false
19:47:24.600 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version org.multiverse:multiverse-core:0.7.0
19:47:24.600 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for org.multiverse:multiverse-core:0.7.0 using repositories [maven]
19:47:24.601 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'org.multiverse:multiverse-core:0.7.0' in 'maven'
19:47:24.601 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using org.multiverse:multiverse-core:0.7.0 from Maven repository 'maven'
19:47:24.602 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency org.codehaus.gpars:gpars:1.2.1(runtime) -> dependency: org.codehaus.jsr166-mirror:jsr166y:1.7.0, scope: Compile, optional: false
19:47:24.602 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Selecting new module version org.codehaus.jsr166-mirror:jsr166y:1.7.0
19:47:24.602 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Attempting to resolve component for org.codehaus.jsr166-mirror:jsr166y:1.7.0 using repositories [maven]
19:47:24.603 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Using cached module metadata for module 'org.codehaus.jsr166-mirror:jsr166y:1.7.0' in 'maven'
19:47:24.603 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver] Using org.codehaus.jsr166-mirror:jsr166y:1.7.0 from Maven repository 'maven'
19:47:24.603 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration net.java.dev.jna:jna:3.5.0(runtime).
19:47:24.603 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Changed edges for net.java.dev.jna:jna:3.5.0(runtime) selects same versions as previous traversal. ignoring
19:47:24.603 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration org.apache.httpcomponents:httpcore:4.4.4(runtime).
19:47:24.603 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] org.apache.httpcomponents:httpcore:4.4.4(runtime) has no incoming edges. ignoring.
19:47:24.603 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration commons-logging:commons-logging:1.2(runtime).
19:47:24.603 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] commons-logging:commons-logging:1.2(runtime) has no incoming edges. ignoring.
19:47:24.604 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration commons-codec:commons-codec:1.9(runtime).
19:47:24.604 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] commons-codec:commons-codec:1.9(runtime) has no incoming edges. ignoring.
19:47:24.604 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration org.multiverse:multiverse-core:0.7.0(runtime).
19:47:24.604 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration org.codehaus.jsr166-mirror:jsr166y:1.7.0(runtime).
19:47:24.604 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.conflicts.DefaultConflictHandler] Selected org.apache.httpcomponents:httpclient:4.5.2 from conflicting modules [org.apache.httpcomponents:httpclient:4.5.2, org.apache.httpcomponents:httpclient:4.4.1].
19:47:24.604 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration org.apache.httpcomponents:httpclient:4.5.2(runtime).
19:47:24.604 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency org.apache.httpcomponents:httpclient:4.5.2(runtime) -> dependency: org.apache.httpcomponents:httpcore:4.4.4, scope: Compile, optional: false
19:47:24.605 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency org.apache.httpcomponents:httpclient:4.5.2(runtime) -> dependency: commons-logging:commons-logging:1.2, scope: Compile, optional: false
19:47:24.605 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting dependency org.apache.httpcomponents:httpclient:4.5.2(runtime) -> dependency: commons-codec:commons-codec:1.9, scope: Compile, optional: false
19:47:24.605 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration org.apache.httpcomponents:httpcore:4.4.4(runtime).
19:47:24.605 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration commons-logging:commons-logging:1.2(runtime).
19:47:24.605 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphBuilder] Visiting configuration commons-codec:commons-codec:1.9(runtime).
19:47:24.606 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.oldresult.TransientConfigurationResultsBuilder] Flushing resolved configuration data in Binary store in /private/var/folders/wc/3ll_c3ss7px8y8n6tlccchhw0000gn/T/gradle8437170636862536295.bin. Wrote root 2.
19:47:24.607 [INFO] [org.gradle.cache.internal.DefaultCacheAccess] Creating new cache for metadata-2.23/artifact-at-repository, path /Users/ro/.gradle/caches/modules-2/metadata-2.23/artifact-at-repository.bin, access org.gradle.cache.internal.DefaultCacheAccess@6030d71a
19:47:24.607 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Opening cache artifact-at-repository.bin (/Users/ro/.gradle/caches/modules-2/metadata-2.23/artifact-at-repository.bin)
19:47:24.609 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'gradle-msbuild-plugin.jar (com.ullink.gradle:gradle-msbuild-plugin:2.15)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/com.ullink.gradle/gradle-msbuild-plugin/2.15/6776cae5bfe29c5f1050de5fe867736001bc5def/gradle-msbuild-plugin-2.15.jar
19:47:24.609 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'gradle-nuget-plugin.jar (com.ullink.gradle:gradle-nuget-plugin:2.14)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/com.ullink.gradle/gradle-nuget-plugin/2.14/3d92ababdc16989fbbd4aacbad1c373c86c6f68c/gradle-nuget-plugin-2.14.jar
19:47:24.609 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'gradle-nunit-plugin.jar (com.ullink.gradle:gradle-nunit-plugin:1.9)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/com.ullink.gradle/gradle-nunit-plugin/1.9/56ad8c9eb1ca5245dc58eab8b567e66064c20ceb/gradle-nunit-plugin-1.9.jar
19:47:24.609 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'jna.jar (net.java.dev.jna:jna:3.5.0)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/net.java.dev.jna/jna/3.5.0/cee527b55cbbf0e2a92b8584fff8125daf8cfe2e/jna-3.5.0.jar
19:47:24.610 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'platform.jar (net.java.dev.jna:platform:3.5.0)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/net.java.dev.jna/platform/3.5.0/e494cdabbe649d4a660d6fb259d89d21fbd69cca/platform-3.5.0.jar
19:47:24.610 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'guava.jar (com.google.guava:guava:16.0.1)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/16.0.1/5fa98cd1a63c99a44dd8d3b77e4762b066a5d0c5/guava-16.0.1.jar
19:47:24.610 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'commons-io.jar (commons-io:commons-io:2.4)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.4/b1b6ea3b7e4aa4f492509a4952029cd8e48019ad/commons-io-2.4.jar
19:47:24.610 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'httpclient.jar (org.apache.httpcomponents:httpclient:4.5.2)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpclient/4.5.2/733db77aa8d9b2d68015189df76ab06304406e50/httpclient-4.5.2.jar
19:47:24.611 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'gradle-download-task.jar (de.undercouch:gradle-download-task:3.1.1)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/de.undercouch/gradle-download-task/3.1.1/f6a01bd6f62867b056459d63fc66040b7c43e45e/gradle-download-task-3.1.1.jar
19:47:24.611 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'gpars.jar (org.codehaus.gpars:gpars:1.2.1)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/org.codehaus.gpars/gpars/1.2.1/c3ea0fbcd67a163bd5e3a3efdaa3428262d0d437/gpars-1.2.1.jar
19:47:24.611 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'httpcore.jar (org.apache.httpcomponents:httpcore:4.4.4)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.4.4/b31526a230871fbe285fbcbe2813f9c0839ae9b0/httpcore-4.4.4.jar
19:47:24.612 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'commons-logging.jar (commons-logging:commons-logging:1.2)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.2/4bfc12adfe4842bf07b657f0369c4cb522955686/commons-logging-1.2.jar
19:47:24.612 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'commons-codec.jar (commons-codec:commons-codec:1.9)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/commons-codec/commons-codec/1.9/9ce04e34240f674bc72680f8b843b1457383161a/commons-codec-1.9.jar
19:47:24.612 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'multiverse-core.jar (org.multiverse:multiverse-core:0.7.0)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/org.multiverse/multiverse-core/0.7.0/db77d55199bc5672f05f5d725b70dd10033251ed/multiverse-core-0.7.0.jar
19:47:24.612 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository] Found artifact 'jsr166y.jar (org.codehaus.jsr166-mirror:jsr166y:1.7.0)' in resolver cache: /Users/ro/.gradle/caches/modules-2/files-2.1/org.codehaus.jsr166-mirror/jsr166y/1.7.0/8547fcb1c29b4f8c745c3f49a536aca58fc30f54/jsr166y-1.7.0.jar
19:47:24.616 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.clean' (hidden = false)
19:47:24.617 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.assemble' (hidden = false)
19:47:24.617 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.check' (hidden = false)
19:47:24.617 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.build' (hidden = false)
19:47:24.618 [INFO] [org.gradle.cache.internal.DefaultCacheAccess] Creating new cache for fileHashes, path /Users/.../nakama-unity/.gradle/3.5/taskHistory/fileHashes.bin, access org.gradle.cache.internal.DefaultCacheAccess@29aa7550
19:47:24.619 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Acquiring file lock for task history cache (/Users/.../nakama-unity/.gradle/3.5/taskHistory)
19:47:24.619 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire exclusive lock on task history cache (/Users/.../nakama-unity/.gradle/3.5/taskHistory).
19:47:24.620 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on task history cache (/Users/.../nakama-unity/.gradle/3.5/taskHistory).
19:47:24.621 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.assemble' from state Registered to Initialized
19:47:24.622 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.assemble' rule action tasks.addPlaceholderAction(assemble)
19:47:24.622 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.assemble using tasks.addPlaceholderAction(assemble)
19:47:24.622 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.assemble' to state Discovered.
19:47:24.622 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.assemble' rule action tasks.addPlaceholderAction(assemble)
19:47:24.622 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.assemble using tasks.addPlaceholderAction(assemble)
19:47:24.623 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.assemble' to state Created.
19:47:24.623 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.assemble' to state DefaultsApplied.
19:47:24.623 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.assemble' rule action copyToTaskContainer
19:47:24.623 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.assemble using copyToTaskContainer
19:47:24.623 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.assemble' to state Initialized.
19:47:24.624 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.msbuild' (hidden = false)
19:47:24.625 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.clean' from state Registered to Initialized
19:47:24.625 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.clean' rule action tasks.addPlaceholderAction(clean)
19:47:24.625 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.clean using tasks.addPlaceholderAction(clean)
19:47:24.625 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.clean' to state Discovered.
19:47:24.625 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.clean' rule action tasks.addPlaceholderAction(clean)
19:47:24.625 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.clean using tasks.addPlaceholderAction(clean)
19:47:24.626 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.clean' to state Created.
19:47:24.626 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.clean' to state DefaultsApplied.
19:47:24.626 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.clean' rule action copyToTaskContainer
19:47:24.627 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.clean using copyToTaskContainer
19:47:24.627 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.clean' to state Initialized.
19:47:24.627 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.cleanMsbuild' (hidden = false)
19:47:24.628 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.assemblyInfoPatcher' (hidden = false)
19:47:24.634 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.nugetRestore' (hidden = false)
19:47:24.635 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.nugetSpec' (hidden = false)
19:47:24.638 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.nugetPack' (hidden = false)
19:47:24.639 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.nugetPush' (hidden = false)
19:47:24.643 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.nunit' (hidden = false)
19:47:24.658 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.protocExec' (hidden = false)
19:47:24.668 [INFO] [org.gradle.api.Task] Parsing file /Users/.../nakama-unity/Nakama.sln ...
19:47:25.549 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.genDocs' (hidden = false)
19:47:25.550 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.unityPackage' (hidden = false)
19:47:25.551 [DEBUG] [org.gradle.configuration.project.BuildScriptProcessor] Timing: Running the build script took 0.984 secs
19:47:25.569 [INFO] [org.gradle.internal.buildevents.BuildLogger] All projects evaluated.
19:47:25.569 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Acquiring file lock for Build Output Cleanup Cache (/Users/.../nakama-unity/.gradle/buildOutputCleanup)
19:47:25.570 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire exclusive lock on Build Output Cleanup Cache (/Users/.../nakama-unity/.gradle/buildOutputCleanup).
19:47:25.570 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on Build Output Cleanup Cache (/Users/.../nakama-unity/.gradle/buildOutputCleanup).
19:47:25.571 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for Build Output Cleanup Cache (/Users/.../nakama-unity/.gradle/buildOutputCleanup)
19:47:25.571 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on Build Output Cleanup Cache (/Users/.../nakama-unity/.gradle/buildOutputCleanup).
19:47:25.571 [INFO] [org.gradle.internal.operations.DefaultBuildOperationWorkerRegistry] Using 8 worker leases.
19:47:25.572 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks' from state Created to SelfClosed
19:47:25.572 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks' to state DefaultsApplied.
19:47:25.572 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks' to state Initialized.
19:47:25.572 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks' to state Mutated.
19:47:25.572 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks' to state Finalized.
19:47:25.572 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks' to state SelfClosed.
19:47:25.572 [INFO] [org.gradle.execution.TaskNameResolvingBuildConfigurationAction] Selected primary task 'unityPackage' from project :
19:47:25.572 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.unityPackage' from state Registered to GraphClosed
19:47:25.572 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.unityPackage' rule action Project.<init>.tasks.unityPackage()
19:47:25.572 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.unityPackage using Project.<init>.tasks.unityPackage()
19:47:25.573 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.unityPackage' to state Discovered.
19:47:25.573 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.unityPackage' rule action Project.<init>.tasks.unityPackage()
19:47:25.573 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.unityPackage using Project.<init>.tasks.unityPackage()
19:47:25.573 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.unityPackage' to state Created.
19:47:25.573 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.unityPackage' to state DefaultsApplied.
19:47:25.573 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.unityPackage' rule action copyToTaskContainer
19:47:25.573 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.unityPackage using copyToTaskContainer
19:47:25.573 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.unityPackage' to state Initialized.
19:47:25.573 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.unityPackage' to state Mutated.
19:47:25.573 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.unityPackage' to state Finalized.
19:47:25.573 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.unityPackage' to state SelfClosed.
19:47:25.573 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.unityPackage' to state GraphClosed.
19:47:25.574 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.msbuild' from state Registered to GraphClosed
19:47:25.574 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.msbuild' rule action Project.<init>.tasks.msbuild()
19:47:25.574 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.msbuild using Project.<init>.tasks.msbuild()
19:47:25.574 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.msbuild' to state Discovered.
19:47:25.574 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.msbuild' rule action Project.<init>.tasks.msbuild()
19:47:25.574 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.msbuild using Project.<init>.tasks.msbuild()
19:47:25.574 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.msbuild' to state Created.
19:47:25.574 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.msbuild' to state DefaultsApplied.
19:47:25.574 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.msbuild' rule action copyToTaskContainer
19:47:25.575 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.msbuild using copyToTaskContainer
19:47:25.575 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.msbuild' to state Initialized.
19:47:25.575 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.msbuild' to state Mutated.
19:47:25.575 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.msbuild' to state Finalized.
19:47:25.575 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.msbuild' to state SelfClosed.
19:47:25.575 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.msbuild' to state GraphClosed.
19:47:25.575 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.nugetRestore' from state Registered to GraphClosed
19:47:25.575 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.nugetRestore' rule action Project.<init>.tasks.nugetRestore()
19:47:25.576 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.nugetRestore using Project.<init>.tasks.nugetRestore()
19:47:25.576 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.nugetRestore' to state Discovered.
19:47:25.576 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.nugetRestore' rule action Project.<init>.tasks.nugetRestore()
19:47:25.576 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.nugetRestore using Project.<init>.tasks.nugetRestore()
19:47:25.576 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.nugetRestore' to state Created.
19:47:25.576 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.nugetRestore' to state DefaultsApplied.
19:47:25.576 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.nugetRestore' rule action copyToTaskContainer
19:47:25.576 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.nugetRestore using copyToTaskContainer
19:47:25.576 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.nugetRestore' to state Initialized.
19:47:25.576 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.nugetRestore' to state Mutated.
19:47:25.577 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.nugetRestore' to state Finalized.
19:47:25.577 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.nugetRestore' to state SelfClosed.
19:47:25.577 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.nugetRestore' to state GraphClosed.
19:47:25.577 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.protocExec' from state Registered to GraphClosed
19:47:25.577 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.protocExec' rule action Project.<init>.tasks.protocExec()
19:47:25.577 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.protocExec using Project.<init>.tasks.protocExec()
19:47:25.577 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.protocExec' to state Discovered.
19:47:25.577 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.protocExec' rule action Project.<init>.tasks.protocExec()
19:47:25.577 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.protocExec using Project.<init>.tasks.protocExec()
19:47:25.577 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.protocExec' to state Created.
19:47:25.577 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.protocExec' to state DefaultsApplied.
19:47:25.578 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.protocExec' rule action copyToTaskContainer
19:47:25.578 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.protocExec using copyToTaskContainer
19:47:25.578 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.protocExec' to state Initialized.
19:47:25.578 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.protocExec' to state Mutated.
19:47:25.578 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.protocExec' to state Finalized.
19:47:25.578 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.protocExec' to state SelfClosed.
19:47:25.578 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.protocExec' to state GraphClosed.
19:47:25.578 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskGraphExecuter] Timing: Creating the DAG took 0.006 secs
19:47:25.578 [INFO] [org.gradle.internal.buildevents.BuildLogger] Tasks to be executed: [task ':nugetRestore', task ':protocExec', task ':msbuild', task ':unityPackage']
19:47:25.579 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'buildDir' rule action Project.<init>.buildDir()
19:47:25.579 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating buildDir using Project.<init>.buildDir()
19:47:25.579 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'buildDir' to state Discovered.
19:47:25.579 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'extensionContainer' rule action Project.<init>.extensionContainer()
19:47:25.579 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating extensionContainer using Project.<init>.extensionContainer()
19:47:25.579 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'extensionContainer' to state Discovered.
19:47:25.579 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'fileOperations' rule action DefaultProject.BasicServicesRules#fileOperations(ServiceRegistry)
19:47:25.579 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating fileOperations using DefaultProject.BasicServicesRules#fileOperations(ServiceRegistry)
19:47:25.579 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'fileOperations' to state Discovered.
19:47:25.580 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'instantiator' rule action DefaultProject.BasicServicesRules#instantiator(ServiceRegistry)
19:47:25.580 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating instantiator using DefaultProject.BasicServicesRules#instantiator(ServiceRegistry)
19:47:25.580 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'instantiator' to state Discovered.
19:47:25.580 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'nodeInitializerRegistry' rule action DefaultProject.BasicServicesRules#nodeInitializerRegistry(ModelSchemaStore, StructBindingsStore)
19:47:25.580 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating nodeInitializerRegistry using DefaultProject.BasicServicesRules#nodeInitializerRegistry(ModelSchemaStore, StructBindingsStore)
19:47:25.580 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'nodeInitializerRegistry' to state Discovered.
19:47:25.580 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'projectIdentifier' rule action Project.<init>.projectIdentifier()
19:47:25.580 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating projectIdentifier using Project.<init>.projectIdentifier()
19:47:25.580 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'projectIdentifier' to state Discovered.
19:47:25.581 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'proxyFactory' rule action DefaultProject.BasicServicesRules#proxyFactory(ServiceRegistry)
19:47:25.581 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating proxyFactory using DefaultProject.BasicServicesRules#proxyFactory(ServiceRegistry)
19:47:25.581 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'proxyFactory' to state Discovered.
19:47:25.581 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'schemaStore' rule action DefaultProject.BasicServicesRules#schemaStore(ServiceRegistry)
19:47:25.581 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating schemaStore using DefaultProject.BasicServicesRules#schemaStore(ServiceRegistry)
19:47:25.581 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'schemaStore' to state Discovered.
19:47:25.581 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'serviceRegistry' rule action Project.<init>.serviceRegistry()
19:47:25.581 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating serviceRegistry using Project.<init>.serviceRegistry()
19:47:25.581 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'serviceRegistry' to state Discovered.
19:47:25.582 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'sourceDirectorySetFactory' rule action DefaultProject.BasicServicesRules#sourceDirectorySetFactory(ServiceRegistry)
19:47:25.582 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating sourceDirectorySetFactory using DefaultProject.BasicServicesRules#sourceDirectorySetFactory(ServiceRegistry)
19:47:25.582 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'sourceDirectorySetFactory' to state Discovered.
19:47:25.582 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'structBindingsStore' rule action DefaultProject.BasicServicesRules#structBindingsStore(ServiceRegistry)
19:47:25.582 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating structBindingsStore using DefaultProject.BasicServicesRules#structBindingsStore(ServiceRegistry)
19:47:25.582 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'structBindingsStore' to state Discovered.
19:47:25.582 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'taskFactory' rule action DefaultProject.BasicServicesRules#taskFactory(ServiceRegistry)
19:47:25.582 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating taskFactory using DefaultProject.BasicServicesRules#taskFactory(ServiceRegistry)
19:47:25.583 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'taskFactory' to state Discovered.
19:47:25.583 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.assemblyInfoPatcher' rule action Project.<init>.tasks.assemblyInfoPatcher()
19:47:25.583 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.assemblyInfoPatcher using Project.<init>.tasks.assemblyInfoPatcher()
19:47:25.583 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.assemblyInfoPatcher' to state Discovered.
19:47:25.583 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.build' rule action tasks.addPlaceholderAction(build)
19:47:25.583 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.build using tasks.addPlaceholderAction(build)
19:47:25.583 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.build' to state Discovered.
19:47:25.584 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.buildEnvironment' rule action tasks.addPlaceholderAction(buildEnvironment)
19:47:25.584 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.buildEnvironment using tasks.addPlaceholderAction(buildEnvironment)
19:47:25.584 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.buildEnvironment' to state Discovered.
19:47:25.584 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.check' rule action tasks.addPlaceholderAction(check)
19:47:25.584 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.check using tasks.addPlaceholderAction(check)
19:47:25.584 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.check' to state Discovered.
19:47:25.584 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.cleanMsbuild' rule action Project.<init>.tasks.cleanMsbuild()
19:47:25.584 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.cleanMsbuild using Project.<init>.tasks.cleanMsbuild()
19:47:25.585 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.cleanMsbuild' to state Discovered.
19:47:25.585 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.components' rule action tasks.addPlaceholderAction(components)
19:47:25.585 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.components using tasks.addPlaceholderAction(components)
19:47:25.585 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.components' to state Discovered.
19:47:25.585 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.dependencies' rule action tasks.addPlaceholderAction(dependencies)
19:47:25.585 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.dependencies using tasks.addPlaceholderAction(dependencies)
19:47:25.586 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.dependencies' to state Discovered.
19:47:25.586 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.dependencyInsight' rule action tasks.addPlaceholderAction(dependencyInsight)
19:47:25.586 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.dependencyInsight using tasks.addPlaceholderAction(dependencyInsight)
19:47:25.586 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.dependencyInsight' to state Discovered.
19:47:25.586 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.dependentComponents' rule action tasks.addPlaceholderAction(dependentComponents)
19:47:25.587 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.dependentComponents using tasks.addPlaceholderAction(dependentComponents)
19:47:25.587 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.dependentComponents' to state Discovered.
19:47:25.587 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.genDocs' rule action Project.<init>.tasks.genDocs()
19:47:25.587 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.genDocs using Project.<init>.tasks.genDocs()
19:47:25.587 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.genDocs' to state Discovered.
19:47:25.587 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.help' rule action tasks.addPlaceholderAction(help)
19:47:25.588 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.help using tasks.addPlaceholderAction(help)
19:47:25.588 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.help' to state Discovered.
19:47:25.588 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.init' rule action tasks.addPlaceholderAction(init)
19:47:25.588 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.init using tasks.addPlaceholderAction(init)
19:47:25.588 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.init' to state Discovered.
19:47:25.589 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.model' rule action tasks.addPlaceholderAction(model)
19:47:25.589 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.model using tasks.addPlaceholderAction(model)
19:47:25.589 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.model' to state Discovered.
19:47:25.589 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.nugetPack' rule action Project.<init>.tasks.nugetPack()
19:47:25.589 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.nugetPack using Project.<init>.tasks.nugetPack()
19:47:25.589 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.nugetPack' to state Discovered.
19:47:25.589 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.nugetPush' rule action Project.<init>.tasks.nugetPush()
19:47:25.590 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.nugetPush using Project.<init>.tasks.nugetPush()
19:47:25.590 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.nugetPush' to state Discovered.
19:47:25.590 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.nugetSpec' rule action Project.<init>.tasks.nugetSpec()
19:47:25.590 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.nugetSpec using Project.<init>.tasks.nugetSpec()
19:47:25.590 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.nugetSpec' to state Discovered.
19:47:25.590 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.nunit' rule action Project.<init>.tasks.nunit()
19:47:25.590 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.nunit using Project.<init>.tasks.nunit()
19:47:25.590 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.nunit' to state Discovered.
19:47:25.591 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.projects' rule action tasks.addPlaceholderAction(projects)
19:47:25.591 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.projects using tasks.addPlaceholderAction(projects)
19:47:25.591 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.projects' to state Discovered.
19:47:25.591 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.properties' rule action tasks.addPlaceholderAction(properties)
19:47:25.591 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.properties using tasks.addPlaceholderAction(properties)
19:47:25.591 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.properties' to state Discovered.
19:47:25.591 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.tasks' rule action tasks.addPlaceholderAction(tasks)
19:47:25.592 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.tasks using tasks.addPlaceholderAction(tasks)
19:47:25.592 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.tasks' to state Discovered.
19:47:25.592 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'tasks.wrapper' rule action tasks.addPlaceholderAction(wrapper)
19:47:25.592 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating tasks.wrapper using tasks.addPlaceholderAction(wrapper)
19:47:25.592 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'tasks.wrapper' to state Discovered.
19:47:25.592 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Running model element 'typeConverter' rule action DefaultProject.BasicServicesRules#typeConverter(ServiceRegistry)
19:47:25.592 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Mutating typeConverter using DefaultProject.BasicServicesRules#typeConverter(ServiceRegistry)
19:47:25.592 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Transitioning model element 'typeConverter' to state Discovered.
19:47:25.593 [INFO] [org.gradle.cache.internal.DefaultCacheAccess] Creating new cache for jvmClassSignatures, path /Users/.../nakama-unity/.gradle/3.5/taskHistory/jvmClassSignatures.bin, access org.gradle.cache.internal.DefaultCacheAccess@29aa7550
19:47:25.594 [INFO] [org.gradle.cache.internal.DefaultCacheAccess] Creating new cache for fileSnapshots, path /Users/.../nakama-unity/.gradle/3.5/taskHistory/fileSnapshots.bin, access org.gradle.cache.internal.DefaultCacheAccess@29aa7550
19:47:25.594 [INFO] [org.gradle.cache.internal.DefaultCacheAccess] Creating new cache for taskHistory, path /Users/.../nakama-unity/.gradle/3.5/taskHistory/taskHistory.bin, access org.gradle.cache.internal.DefaultCacheAccess@29aa7550
19:47:25.594 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationWorkerRegistry] Worker root.1 started (1 in use).
19:47:25.594 [INFO] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] :nugetRestore (Thread[Daemon worker Thread 4,5,main]) started.
19:47:25.594 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger] :nugetRestore
19:47:25.595 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Starting to execute task ':nugetRestore'
19:47:25.595 [INFO] [org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter] Putting task artifact state for task ':nugetRestore' into context took 0.0 secs.
19:47:25.595 [DEBUG] [org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter] Determining if task ':nugetRestore' is up-to-date
19:47:25.595 [INFO] [org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter] Executing task ':nugetRestore' (up-to-date check took 0.0 secs) due to:
  Task has not declared any outputs.
19:47:25.595 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter] Executing actions for task ':nugetRestore'.
19:47:25.596 [INFO] [org.gradle.api.Project] Restoring NuGet packages 
19:47:25.596 [DEBUG] [org.gradle.api.Project] Using NuGet from path /Users/ro/.gradle/caches/nuget/3.4.3/NuGet.exe
19:47:25.596 [INFO] [org.gradle.process.internal.DefaultExecHandle] Starting process 'command 'mono''. Working directory: /Users/.../nakama-unity Command: mono /Users/ro/.gradle/caches/nuget/3.4.3/NuGet.exe restore -NonInteractive -Verbosity detailed
19:47:25.597 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Environment for process 'command 'mono'': {PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Users/ro/.rvm/bin:/Users/ro/Documents/dcos/bin, JAVA_ARCH=x86_64, _system_arch=x86_64, rvm_bin_path=/Users/ro/.rvm/bin, TERM=xterm-256color, rvm_prefix=/Users/ro, APP_ICON_47473=/usr/local/Cellar/gradle/3.5/libexec/media/gradle.icns, DISPLAY=/private/tmp/com.apple.launchd.iPQtv7QzGG/org.macosforge.xquartz:0, LOGNAME=ro, rvm_version=1.26.11 (latest), TERM_PROGRAM_VERSION=388.1, PWD=/Users/.../nakama-unity, XPC_SERVICE_NAME=0, SHELL=/bin/bash, TERM_PROGRAM=Apple_Terminal, _system_type=Darwin, LSCOLORS=ExGxBxDxCxEgEdxbxgxcxd, OLDPWD=/usr/local/Cellar/gradle/3.5/libexec, _system_version=10.12, CLICOLOR=1, USER=ro, TMPDIR=/var/folders/wc/3ll_c3ss7px8y8n6tlccchhw0000gn/T/, rvm_path=/Users/ro/.rvm, JAVA_MAIN_CLASS_47473=org.gradle.launcher.GradleMain, SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.zqzyj8S5yA/Listeners, XPC_FLAGS=0x0, TERM_SESSION_ID=A1AC2541-C670-4374-AF4F-FCD9975B8179, _system_name=OSX, APP_NAME_47473=Gradle, __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0, Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.VuribCQPhE/Render, com.apple.java.jvmTask=CommandLine, LC_CTYPE=UTF-8, HOME=/Users/ro, SHLVL=1}
19:47:25.597 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTING
19:47:25.598 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Waiting until process started: command 'mono'.
19:47:25.608 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTED
19:47:25.608 [INFO] [org.gradle.process.internal.DefaultExecHandle] Successfully started process 'command 'mono''
19:47:25.608 [DEBUG] [org.gradle.process.internal.ExecHandleRunner] waiting until streams are handled...
19:47:26.224 [QUIET] [system.out] Restoring NuGet packages for solution /Users/.../nakama-unity/Nakama.sln.
19:47:26.238 [QUIET] [system.out] MSBuild auto-detection: using msbuild version '4.0' from '/usr/local/Cellar/mono/4.8.0.520/lib/mono/4.5'. Use option -MSBuildVersion to force nuget to use a specific version of MSBuild.
19:47:26.441 [QUIET] [system.out] All packages listed in packages.config are already installed.
19:47:26.505 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: SUCCEEDED
19:47:26.505 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Process 'command 'mono'' finished with exit value 0 (state: SUCCEEDED)
19:47:26.505 [DEBUG] [org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter] Removed task artifact state for {} from context.
19:47:26.505 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':nugetRestore'
19:47:26.506 [INFO] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] :nugetRestore (Thread[Daemon worker Thread 4,5,main]) completed. Took 0.911 secs.
19:47:26.506 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationWorkerRegistry] Worker root.1 completed (0 in use)
19:47:26.506 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationWorkerRegistry] Worker root.2 started (1 in use).
19:47:26.506 [INFO] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] :protocExec (Thread[Daemon worker Thread 4,5,main]) started.
19:47:26.506 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger] :protocExec
19:47:26.506 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Starting to execute task ':protocExec'
19:47:26.506 [INFO] [org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter] Putting task artifact state for task ':protocExec' into context took 0.0 secs.
19:47:26.507 [DEBUG] [org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter] Determining if task ':protocExec' is up-to-date
19:47:26.507 [INFO] [org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter] Executing task ':protocExec' (up-to-date check took 0.0 secs) due to:
  Task has not declared any outputs.
19:47:26.507 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter] Executing actions for task ':protocExec'.
19:47:26.507 [INFO] [org.gradle.process.internal.DefaultExecHandle] Starting process 'command 'protoc''. Working directory: /Users/.../nakama-unity Command: protoc -I . -I /Users/.../nakama-unity/server/server --csharp_out=/Users/.../nakama-unity/Nakama/ --csharp_opt=file_extension=.pb.cs /Users/.../nakama-unity/server/server/api.proto
19:47:26.508 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Environment for process 'command 'protoc'': {PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Users/ro/.rvm/bin:/Users/ro/Documents/dcos/bin, JAVA_ARCH=x86_64, _system_arch=x86_64, rvm_bin_path=/Users/ro/.rvm/bin, TERM=xterm-256color, rvm_prefix=/Users/ro, APP_ICON_47473=/usr/local/Cellar/gradle/3.5/libexec/media/gradle.icns, DISPLAY=/private/tmp/com.apple.launchd.iPQtv7QzGG/org.macosforge.xquartz:0, LOGNAME=ro, rvm_version=1.26.11 (latest), TERM_PROGRAM_VERSION=388.1, PWD=/Users/.../nakama-unity, XPC_SERVICE_NAME=0, SHELL=/bin/bash, TERM_PROGRAM=Apple_Terminal, _system_type=Darwin, LSCOLORS=ExGxBxDxCxEgEdxbxgxcxd, OLDPWD=/usr/local/Cellar/gradle/3.5/libexec, _system_version=10.12, CLICOLOR=1, USER=ro, TMPDIR=/var/folders/wc/3ll_c3ss7px8y8n6tlccchhw0000gn/T/, rvm_path=/Users/ro/.rvm, JAVA_MAIN_CLASS_47473=org.gradle.launcher.GradleMain, SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.zqzyj8S5yA/Listeners, XPC_FLAGS=0x0, TERM_SESSION_ID=A1AC2541-C670-4374-AF4F-FCD9975B8179, _system_name=OSX, APP_NAME_47473=Gradle, __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0, Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.VuribCQPhE/Render, com.apple.java.jvmTask=CommandLine, LC_CTYPE=UTF-8, HOME=/Users/ro, SHLVL=1}
19:47:26.508 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTING
19:47:26.508 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Waiting until process started: command 'protoc'.
19:47:26.513 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTED
19:47:26.514 [INFO] [org.gradle.process.internal.DefaultExecHandle] Successfully started process 'command 'protoc''
19:47:26.514 [DEBUG] [org.gradle.process.internal.ExecHandleRunner] waiting until streams are handled...
19:47:26.533 [ERROR] [system.err] /Users/.../nakama-unity/server/server: warning: directory does not exist.
19:47:26.534 [ERROR] [system.err] /Users/.../nakama-unity/server/server/api.proto: No such file or directory
19:47:26.535 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: FAILED
19:47:26.535 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Process 'command 'protoc'' finished with exit value 1 (state: FAILED)
19:47:26.536 [DEBUG] [org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter] Removed task artifact state for {} from context.
19:47:26.536 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':protocExec'
19:47:26.536 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger] :protocExec FAILED
19:47:26.536 [INFO] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] :protocExec (Thread[Daemon worker Thread 4,5,main]) completed. Took 0.03 secs.
19:47:26.536 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationWorkerRegistry] Worker root.2 completed (0 in use)
19:47:26.537 [DEBUG] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] Task worker [Thread[Daemon worker Thread 4,5,main]] finished, busy: 0.941 secs, idle: 0.001 secs
19:47:26.538 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
19:47:26.538 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception.
19:47:26.538 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
19:47:26.538 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
19:47:26.538 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':protocExec'.
19:47:26.538 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Process 'command 'protoc'' finished with non-zero exit value 1
19:47:26.538 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
19:47:26.538 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Exception is:
19:47:26.539 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':protocExec'.
19:47:26.540 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:98)
19:47:26.540 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:68)
19:47:26.540 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
19:47:26.540 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
19:47:26.540 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
19:47:26.540 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:46)
19:47:26.540 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
19:47:26.540 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
19:47:26.541 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
19:47:26.541 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
19:47:26.541 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.execute(DefaultTaskGraphExecuter.java:236)
19:47:26.541 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.execute(DefaultTaskGraphExecuter.java:228)
19:47:26.541 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
19:47:26.541 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
19:47:26.541 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:61)
19:47:26.541 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:228)
19:47:26.542 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:215)
19:47:26.542 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:77)
19:47:26.542 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:58)
19:47:26.542 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:32)
19:47:26.542 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:113)
19:47:26.543 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
19:47:26.543 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
19:47:26.543 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
19:47:26.543 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
19:47:26.543 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
19:47:26.543 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
19:47:26.543 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
19:47:26.544 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.initialization.DefaultGradleLauncher$RunTasksAction.execute(DefaultGradleLauncher.java:230)
19:47:26.544 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.initialization.DefaultGradleLauncher$RunTasksAction.execute(DefaultGradleLauncher.java:227)
19:47:26.544 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
19:47:26.544 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
19:47:26.544 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56)
19:47:26.544 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:161)
19:47:26.544 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:112)
19:47:26.544 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:95)
19:47:26.544 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:66)
19:47:26.544 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
19:47:26.545 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
19:47:26.545 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
19:47:26.545 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
19:47:26.545 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
19:47:26.545 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
19:47:26.545 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:49)
19:47:26.545 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:31)
19:47:26.545 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
19:47:26.545 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
19:47:26.545 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
19:47:26.546 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
19:47:26.546 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
19:47:26.546 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
19:47:26.546 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
19:47:26.546 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
19:47:26.546 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
19:47:26.546 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
19:47:26.546 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
19:47:26.546 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.util.Swapper.swap(Swapper.java:38)
19:47:26.547 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
19:47:26.547 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
19:47:26.547 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
19:47:26.547 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
19:47:26.547 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
19:47:26.547 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
19:47:26.547 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
19:47:26.547 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
19:47:26.547 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
19:47:26.547 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
19:47:26.547 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
19:47:26.548 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
19:47:26.548 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
19:47:26.548 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:46)
19:47:26.548 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Caused by: org.gradle.process.internal.ExecException: Process 'command 'protoc'' finished with non-zero exit value 1
19:47:26.548 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:369)
19:47:26.548 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:31)
19:47:26.548 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.tasks.AbstractExecTask.exec(AbstractExecTask.java:54)
19:47:26.548 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
19:47:26.548 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.doExecute(DefaultTaskClassInfoStore.java:141)
19:47:26.548 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
19:47:26.549 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:123)
19:47:26.549 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:692)
19:47:26.549 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:675)
19:47:26.549 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.execute(ExecuteActionsTaskExecuter.java:115)
19:47:26.549 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.execute(ExecuteActionsTaskExecuter.java:109)
19:47:26.549 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
19:47:26.549 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
19:47:26.549 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56)
19:47:26.549 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:109)
19:47:26.549 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:90)
19:47:26.550 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   ... 70 more
19:47:26.550 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
19:47:26.550 [LIFECYCLE] [org.gradle.internal.buildevents.BuildResultLogger] 
19:47:26.550 [LIFECYCLE] [org.gradle.internal.buildevents.BuildResultLogger] BUILD FAILED
19:47:26.550 [LIFECYCLE] [org.gradle.internal.buildevents.BuildResultLogger] 
19:47:26.550 [LIFECYCLE] [org.gradle.internal.buildevents.BuildResultLogger] Total time: 3.027 secs
19:47:26.553 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for task history cache (/Users/.../nakama-unity/.gradle/3.5/taskHistory)
19:47:26.553 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on task history cache (/Users/.../nakama-unity/.gradle/3.5/taskHistory).
19:47:26.554 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.store.CachedStoreFactory] Resolution result cache closed. Cache reads: 0, disk reads: 0 (avg: 0.0 secs, total: 0.0 secs)
19:47:26.554 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.store.CachedStoreFactory] Resolution result cache closed. Cache reads: 0, disk reads: 0 (avg: 0.0 secs, total: 0.0 secs)
19:47:26.554 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.store.ResolutionResultsStoreFactory] Deleted 2 resolution results binary files in 0.001 secs
19:47:26.554 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for Plugin Resolution Cache (/Users/ro/.gradle/caches/3.5/plugin-resolution)
19:47:26.555 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache plugin-use-metadata.bin (/Users/ro/.gradle/caches/3.5/plugin-resolution/plugin-use-metadata.bin)
19:47:26.555 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on Plugin Resolution Cache (/Users/ro/.gradle/caches/3.5/plugin-resolution).
19:47:26.555 [DEBUG] [org.gradle.deployment.internal.DefaultDeploymentRegistry] Stopping 0 deployment handles
19:47:26.555 [DEBUG] [org.gradle.deployment.internal.DefaultDeploymentRegistry] Stopped deployment handles
19:47:26.555 [DEBUG] [org.gradle.cache.internal.DefaultCacheAccess] Cache Generated Gradle JARs cache (/Users/ro/.gradle/caches/3.5/generated-gradle-jars) was closed 0 times.
19:47:26.556 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for artifact cache (/Users/ro/.gradle/caches/modules-2)
19:47:26.556 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache artifact-at-repository.bin (/Users/ro/.gradle/caches/modules-2/metadata-2.23/artifact-at-repository.bin)
19:47:26.556 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache module-metadata.bin (/Users/ro/.gradle/caches/modules-2/metadata-2.23/module-metadata.bin)
19:47:26.556 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on artifact cache (/Users/ro/.gradle/caches/modules-2).
19:47:26.556 [DEBUG] [org.gradle.launcher.daemon.server.exec.ExecuteBuild] The daemon has finished executing the build.
19:47:26.622 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientInputForwarder] Dispatching close input message: org.gradle.launcher.daemon.protocol.CloseInput@22f27cd3
19:47:26.626 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection] thread 14: dispatching class org.gradle.launcher.daemon.protocol.CloseInput
19:47:26.627 [INFO] [org.gradle.launcher.daemon.client.DaemonClient] Received result Failure[value=org.gradle.initialization.ReportedException: org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':protocExec'.] from daemon DaemonInfo{pid=46337, address=[4f55297b-3919-4af5-bdb6-9e5d019fca30 port:53912, addresses:[/0:0:0:0:0:0:0:1, /127.0.0.1]], state=Idle, lastBusy=1493333010997, context=DefaultDaemonContext[uid=452eaa01-d521-4168-8327-36e670b189f1,javaHome=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home,daemonRegistryDir=/Users/ro/.gradle/daemon,pid=46337,idleTimeout=10800000,daemonOpts=-XX:MaxPermSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant]} (build should be done).
19:47:26.627 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection] thread 1: dispatching class org.gradle.launcher.daemon.protocol.Finished
19:47:26.629 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection] thread 1: connection stop

nk.register_req_after issue

Hi,

I'm not sure if I am doing something wrong or what but I made a registration module based on the init user documentation in the tutorial section.

Am I correct to assume that this line here:
nk.register_req_after(initialize_user, "AuthenticateDevice")

Fires the initialize_user function as soon as the server recieves a client that authenticates with deviceid?

Because it is not doing that at this moment and my head is hurting as to why it won't.

Architecture doesn't support dynamic Write

I might misunderstanding something but if I wanted to dynamically create the .Write I wouldn't be able to with the current architecture as I always need to hardcode the number of things to write.

NStorageWriteMessage message = new NStorageWriteMessage.Builder() .Write( bucket, "saves", "savegame", saveGame ) .Write( bucket, "stats", "mystats", myStats ) .Build();

In Fetching history cursor isn't null after fetching all msgs

Version : v0.10.2

Regarding fetching history in batches. I am finding a bug . Suppose i am fetching at batch of 10 and thr r total 40 msgs. I was hoping that cursor will be null after that indicating that you don't have to fetch anymore but its not the case and it starts fetching from beginning again.

My example code which could be used directly >

const int batchHistorySize = 10;
const int maxHistoryExecutionCount = 4;

static void FetchPastMsgsMain(GamesDatabase.GameType gameID, LFirePubLocation fetchType, string roomName) {

	// Get the latest 10-20 messages on the room, in reverse order.
	NTopicMessagesListMessage.Builder messageBuilder = new NTopicMessagesListMessage.Builder().TopicRoom(roomName).Forward(false).Limit(batchHistorySize);
	FetchPastMsgsDetail(messageBuilder, null, 0);
}

static void FetchPastMsgsDetail(NTopicMessagesListMessage.Builder messageBuilder, INResultSet<INTopicMessage> prevBatchMsgs, int execIndex){

	client.Send(messageBuilder.Build(), (INResultSet<INTopicMessage> curBatchMsgs) => {

		//Log details & setup validator for next batch of messages
		Debug.Log("Successfully listed messages from topic: Index: " + execIndex + " : Count: " + curBatchMsgs.Results.Count);

		bool keepFetching = true;

		if(curBatchMsgs.Results.Count != batchHistorySize){
			keepFetching = false;
			Debug.Log("Stop Fetching: End reached");
		}

		if(execIndex > maxHistoryExecutionCount){
			keepFetching = false;
			Debug.Log("Stop Fetching: Execution count reached");
		}

		if(curBatchMsgs.Cursor == null){
			keepFetching = false;
			Debug.Log("Stop Fetching: Cursor is now nil");
		}

		if(prevBatchMsgs != null && prevBatchMsgs.Results.Count > 0 && curBatchMsgs != null && curBatchMsgs.Results.Count > 0){
			if(prevBatchMsgs.Results[0].CreatedAt <= curBatchMsgs.Results[0].CreatedAt){
				keepFetching = false;
				Debug.Log("Stop Fetching: Repetition observed.");
				return;
			}
		}

		//Process with next batch
		if(keepFetching){
			var messageNext = messageBuilder.Cursor(curBatchMsgs.Cursor); 
			FetchPastMsgsDetail(messageNext, curBatchMsgs, ++execIndex);
		}

	}, (INError error) => {
		Debug.LogErrorFormat("Could not list messages from topic: '{0}'.", error.Message);
	});
}

The client has a conflict with the Archimatix asset

This was reported in the community channel.

There's an issue with Properties files in the Unity client which conflict with those in the Archimatix asset. This produces the error:

Attribute '<attributename>' cannot be applied multiple times

The current workaround is to manually delete the Properties files after the asset is imported.

MatchDataSend requests seem to be buffered and sent in 50ms (or so) intervals.

Client A sends one message per 100ms to client B, client B receives a message every 100ms. (Expected)

Client A sends one message per 15ms to client B, client B receives a message every 50ms. (Problem?) Message come in "groups". 2-3 messages per 50ms, with nothing in between.

Potentially an issue with an incorrectly configured client? Enable TCP_NoDelay and see if it resolves the issue? (Suggested by @zyro)

Stops receiving data after roughly 260 times

Not sure if this should be in Unity or Nakama issues

It happens consistently around the 250-260th time when receiving data in a match:
private void OnClientOnMatchData( INMatchData matchData ) both in UDP and WebSocket
it stops getting a call back even though the other user keeps sending data successfully.

I currently tried to send a lot of concurrent data by sending every frame but it also happens if I send it once every 30+ frames

How to receive dispatcher.broadcast_message messages?

I am currently using Nakama Authoritative Multiplayer. Inside match_loop, I would like the players to receive some messages upon meeting some conditions.

As the document says, the function dispatcher.broadcast_message works. However, I did not find a way for the clients to receive and process the data.

How should I do this? (I tried OnMatchState, but that seems to be for the relayed multiplayer, not the authoritative one.)

Also, is there any way for the client to be noted the change in Match States? (or to query the current Match State?)

Thanks in advance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.