Launcher, User Authentication, Update Downloading

Started by
6 comments, last by BKrenz 11 years ago

Hello everyone!

Before I start, I would like to mention that I know my away around programming general applications and the like in C#. It's my intended language for the game I'm planning.

I'm currently planning out a Sandbox RPG style game, devoid of any story lines. The plan is to use a Client-Server model, where a player will spawn a server to handle all of the computations and logic for the game, and the client will handle the rendering, audio playback, and user input. The reason behind this is to allow for easy locally-hosted multiplayer.

However, I'm still in the planning stages and things are subject to change. I'm still planning out a lot of the main game content, but I'm also working on selective implementation details. I plan on starting with a basic Launcher for the game, through which a player will Login using a created account and be able to download the game and its updates. The Launcher will also be providing other data, such as news.

I'm stuck with planning the implementation details of the server, as it's not something I've encountered before. Basically, I need to figure out how to approach an authentication server based on created user accounts, and how to accurately distribute the latest updates of my game to the user base.

Also, I figure I'm going to have to host this stuff somewhere professionally. I would only need the Authentication server running full time, and the ability to download the game files directly from there. No idea how to approach that, either.

Feel free to ask me more questions if you don't understand what I'm saying.

Advertisement
What exactly are you having trouble planning out?

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

Essentially here's plan for the User Accounts, Login Authentication, and Game Downloading as it stands now. I need to know if there are gaps, and how to fill them in, and whether or not I'm sane.

1) I will need to create a website (or a similar function) that allows for users to create accounts.

2) I will need to store these accounts in a database.

3) I will need to create software to act as the authentication server.

4) This authentication server will process incoming requests from a user's launcher when logging in, and verify it's a valid User.

5) The server will need to access the database for verification.

6) The server will return the verification results to the User.

7) If valid, the launcher will proceed.

8) The launcher checks if game is up to date, and updates if not.

9) I'll need a place to have the game files hosted.

10) I'll have to code the launcher to correctly install the files.

11) The launcher will create an instance of the Game Server and the Game Client, for actual gameplay.

So my questions are:

1) What is a good website hosting company?

2) How would I host my Authentication Server?

3) How would I host my game files for download?

4) A MySQL server would be best for a database of the user accounts, yes?

I'm going to have a playable state in the game before I even start worrying about login features. That's namely for when I need to manage other people playing the game.

You have nothing in there where the Launcher validates that it is actually talking to the server, or that the launcher validates the files as being signed by you.

If your game is small, you can host the files, and the user database, and the login service, all on a shared web hosting plan, such as DreamHost or whatever. You can have the game use a HTTP POST with user name and password to get back the validation result for the account. Write the application in Python or PHP or Ruby or whatever web hosting language is available where you get your hosting set up. PHP is very easy to get started with, and will get you pretty far, although if you dive very deep into it, it will drive you batty with all of its language and library inconsistencies. For a game that may or may not get big, it's probably the perfect choice, though :-)

The "best" database is mostly a function of what you're most comfortable with. There are many games that use MySQL for user databases, so that can work great. MySQL is also usually available from web hosting companies. Other options for user account databases might be Redis, RIAK, MS SQL Server, BigTable, or SimpleDB, depending on which particular technology stack you're building your server on.

Once your game starts to grow and you're ready to go "for real," you can move your code and data to a virtual provider like Amazon EC2 or Linode or Rackspace, or you can start renting full servers from any self-managed or co-location facility.
enum Bool { True, False, FileNotFound };

Thanks for the response hplus!

As for the web hosting, I'll look into using Python, as I know some of that. If unavailable, I'll definitely look into PHP.

As far as databases go, I'm not really extremely interested in database work, and only really need something that works. I'm not familiar with designing any of the database languages you mentioned. Would you recommend one over another, and how would you recommend learning how to do what I need to do?

You may not be interested in databases, but that is the tool you have to use to solve this problem :-)

I think the best overall option would be to use MySQL. It's available everywhere, and performs well.

You'll need to know how to create database tables, and how to insert, update, and query those tables. This means learning some MySQL administration (for the user/password your server uses to connect,) some SQL (for the table creation and queries,) and some MySQL connector library API (for actually having your code run the queries.)
enum Bool { True, False, FileNotFound };

I completely understand I have to use it. I've learned it in the past, but that was Sophomore year of High School. Plenty of time since then, so all I remember is basics.

This topic is closed to new replies.

Advertisement