Suggested frameworks for a minimalist, bare-bones browser game

Started by
3 comments, last by Prefect 11 years, 10 months ago
Hi there gamedev, first time posting here. I could appreciate some feedback on where to start for the project I'd like to embark on. Hear me out on this one, as I'm not requesting "omg I have uberz MMORPG idea for make of billions $, how do learn to programz!?" (disclaimer seems necessary based on previous lurking experience).

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.
Advertisement
Is there an actual question in there somewhere? If not, well, good luck, I guess :-)
Note that polling for multi-party interaction using AJAX in a web browser is possible, but not particularly efficient.
For some games (multi-player chess, say,) it's quite sufficiently good; for others (Call of Duty, say) it's not.
enum Bool { True, False, FileNotFound };

Is there an actual question in there somewhere? If not, well, good luck, I guess :-)
Note that polling for multi-party interaction using AJAX in a web browser is possible, but not particularly efficient.
For some games (multi-player chess, say,) it's quite sufficiently good; for others (Call of Duty, say) it's not.


Umm... well, yeah... I wanted to know what were the suggested tools, languages or frameworks for accomplishing this task. I figure I'd give lots of details about the actual task to make sure it was clear what I was asking for, but I guess that drowned out the question =p. I'm not too familiar with what the best options are for creating a client-server setup where the client can be browser-based; hopefully the community can provide some suggestions.
I would look at socket.io for the communication part. Writing a game server in Node.js should be possible, assuming you have a server/host that supports it. Assuming you don't do it wrong, this can easily get you to thousands of online players before you need to worry about more scalable solutions.
enum Bool { True, False, FileNotFound };
It doesn't seem to me that there is a clear winning combination yet. I've been happily messing around with Django because I happen to like Python and it looks like a popular and well supported choice.

On the client side, I tend to use mostly plain JavaScript, but that's because I really want to learn the bare basics of the DOM.

So far, that has worked just fine for me. I guess that as long as you're happy storing your game state in a standard database it could be a starting point for you as well.
Widelands - laid back, free software strategy

This topic is closed to new replies.

Advertisement