Jump to content
  • Advertisement
Sign in to follow this  
b0x

Unity Server for Unity game

This topic is 1263 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hey,

 

I'm working on a Unity game which is pretty far in development and the game has a build-in map editor.

The user should be able to upload these maps to a server and download them from the server.

But I don't have much knowledge about servers.

 

I know I should access the database with an API because direct access to the database would be a huge security problem.

So the design would be like that:

 

Unity game (client, all scripts C#) > API (PHP?) (server) > Database (MySql) (server)

 

So the server should have the ability to host a API, a database, and store files (actual files (the map file) dont go into db because of recommended db design)

 

Looks like I need to host the server from Microsoft Azure or Amazon ec2 because I can dynamically adjust the needed resources on these ones if I'm right? Nobody knows if 30 people will play the game or 300 000 .

When I go to the ms azure page they offer webservers, sql databases and virtual computers so I'm honestly a bit confused which ones to get for my needs. 

 

It would be totally awesome if somebody could provide me a complete small example with a 1 table db, short API and which services to buy from azure/amazon because I really need some help on that. It's hard to find anything on google, if you search for game server, server for a game or anything like that you just find pages to host your own BF4 Server and stuff.

Share this post


Link to post
Share on other sites
Advertisement

I've probably over-recommended it in the past for things that other approaches would be better suited, but I think what you want here is a RESTful API, at least as long as other clients don't need to see changes instantaneously (that is, if your design calls for one player being able to upload a map, and for another player to be able to download it sometime soon, but not instantaneously) -- there are things you can do to hasten the turn-around time, but at its core RESTful interfaces support multi-layer caching -- its one of the reasons the internet scales so well, but also introduces propagation delays where you might see a recently-cached version of the content that's older than what might have just changed on the server. When you request a restful resource (via a URL) the request can be intercepted by, say, a chache your ISP runs, and they might respond with something they have stored for that URL, rather than hitting up the actual server for it again. For content that's static, or infrequently changed, this is good -- otherwise Netflix would have ground the internet to a halt long ago.

 

There are lots of good resources on RESTful interfaces, but the basics of the API are that each URL represents a unique resource (a map, in your case), and there is a standard set of built-in http API methods that you can use to get, create (post), update, and delete these resources. Usually, the primary resource (URL) for the thing you're dealing with isn't really the thing itself, but might respond with a list of sub-resources that make up the thing in the form of URLs that represent each sub-resource, or things you can do to/with the sub-resources (you can think of these as members of a class). So, you would request the primary URL, and in the response you would find another URL to update the map data itself, for instance. I forget the official document that defines The acronym HATEOAS describes how to best-use this approach, and its the basis of Atom/RSS feeds, so its a well-proven concept. Also, I may not be saying it clearly, but REST is an architecture, its not a protocol -- as such there are some differences of opinion regarding details of implementation.

 

Azure and other similar cloud providers are one solution that provides a great deal of integration and value -- it has everything you need out-of-the-box. Having never done so before, I wrote a simple RESTful API on azure in less than a day, including all the setup and familiarizing myself with the basic features of azure. Another approach would be a using a host like Digital Ocean or Linode to host a collection of Docker containers that make up sub-services in your server (one for the database, one for blob-storage, one for the REST API, one for a load balancer, etc), with that, you can fairly easily spin up additional resources as you need them. There are third-party solutions for that, but its not all integrated like Azure is. Anyways, the buzzword today is "Micro-services" so you might want to google that.

Edited by Ravyne

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!