[gameprogrammer] Re: A newbie Java Question - GUI/Animation etc...

  • From: Paulo Pinto <pjmlp@xxxxxxxxxxxxx>
  • To: gameprogrammer@xxxxxxxxxxxxx
  • Date: Tue, 05 Feb 2008 20:42:39 +0100

There are a few  games done using the Java Monkey Engine

http://www.jmonkeyengine.com/

http://www.renanse.com/blog/

Tom Clifford schrieb:
Richard:

Java is viewed generally as slow; but in my tests so far, frame rates of up to 100 fps are possible with simple scene graphs, but I have a 2GHz machine with an ATI x1050 vid card (not the most powerful). I think it will be considered more in the near future, especially for its cross-
platform capabilities.

I'm currently experimenting with a messaging system, and viewplatform entry/exit behaviors. Once I get something presentable for simple gaming concepts, I'll publish it for review.

But currently, some are available:

http://www.frontiernet.net/~imaging/games_with_java3d.html

http://www.java.com/en/games/

http://www.java-gaming.com/

If I come across more, I'll let everyone know.

Thanks....Tom
--- richard sabbarton <richard.sabbarton@xxxxxxxxx>
wrote:

Hi Tom,

Ahhh... OK.  So I could potentially use JPanel to
create a double
buffer for drawing.  I guess that would be a lot
quicker because I am
assuming it would switch pointer of the JPanel
rather than, in my
example, copying the pixel data from one buffer to
another.

I will certainly look at it for my next project but
I don't believe I
will be pushing the boundries with my current task. I am really only
doing it to get the hang of Java. (I'm normally a
C++ Win32 kinda
guy!)

Can I ask...  What your thoughts on the suitability
of Java for Game
Development?  I think I might just be having trouble
shaking some
preconceptions I have through other (non-game
related) experiences.

Regards

Richard

On 05/02/2008, Tom Clifford <tjclifford@xxxxxxxxx>
wrote:
Hello Richard.

I know that in the Killer Game Programming code
the
author used a double-buffering command:

   setDoubleBuffered(true/false);

which is from JPanel/JComponent, and this is also
supposed to eliminate flicker, I believe.

Anyway, a custom paint function would also work.

I'm working on making some techniques work for a
java game.  I wish you luck with your efforts.

Tom.


--- richard sabbarton
<richard.sabbarton@xxxxxxxxx>
wrote:

Hi Tom,

I downloaded the Java3D API from Sun.  It looks
good
but I think it
was a bit much for what I was looking for.
Anyway,
after a little
further digging I managed to work out how to do
what
I was trying to
do.

The key to getting rid of the flicker was not
using
the paint()
function but instead, using my own.

Firstly, I created a new Image and then obtained
the
Graphics
interface for the image.  This gave me my
offscreen
location to
assemble my GUI.  I then use this image and draw
it
to the Graphics
interface of my Applet

// Variables and members
Image offScreenImage;
Graphics offScreenGraphics;
Graphics onScreenGraphics;

In the init function I run the following:

    offScreenImage = createImage( width, height
);
    offScreenGraphics =
offScreenImage.getGraphics();
    onScreenGraphics = this.getGraphics();


I then setup a timer to keep the screen
up-to-date
every xxx
milliseconds which basically runs the following:

    // Draw everything I need to my offscreen
Graphics Interface
offScreenGraphics.drawImage( etc. etc. etc.
);
offScreenGraphics.drawImage( etc. etc. etc.
);
offScreenGraphics.drawImage( etc. etc. etc.
);
    // Then draw the whole thing to screen with
the
Image Interface
    onScreenGraphics.drawImage(offScreenImage,
xxx ,
yyyy , this );

Seems to work quite well for simple graphics and
GUI
etc.  If I want
anything more complex then I will go down the
Java3D
route but for now
this will do.

Regards

Richard



On 04/02/2008, Tom Clifford
<tjclifford@xxxxxxxxx>
wrote:
Java has it's own Java3D interface, found at:

http://java.sun.com/products/java-media/3D/

It allows you to do what is called active
rendering,
which is similar to the c/c++ WinMain/WndProc
loops,
that uses double-buffering,
or you can create the objects you want and
allow
Java3D to do the looping for you, while doing
animation with their Behavior objects.

There are some good java examples with source
code, at Killer Game Programming with Java, by
 Andrew Davison
 O'Reilly, May 2005
 ISBN: 0-596-00730-2
 http://www.oreilly.com/catalog/killergame/
 Web Site for the book:
 http://fivedots.coe.psu.ac.th/~ad/jg

code downloads and instructions at:

http://fivedots.coe.psu.ac.th/~ad/jg/code/

Tom C.


--- richard sabbarton
<richard.sabbarton@xxxxxxxxx>
wrote:

Hi Guys,

In C++ on windows I would use animation by
creating
a compatible
device context in memory with
CreateCompatibleDC().
I would write my
game and all of its elements to the MemoryDC
and
then use something
like BitBlt() to push it to my main DC.

I have recently started learning Java and I
want
to
perform a similar
function.  I want to write all of the
elements
to
memory and then
transfer it to the screen every x
milliseconds.
This is to eliminate
flicker etc.

I have been looking online through tutorials
etc.
and I can't seem to
find a description of how to do this.  Do I
need

=== message truncated ===



      
____________________________________________________________________________________
Never miss a thing. Make Yahoo your home page. http://www.yahoo.com/r/hs

---------------------
To unsubscribe go to http://gameprogrammer.com/mailinglist.html






---------------------
To unsubscribe go to http://gameprogrammer.com/mailinglist.html


Other related posts: