• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.

Archived

This topic is now archived and is closed to further replies.

Jerry Lynn

[java] State of Java Game Development

21 posts in this topic

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?
0

Share this post


Link to post
Share on other sites
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.
0

Share this post


Link to post
Share on other sites
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…
0

Share this post


Link to post
Share on other sites
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?
0

Share this post


Link to post
Share on other sites
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?

0

Share this post


Link to post
Share on other sites
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
0

Share this post


Link to post
Share on other sites
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

0

Share this post


Link to post
Share on other sites
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
0

Share this post


Link to post
Share on other sites
Wow, that superscape stuff is nice. I'm impressed.

-Dave



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

Share this post


Link to post
Share on other sites
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.
0

Share this post


Link to post
Share on other sites
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


0

Share this post


Link to post
Share on other sites
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.
0

Share this post


Link to post
Share on other sites
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


0

Share this post


Link to post
Share on other sites
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
0

Share this post


Link to post
Share on other sites
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.
0

Share this post


Link to post
Share on other sites
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.
0

Share this post


Link to post
Share on other sites
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)
0

Share this post


Link to post
Share on other sites
Java can use DirectX, OpenGL and Java3d (which use Direct3d or OpenGL, as you wish).
So using 3d hardware acceleration, Java would be fast, not as fast as C++, but java+opengl is available for almost any OS/platform, so you''re game/app could be played/used by much more people and you''ve only one version af the code to work in.

I think it''s something very interesting.
Another thing is that the fatest most beautiful 3D game, aren''t the best games...

-* Sounds, music and story makes the difference between good and great games *-
0

Share this post


Link to post
Share on other sites
There is actually a discussion going on in the Java 3D listserv group about develping a paticle system in Java 3D. According to the posts they have made some progress.

Your point about the quality of graphics versus the quality of the game is well taken. For instance, one of the best games I have played to date is Alpha Centauri. There is nothing spectacular about the graphics or special affects in the game. Gamelan has some article about attempts to build an Alpha Centauri-like game in Java.

http://www.gamelan.com/journal/techfocus/021000_game4a.html
http://www.gamelan.com/workbench/gam/gam_121697.html
0

Share this post


Link to post
Share on other sites