Published 10 months ago
In development
Linux; Mac; Windows
uServer is a Unity emulator for the server written in C#
I designed and wrote a good part of the implementation of uServer and supervised others working on the project at NoOpArmy for MuchDifferent as contractor. uServer implements all unity features needed on the server and for usage as a test framework. We wrote uServer to be able to make unit tests, integration tests and load tests for MuchDifferent products like uLink and uLobby without running Unity. uServer supported most of the none rendering/animation features of Unity which were needed for our usecase. There was no physics or rendering implemented but a Unity project with scripts, scenes and Prefabs could be created using code or even exported from Unity and then get executed in uServer.
Our goal was to make it faster than Unity or as fast as Unity and offer it for running server simulations since it was offering a lot of flexibility and source code. It was also very easy to debug a Unity library in it since you simply had the whole engine as a DLL in visual studio which you could set breakpoints in it and use all profiling and debugging tools of visual studio. It also ran on all versions of .NET using a better CLR and GC and had no switches and marshalling between managed and unmanaged code so could execute some stuff faster than unity. The tricky part was running methods like Instantiate as fast as Unity which had to heavily use reflection.
The project went on pending in the last year of MuchDifferent due to none-technical reasons and we did not continue working on it, however we used it heavily internally both for load tests and running our test suites.

Ashkan Saeedi Mazdeh
Developer - Programmer
Supported Platforms
Linux; Mac; Windows