[OUTDATED] uMMO - Unity MMO Server and Network Management Solution

Please note: uMMO has been updated with a completely rewritten version on top of UNET (the older versions are still contained and offered to you with older versions of Unity). The information in this thread has become nearly completely outdated. For the latest on uMMO please refer to the official Asset Store page: The Best Assets for Game Making | Unity Asset Store

Hi Unity Community!

I am honored to present to you uMMO, our new Unity Asset Store package!

See a working live demo here. This spawns a client which can connect to a linux server. It features server-side collision detection (you cannot run through other characters as a result) and a small demo game. It’s MMO, so just copy the link into a new browser tab to spawn a new client. The complete scene is also included in the Asset Store package.

First of all: Why did we produce this?

Like all of our products this idea first came out of the need for it for ourself. We think the future in gaming lies in MMO! Play when you like, together with whom you like, in a consistent online world. We are working on MMO games ourselves and we want to see other MMO games produced by others, that is our very own wish for the future!

Now lets talk about this package:

Features:

  • 2 demo scenes included
  • Design server and client in the same scene - No syncing of data models anymore: best for rapid prototyping
  • 100% native Unity network code: convert your existing multiplayer game in minutes!
  • Switch between authoritative and non-authoritative network infrastructure with a single click. I.e. using authoritative server setup enables you to implement server-side collision detection with ease!
  • Create an MMO from any singleplayer game with a few clicks.
  • Instantiate players as well as NPCs (non-player characters)
  • Decide specifically what scripts gets executed on the server and which on clients.
  • Automatic syncronization of animations (no network controllers for animations necessary anymore).
  • No DLLs - full source code enclosed
  • Optional: Powerful input engine: Automatic input syncronization between server and client (authoritative server setup)
  • Optional: Data transmission filter engine: i.e. only receive data from characters near you, not a single bit from anyone else (configurable).
  • Build MMORPG, MMOFPS, MMORTS, …
  • Modular extension engine: Don’t overwrite plugin code anymore and still be able to change nearly anything.
  • Timeout manager: kick players idle for x seconds
  • more inside, and even more to come

For whom the official documentation is not enough there is extensive documentation available IN the editor:

Furthermore all source code is accessible and plugin source code is extensively commented. If you have any questions, please don’t hesitate to ask, we are here for you! :slight_smile:

This is the first native-Unity-networking MMO plugin to enable you working on server and client in the same scene! There are no external libraries, so to switch to your server setup you don’t have to leave Unity.

Have you ever tried to implement server-side collision detection using a Unity client and a Java/C++ server? Then you will appreciate this package. The Unity-integrated physics will do all the work for you. All you have to do is switch to an authoritative server setup!

The package has been made for all of you who have ready and working singleplayer games (like character controllers and AI scripts) and you want to make it MMO! In the documentation I explain very explicitly how to use what scripts, so it makes sense to you, according to the architecture you want to use in your game!

Hopefully we will see more games like WoW, Rust, DayZ, Battlefield and Arma in the near future!

If you have a feature request - we are always open for that. We will include more in the future!

NEW: You now have the possibility and opportunity to receive a free limited version of the package. Limitations in the free version:

  • The server only runs for 12 hours. After that you have to connect it again, and all clients have to reconnect.
  • The source code is not available, the functionality is provided in a DLL.
  • You cannot inherit from the main controller classes (sealed classes).
  • A watermark is shown on the bottom of each client (and for the server also in the Unity Editor).
  • You are permitted to use the free version for testing-purposes only.

Except for those limitations you have total freedom to test the package as much as you want to. For now the package will not be uploaded to the Asset Store. If you would like to receive a free version, please email me! You can expect your free limited copy within 24 hours of your mail.

Hints regarding all versions:

  • There is no database support added, so for the moment you have to implement that yourself.
  • This is not a package which provides you with extensive and well-written FPS, TPS controllers or specific MMO AI scripts, this package provides you with the architectural needs for managing your MMO network structure.
  • The package includes a basic ingame-GUI, not a very extensive one as that is outside of the scope of the package, you can always replace it by replacing/adjusting the GUI module.
  • This package uses - as mentioned - native Unity networking. So when purchasing this you will be bound to the great freedoms and flexibility of the Unity networking framework as well as its limitations. To test your project networking/traffic needs please email me for a free limited version of the package.

Just ask for purchase consultation and/or support here, you can expect an answer within 24 hours.

UPDATE June 10th 2014:

Unity 4.5 fixes a bug in headless Linux exports, which was causing too much CPU usage:

http://unity3d.com/unity/whats-new/unity-4.5

“Linux: Fixed eventual runaway CPU usage on headless players.”

It does what it says, flawlessly! Thank you, Unity!

BTW: If you run into issues with your Linux operating system not being able to start Unity exports, this can possibly help you:

AND more good news (for everyone who doesn’t know yet):

Unity has announced the development of a new native networking API: UNET. Of course when it launches, we will do everything in our power to make uMMO compatible with this new system. Buy uMMO now, as price will surely rise!

Check those blog posts:

http://blogs.unity3d.com/2014/05/12/announcing-unet-new-unity-multiplayer-technology/
http://blogs.unity3d.com/2014/05/29/unet-syncvar/

Hi,

I would like to understand the logical architecture of your product.

Can u post a sheme because i don’t understand the Master server postion in architecture?

The Master is the component that will govern the interaction of all other unit. Each unit are dedicaed server? or have u merge Encrypt/decrypt/messenger/network/WorldDB/world/AI Controller/ Authent servers in one ?

Regards,

+++

Hi!

Thank you for your post!

Unfortunately I don’t fully understand your question. This package helps you manage your MMO network architecture. Although there is simple AI integrated (only for the purpose of the demo scenes, nothing generic) this package does not send you in any specific direction from a point of view of functionality.

At this point you still have to implement AI, player controllers, database connection, chat rooms and player authentication yourself. At the moment those functionalities are out of the scope of the package, although it’s very possible that in the future one or more of these could be implemented, but nothing guaranteed. Of course this also gives you the freedom to implement any kind of MMO you want. Please view the feature list in the first posting to get to know what this package does precisely.

Please also verify that you are using the correct technical terms for what components you want to address because this can be confusing. A master server is a server where you can register game servers or ask for a list of known game servers, where a player can connect to. Whereas an authoritative server is a multiplayer server (in this case an MMO server) which controls everything (every gameobject i.e.: players/clients only send keystrokes to the server, the server executes the actual action, and this action is being synchroinzed through the network).

I hope this helps you a little bit in determining what this package does.

If you have any further questions, please don’t hesitate to ask.

Hi sir,

I just wanted to understand the master server of your assets.

In mmo the Master Server is the component that will govern the interaction of all the other modules (ai, messenger, authentification, world, instance, DBWorld).

For example with Authentification server:
Master redirects new customers to authentication servers that manage all aspects related to security. Once authenticated, a client is assigned the address of the game server (World server) by the Master.

thank you for reply.

Hi!

I think it would be best if you asked me directly, because I don’t quite understand what your question is, which is ok, as there are many ambiguous term definitions in this area. If you have Skype, you can add my Skype name. I sent you a PM.

There is no specific master server implementation. Native Unity networking (which this plugin uses) is only about 1 game server instance. A master server which does what you intent, you have to implement yourself.

The package i.e. enables you to have only network traffic of players sent to other players which are in their immediate suroundings (dependend on distance i.e.), because in Unity the default is that everyone receives traffic from everyone, which is not preferable in MMO. Furthermore you switch between non-authoritative setup (player “own” their character) and authoritative setup (the server owns the characters) and more (read in the first post). But all concerning 1 game server instance. You can of course have many game server instances running on different ports/physical servers, but at this point you’d have to manage them yourself.

How can this be called mmo if only one person is online possible? I tested demo, its very laggy. Rubberband effects and stuff. Where is the “Server” hosted? On a dedicated server or on a home PC?

Hi! Thanks for your question.

Where do you read that there is only one person possible online? You can connect as many players to the same demo scene as you want.

What is your ping when using the demo? The laggyness effect could also originate from the camera controller which I took from the original Unity viking demo. I am not happy with it either, and will probably switch it in the future with a camera script with smooth camera movement. It is of course hosted on a dedicated headless linux server, located in a high-security serverfarm in Munich :slight_smile:

I’d be interest too hear what kind of load tests you have done? What has been your peak CCU while still maintaining a real time simulation?

Hi! Thanks for your question.

As I am utilizing native Unity networking without the use of any external libraries, the question really is more about general Unity networking. As Unity is always in (quite rapid) developement this is not something which is permanently determinable in my opinion.

So you have no clue or don’t want to say? This is a very important question when you make the claim of providing a MMO solution.

Hi!

As said, I think there is no ultimate answer providable, in my opinion. You would have to consider how many characters/units are bound to a single client (think of an MMORTS where you control multiple units, all of which animations have to be synchronized through the network), and also with my implementation of “area of interest” or “data transmission filter” (as I call it in the documentation) this is something to also consider. Most implementations of Unity networking don’t use this feature (which is, to be fair, not easy to implement) and thats why I am hesitant to provide hard numbers in that concern. Unity itsself will ultimately be your limit. The rest I think is very much dependend on how good your code optimization is.

Do you plan to implement a different networking solution than Unity’s native networking? I’ve read in multiple places that Unity’s networking does not support a very high number of concurrent connections.

I share the same concern that others have posted. Without more substantial testing and results on CCU limits and performance, it’s hard to believe that this is truly an MMO solution.

Hi! Good question, I have thought about integrating other libraries and make it optional which one to use, but I am not talking about the very near future then.

Of course I understand the motivation for this question and I very much welcome the dialogue! But I feel it is ultimately like asking “how many users can connect to a Unity server”? :slight_smile: If I provide a high number, people with very lousy code optimization will say it is not true. If I provide a low number, people will say “That is not enough for MMO”. Theoretically it is not limited, practically - of course - it is but that’s the reason I stick to my answer that it depends on individual setup.

What I want to promote with this package - as I have no control over the inner workings of Unity, CCU could skyrocket (or fall for that matter, if bugged) with the next Unity version - is ultimately my code for establishing an authoritative, dedicated server, which exposes useful API calls and provides very easy testing methods for server and clients, which brings with it data transmission filters, timeouts where you create server and client in one scene. All of which are features very useful to any MMO setup. I don’t make a general claim that you can connect 10.000 users to that one single server. But I make the claim that your scene setup and MMO network infrastructure will be easily maintainable.

Again - I understand the motivation of the question very good, I welcome the dialogue, and hope every potential customer will read here, and contribute, and make the best possible decision.

I understand that there are a lot of factors that influence concurrent user limits, but as you stated, there is a “practical” limit especially using Unity’s native networking, even for a game that is optimized.

I think what this boils down to is a bit of misleading marketing. I can definitely appreciate the authoritative server features, the ease-of-use in coding client and server simultaneously, and lots of other features. Those are obviously key features for an MMO setup. However, that first M does bring with it an expectation that you can truly support a “massive” number of concurrent connections.

I would highly recommend testing and reporting on the limits of your asset to give potential customers an idea of what is “practical.” I’m sure you could appeal to the Unity community for help with load testing.

Thanks a lot for your feedback. My intention was to give the best possible marketing info, (which from my perspective, and yours, as I read) includes that it is very useful for MMOs. I can see/anticipate that the current info is probably not the end of the road, and that’s why I welcome the dialogue and your input, and the input of everyone who posted here.

I am myself i.e. a big ArmA fan. ArmA 2 and 3 are definitely considered MMO, while this “M” for massive in their case boils down to maximum a hundred players per server (I think), the game mechanics and infrastructure on the other hand leave you no doubt that it is “MMO”. I admit its tricky. And as I am absolutely in no way intenting to mislead on the marketing side, I will give this aspect second thought. Thank you!

Well I have to say that I appreciate your openness to the constructive feedback. Some developers get rather defensive when given comments or suggestions. You’ve handled the posts here with a lot of poise, so hats off to you for that. :slight_smile:

What you have provided looks to be an amazing asset already, as fully authoritative servers within Unity are not easy to implement. I have your asset earmarked on the store and look forward to its further development. Perhaps I’ll be added to your customer list someday… :slight_smile:

Thank you! I have to give that compliment back to you and the Unity community in general! I am maintaining the EZ Replay Manager package for more than 2 years now, and I can say the readiness of 95% of customers and potential customers to give constructive feedback, to really get “hands on” if anything doesn’t 100% fit to their needs, and make very useful suggestions is really giving me a great feeling about developing for Unity, and makes me dedicating more and more time into asset and game developement.

Thank you for earmarking, you will definitely hear/read more about this asset! :slight_smile: Have a nice day!

Maybe you can provide an example or two and say that running “x” we achieved “y” result, using Unity version “z”.

Yes, that is possible. Also at the moment I am thinking of releasing a free limited version of the package with DLL’ed source code and maybe one or two slight limitations with respect to functionality which would make everyone able test out their specific needs for free, while still maintaining a need to purchase my hard work for a real project. I am already using that approach with my other package mentioned above, with success. Don’t pin me down on that just yet, I still have to work out some details, but I think it would be a very fair and useful contribution.