Hey guys! First off… I’m an artist not a programmer so I apologize if I don’t quite know any coding vocabulary. I do have programming friends but that’s sort of why I’m here… they won’t work with me until I figure out our engine and networking whatnots first.
Anyways!
We want an open-world MMORPG (sort of like Ragnarok online/WoW/Perfect World, etc) opposed to the lobby → party system. Most of what I hear about in Unity online games is using a lobby system but I recall hearing it is quite possible to have an open-world style. What network company would you guys suggest for open-world mmo’s? …Or is an open-world style mmo too ambitious for Unity?
Also as an artist I’m curious if there’s going to be any issues with detailed art and a server choice I plan on working with. I’d hate to make something really pretty and then find out the network I went with lags if I have graphics any greater than Minecraft. Is that a concern I should have?
I have another question but it’s not related to networking… Hopefully you guys won’t mind ^^; Like I said earlier, I’m not coding-savvy like my friends. I’m sure they’ll be doing the heavy lifting but is Unity friendly enough that I’d be able to this-and-that without having my coding friends always looking over my shoulder…?
well, first of, you can make anything with Unity. My only advice to you is that you should make some other types of games first. fully FINISH at least 3 or 4 games before you try to tackle a mmorpg, because its architecture is the hardest in the gaming industry. It is extremely complex to program multilayer and will only discourage you from game development.
First of all, if your friends are serious tell them to stop sending you off to handle their job. Would you send them off to figure out your art asset pipeline, or what modeling tools to use?
There is nothing preventing you from making almost any sort of networked/online game with Unity if you have the dedication and the right skills. I would suggest that especially if you want to make an open world style game you need to either evaluate middleware or consider writing your own networking. For this type of scenario the builtin networking is probably not the best option. As far as middleware goes, I would of course have to recommend my own. That said there are a lot of options and they all have various strengths and weaknesses.
As far as being too ambitious, I think the big choice here is that you want to make a large networked and (I assume) persistent game. There are a large number of challenges that you have to overcome to be successful. We have had very small teams ( 2-5 total ) succeed with EUP, but they also had support from us and a substantial head start with a lot of the game creation challenges.
The scalability of your game is in general not going to be greatly influenced by your art section. If you want to be able to see 20-30 players on the screen at once, you need to budget your polycount and materials accordingly, but those choices generally would not have any sort of effect on latency.
All that said, if your team has little or no experience, you might want to start out with a more simple game to build up your proficiency before embarking on an MMO.
I have just been examining ElectroServer and watching some tutorial videos and I must say I am very impressed. I am currently researching technologies for our next multi-player project and this may very well be what we are looking for. However, I do have some questions that perhaps you can help with or at least point me in the right direction.
My previous multi-player projects have been quite small single server affairs. Our next project (with Unity 3D) is going to be representing a large world but that world is not continuous. That is to say, the world will be divided up into many smaller rooms with limited player counts. A player can jump from one room to the next by entering portals that client side will disconnect them from one room and connect them to the next etc.
One of my ambitions with this project is to make it truly scalable to many players. I have already tried some cloud hosting solutions (such as PlayerIO) but find them to suffer from large lag spikes (of several seconds frequently) and they enforce TCP which is not optimal for my game which although is not quite a twitch game does need reliable and timely responses to input. These cloud solution obviously appealed to me as they provide this scaling automatically. That is to say, the system would automatically, upon room creation, split the rooms of my world among many different servers.
I am now discovering (perhaps I am wrong?) that really for my sort of game only dedicated server will really cut it but I am finding it hard to come by information about designing with multi-servers in mind. I guess one way I could do this would be to contain a file mapping room names to server IPs so that the client is creating those rooms on the correct server? I know this isn’t really load balancing but would accomplish the task of separating rooms over various servers as the population of my game grows? Do you see problems with this approach or is this a definite no no? Using this system I guess I can just add more servers as needed and then alter the server/room mapping file.
I am really looking for something more automatic if something exists that on room creation would take care of choosing from a pool of server.
Does ElectroServer provide any built in infrastructure for this and how?
If not…how to companies using Electroserver normally go about spreading their game world over multiple servers.
If my experience with cloud hosting generally typical? Or have I been unlucky? Can a twitch like game (a FPS) for example really ever run well on a cloud setup or are dedicated servers the only way to go?
Does Electroserver run in a cloud ok? Does a single server license cover this?
I would greatly appreciate any advice you can give me that would point me in the right direction as my research into setup up a multi-server environment is at best a it frustrating atm.
Kind regards
Can anyone recommend a good company for hosting dedicated servers on which to run multiplayer games?
There are several network solutions for Unity. We got an engine called uLink and after we posted this video in this forum, many artists that had never done any programming was able to do network games on their own:
And this is an example of what one person did with no previous experience in either programming or modelling, with our network engine uLink in only a few months time:
So if you feel that you too want to meddle with the game without having to relay on your programmer friends all the time, I think you should have a closer look at uLink and I think that this might be a good place for you to start:
Yes, we provide the ability for servers to communicate with each other using our client API. It is also very simple, for example, to create a server level extension that can inform a central registry of it’s availability in a ‘pool’ or ‘cluster’ of servers.
This is typically very game dependent. Some of them use an approach like I described above. Others use a combination of server registries + sharding.
I guess this depends somewhat on what you mean by ‘cloud hosting’. If you mean software-as-a-service offerings then yes, you are going to be completely at the mercy of their infrastructure. It is possible to do this type of game on cloud/vm hosting, but you have to accept that cloud style flexibility usually comes at the price of raw performance.
You might want to check out my presentation at Unite 11 Creating a Browser-ready FPS MMO in Unity as it might address several of your points, and their game does run in ‘the cloud’ using a combination of Electroserver and EUP. The general methodology presented is probably similar to what might work for you.
Yes the licensing works fine for cloud based or dedicated servers. If you are wanting something like burstable licensing I would say just talk to us directly and we can get something worked out.
You might want to check out Softlayer. They provide excellent performance and support in my experience. They are especially strong on the networking side, which can be a big roadblock at times. In the interest of full disclosure, we worked with Softlayer recently to perform load tests for Electroserver 5.3. They have a blog post about it here, and you can see the resulting whitepaper here.
Firstly thank you for your detailed response and I enjoyed the Unite11 presentation.
This is still a little foggy to me to be honest Is there discussion or any papers/tutorials/examples of this in the Electroserver SDK. When you say central registry are you talking about a different kind of master server machine maintaining a database of servers and their IPs and availability to host new room instances? Also, would such a server level extension make its availability determination based on its current load or some other criteria? What about the ability to spread a single busy room over multiple servers? Is this possible? Any references you could point me to regarding this would be greatly appreciated.
I was looking at rackspace for example www.rackspace.com. For development purposes you can configure your package to be very low cost during development but then in minutes add more server instances to your account to deal with unexpected growth. My point being I suppose, would such environment commonly suffer from very large lag spikes of several seconds as is the case with some hosted gaming solutions I have tried in the past? Or would this be acceptable performance for Electroserver twitch game. If more server server instances are added to my account from the cloud would I need a new separate license for each instance (seeing that the server instance may only be introduced temporarily for a peak traffic spike? Would I still need a central registry in a cloud set-up or does Electroserver see the cloud servers as a single virtual machine?