🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Feasible server setup for MMO?

Started by
10 comments, last by TeaTreeTim 4 years, 3 months ago

Hi, nice to join the forums~~

This is my first time to try and get an idea I had about how an MMO could work based on an idea I have for a game. I have tried to research as much as possible, so I hope I don't come across as a complete fool…

So, at the risk of embarrassing myself.. here goes…

Without going into precise numbers, like server loads, player counts, would a setup like this work in theory?

Example game universe:

System A- has 2 planets and a moon

System B - has 3 planets

stored on 2 separate servers.

Travelling between system A → B would be to switch to a different server through loadscreen (disguised...even though everyone would know). Something like a pretty lightspeed visual.

all items/data/anything that is owned by the player or picked up by the player from the server world is stored on the player server and is called by whatever server the player loads into at start / travels to.

Player Items would be categorized into 2 sets, persistent, non-persistent.

if a non-persistent item is discarded into a system server, it has a timeout and will be removed

persistent items would be stored on the system server and the item remains there until another player takes it and moves it to a different system.

Is a player data server unnecessary? is this handled on the clientside?

I really hope this isn't a hilariously stupid question. I am a total noob, please have mercy if this is the case…

Thanks for reading~~

Advertisement

I don't see why you need more than 1 server tbh. Just because the game world is spread out doesn't imply it has to be spread out in reality too?

I might be completely misunderstanding what you try to do here, perhaps you should tell what problem you are solving with this setup?

This is a great exercise for the mind, nothing to laugh at.

Ten years ago (maybe more!) this would have been a realistic problem to solve while designing a server/client architecture for a MMO, but nowadays you're better off using any of the existing services. These services will provide you an abstraction layer so you'd never have to deal with physical servers or databases. You wouldn't also need to worry about disk space, memory usage or any other scalability-related issues. All of this for a price of course, but a lot less than if you had to roll out your own system,

trapazza said:
but a lot less than if you had to roll out your own system

Not really, you have full control over what happens in your own system, when and how more computing power and space is acquired and when released. Else you never really know what you get for your money.

Amazon and Google Cloud Servers are not what I would call cheap these days but you get a better service than with any other host because those companies are also hosting their stuff on those servers. Getting a game server today is no longer meant that the server is dedicated, it is running on a virtual server most of the time, anywhere in a server farm. This enables the option to be flexible, running out of memory, no problem the surrounding physical server still has some left.

But as @alberth said, you won't host different parts of your game world on different servers anyways. This is a question of pricing. What you usually do is scaling server power up, for example by starting another virtual maschine in your server farm, when active user count is high and shut it down if activity decreases. It is also possible for your clients to connect to another server while playing the game if the server management process decides to split the players up to ensure performance.

I had already to think about that problem of balancing between accessability and pricing for a professional online project and we decided to run such a performance based balancing system but also had the problem to synchronize/ move user data (of some GB) between our servers. We also had a dedicated login server running on it's own maschine.

If I would do this for a game, I'd have the database (as long as there is on) be a standalone server along ith the account/ login server and have the login server also manage the virtual maschines running the game instances based on current need.

Another problem to solve is/ will be to have players be able to reach each other. How often I played an MMO or simple online game and we had trouble to group up properly. Either we were in the wrong instance or in case of ESO it sometimes took ages to join a dungeon together because their servers didn't properly match players between available server instances. Good examples how to NOT handle this! Instead you could somehow manage to have messages send not from game server to client directly but but from a gateway server to the client. This way a clien't dosen't need to care where it is connected to and where it's party members are as long as messages are send through the right gateway

dreamstate said:
Travelling between system A → B would be to switch to a different server through loadscreen (disguised...even though everyone would know). Something like a pretty lightspeed visual.

all items/data/anything that is owned by the player or picked up by the player from the server world is stored on the player server and is called by whatever server the player loads into at start / travels to.

I believe this is literally what EVE Online does. The flaw in this system is when everyone decides to go to the same system, as happens in EVE.

dreamstate said:
Is a player data server unnecessary? is this handled on the clientside?

You could avoid it, but it also provides a useful interaction point with the web side. You could probably even do it all as a HTTP API in your favorite web framework/language. As well as a possible place for persistent items, even in a non-MMO game you have account registrations, logins.

It also makes a good point for any persistent data/items that needs to survive a server-restart. The “game servers” then don't even need their own persistent disk storage, as well as being the point to manage starting/stopping those server instances.

Shaarigan said:
Another problem to solve is/ will be to have players be able to reach each other. How often I played an MMO or simple online game and we had trouble to group up properly. Either we were in the wrong instance or in case of ESO it sometimes took ages to join a dungeon together because their servers didn't properly match players between available server instances.

It is a scaling problem, EVE Online is the only one I can think of that avoids this with one “universe” for most of the world. The servers run at an extremely low tick rate (I think 1 update per second!), and it is still hits limits when too many people try and go to the same system.

A lot of this including persistent items reminds me of how EVE Online works, so might be worth spending some time seeing how all that fits together (what runs in realtime and what doesn't, what is fully persistent and what gets lost on every server restart, etc.). So I think the idea is sound, but it is a huge amount of work, and MMO server costs will not be cheap at such scales.

dreamstate said:
Is a player data server unnecessary? is this handled on the clientside?

Separately, yes a data server of some form is always necessary. You need a single known-point to connect to anyway, even if that is just to get the “server list” and so storing some details about players is not much extra. and you probably want a website anyway. So this doesn't really need to be something that special.

Even if your not making an MMO but just a “regular multiplayer game”, or even just normal web stuff where multiple users interact, you should consider it. You have to assume the client is completely untrustworthy, store everything on some server. The client might cache things like inventory for make its own implementation easier/more efficient, but the server needs to actually manage that persistent inventory so the client can't just give itself items, teleport, etc. You can solve some of these in other ways, but something you need to consider if designing anything multiplayer focused. Also players generally expect all their progress to not vanish in an online multiplayer game because they switched computers/reformatted.

Thanks so much guys!

Your replies are so useful, an insightful eye-opener and learning experience for me.

The fundamentals behind the idea of the game would be that its:

  • Super Stable, good performance
  • House a good size of players and keep good performance levels
  • allow for expansion of the universe
  • allow for huge amounts of game mechanics, a wealth of game loops to keep players playing
  • Huge amount of player customization to allow players to invest in their character
  • perhaps most importantly, fun to play

In my mind, the game would be made with just one system having 1 planet (and maybe a moon) to begin. Then, depending on success, other planets could be added later. New systems with new planets could also be a later in development.. again, all depending on if the first system can be made.

In terms of graphics, I'd plan on avoiding hi fidelity, aim to try and future proof the art style as much as possible.

For example: Not cartoony, but with a visual style that could age well. Aim for as low poly assets as possible BUT compensate with with really clean and interesting designs.

It would be case of balancing visuals with performance, to allow for ultimately what a game is supposed to be, fun to play.

So, I first needed to consider the best way this could be achieved in a server setup.

Of course, this is all just theory crafting and pipe dreams at this point. I hope one day to put out visual concepts and WIP assets to see if it could get any traction. I have some programming experience…but not in game coding alas.

My background is 3D artist/Graphic designer.

Thanks again so much guys!

Hello again~~

After reading and trying to understand as best I can the server tech,

I thought it would be good to think next about how I could get a project off the ground, by planning a smaller first step (but still keep the server tech planning in mind for later expansion….dreams).

First goal: Build a very limited space zone and 1 very simple planet, all super low-poly, low-res (i.e. a a box for the space zone/ simple low-poly geospheres for the planet and skybox) and work out a planet entry/exit system.

Quick and dirty 3D visual (Grey colored box is space zone)

GREEN = planet EXIT zone

ORANGE = planet ENTRY zone

PURPLE = skybox boundary (used to trigger autopilot/animation sequence fro entry/exit, detailed below)

----------------------------------------------------------------------------------------------------------

CASE 1.

Player is INSIDE the rendered Planet zone (Planet / GREEN zone / PURPLE skybox) Everything outside is not rendered to client.

((PURPLE is a skybox / boundary showing planet atmosphere roof seen form surface.))

Player enters GREEN zone from inside the planet heading out to space - a 5 second countdown alerts the player they will exit the planet atmosphere in this time (Unless they fly back out of the Green zone before this).

If player is IN the GREEN zone when the 5 second countdown is finished, The ship will enter an animation sequence whereby the ship is autopiloted into animation load screen to enter the SPACE zone (Just outside of the ORANGE zone).

Also, If the player hits the PURPLE skybox boundary before 5 second countdown, same process occurs (autopilot/animation sequence into space)

CASE 2.

Is the same in reverse. Player is OUTSIDE the planet in Space, The planet is rendered as a simple geosphere.

Player hits the ORANGE zone…. 5 second countdown. If still inside ORANGE zone or hit the PURPLE boundary before timeout, enters autopilot / animation sequence to enter Planet zone (Just outside of the GREEN zone).

((PURPLE skybox boundary showing planet atmosphere seen from space.))

ISSUES: multiple ships in GREEN/ORANGE zone, how to animate/render so player can see other ships during animation/autopilot sequence. perhaps a short heat shield effect during entry/exit animation that 'hides' other players from player view until they are in new zone?

The planet enrty/exit system is Perhaps the first hurdle to try and plan out.

At this point, I would be looking to make only what is in the above picture (a limited SPACE zone and just 1 planet).

Initially all 'greyboxed' low-poly/low-res, to test it's feasibility/play-ability and if it can be done with good performance, performance/smoothness is key. Use tricks to keep immersion breaking to an absolute minimum , whilst keeping everything smooth and transitional as possible.

Basically I guess: inside planet zone is an instance , outside space is an instance… I think that's right?

This is a project i'd love to get started on, but I think it's too early to post this in the ‘PROJECTS’ forum, also I have no idea how I would start to put any of this together… how does an art/3D assets/ideas guy go about starting a project?

If anyone has any advice, insights, or anything they wish to share about this, I would be extremely grateful to hear~~

Thanks for reading this ?

dreamstate said:
perhaps a short heat shield effect during entry/exit animation that 'hides' other players from player view until they are in new zone?

Basically I guess: inside planet zone is an instance , outside space is an instance… I think that's right?

Well if going through the re-entry transition is an autopilot/animation event, then essentially I think you can treat them as completely separate instances/systems. The animation is essentially a loading screen while joining the new instance, long enough that the player should never actually see “loading”, so yes it needs to completely obscure the view in one way or another.

Not sure it has to be a heatshield effect (especially on exit, and for planets/moons/etc. without an atmosphere), you should be able to have the physical distance large enough that it is reasonable to not see the other instance visually, and you can fade in/out (and practically speaking, most games have a view distance far smaller than “1 pixel” on most displays and will fade objects in/out).

For other ships, just play the bit of the animation of them joining-leaving.

Essentially the same as you might do for FTL, with you seeing ships enter/leave warp, hyperspace, gates, whatever.

Adding planets like this sounds a long way from simple by the way, it adds a lot of stuff most space games don't bother with, and you have to deal with the issues of scale.

Thanks @syncviews,

Yeah, I think i kinda was being overly optimistic/enthusiastic/naive to call adding planets as ‘simple’~~ ?

I guess what got me to take the plunge and start to search out and ask about game development and concepts was that I have been following the development of ‘Star Citizen’. I'm not a backer of this game, and I don't have too strong feelings either way on it. However, wherever you stand on the whole ‘Star Citizen’ Development, I think it is a unique and interesting look into game development.

But, what really grabbed me was that, The idea of a space MMO where you can travel around planets, fly around/trade in spaceships/ walk around inside the ships and on planets, and other things, it seemed such an awesome concept…. concept is the key word here. Where Star Citizen is actually heading and what will come of it is another discussion.

So, I was thinking why hasn't any game company or development team looked at the massive funding success of Star Citizen (It's the biggest funded kickstarter for anything, not just games) and considered that there is a market for it, people must really want a space MMO with both flight and walking around (‘space legs’) to have pumped the crazy amounts of money into it, and thought about how to deliver a game that could satisfy the demand, but scale down it's ambitions in things like fidelity and focus on bringing an experience that can balance graphics / gameplay to really bring such a large scale space MMO to life.

For me personally, why I couldn't get into the whole Star Citizen thing was that it didn't lean into the whole space fantasy/space opera thing enough for me. Every character looks pretty much the same, like some kind of HALO master chief character with only slightly distinguishable variations. There seems to be only one kind of height and build for the characters… I'm not sure any of the ships seats/corridors/ladder entrances have been designed to accommodate any other physiques, it seems this kind of scalability has been completely overlooked. Imagined you could play as a 6ft menacing looking alien character? tough luck. Want to be a cool looking Nien Nunb character? Sorry. You get to be a G.I. Joe figurine looking commando same as the rest of the players in this unvierse.

There is lore there, but it seems so generic and cliched…. generic looking bad guy aliens….. generic bad guy aliens battled with humans….so many other things…. It's hard to explain exactly without turning this thread into a pages long essay, but the whole thing comes across as somewhat convoluted, not having a clear goal or inspiring story behind it.

I know they have plans to introduce other alien species to their universe (I think there's a total of 6?), but that seems light years away, and the art concepts and lore they have for them don't really grab my imagination, seem uninspired.

The spaceships, while technically unmatched, are on the whole kind of disjointed in terms of style and feeling. Feels like each one has been pulled from every different sci-fi universe and thrown into the game. They have an impressive variety of spaceships but it ends up not having a feel of THIS is Star Citizen, this is our IP, our universe. Just looks to me, here is a load of generic sci-fi spaceships , this one is ‘alien’, this one is from a ‘luxury’ manufacturer' this one is from an ‘industrial’ manufacturer…but the don't seem to have any iconic designs of their own or any kind of cohesion or heart and soul… just feel kind of soulless to me.

Even the flooring has polygonal beveling i noticed in one video. Whilst this is all great in terms of fidelity i suppose, does it really add enough immersion at the cost of performance….or….development time? How many players have stopped to look at the beveling in the floor as they run through the ships corridor and really appreciated it? Wouldn't a simpler method such as height maps allow for cool looking ships that don't require an IBM Summit computer farm to render /animate/calculate physics for them. Does having a more economic and less computational stress load of polygon loops on the edges of objects really make the game less fun or immersive? I saw a playthrough video where a guy ran to the door to the cockpit of his ship, hit the interact button to open the door, but there was a interactable ladder right next to the door also leading to a bunk bed built into the corridor wall…The door opened but the character was pulled into the ladder climb animation and so began the painfully slow (It took like 30 seconds…) climb up the ladder into the bunk bed, lay down, look up to select the'get out of bed' function', and then climb back down so he could try again. It's not over…. The character finally does enter the cockpit and has to waste more time, firstly the overly complex and time consuming‘enter seat’ animation and then the fun of first having to look in the right directions and interacting with all the flight displays and interaction options. Just Imagine….. you're on foot being chased by the space cops after you pulled off that heart racing bank heist quest you got from the space gangsters in the unlawful zone of space after you had first completed enough prior quests to earn enough gangster faction reputation points to gain an audience with the head gangster to get the quest… you traveled to the quest zone, pulled of the heist with the skin of your teeth, but you're not home free yet… The cops are on your tail! You gotta run through the back streets of your instanced quest zone (could even be a team quest with your buddies) trying to lose the cops. You make it to ship with the cops hotly on your heels. You hit the interact button to send your ships entry ladder animating its way down to the floor in all it's high polygon glory (it even has the foot grips modeled in polygons!), but no time to look and admire! as you word to yourself "c’mon, c'mon!" whilst your character slowly climbs the ladder in a high immersion animation. Finally, your in! You dash towards your cockpit door….hit the interact button. . Ooops, your character is pulled into the ‘enter bunk bend’ animation by the bunk bed ladder right next to the cockpit door….

In other cases, other space IP's like Star Wars KOTOR and others in the star wars universe seem to suffer from over saturation of what originally made Star Wars so awesome. Watching gameplay videos of crowds of cloaked figures wielding vividly rainbow colored lightsabres , or more of the same aliens and droids standing around that we have seen for so long now kinda made it lose it's magic to me.

How about a lore story where it's not generic looking bad guy aliens vs. humans, no ‘chosen one’ cliched story lines.

How about taking all the things people love about cherished space/fantasy IP's and turning them into something new.

A new universe and lore filled with wonder and excitement , put together in an achievable MMO framework that let's players live out their fantasies.

Where's the smokey space cantina full of aliens and a sense of atmosphere. A back alley with dark figures lurking. Quests that take you to new destinations that feed your imagination. An over arching story line that a player can choose to follow if they so wish.

The chance to fly through canyons in your space fighter being chased by folks who want you dead.

There's so many awesome artists and developers out there with great concepts and ideas, why do we end up with such disappointment?

Of course, this is all subjective, but there must be people out there who long for a new IP that breathes a new life into the sci-fi genre?

There must be a way to manage and find a balance of graphics /technical capabilities / other constraints into something that can offer a game to hook peoples imaginations and bring something new to the table…

But, as to how or where this would or could even begin to take shape, I don't know outside of my own story and art concepts/3D assets.

Due to life circumstances, it would be near impossible for me to attempt to bring my programming skills to anywhere near the enough the level to create any kind of working tech demo by myself.

I guess it could start with a small location and some example characters, and of course a (small) spaceship, in either Unity or Unreal? Would that be enough to garner enough interest perhaps to bring in people who would be interested in building up this project to take it further…

Dang, It turned into a wall of text~~ Anyone who read through all that and wants to help me out, anything, advice, thoughts, you have my greatest thanks.

If nothing, else, I hope it's a somewhat entertaining read for the cool folks on this forum ?

~~ Keep dreamin'~~

As someone who's started working on their own persistent world project… just start. You'll find there's a lot of technical little nuances that you'll need to overcome. You could put everything on one box if you want to, you can outsource your game servers to a company and just run the DB off your own box, or you could have everything outsourced. Either way you need a DB servers in the mix of “servers”.

If you aren't willing to learn programming (or anything you need really) and don't have the cash to hire someone that does… it will only remain a dream.

This topic is closed to new replies.

Advertisement