views:

44

answers:

2

I am in the planning phases of a project for myself, it is to be a single and multi-player card game. I would like to track statistics for each person such as world rankings etc...

My problem is I do not know the best approach for the client - server architecture and programming. My original goal was to program everything in C# as I want to get proficient in that language. My original idea was to have a back-end database and a back end server run on some sort of hosting on the internet, however that seems costly for such a small project that may or may not make any money.

I have tried looking into cloud services however I am unfamiliar with the technology, and I am not sure I can make them suit my needs, especially since most like Google's cloud wants you to use their coding architecture from what I understand.

Finally my last problem is that I would like an architecture that can be used for different languages so that I can port it from PC to IPhone, Xbox etc...

So does anyone have any advice on the best architecture and language to do this in?

Am I worrying about architecture and back-end costs to much and should just concentrate on getting the game running any which way?

A: 

I think the question of costs (e.g. of database hosting) is a business decision, not a technical one. Are you trying to turn a profit? How many users will you have for your game, and what will they pay (directly, or indirectly via e.g. advertising). There are hosting solutions for any language/data storage you may pick. I doubt you need "cloud" solutions for this though, a standard database (MSSQL, MySQL, Postgres, etc.) should do just fine, and one of these will come with almost any hosting plan that allows you to deploy your own code.

Regarding technology, C# is a perfectly fine choice for a web application and if learning it is a goal, then by all means use it. You should definitely develop a working game on your own computer before it makes sense to pay for hosting (you'll still need to deploy and test the hosted version after it works locally).

As for your last question about moving to other non-PC platforms, I'm afraid you're mostly out of luck there. C#/.NET will help you deploy to Windows-based phones, but for e.g. the iPhone, you have to use Apple's SDK and environment. I have no idea about the XBox. The best advice I can give here is to abstract your layers (e.g. a MVC architecture), and maintain a clean and well-documented separation between them. That way, you can re-implement, say the view and controller on an iPhone, but have that still utilize your centralized data model.

Greg Harman
A: 

C# would be a great language, even for the iPhone and Xbox. With Microsoft's XNA framework, you can write your client card application for PC, Xbox, and Zune, without changing much code at all. If you're considering the iPhone, then you should later consider MonoTouch, which lets you write C# for the iPhone. You also have Silverlight, which you can use to write a rich client for the web. So, I would absolutely suggest C#, whether it be just for learning or for putting this into production later on.

As for using a server on the internet, I would suggest simply installing SQL Server Express edition. That way you can run a server on your local machine separately, alongside a client to save from having to pay for a host. Then, when you're ready, you can move it to web hosted SQL Server instance or just use MySQL or the like for free later on when you are ready.

Ryan Hayes