im currently in the process of getting my bachelor degree in computer networking. During this last semester we’re doing a project for a major company in Norway called Telenor. They’r a mobile phone operator, and also supplyer of broadband connections.
What they have asked us to do is to find out if its possible, and if it is, how to set up a cross platform gaming server. The idea is to have a MMOG for computers to be played over the internet, but with the ability to interact with your characters etc. by using your mobile phone. To start of we where thiking somthing simple like chatting, trading or examining statistics on items and such.
Im not the one going to develop the game, but I have been asked to give a recommendation as to which tool they should use, so what im asking is if its possible to do somthing like this with Unity.
The server setup would have to be somthing with a central database in the bacground, that both the gaming server and the mobile phones interact with trough different API’s(?). I dont have to know how to do it, I just have to be sure that it is doable.
That is my main question, but im also wondering about a bunch of other things such as:
From reading on the forums I’ve understood that the Unity development tool has to be run on a Mac, but the finished game can be hosted on s server with any type of OS installed(windows/linux/osx)?
Are there any multiplayer demo’s out there that will let me set up a server and connect it to a database`? Preferably id want it to have some sort of top score that will be stored in the database, so that I can try accessing it with a mobile device. Another + would be to have a login function with a username/password.
Are there any particular reasons why Unity would be better than say, Torque for such a project? I’ve read the the comparisons made on the forum, but I was thinking more about things that might relate more directly to such a project im trying to describe.
Not so much a question about Unity, but if anyone knows i would love to know what kind of bandwith a server would require for lets say 1 000 users in a MMOG environment similar to the current MMO games such as WoW, EverQuest or Guild Wars. And what kind of hardware requirements would I be looking at, assuming most of the cpu heavy calculations such as rendering are being done by the client?
Are there any problems that would prevent us from using Unity as the development tool? I read somewhere on the forum that dynamic transitions between worlds could be hard to implement, since you cant have more than one server. Thats the sort of things i would like to hear about.
Id like to thank anyone replying to this thread in advance, and i also hope my subpar english didnt give you too many problems
That’s almost correct. Editor only runs on Mac, finished game server can be run on OS-X (preferably, because there’s said to be a headless mode on the Mac) and Windows. Not on Linux, though… A Master Server, however, can be setup under Linux (if I’m not mistaken). But that’s not to be mixed up with the “game server” - it’s just the server that manages connecting clients with available servers.
I think there are a few games out there which store their highscores on a server. This is coming up for my game, too, but it’ll still take a few weeks, I guess
It’s kind of interesting you’re working on such a project because I have quite a few ideas that go exactly into that direction. Problem is, due to limited ressources, I’m just not there yet
I don’t know much about Torque, so I can’t comment on that. The only thing I know is that (even with the limitations of the Networking I have run into), it’s a great joy to work with Unity
That depends on many many factors. Personally, I would say that if the networking is designed right (and the game doesn’t require “ultra-sync”), bandwidth should not be an issue with a hosted server system and 1000 players. But then, what means “being an issue”
Concerning hardware requirements, again: It really depends on many many factors. The “Art” in designing MMOs is doing it in such a way, that bandwith and servers are used as little as possible with as many players as possible.
If you do it right, I think 1000 players should not be a problem. If you do it wrong - you might easily push your server to the limits with as little as 20 players.
One tricky thing is: To know for sure, you need an implementation, and one thousand players to test it One thing I’ve learned in Web stress-testing is that it’s nice to give you an overview, but users behave so much differently from machines, that it’s really just a “first guess”. Real world testing is absolutely mandatory for such things…
That said: If you know your game design, you can figure out how many messages need to be sent to how many people (approximately). From that, you can calculate very approximately what the bandwidth might be.
Concerning the hardware requirements on the server: Much more difficult to find out theoretically. Rendering obviously should never be done on the server, but stuff like physics might be - and that could get very tough with many players (I would assume). The trick I’m using for now is distibuting the server FPS to the clients. That’ll at least show me “how the server is doing” while I’m playing, so I might have a chance to say “everybody leave” before the server goes down
I guess, currently “totally smooth transitions between areas” probably won’t work. You have to be aware, though, that “totally smooth transitions” is one of the things that is very hard to get done even if the development tool does not have limitations like only connecting to a single server at a time.
If you can live with a little “cut-scene in between”, for instance (which only requires the world to be designed so that this works), you can use the approach suggested in that discussion by simply using the database as “main server”.
In fact, in the end it might even be possible to do “smooth transitions” with that database approach.
Another limitation you might run into with a MMO-style game is that currently, the networking API does not really support to have “groups of users” to which you send RPCs (there’s “groups”, but they don’t work the way you would need it for certain cases). I.e. something like “only update me on users that are visible or close to me” is not natively supported.
You can, however, write something that does this for you (which is one of the things I’m currently working on - it’s not that hard after all ). In my case, the criterion is “is in same game session”, so it’s a simple case - but when that works, you can also create something more sophisticated based on player distance etc.
So, the engine won’t be the limit on this…
Personally, I really miss “headless mode” for Windows game servers. Actually, what I would like to see is being able to run a game server as a Windows service. Well… Wish List
But that’s just “inconvenient and not as professional as I would like it to be”… it’s not in any means a “showstopper”…
wow! Thanks holtsch, this really helped alot. I’ve been really busy lately, but if you have the time I’ve come up with a few more questions.(anyone else willing to waste theyr precious spare time, is also welcome to answer )
If I want to set up a game for stresstesting, what would be the easyest way of doing this? The tutorials are obviously for developing, since that’s what Unity is all about. Im more interested in the networking part, and have close to zero knowledge of programming and scripting. As for right now we’ve discarded any requirements to the game, we just want to get somthing up and running so we have a place to start. It’d be great if someone could atleast point us in the right direction, since this project is moving more and more over into unfamiliar territory for us.
And I’ve also been wondering about Unity’s API. Are there any lists of API’s and what they can do, or is there just one API where everything is integrated? Any info on this would help, since I think we are going to struggle a bit with getting the computers and the mobile phones to talk to the same database :?
I’ve been reading alot about Sun’s Project Darkstar, and I was wondering it this might be somthing to use as a base for Unity? When I read about it seemed they had alot of solutions for some of the things that (I think) Unity is still struggeling with. However, I do not know if it can be run on a Mac. hmm… Think ill have to check on that, and edit.
Also, I was told to ask if there are any test scripts or clients towards the server, of if this could be done with any other software. I guess I’ve more or less already asked about this in the previous questions, but I wanted to type it out the way here(my “boss”) did it, just to be sure.
We onlye have two server’s at our disposal, and we were wondering a bit how to set up this.
One Quad-core 2,8Ghz Intel Exceon, SCSI drives and hot-swap compability(small disk, about 40GB) 2GB of RAM
and
a stationary P4 3Ghz, 2GB ram and 250GB diskspace.
Should we just try to mash everything into one of the servers, and use the second as a backup storage? This is just for testing though, not a permanent setup. If the game-server/master-server/database is heavy on cpu/memory/diskspace we could move it around a bit to try and disperse the load as evenly as possible. Do you have any experience that would warrant a certain type of distribution of the services on the different computers? As in which server uses what kind of resource(gaming/master), and would it be harder to set up if we spread the services to different servers?
Does using unity in any way affect security, other than in us having to open a few ports? Are there any know security holes in either of the server roles?
Ill just stop now, since I come up with more qeustions each time I type something, and it feels like im asking a few difficult questions since im supplying you with somewhat limited information.
The most important thing for us right now however, is getting a game up and running so we can run some tests!
I don’t think there really is an easy way of doing this. You could try it with some sort of game AI that simulates players. But only real players testing will give you results you can truly rely on. If you want to do it “real nice” check if the game AI player simulations break it first, and then, when this is solid, let human players beta-test.
But you do have someone who is an experienced developer, preferably someone with networking experience? Networking really requires a lot of very tricky programming. Do not underestimate that. I would come up with three levels of experience:
a) Programmer
b) Game programmer
c) Multiplayer Game programmer
a is easy, b is more difficult, c is really difficult. Of course, there’s also d (game engine programmer), but fortunately, that’s UT for us
Hm… maybe read Designing Virtual Worlds by Richard Bartle, or, probably better for you: Massively Multiplayer Game Development (1+2), by Thor Alexander (Editor). Honestly, MMO(RP)G is around skill level G or so… at least Mixing mobile and online is really cool, but that adds even more complexity to it.
I don’t know what exactly you refer to with “lists of APIs”. If you’re asking for packages (aka namespaces), nah, sorry - that’s something I’d like to have, too - but the API is only split into UnityEngine and UnityEditor…
Hm… well… neither phones nor the “3D game clients” (Unity based, possibly) will be directly communicating with the database. You need one level in between, a Webserver, with communication protocols etc. - that’s a HUGE project… I hope you have a lot of time. And some people with expertise at hand…
Hm… is Unity really struggling? Just kidding… Sorry, I haven’t heard of Project Darkstar or looked into it…
Well, the first step would usually be creating a game design. Then, an architecture for the game (of which the answer to your question might be a part of). There’s many different approaches, and many papers discussing these approaches. You might try to ask Google something like
MMORPG game server architecture
And read up on that…
You could try finding out about security holes in RAKNET (which is the networking API that Unity’s networking is based upon). When I ask Google
raknet security issues
It gives me:
… among others.
That is quite an interesting approach Usually, you would have a game prototype first, and then think about testing it… Good luck, and take care!!!
You know, ideas are easy - implementation of certain ideas is… well… um… not that easy.
Fortunately for us, we dont actually have to make everything work. Were in a position where we just have to make sure that its actually possible to do(within reason). Lucky us :roll:
That being said we want to do as much as we can, but were limited to about 250-300 working hours.(we’re not allowed to spend any more time on the project, school policy)What we are doing most of the time is setting up Exchange servers, Sharepoint services or just distributing software on a local network. So you can see why were having a hard time with this…
We have tried to explain that testing some random game on our server wont give us any information towards server load and scaling that will be comparable to the final game, but our contact seems very intent on actually getting a server up and running. I think mostly because he wants to see if we can get both a pc and a mobile phone to communicate with a singe database.
I honestly didn’t think we were taking on such a herculean(?) task when we agreed to this, but we want to make the best of it anyway. Therefore we are now focusing on just getting a server with any kind of game running that clients can connect to. Dosent have to be anything more advanced than tetris. I dont expect anyone to just hand over a game to us, but if you know about anything at all…
I think I found out this last part here on my own, but I let it be just in case someone might have something to add.
The few times ive set up game servers its only required me to start a .exe file located in the installation folder. This was sort of what i was expecting to do to get a Unity game up and running, but somthing makes me think i actually need to do a bit of programming to get anything up and running? Or could i for example pick up a game made by someone else, then just fire up the executable?
Torque has an available MMO configuration that works well and was recently released for free to all licensed SDK owners. Google Minions of Mirth to find it. That being said, you’ll want to stab your eyes out with a sharp instrument trying to get artwork into the Torque engine.
Bandwidth requirements you cannot really gauge as it is dependent on too many factors related to your individual application. Are you using zoning, click-to-move, how you handle particles and projectiles, etc.
Well, if you have an existing game server, all you need to do is start an exe. That’s right. But for what you want to test (interaction between database, Web server, game server, game clients, mobile game clients), I guess you’ll have to develop a game that does have that kind of interaction first
I have considered this kind of interaction (mobile clients for some minor subset of the game functionality that’s suitable for mobile) for one of my future games - but that’s something I will start developing not earlier than in about a year or so; and it’ll probably be another one or two years before I have something up and running to be tested (the mobile stuff on this is also kind of low on priority)… I know that EVE Online already has this (well, I think that this is the case - but I haven’t played it myself, so I’m not sure).
I will probably add optional notifications via SMS to my current game, but that’s a much simpler thing to do.