standalone library binaries (aka server.dll)

Ok, we decided to open access to everybody who interesting in “sever.dll” project. It is standalone library whihc allow you writing c# program communication with unity clients via unet. For example you can try to do lobby server, or chat server. and so on.

Binaries has been released for Windows, Linux and Mac. All of them are 64 bit (do not forget this when you will use them). All of them should work with .Net core. Code base, last version of unet (we did some work on performance recently) should be compatible with any 2017.x and 2018.x clients.

The library is provided as a preview/beta still, and we’ll provide best effort support for it. It’s under the UCL license included in the zip file.

I will try to add c++ interface in the few next weeks.

http://files.unity3d.com/multiplayer/unet-server-1.0.0.9_b8a58aa1e70d.zip

8 Likes

Was that only for UNET-Server or for LLAPI in general? And is this in 2017.4 LTS?

Thanks for the lib,

Trying to run SharpPart project for testing and apparently there is no entry point for SetReceiveCallbackFunc in UNETServerDLL.dll.

The exception is on line 33 of SharpTransportProvider.cs which eventually leads to line 31 of GlobalProfileInternal.cs

GlobalProfileInternal.SetSendCallbackFunc(this.m_PGlobalProfile, config.SendCallback);

I compiled all libs as x64 and copied the UNETServerDLL.dll file from the /lib folder as per instructions so I must have missed something :slight_smile:

Screenshot of exception attached in case it helps

@Fijit ups, looks like i forget fix examples and docs: Callbacks name did change. Use these please

 public NetworkEventAvailableCallback NetworkEventAvailable  //old ConnectionReadable
        {
            get { return m_NetworkEventAvailable; }
            set { m_NetworkEventAvailable = value;  }
        }

        public ConnectionReadyForSendCallback ConnectionReadyForSend //old SetSendCallbackFunc
        {
            get { return m_ConnectionReadyForSend; }
            set { m_ConnectionReadyForSend = value; }
        }

Or is it something else?

@mischa2k it is LLAPI in general only, actually it is full llapi part of unity.
And is this in 2017.4 LTS - so far no, it will work with 2017.4 but has not migrated yet. When will it backported to 2017.4 - probably in month. We still working on performance improving. API and protocol itself have not changed. But i changed couple algorithms inside, removed stl containers and so on.

2 Likes

@Fijit and you will need to change UNETServerAssembly.dll in SharpPart\SharpProject\Assemblies folder to the new one from lib folder. and I attached correct file with fixes

Sorry about :frowning:

3462054–274653–SharpTransportProvider.cs (8.01 KB)

1 Like

I see people still have some confusion about what is this library, what is LLAPI, and how they are related to each other.

UNet itself is a low-level transport and this server library, as well as LLAPI is an interlayer. So yea, they are doing the same job under the hood, but one made for standalone servers and one integrated with Unity for player hosted games primarily.

@aabramychev I’ve applied your fixes and now it works fine, thank you :slight_smile:

1 Like

Very good news for everyone using Unet and wanting to communicate with application outside of unity.

When can we expect the C++ interface?

@TwoTen :frowning: only time, I need 3 days to finish implementation and 2 days for testing and deploying, but I do not have this time… If you really need this, could you please kick my ass every week by mail with reminder that I promised?

PS. As u can see the last time i was here couple of weeks ago :frowning: No time et al.

1 Like

Hello! I have a few suggestions:

  1. Please add an overload to the GetConnectionInfo merthod where NetworkID and NodeId is not requires as those classes are in the UnityEngine library.
  2. We REALLY need a Offset on the Send method. Right now we are tinkering by moving every byte forwards or backwards before sending the buffer and recalculating the size when we want to for example ignore certain parts of the buffer for sending.
  3. MaxConnections should not be a part of the CRC. We have written a UNET Relay so that users don’t have to use Unity’s relay as it costs quite a bit and we want self hosting. But we require users to set the MaxConnections very high. On the relay, we want the maxConnections to be very high as it will host many sessions. But we don’t want the games to require that large of a maxConnections count. (I think it might be a bug that a CRC is thrown when the MaxConnections are different)

@TwoTen

  1. Will do
  2. Will add (but the length will still define the massage length, means
    offset = 5;
    Send(buff, offset, 10) → means 10 bytes from byte no 5. ok?
  3. MaxConnections, hmm do not understand you, MaxConnection is not part of CRC…

Might be a bug? We are getting CRCDisconnect when changing the MaxConnections.

Thanks for the implementations anyways!

@TwoTen ok will check today. BTW, c++ iface almost ready (just need to add example) if the changes whihc you pointed out is urgent, I can add them and publish new binaries on this week. Or on the next week with example

The changes are not “urgent”, we worked around it. But they will decrease performance of our application. And since it’s a relay. Every bit of performance is important. Just take your time, and thanks a ton for the CPP interface.

1 Like

Please do ignore my MaxConnections “bug report”. It was a fault at our end. No need to investigate that!

1 Like

New version with cpp interface
http://files.unity3d.com/multiplayer/unet-server-1.0.0.9_890586c985e1.zip + added functions requested by @TwoTen

1 Like

I’m only seeing one overload

@TwoTen Hmm, I do not see this function in browser, but I can use it, check please the path to assembly, if you will fail again ping me i will check zip itself:

So one small library and it only contains networking code? Sounds cool.

There’s no way to get PhysX included as well or as some optional module right?
So we could check collisions against level geometry.