The game runs on a client/server architecture currently setup for TCP, and the client code was built in AS3 to be web based.

What we're running into is 3 problems for the client.

  1. AS3 has no hardware acceleration so we are having some issues with slowdown when implementing some features
  2. TCP is really frustrating for a sidescroller when you're talking with a server. I'm having a heck of a time with the interpolation/extrapolation to make everyone else look smooth while minimizing lag. I would much rather be able to use UDP and throw in something similar to the age old Quake interpolation/extrapolation.
  3. No right click

I work professionally with C#, and I did all my University (almost 2 years ago) with Java. Java really appeals to me because of the compatability while C# appeals to me because I've heard so much good about XNA and I love visual studio.

For a Client/Server based MMOish sidescroller in your opinion should I stick with AS3 and the TCP protocol, or should I abandon some of my audience, ramp up the graphics and hit C#, or journey back to the land of Java.

Thanks :D

  • \$\begingroup\$ I would go with: Unity (3d) or Corona (2d) as #1; XNA as #2; Java as #3. YMMV. \$\endgroup\$ – ashes999 Jun 3 '12 at 0:26
  • 1
    \$\begingroup\$ "Which technology to use" and "Which technology is better" questions are not good questions to ask here as defined in the FAQ. \$\endgroup\$ – doppelgreener Jun 3 '12 at 0:58
  • \$\begingroup\$ It was more "what kinda opinions do people have" I'm terribly bias and I know it. I wanted some fresh views on the subject. Yes I realized it not the optimal choice, but I was directed here by a friend so I figured he had some insight beyond the FAQ \$\endgroup\$ – Sparkky Jun 3 '12 at 1:15
  • \$\begingroup\$ That's actually exactly why they're not good questions to ask here. This is essentially an opinion-driven discussion. The description for a Not Constructive close vote reads: "We expect answers to generally involve facts, references, or specific expertise; this question will likely solicit opinion, debate, arguments, polling, or extended discussion." This question is the latter. It can't be reasonably answered either since you're just asking us: "Should I pick C# or Java?" There's no correct answer to that. They're both good. Weigh up what you really want and pick one accordingly. \$\endgroup\$ – doppelgreener Jun 3 '12 at 1:29

I have no experience in C#, but Microsoft seems like a "bind the developer to our very own platform"-company to me. So I'd avoid XNA, but if you target only Windows, it's okay for sure. I'm also not an AS3 programmer or fanboy, so I'd tell you to step back from Flash, too. :P

I can talk a bit more about Java. When you develop games with Java, LWJGL is probably the one and only standard for desktop games out there. While using OpenGL is a great thing, it is not as convenient as using a more high level framework, of course. I recommend LibGDX here, it puts no restriction on the usage of Java while trying to make the whole game platform independent with cross-compilation (Android and Desktop uses Java, iOS is also available I guess and it runs in the browser with HTML5/JS/WebGL). I've created several game prototypes in Java and my throughput was quite good.

Another option for you might be HTML5 in combination with Javascript and WebGL. When using for example Google Chrome (which runs V8), carefully programmed Javascript can reach the speeds of Java, but is certainly fast enough for a simple sidescroller. WebGL is hardware accelerated OpenGL ES 2.0 and there are some engines written in JS out there. But I am not sure if JS features UDP.

  • 1
    \$\begingroup\$ I've looked at HTML 5 but it really took the performance issues we dealt with using AS3 and reached a whole new level. One of the big issues I have with java is any basic libraries for a 2d Metroidvania style game seem to be absolutely terrible. I've also looked at engines like Unity which I've played with in the past, and they seem to have so much overhead just to get a 2D game working it seems like overkill, not to mention last time I did any network "scripting" in it I was really confused, and I do network programming professionally >.> \$\endgroup\$ – Sparkky Jun 3 '12 at 0:26
  • \$\begingroup\$ It depends on the browser, its version and whether WebGL is used or not. Personally, I can't really estimate if it's enough for your project, as I have no insight. \$\endgroup\$ – Marco Jun 3 '12 at 0:31
  • \$\begingroup\$ Well, what do you mean by absolute terrible libraries? When using Java you can't expect the development speed of AS3. Better performance always brings some trade-offs. \$\endgroup\$ – Marco Jun 3 '12 at 0:34
  • \$\begingroup\$ Sorry, I got your comment partially confused with another one. I did some quick looking for WebGL and it looks like its got a lot of the limitations AS3 had... Not to mention a lot less resources available should I hit any hurdles. Is there any good resources you know of for LibDGX? \$\endgroup\$ – Sparkky Jun 3 '12 at 0:37
  • \$\begingroup\$ Well, WebGL should be fully OpenGL ES 2.0 compatible, but does not run in every browser yet; It's an upcoming technology, I think. libGDX is usually well documented in the source itself, you can browse around on the main site, it has a wiki with basic tutorials: code.google.com/p/libgdx Generally, when you use libGDX, you can rely on your OpenGL knowledge, if you need more functionality than the already wrapped rendering mechanisms. For both, WebGL and libGDX, the spec khronos.org/registry/gles is useful and some basic tutorials db-in.com/blog (e.g. about shaders) \$\endgroup\$ – Marco Jun 3 '12 at 0:42

I've done some simple games, but I've been looking at some different platforms. Unity seems to be something that you might want to look at. You can publish games to a lot of different platforms and program in C#. It's not entirely free, though.

  • \$\begingroup\$ The issue with UDK, Unity, and a lot of those prebuilt engines is that they make it really hard to implement a lot of the features that I've already put together for my engine in AS3. Unity, atleast last time I played with it, had a LOT of overhead for a simple 2d metroidvania style game. \$\endgroup\$ – Sparkky Jun 3 '12 at 0:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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