There's this game, that I've been wanting to make for quite some time. It's a project that I've started and had to abandon in the middle a couple of times. However, this time I'm determined to finish it. I want to make a RPG (tile based) game, I'm okay with having it be 2D but am considering something in the middle of 2D and 3D. I would also like the game to be at least partially multilayer if not an MMO. I'm not a bad programmer, so I can work my way through any problems I might come across, I just don't have any experience making games, so I'm interested in any technologies I can use that I might not yet be aware of, or what type of architecture I can implement and what strategies I can use to make a decent (and secure game).

I made this game (2D tile based and partially multiplayer) before using MySql, PHP and JavaScript/Ajax. But now I would like it to be a bit more advanced with fluid graphics, and multiplayer where user's (or at least friends) can explore the maps together.

My first thought was to use Flash, PHP and MySql. Where Flash calls to a php file that returns an xml object with coordinates and etc., but I'm not sure how fast or efficient this will be.

With all that said, I'm wondering if anyone has any suggestions to what other technologies are out there that I can use. I would prefer that the game is browser based, but if it has to be run on the desktop I would like it to be at least cross-platform. I am familiar with HTML, JavaScript/jQuery, PHP, Flash, C#, WPF/XAML already and would prefer a combination of what I already know, but I don't mind learning something new either.

Any helpful links on this are appreciated as well.

Thanks in advance!

  • \$\begingroup\$ I retagged this, I don't think it has anything to do with either game design or software architecture. I'm not sure if the other tags are optimal, but I can't find something better myself for now. \$\endgroup\$ – TravisG Aug 18 '11 at 13:09
  • \$\begingroup\$ On topic: Have you taken a look at HTML5 and WebGL? I have no experience with either of those, but from a superficial glance it seems like that would be a pretty good choice for you if you care about performance much. \$\endgroup\$ – TravisG Aug 18 '11 at 13:11
  • \$\begingroup\$ @heishe Thanks for tagging it properly. I have looked int WebGL but I dismissed it because It's something new, and I would have to worry about which browsers the user has and etc. \$\endgroup\$ – Saad Imran. Aug 18 '11 at 13:28

Flash. For single player, can't see why not. I've written a pseudo-3D display engine in AS3 that performs very well and is adapted to any sort of isometric game, about as intensive as view logic gets without going full 3D. If, however, you plan multiplayer -- and its probably best to make the decision ASAP -- and yours is eg. an action game, you'll have problems with your Flash/PHP/MySQL; HTTP requests (which run over TCP) are not known for their speediness; then there's the DB calls too (which, while very fast, are another overhead). It's reasonable to expect 250-500ms ping if packets start dropping over TCP. Bear in mind that you will have to pay for bandwidth and maintain your server. That's why there are cost-effective server solutions like Player.IO and SmartFox Server out there. See link below.

HTML5 as @heishe said. I've used HTML5 + the canvas tag briefly for rendering. You can't easily rely on it being fast as Flash across different browsers and platforms... although on some, and for very specific things, and on very specific browsers eg. Chrome and IE9, it is undoubtedly faster. The full set of HTML5 rendering technologies (such as compositing which you get right off the bat in Flash) aren't fully implemented yet. Sound is the biggest problem with HTML5 right now. As a result, a number of engine solutions actually use Flash just to do the sound bit (obviously they abstract this away from the engine user inasmuch as possible). Having said all this, there are numerous game engines out there for HTML5 which attempt to address it's biggest flaws i.e. reliable cross-browser rendering efficiency and sound.

Unity. About as cross-platform and web-deployable as you'll get until HTML5 becomes more production-worthy. With the free version, and DropBox for source control, you can do a lot. There are tutorials out there on how to do 2D in Unity -- it's been done a lot. You can also deploy to desktop if you like. You write your code in C#, JS or a Python variant. It's got a nice IDE, if you like such things. It's also very easy to import 3D models into (though I'm not suggesting you go 3D).

C++ with SDL. Desktop only, but cross-platform, very mature, good for 2D stuff, only need use OpenGL if you want to. Of course, stepping into the realms of C++ may be more than you want to deal with right now.

You could even go with something like the Google Web Toolkit for your game.

Multiplayer, have a look at this comparison chart of socket servers. It's on the Unity forums, but because they're socket servers, it doesn't matter what your client is written in... although it is nice to have client and server in the same language, eg. C#.

  • 1
    \$\begingroup\$ Thanks a lot, I appreciate you taking the time to help me out here. Your answer was definitely a lot of help. You've pointed out a few things I hadn't heard about before so that's good. I think this has given me enough info to do my research and make a decent choice so I'm going to check mark this :) \$\endgroup\$ – Saad Imran. Aug 18 '11 at 14:36
  • \$\begingroup\$ This is a great list of options. A few notes: I'd avoid Unity unless you don't mind working in a primarily 3d environment. It's great for 3d, not as much for pure 2d. If you want to try C++, check out SFML as well, it's a bit faster for 2d stuff (SDL is probably more portable, though...) \$\endgroup\$ – thedaian Aug 18 '11 at 18:05

Don't use XML, it is in all ways an unnecessary resource hog with a big overhead on both data size and parsing time. You could use JSON, the size overhead is manageable (though it depends a lot on your specific implementation), and parsing in JavaScript is quick.

For the back end, you should avoid storing time critical data in a database, keep it in application memory instead. That means PHP is out, I'm not sure if you can get ASP.NET to behave, but I wouldn't bet on it. Node.js seems like a prominent candidate for the back end code, being both easy to use and relatively fast.

If I were to do this I'd code the front end in old school HTML 4.01, once you have learned the quirks it works okay for 2D stuff, within the inherent limit of not being able to rotate images that is. Flash is the more traditional choice, and a decent one as well. Digging into the new fancy HTML 5 features is dangerous, you risk losing a significant amount of users due to not supporting their browser of choice.

  • \$\begingroup\$ Hey, thanks for your input as well. I was aware of json already, I have used it before. I just didn't mention it because I was thinking about flash when I was writing the question as wasn't sure if flash had a json parser. I did it oldschool with HTML/JavaScript before, but this time I want it to be a bit more advanced and with fluid graphics (so I will need rotating and etc). I will however look into your suggestion of Node.js. :) Thanks again. \$\endgroup\$ – Saad Imran. Aug 18 '11 at 14:40
  • \$\begingroup\$ There's very few reasons not to use HTML5 these days, even for a basic website. If you need to ensure compatibility with all browsers, then you can simply ignore the new parts of HTML5. Anyway, real time multiplayer pretty much requires sockets, which pretty much means using HTML5 anyway.... \$\endgroup\$ – thedaian Aug 18 '11 at 14:41
  • \$\begingroup\$ @thedain You do realize that you simply suggest writing HTML 4.01 but using an HTML 5 doctag? I wouldn't call that "using" HTML 5. As for web sockets, they are only just beginning to get browser support, they'd certainly be useful, but you can get pretty far with xmlhttp requests, a pretty neat trick is to delay the server response. \$\endgroup\$ – aaaaaaaaaaaa Aug 18 '11 at 14:55
  • \$\begingroup\$ @Saad Imran. If you want more pretty stuff than 4.01 can do I'd pick flash. \$\endgroup\$ – aaaaaaaaaaaa Aug 18 '11 at 14:57
  • \$\begingroup\$ @eBusiness That's exactly what I'm suggesting. There's no reason to not use the HTML5 doctype these days, every browser out there can handle it, and when you do decide to add HTML5 features, you can do so right away. Anyway, sorry for the derail, Saad Imran your best option is Flash or Unity, depending on if you want 'true 2d', or '3d posing as 2d'. \$\endgroup\$ – thedaian Aug 18 '11 at 17:56

Not the answer you're looking for? Browse other questions tagged or ask your own question.