What I'd like to do is build a fairly minimalist game with a small set of features (including no graphics whatsoever) that runs on a server, using both a browser and a windows application as a client (as in, the user can choose between either). That is, the user sends a set of commands thru the client (which to start I would like to be browser-based) and the server processes the commands based on the data present in the server. The client can query info from the server to learn about the game state, such as to see the result of the player's actions. The main goal of this project is for me to learn the basics of creating a bare-bones (note that I'm avoiding the use of the word "simple") game that can run on a browser with some form of client-server architecture. One reason for this is because I want to vastly improve my knowledge of web application design, and from experience, the best way to do this is to have a challenging project which is very interesting to me.
I have a pretty good amount of programming experience (Masters in Computer Science; 2 years of industry experience in Software Development; lots of game design experience in C++, including a game with networked 2 player mode; also made games with Python, Android SDK, etc.), but I don't have much experience with Web App development (been dabbling with ASP.NET, including MVC 3 framework). What I'd like to know is what the community thinks would be the recommended tools, frameworks, engines, methods of data storage (hopefully handled by the frameworks), languages, and all that, which would be best suited for this project. As a brief overview, here are some of the things I would like to be able to do:
1) User should have a minimalist client with no interactive graphics (except maybe icons and still images) that mostly gives forms for inputting various commands which will be processed by the server, and then the client can display info queried from the server.
2) Client needs to be operational from a browser, and hopefully also from a windows application. Heck, if possible, it would be great if this was all abstracted in a way that I could have the client run from anything, like a mobile device, as well (but not really important).
3) I'd prefer if I could use a framework that easily lets me render stuff like tables and lists on the client. ASP.NET is an example of such framework, but not sure how useful this framework can be overall for games (doesn't seem like a popular choice, but I don't want graphics, so maybe it could apply here).
4) To start, different players will have NO interaction with eachother; only with the server. Like a single-player game that does all the calculations server-side (we all know of a recent one). I'd like to be able to eventually be able to expand into having these player-to-player interactions, in the far future, when I understand more about this stuff... but I'd like to learn the proper tools that will one day be well-suited for this type of flexibility.
5) A framework with some flexibility (so that I can customize it to do something very specific if wanted to) would be great, but I prefer ease of use. Having both would be ideal though.
Here is an example of how some sample "gameplay" would work, without divulging any info about the game ideas, although if it's helpful I could go into details about more of the actual themes:
1) Player logs into client, sees the index form linking to many options.
2) Player chooses the a tab which takes him to a different form where he sees the money available to that player and a list of units the player controls.
3) The player clicks on a link or button to buy a new unit. Server processes the request, updates the data for that player, and the player now sees an additional unit on the list (or table) of units. The player sees less money than before. Hopefully the units and money can have icons associated with them.
4) This type of interaction ad infinitum.
I would also happily accept any other types of advice, references, links, or the like. Looking forward to any kind of response, and thanks in advance =).
edit: Where relevant, I should mention that my preferred language would probably be C#, but I could just as well work with Java or Python, and would prefer to avoid C++ unless it's the best choice for some good reason.
Edited by Flavioli, 19 June 2012 - 11:45 PM.