Game server for (yet another) MMO game.

Started by
8 comments, last by redskyforge 6 years, 3 months ago

This is not 100% networking question but rather choosing the right path.

We design SP/MP multiplatform game with similar gameplay to all those browser games like OGame (etc.) or "idlers" like Fallout Shelter - that means, you choose actions to do and then leave for some time untill everything is finished then repeat. To implemenet the client-side we'll use C# with Mono or something like that.

The SP segment would act as tutorial or so, the same mechanics but much faster, which requires game logic to be available localy.

On the other hand the MP segment would act like slim-client which only gets data or requests changes to user's account from game server. Game logic and mechanics stays the same as SP, but slower.

Since it's not any action-like game it does not require complex server architecture so there comes the question.

Is it worth or required to implement our own server-solution, implemented with C#/CPP hosted on VPS or dedicated server (or maybe on rented IIS hosting?) for such "simple game"? After some brainstorming we've came to conclusion that we could implement such solution with PHP or other "web" programming language for sake of more common hosting solution.

The question is, which solution is better (since all have pros and cons):

  • Own game server with VPS or so
  • Existing server solution with simple engine implementation and common hosting solution (like PHP or so)
PS. Sorry for bad english.
Advertisement

Have you considered a cloud solution like Amazon or Google? It can give you flexibility to adjust for the game's popularity and avoid the need to upgrade the server under pressure or to switch to a less powerful machine in order to save money.

Not a game design question. Moving.

-- Tom Sloper -- sloperama.com

15 hours ago, valambrian said:

Have you considered a cloud solution like Amazon or Google? It can give you flexibility to adjust for the game's popularity and avoid the need to upgrade the server under pressure or to switch to a less powerful machine in order to save money.

Not really. Can you give a bit more details or point into right direction?

13 minutes ago, tariel36 said:

Not really. Can you give a bit more details or point into right direction?

Look up Amazon's AWS and Google Cloud services. Both allow you to rent servers, and to have servers dynamically added and load balanced.

 

Unfortunately your question needs far more information to be answered well.  They include questions about how much data is transferred (both in individual games and across all games), how much processing is required (both in individual games and across all games), and your budgets. 

You are right to consider simple web hosting IF your game can work with such systems. If you have very low bandwidth and low processing requirements even when many people are playing, that can be a cheap solution.  If you have low requirements per game, but if having 1000 active games would be too much for a hosting service, then you'll need to look at bigger solutions.

Bigger solutions cost more money, which is where budget limits are important.

Yes, you should use a server/servers plan... or maybe a custom and reliable one (expensive?). That's out of question if you want to give a good service. 

AWS Bandwidth can get expensive... It's something like 0.09$/GB. I don't know if that could pay a player, maybe if it's a website-based game, and/or you are a really good item seller-merchant. Talking about bandwidth. I would consider Digital Ocean, Vultr, or Amazon Lightsail, because of bandwidth costs. And Vultr/Digital Ocean have the most accessible payment schemes. Vultr lets you upload a custom ISO.

But what about IIS. I think you could do that, and maybe it's cheaper. Personally, I like to have an OS at hand.

Coupon https://www.vultr.com/?ref=7288642
Coupon. https://m.do.co/c/1d5dbbfaa92f

For games like Farmville, or Backyard Monsters, or similar, yes, you can calculate everything you need to know when the player connects and makes the request "what is the current status?"

Typically, anything that grows or evolves, will have some "grow duration" and some "start time." The game state simply consists of all the items, with their stats, and start time. Once the current time is > start time + grow duration, the object goes from "growing" to "completed." This can easily be calculated both client- and server-side. To work with time zones and clocks out of sync, you'll want the server to respond with both "this is the time the thing started" and "this is the time the server thinks it is now," and then have the client calculate a delta between what it thinks the time is, and what the server thinks the time is.

If you need real time interactions between players (attacker and defender both make moves that react to each other) then you will need something with more permanent connections than the request-based PHP programming model, but for the basic games, resolving everything only when the player asks for state is totally fine.

 

enum Bool { True, False, FileNotFound };

Thank you all for replies. That pointed us in some direction and we'll investigate the possibilites. We would like to reduce costs to absolute minimum for now.

I would go with the simplest solution where you have the most knowledge.

For development and ease of deployment, PHP is definitely a good choice. I once made a turn based browser game using PHP, and it was extremely easy to ship something that people played, and deployment just meant FTP-ing to a shared host.

If you go down the IIS route, keep in mind setting up a server, configuring IIS correctly, keeping the server updated and so on will cost you significant time with a VPS, and if you use a cloud solution, the costs will be relatively higher. (Azure has a very nice 'webapp' solution that gives you a pre-configured Windows environment you can just deploy your .NET webapp too, but it's not cheap).

Good luck!

ChasmLords is a multiplayer roguelike with faction based PvP and dungeon crawling. Join the beta at Chasmlords.com!

This topic is closed to new replies.

Advertisement