views:

226

answers:

3

I have a great idea for a 3D network game, and I've concluded that it is possible to write it in Java as an applet which will live under the web browser, just like a full software in C++. And it will look and feel the same.

The main advantage of Java on C++ is that with Java you can play without downloading any software. I have already thought about the download of the graphics, sound, etc but I found a solution for it. RuneScape just proves that it is possible.

So my first question is, should my game live on a web browser or on the operating system? I think that in a web browser it is much more portable, although you need install Java and stuff. But the fact is, that most MMO games are currently not in the web. If you suggest in a software so please suggest a language either - C++ or something more productive like Python or C#?

So after choosing a language, I need a graphics solution. Should I write directly with OpenGL/DirectX or use a game engine? What game engine should I use? Ogre? jMonkeyEngine?

What's your opinion?

Thank you!

P.S: Please don't use answers like "Use what you know".

+7  A: 

Despite your last point, use whatever you can, and what will provide the biggest user base possible.

Applets are old, and no longer used as extensively as they used to. Flash or Silverlight are the "standard" for web games now. It may be worth checking out JavaFX based your interest in using Java, it's supposedly a replacement for what applets should have been. I've not actually used JavaFX, nor do I hear much about it, take that as you wish. The biggest benefit of deploying to the web is as you've said, the user base is larger and people are more likely to give your game a play. The downside is that you end up using the likes of Flash or equivalent for the development process.

If you go down the route of building a standalone application, you can use whatever you want. C++, Java, C#, Python and so on are all viable options. You can make games in most languages. C++ is the industry standard but ignore this fact. You can make amazing looking and performing games in any language if you are a hobbyist developer. What I'm trying to say is that unless you are building the next big hit, using C++ can be avoided. In contrast to web applications, your users will require a framework/API that you use. For example, they'll need OpenGL/DirectX/XNA and so forth. As for XNA vs DirectX vs OpenGL? It matters not, your language choice will most likely dictate your choice of graphics API/Framework. So I'll leave this point up to yourself for research.

As for should you use an engine? It depends.

  • Are you making a game which is complex enough to warrant an engine?
  • Do you wish to just focus on the game, rather than the engine?
  • Do you feel comfortable learning an existing engine?
  • Do you feel comfortable producing the required components (collision etc..) on your own?

Other factors come into this, but it may be worth just focusing on the game at hand. You can easily write a simple enough engine for what you require. By doing this, you'll avoid licensing and deployment issues.

Finglas
If you use Flash, your game will not work next year when Flash is dead :)
Longpoke
@Longpoke as much as I'd wish that is true, it's not ;)
Finglas
mayhap. http://www.craftymind.com/factory/html5video/CanvasVideo.html
Longpoke
I'm aware of HTML5, and while it's promising, its still a long way off. Plus, the performance of that video, is awful. Neat idea though.
Finglas
Thanks, I think I am going to use SilverLight. Thank you.
TTT
"Plus, the performance of that video, is awful." - really? I'm on a 3.5-year-old laptop in Google Chrome and it was perfectly smooth, including the exploding animation and the video playback while exploded... It looks really cool to me!!
Ricket
Ah, but in Firefox 3.6, it is indeed terrible. You should try Chrome! I use them both interchangeably but lately I've been leaning heavily towards Chrome, it just overall feels snappier and demos like that seem to prove its speed.
Ricket
@Finglas: So you're saying Flash is fast? ....
Longpoke
A: 

A game that just runs as an applet will not be percieved as a real game to most hardcore gamers.

If you want a game that is played only by noobs, the java might be an option, otherwise drop it and stick to a language that allows to actually produce executables.

Talking about the library, there are not so many you can't try them all and chose the one you like the most, so... do just that.

Lo'oris
The underlying problem is that no "real game" as you put it has been made in applet form, and not because a lack of technology. "Hardcore gamers" will play anything hardcore, and no such game has been created as an applet.
Ricket
-1 The only game I really play is ut99, and I **own** everyone in it. It is written in C/C++/asm and is still nevertheless slow sometimes. I could easily write something with the same quality of graphics in Java and run 40 instances of it. Libraries... LWJGL, JOGL,....
Longpoke
@Longpoke: so what? Where did I talk about speed? Did you even read?
Lo'oris
@Lo'oris: Java applets can do full screen and you can run them as standalone JARs. I just assumed you were implying slowness because I don't see any other problem.
Longpoke
+6  A: 

One option to consider is the Unity 3D game engine - in addition to being a fairly powerful development tool, it has several cross-platform deployment options. You can build both a stand-alone executable (for Windows and Mac, not yet Linux), and a web-browser version, which answers your first question about deploying on the web versus OS. You can do both.

It also uses both Javascript and C# (and Boo, a variant of Python) for scripting languages. These are based on Mono, the Open-Source version of .NET, so it's not just a gaming platform, but has access to all of .NET's abilities (well, those implemented in Mono anyway).

See the Licensing page for a long list of Unity's features (the Basic version is free). And check out the list of Unity-based games, of which the first is Tiger Woods PGA Tour Online, by Electronic Arts.

John C
Cross Platform C#? How is that possible? It uses Mono?
TTT
Correct, it uses Mono: http://unity3d.com/unity/features/scripting
John C