So I'm thinking about doing a small game in Native Client. To be able to support leaderboards and some social whatever and monetization I'm going to have to do some server-side stuff. But I've been a console programmer most of my life: I've never done server-side stuff. So I've been looking at various options until my eyes glazed over. Google's App Engine makes OpenID authentication easy ... Amazon EC2 is easily scalable ... taking my own web-site and bumping up the account type is cheap ... there are lots of samples in php, but I don't know php ... I do know a little python ... and I'm fluent in C# ...
And ... start on my Windows machine? Run a different OS with VMWare? Or just start coding on my hosted box or cloud instance?
What do y'all think?
If you know C# well, then picking up PHP shouldn't be hard.
If you can afford using Windows Servers, I think you can build serverside stuff in C#. I've never done so, the LAMP stack is my preference.
For learning PHP, I'd suggest installing WAMP. That installs Apache, MySQL, and PHP for you on Windows. Then, once you are more comfortable with PHP, use a VM to learn the Linux server stuff.
Posted by: David Reagan | August 23, 2011 at 05:12 PM
Since you have some Python familiarity, I'd probably start with App Engine in Python. The Python App Engine is a rather unique stack at the moment, but it is extremely easy to work with (particularly the whole not-having-to-manage-any-hardware part) and particularly easy, I think, to start with. Although it is a unique stack, many of the lessons and skills do transfer well to "real" Python stacks (like Django) should you ever need it.
Posted by: Max Battcher | August 23, 2011 at 08:56 PM
Also, I'll make an honorable mention to ASP.Net MVC 3. Although, I've managed to avoid needing to work with it thus far, the Rails-esque approach to MVC stuff has moved to (plus neat things like "Razor" templates) seem like strong moves in the right direction for making it easier to build good web apps in C# (finally). Azure seems like it's becoming an attractive hosting platform, or so I hear as well.
Posted by: Max Battcher | August 23, 2011 at 09:02 PM
If you are already familiar with C# I would recommend considering ASP .NET MVC 3. It is approaching feature parity with Rails for most of the common stuff. (My current biggest gripe is the lack of database migrations). While my experience is limited I'd be happy to answer questions.
Posted by: Jacob Foshee | August 23, 2011 at 09:40 PM
My first thought is "Don't do it yourself." If you have no experience with server-side development, why do it yourself? I'm a web developer, game hobbyist on the side, but I think the pain of managing your own server and learning tech that's totally incongruent with your normal practices will be a waste of your time.
Consider hiring a web developer to manage the server-side web/database development if you need a high degree of control, or better yet search for online hosts/APIs that handle most of your needs and spare yourself some headaches.
My small team is in the same boat and will likely find something free to use so we don't have to develop our own leaderboards. Hope you find the right balance, let us know what you decide!
Posted by: Jeromie Walters | August 23, 2011 at 10:27 PM
since you already know python, i would second app engine. or try something simple like django, to get the hang of web techs :)
Posted by: simon | August 24, 2011 at 06:54 AM
Since you are fluent in C# I would stick with that. The MVC stuff in ASP is fantastic. I really enjoy working in that environment.
Posted by: Jeremy Wright | August 25, 2011 at 10:26 PM
I gotta add, don't do it yourself. I have no idea what you want to do, leaderboards maybe? but if you do it yourself and your server can't handle your traffic it will be a lot of work for you to deal with. Google App Engine will handle that for you. Don't know about other systems but I assume you really don't want to be the one running the servers, making them secure, adding more if what you have is not enough, backing up, etc etc etc...
Posted by: greggman | August 27, 2011 at 01:54 AM
Appengine is terrific. You can pick it up relatively quickly, and as mentioned it translates into different stacks (e.g. django). If you need realtime game stuff, appengine's socket equivalent is called Channels. I'm using this for my current projects, and the free-for-a-while plan is a nice starting bonus.
The OTHER option I would seriously consider is node.js. If your game frontend uses javascript, you can get a lot of cod sharing between the client & server. I'm using this setup for my future projects. It's more work to host it and get a database going than the appengine route, but has a lot of perks. If the frontend is Flash/Flex, you still get a lot of code re-use since both AS3 and JS are ecma scripts (they have the same language definition, if slightly different syntax).
Posted by: Rob Fitzpatrick | September 04, 2011 at 06:16 AM
One more thing -- server maintenance is a huge drag. Do anything you can to avoid it.
If you use appengine, it's a non-issue, and you're set already.
Django is a bad choice because you need hosting somewhere.
For node.js, try heroku. You'll still have to learn git and do a little command line, but it trivialises the vast majority of the grief.
There are some nice hosted servers with configurations for the various languages, but even those can be a huge pain to deal with. EC2 is a non-starter IMHO because of how much server tweaking you'll find yourself doing (I used that for my previous 2 projects).
Posted by: Rob Fitzpatrick | September 04, 2011 at 06:19 AM