Hello Unity community!
Few months ago I found that there is no proper MMO client and server available on asset store without to be attached to framework provider like uLink or Photon. In fact if you want to make your own lobby logic (based for example on ejabberd) you could find nothing to make game server fast.
So from there I start. Now I’m really close to publish my asset to store with full source code (not like uLink or Photon - you will get everything) .
Please try WebPlayer and Android client on my test server: 198.199.73.196
It’s based on AngryBots example.
Now I’m testing load : So I have 16 players now…
Main features:
- Focused on MMO support (target is 100+ user in location server based on Unity)
- No RPC calls (it’s really is bottle neck any MMO) “Data Model Objects” instead
- Based on Lidgren
- Best developer practice - Develop Server and Client in single scene inside Editor!!!
- You will build Client and Server from the same scene.
email seadragon.unity3d@gmail.com
Please ask question!
If it works well, then awesome!
The more to pick from, the better!
It depends on the goodness of your object model. Can you describe more.
it has no auto mapping, it has quite simple Reflect function on server side which fill a frame package (it’s one packet for all objects) filled by server objects and Reflect on client side there client object read data from package and apply changes to reflect server object state.
The reason why I didn’t make auto mapping for field is that you mostly all the time if you really care about bandwidth you will don’t reflect objects which is far from observer (client avatar) and even more if you will take look closer you might reflect only position for far objects and more for more close objects like position and rotation and if object is more close you might send velocity as well to make movement prediction much more better. So that all about tuning. because It’s more for real-time FPS games rather games like tetris online :).
about RPC It’s really good for scenario than all players start together. but if you have situation when some leaving some join you always has to keep in mind that if you send RPC call to object at the same moment a new user could join and it will miss your call, I know now you will say that RPC has to stay - that is EXACTLY IS FAILURE for big projects just imagine your server has to store ALL RPC calls just in case if some one connect on the middle! it’s memory and performance problem. another aspect it’s programmers experience level - it is much more easy to explain that there is two objects server and client and each frame server object send all important information to client rather tons a functions of initialization and game logic.
I hope it explain a little about strategy that I select for this network solution.
It explains and i agree that most things achievable by RPCs are achievable with state syncs as well but mapping does not mean you can not do interest management, prioritization and other advanced stuff. It means doing them would require a good amount of work which might be out of question for your project. Take a look at hero engine’s mappings for example.