Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


[java] State of Java Game Development


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
21 replies to this topic

#1 Jerry Lynn   Members   -  Reputation: 122

Like
Likes
Like

Posted 03 February 2000 - 04:31 AM

I thought that it might be interesting to start a series of discussions on the state of Java game development. I’ll throw a question out and if everyone seems interested I can continue to throw out additional topics every couple of days. If we get some good comments I will sum everything up in an article (maybe add a little additional research) and submit it to this board (might be a good way to bring some new interest to the thread). Topic one: In its current implementation what role do you see Java playing in game development? What, if any, soon-to-be-released Java related technologies will most impact this role in the future?

Sponsor:

#2 Jim_Ross   Members   -  Reputation: 122

Like
Likes
Like

Posted 03 February 2000 - 07:05 AM

I don''t see playing any kind of major factor in mainstream gaming any time soon. Partly due to the fact that "mainstream" gaming isn''t about good games, in my opinion. It''s all about who has the biggest, fastest, most expensive technolodgy. And when push comes to shove, C is gonna beat out Java anyday because most of it is compiled into ASM. Another reason I don''t see it being a heavy-hitter is that it is very hard to learn, or so it seems. In my view, java will start to grow in gaming as more and more amatuer programmers start to make games with it, but if you can use VB and point and click your way to a fancy FPS, I don''t see it attracting a lot of new game developers.

As for the new technology comming out, it would have to be better compiler technology, and more distributions of current runtime libraries. I really don''t like applets too much, and so when i think of people making java games i think of downloaded applications that have the ability to bring along a compatible runtime. But it seems that I am in the minority and that most people who make games in java make them as applets. Which is a shame because not only do I still have to download all the code, most of the time through multiple http calls, I have to download it everytime i want to play it. I don''t think a lot of people see java as a real programming language, more as a web page add-on. Just a second ago I was talking to someone who tried to play one of my games, it doesn''t work under the MSVM and I told him that. He told me that he doesn''t know that much about java and that he only has the libraries that came with Win98. What am I to do with people who won''t download the appropriate libraries, when I am not allowed to redistribute them myself?

Whoops... seems like I''m bitching.... I think I;ll leave it, but better to stop now.

#3 Jerry Lynn   Members   -  Reputation: 122

Like
Likes
Like

Posted 03 February 2000 - 07:43 AM

Just some comments to kick off the debate : )

I think most people would agree that Java will not be the development tool of choice for ‘traditional’ commercial games. These games usually need the most performance they can get and have budgets that make Java''s productivity enhancements unnecessary.

However, Java may play a role in game development in a couple of other areas:

- Advertisement: Disney''s web site comes to mind. They frequently make applet based games available as part of their marketing efforts.

- Customization and Mods: I have seen discussions pertaining to the use of some kind of JVM hooks for scripting mods and customizations to games. This has already been done with the Quake engine by third parties.

- Two Part Game Engines: Java based game logic executables on top of a core game engine in C or C++. This way you would get the performance benefits of C for the performance sensitive components of the game and the developer productivity benefits of Java for the non-performance critical game logic. With JIT technology this seems very feasible (the game logic gets compiled as the level loads, for example).

- Cross platform game development: Now that Linux is gaining in popularity there MAY be an actual use for cross-platform game development. Some game genres, such as turn based strategy games, don''t need cutting edge performance and could be developed in Java (taking advantage of the cross platform aspects).

- And of course, amateur developers will probably flock to Java in droves once the Java Media Framework matures…


#4 Jerry Lynn   Members   -  Reputation: 122

Like
Likes
Like

Posted 03 February 2000 - 07:54 AM

As an aside... what libraries are you using that you cannot redistribute... All of the core JDK classes can be redistributed with the JRE or the Java 2 Plug-in, can''t they?


#5 joeG   Members   -  Reputation: 172

Like
Likes
Like

Posted 03 February 2000 - 08:16 AM

quote:
Original post by Jerry Lynn
...
- Advertisement: Disney''s web site comes to mind. They frequently make applet based games available as part of their marketing efforts.
...


Here''s a crazy idea, demos of your new c/c++ game in java. I don''t know how it''d be for modem users, but Burning Metal 3D loaded up fairly fast on my university''s T1 connection. Now if that''s possible, I''d venture to say that you could easily load the graphics and data for your first level, without it being much of a pain for the user. Again, this is assuming that Burning Metal 3D isn''t slow to load up for modem users.
The second part of any applet--sorry Jim, but what''s the point of running a Java app like you would a regular C/C++ program, is to get the code onto the client. IMO, you''d need to take advantage of all native code that''s already on the client. Then all that would have to be downloaded would be java code that drives the game logic and the native code.
That''s what''s been crossing my mind, but I haven''t had time to think about it, yet. Opinions?



#6 Jerry Lynn   Members   -  Reputation: 122

Like
Likes
Like

Posted 03 February 2000 - 08:55 AM

Prototyping games in Java seems plausible, particularly if you could take some of the code over into the actual development (such as the Two Part Engine idea). I have read of some amateur developers posting about doing the same thing with VB and DirectX for a game that were going to implement in C++.

So if I understand you - you are proposing having a Java applet cached or a C++ engine installed locally that could download game content dynamically from a server over the internet...

Even if the slowness of a modem connection makes this infeasible (particularly if you have to download the Java 2 Plug in or and additional library such as Java 3D) high speed connections such as ADSL or Cable modems are becoming more prevalent and should offer enough speed to make it and Applets in general a viable platform for some games (again mostly in the amateur/freeware area).

Also I believe that the Java 2 Plug in has applet caching.

Here is a thought: how about Java based mobile agent technology (such as the Voyager ORB from ObjectSpace). Bot games that rely on IRC seem to be poping up left and right. Something similar could be done with Java mobile agents (just more brainstorming on my part).


Edited by - Jerry Lynn on 2/3/00 3:06:03 PM

#7 dvm   Members   -  Reputation: 122

Like
Likes
Like

Posted 03 February 2000 - 09:22 AM

What about WildTangent''s (www.wildtangent.com) approach? They use Java (or java-script or VBScript) to talk to their "WebDriver" which is just a fancy name for their ActiveX object. All they''re really doing is wrapping "native" calls to the ActiveX object in Java classes and then those "native" functions do their thing (mostly calls to D3DRM and DSound) and return results back to the Java Runtime. It''s a good idea and experimenting with things in java-script rather than having to compile all the time is pretty nice. I don''t think I''d ever want to write a 3d engine in java-script (certainly not VBScript), but writing some of the game subsystems in java-script might be a good idea because it''s easy to patch (just hit refresh). I''ve written a multipart series of articles on how to make your own WebDriver, but no one responded to my proposal on the "Article proposals and requests" forum, so I haven''t posted it yet. If I can get just a few people to say they want to see it, I''ll go through the trouble of polishing it and submitting it to GDNet.

-Dave



#8 Jerry Lynn   Members   -  Reputation: 122

Like
Likes
Like

Posted 03 February 2000 - 11:42 AM

Quick Question - can web drivers be written in Java (or more exactly, J++)?

#9 Niels   Members   -  Reputation: 122

Like
Likes
Like

Posted 03 February 2000 - 11:14 PM

Pure Java games as applications are really not very interesting - In this context, Java is just a programming language competing (on equal terms) with C and C++. The gamer couldn''t care less how the game was written - if it sucks, it sucks, nobody is going to buy an inferior game just because it was written in Java.

When used in an applet, Java is effectively doing something you can''t do in C++ - which in itself justifies the use of Java. It is a different market, open to a different type of games.

IMHO Java as a language for game logic is an obvious step. Currently most major development houses write their own scripting languages, compilers and virtual machines. Rather odd, considering the amount of resources SUN and others put into JIT and other compiler technologies. I would expect it to be rather difficult to produce something that would outperform these VMs (Unless you drive a Ferrari and your last name is Carmack )

IOW, I see two applications of Java in gaming: As a language for gamelogic and in Platform independent "no install" applet games. Directly competing against C/C++? In time maybe.

Speaking of wildtangent, there is (at least) two alternatives that kick a lot more butt:

http://www.cult3d.com

http://www.superscape.com

- similar idea, just a better implementation...

/Niels

#10 dvm   Members   -  Reputation: 122

Like
Likes
Like

Posted 03 February 2000 - 11:25 PM

Wow, that superscape stuff is nice. I'm impressed.

-Dave



Edited by - dvm on 2/4/00 5:26:10 AM

#11 Anonymous Poster_Anonymous Poster_*   Guests   -  Reputation:

Likes

Posted 04 February 2000 - 12:32 AM

I think it''s bad that noone, never, ever notices servlets, those little things that we never see or "use", perhaps this Msg board couldn''t be done without them, I think they are so called "killer apps" for Java... What comes to libraries, It''s not our or users fault that burgerplayer can''t play/install our games, Let''s take expample DirectX, could be compared to JDK (their main ideas aren''t same, not even close), but JDK tries to bring everything in one set, but DirectX is just interface. If Microsoft would distribute "Pure" VM as part of Windows I''d bet that Java Games would be more easilly installed. If I wanted to program games seriously I would choose C++(I used to program with that and I was almost good), but I want to learn Java as much as I can, because it''s new crossplatform technology.

#12 Captain Goatse   Banned   -  Reputation: 100

Like
Likes
Like

Posted 04 February 2000 - 12:32 AM

Oh sorry last post was from me...

#13 vince   Members   -  Reputation: 122

Like
Likes
Like

Posted 06 February 2000 - 05:33 PM

The company I work for, Jellyvision, uses Java for commercial game development. Our engine currently is used in two shipping products (one PC-only, one a Mac/PC hybrid).

We use a hybrid C++/Java engine. All hardcore things like playing sounds, playing animations, network code, etc. are done in C++ code using DirectX on the PC and gamesprockets on the Mac. This C++ code is accessible to Java via JNI.

The game logic is implemented in Java. Our games tend to be fairly linear and script-driven. We basically use Java as a supercharged script language. There are some Java components to the engine, but they are mainly related to abstracting native events and organizing thing. So we use Java as a scripting language and as a glue language.

We do this for various reasons:

1) We can whip out gameplay code much faster in Java. There are less syntactic hurdles and less busywork, and changes can be implemented more rapidly - this is necessary because design changes can be fast and furious while tweaking gameplay.
2) Our engine is cross-platform (currently Mac and PC). At the Java level, there is no platform-specific code.

Performance is generally not an issue, because the Java code doesn''t do that much in terms of hardcore processing. Most of the CPU time is spent in the native layer. All memory given to large media assets (sound effects, animations) is managed by our engine and not by the Java garbage collector.

The only setbacks have been the fact that JDK 1.1 is the latest version of JAva supported on all platforms. This prevents us from using some of the features in Java2 (the biggest one we want to use is the new collection classes in java.util).

The only packages we use are java.lang, java.util, java.io, and java.net. We do not use AWT or Swing for anything except some debugging windows that do not ship with the final product.

I would reccommend this approach for other types of games. Java is a more flexible language with a simpler object model and greater runtime flexibility (reflection, for example, can be used to cut down a lot of boilerplate code that would be needed in a C++ implementation). It is easier to train new developers to become proficient in Java than in C++, and Java is much more portable (given the subset we use) than C++.



-vince




#14 Jerry Lynn   Members   -  Reputation: 122

Like
Likes
Like

Posted 07 February 2000 - 04:07 AM

Vince, do you mind if I refer to your company''s efforts in the article that I want to write?

#15 Wrathnut   Members   -  Reputation: 385

Like
Likes
Like

Posted 07 February 2000 - 06:10 AM

I think you hit the nail on the head there by either using a hybrid engine doing the production solely in a java application the fact that java runs the same(almost) on every platform means alot to people like me who would like to distribute a game that runs on all platforms, for the fact that I don''t know or hehe to be honest take an interest in learning how to write things for a mac... The fact that applets can be accessed by virtually anyone now, just about everyone has a java capable browser unless they are living in the stone age, also means that more people can see your work with very little overhead by the designer.

#16 Anonymous Poster_Anonymous Poster_*   Guests   -  Reputation:

Likes

Posted 08 February 2000 - 04:39 AM

The hybrid system sounds good.

I was wondering how easy it would be to change the interface to the external system though. If you have a JAVA applet access a C++ engine via ActiveX or whatever then how would you interface to say a linux or other platform which doesnt support ActiveX ? Could you JAVA code be completly independant of the particular platform engine being used ?

Thanks




#17 Jerry Lynn   Members   -  Reputation: 122

Like
Likes
Like

Posted 08 February 2000 - 05:54 AM

Though it would definitely be possible to use a Java applet with a C++ engine through either ActiveX or Corba, the hybrid engine we are discussing would run as a Java application on the desktop with the C++ engine. Since the C++ portion is responsible for sound and graphics rendering, it would have to be local.

It might be possible to load the C++ component locally and then have the applet use the installed component for graphics, but I think any model that required the users to add C++ components to their desktop that were specific to one game would fail. Many users would have security concerns and the security policies of the local JVM would have to be modified to allow the applet to access the installed C++ component (something that would be too difficult and technical for a casual gamer to bother with). If the Java applet relied on some ‘standard’ local component, that might be feasible (i.e. WildTangent, Superscape, etc…)

Back to the hybrid engine:

I would think that the Java portion of the engine would access the C++ portion through native methods rather than through ActiveX, since ActiveX is still predominately a Windows technology and I believe the ActiveX interface would have more overhead than native methods would (please correct me if I am wrong). Even if COM for Unix and Linux made more headway native methods would still probably be preferable because of the performance advantage.

On the issue of platform independence: If you standardized the interface to the C++ portion of the engine, then I believe that you could make the Java portion of the engine ALMOST completely cross-platform. You would just have to swap out the appropriate C++ component for the platform. There may be some issues that would make this slightly less than ‘plug and play’, such as implementation differences in JVMs, but I think for the most part it would work.


Edited by - Jerry Lynn on 2/8/00 11:55:33 AM

#18 vince   Members   -  Reputation: 122

Like
Likes
Like

Posted 09 February 2000 - 02:55 AM

We don''t use applets, we use Java applications. We distribute on CD-ROMs, so we just install the JRE in a subdirectory of our game''s dir. We use JNI.

#19 Squidi   Members   -  Reputation: 122

Like
Likes
Like

Posted 18 February 2000 - 03:45 PM

There was an interesting article in Game Developer (I know, a rare occasion) about Java. There were two main courses of action (A) C++ program with a Java VM built in, and (B) a Java program with outsourced Direct X native support. One company used the latter with much success. Unfortunately, the project got canceled, but they became Gearbox and ended up making Half-Life: Opposing Forces.

Anyway, to answer the question, I think Java will bring back the days of garage game development. There isn''t a big chance some kid is going to come out with Quake 4, but he can still make games worth playing. The barrier of entry on Direct X and Windows programming is amazing. Just Windows alone will keep you up at night trying to figure out which non-english #define you wanted to use. Hungarian notaion is evil.

But Java is amazingly easy to get into. It is a great environment for a beginner programmer to get into. It is well structured, which is extremely important. Most importantly, it is perfect for small games. Can''t do Quake 3, but you could do Legend of Zelda. And the fact that Applets can be played online, convincing someone to download your program is easy.

For more advanced programmers, Java isn''t going to offer anything in its own environment that will help too much. It is a little more structured, and easier to understand and program, but by no means does it do anything that can''t be done anywhere else. Making graphical tools is actually a little quicker, I think. Java may, I think, provide enough structure that more complicated games could be more complicated with less bugs. Ultimately, that is up to the programmers.

I''ve had a peek at the Java3D docs, and it looks amazingly easy to use, and extremely powerful. It isn''t made for game programming, but it is at a level of abstraction which could lend itself well to games. I don''t know any 3D programming, though I''ve looked into Direct X, OpenGL, and Java 3D. They all look pretty good, but Java 3D is the most abstract. Good stuff.

Finally, Java isn''t about performance. You can''t make wow graphics games. Particle systems are going to be out of reach. Scrolling will only take place in small windows. But, in situations where the majority of the game takes place in the logic, Java will work out just fine. I think RPGs and Strategy games almost lend themselves to Java. You could probably make a neat platform game...but you''d be limited in the size of your graphics, and probably would have to withdraw any parallax scrolling ideas you have.

I think single screen, non-scrolling, games could be fast enough for a dozen moving onscreen objects. I''d wager that you could recreate (for example) the gameboy Legend of Zelda, or Puyo Puyo.

#20 Jim_Ross   Members   -  Reputation: 122

Like
Likes
Like

Posted 21 February 2000 - 02:37 AM

There are particle systems and behavioral modeling in java. I''ve never seen them in an actual game, but that''s probably because i''ve never actually seen a game in java (that wasn''t go or connect 4)




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS