Hi i’m not planning to do any of this yet but i just want to know what type of work would needed to be put in for a Online Game/MMO.
The concept i have in mind is kind of a MMO and is a Online Game so i’m not thinking of having a world full of 1000’s of players just 50-80.
But my question is how are servers made and is their a fee?
Do you need to have some sort of server and can i have an indepth explenation of what a server is?
Can alot of physics cause lag?
Could one person work on an online game (I’m not talking about anything like World of Warcraft or a major MMO i mean something that is small and has multiplayer features like a FPS or something and probably a year’s worth of work.)
Thanks For Reading (I am not planning on doing any of this yet i just want to know a few things about multiplayer games.
First off, don’t call it an MMO. That instantly brings to mind massive games which generally are not going to be possible for an average (or even highly experienced) developer. Since you’re intending to have under 100, just call it an online game and you’ll get far less naysayers.
For a simple FPS-style game where you don’t need persistence, you can set up a system where the players connect directly to each other and effectively become the servers. However, for a persistent world, you’d probably want to either program your own server, or license one from a company. There are a few out there that are known to work well with Unity such as SmartFoxServer, Photon, Badumna, etc. Keep in mind, these won’t just work automatically out of the box, you still have to code all the game logic and anything you want the server itself to do. The server coordinates what actually happens in the world and sends out information to the clients. The clients are responsible for using that information to display a proper view of the world - servers work entirely in the world of data and need no visualization. Additionally, the server is responsible for validating that what the players are doing is allowed. Once the client is in the hand of players, there will 100% without a doubt be someone who tries to exploit the game. The more your server can validate, the harder it is to exploit. Finally, the server is where all the mutable game data is stored - where players are, what’s in their inventory, player accounts, etc.
The server software itself needs to be hosted on a physical machine somewhere - your home computer will not work for this. So you’d need to pay to use the server hardware. There are hundreds of companies out there that can do this. One of my favorites is linode.com, since they’re cheap and give you full access to a virtualized machine that would be more than enough to handle a small game.
Yes, but it really depends on what specifically you’re doing.
Yes, but it will be difficult and probably take longer than you expect, especially if you’ve never made a game before. It is already more difficult than a basic game due to the requirement for both a client and server as well as all the networking involved. It is extremely common for projects such as these to be started full of optimism and fizzle out a year or two later (or even within a few months) simply because all the factors were not considered. I always recommend starting small, but planning out a game and learning how to build the components is always worthwhile. After awhile you may find you’ve picked up quite a bit of experience and know-how and are in a much better position to consider a game of this scope.
Okay thanks for all the useful information it really helped, it’s not a FPS i just didn’t want to say to much about my concept lol and i think i’ll work on that project and something else at the sametime, and also how about streaming the game to a game launcher on someone’s system, would that cause alot of problems such as lag or something, i had the streaming idea in mind that way it would be hard for hackers to try and exploit the game, and also i was planning on having it as a Free to Play that has stuff you have to buy.
“the server is where all the mutable game data is stored - where players are, what’s in their inventory, player accounts, etc” i think i have an idea how about the server stores player accounts and other things but the characters and inventory are saved on your system but if someone sends out a download file of the characters someone else can’t use them because their characters are assigned with their account.
I’m planning (still NooB but anyway) of developing sort of MMO. World would be massive, but divided into multiple instances, and I won’t expect more then 15 guys be present in any instance at any given time. So this is how it will going to work:
Dedicated quad core server, sure Linux. Game client receiving initial instance, and when person moving around client send to server current player coordinates and a vector(direction and a speed) of movement around 10 times per second. Probably msg would also include whatever items person equipping. If world is modified another msg would be generated, specifying what was added or destroyed in the world. Sure server just repeat those msg to other clients. Another hurdle I see, is a mobs moving around the instance. They would generate similar sort of msg, basically their coordinates and vector plus their state(running, walking, staying). I don’t expect multiple mobs be close to a player, but even with ten guys and like 7 mob near them traffic would be very low. Very simple Linux programming and no need for specialized server software. Minuses - not a real real time(lag 200 -300ms) - not a advanced FPS where you expect lag under 100ms. And such system probably won’t be reliable or suitable for hundreds of mobs around and raids of 25+ players. And initially there would be no validation at all - ppl could not kill each other, so there would be no big incentive for hackers(and it would be sign of success if someone would find it worthwhile to put their time trying to exploit the client - my initial goal is to release a somewhat buggy game that works only if used properly).
Basically Linux computer works like a switch, receiving multiple msgs from players, and repeating them only to relevant ones.
Probably naive vision - but any comments as to why system described above should not work are very welcome. And a ideas of how it should be done.
Defo start with something way smaller first I wanted to do an MMO right of the bat - but realised that is was a pretty silly idea. Instead I’ve created a simple game, which will act as component in the final game. And slowly I am bringing the MMO stuff in as I go. That way I can build as I go, and I avoid annoucing I am making an MMO ( which is a flag for flamming on these forums ).
What are you planning to use as your server software? you mentioned linux programming - are you going to roll your own? that would be pretty dang sweet Think about server costs as well - that will add up quickly, if you are fine running the game for free and paying the server costs off your own back, that is awesome. Otherwise you have to work out some way of paying for the server. I’m not sure there are any majorly successful indie subscription based MMO’s ( though I could be wrong, please feel free to point me in the direction of one ) - so another option you have are microtransaction systems, which seem to be becoming more and more the norm.
With the mob player interaction, you will need think about the scenario of two players engaging a mob at the same time, who strikes first, who gains xp, how loot will be shared, which player will the mob attack ( I am assuming the server will handle the mob ai ).
Also, for generating accounts, make sure you include a play as guest option - how you handle that is up to you - but people really seem to hate making accounts even if you arn’t asking for an email.
Sounds like you are being sensible, and having a very good think about what you are doing - which is an excellent start! I wish you luck with your adventures
If you don’t want people cheating, you need to store ALL of this info on the server and only tell the client what the player has when he connects to the game. Otherwise all someone has to do is figure out how to hack the client and add whatever items they want. The client doesn’t need to store any of this.