Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (408)
games submitted by our members
Games in WIP (293)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  about Game Loop  (Read 1512 times)
0 Members and 1 Guest are viewing this topic.
Offline winnerpig

Junior Newbie





« Posted 2009-02-12 04:05:50 »

[size=10pt][size=10pt][size=10pt][size=10pt][size=10pt]Generally,the game loop is built up manually,hower, in my opioin, the game application under awt or swing doesn't need to do this ,since we can override the  defult method Update() with game logic (sprite move and collosion detect ,etc) and Paint() with code of graphic rendering ,and finally we just call Repaint()  iteratively within a dead loop while(){} .
so, what's the necessity of constructing a game loop by ourself?[/size][/size][/size][/size][/size]
Offline Hsaka
« Reply #1 - Posted 2009-02-12 05:00:18 »

Essentially, calling Repaint() adds a repaint request to the event queue and there is no notion of how long it remains in the queue before repaint is actually executed. Sometimes repaint requests may even be skipped or delayed.

Because Repaint() is at the mercy of the JVM, it is difficult to accurately control the timing of your game. In particular, we have no idea how long we should sleep for, which means we won't be able to maintain a consistent FPS.

Writing your own game loop is necessary because we don't know when repaint is actually completed. So, in order accurately control the timing of the game, we must take things into our own hands instead of overriding Update and Paint. The technique involves actively rendering our buffer image to the screen and implementing our own update method. This way we can measure the rendering time and accurately control how long to sleep.
Offline winnerpig

Junior Newbie





« Reply #2 - Posted 2009-02-17 09:03:16 »

Thanks a lot! There is another question: Is it the absolute way to create a thread  handling the game loop seperately? other words, could I make the game loop without using thread programming?
Games published by our own members! Check 'em out!
Play the free demo of Revenge of the Titans!
Offline CommanderKeith
« Reply #3 - Posted 2009-02-17 13:46:41 »

Hsaka's right, what he describes is sometimes called active rendering while your approach is passive rendering.

About threading, your code has to run in some thread, so you may as well make your own thread to do it in.

The trouble is, if you're using the AWT to listen for key and mouse events then you need to watch out since the keyPressed(KeyEvent e) etc methods run on the AWT event thread (also called the Event Dispatch Thread, EDT). So you often need to be careful not to modify game code from the EDT while it is running in your own game loop thread. I avoid this by storing the events recieved on the EDT, and then getting them in a synchronized way and processing them on the game loop thread.

Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Get high quality music tracks for your game!

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
cubemaster21 (123 views)
2013-05-17 21:29:12

alaslipknot (131 views)
2013-05-16 21:24:48

gouessej (161 views)
2013-05-16 00:53:38

gouessej (153 views)
2013-05-16 00:17:58

theagentd (166 views)
2013-05-15 15:01:13

theagentd (151 views)
2013-05-15 15:00:54

StreetDoggy (195 views)
2013-05-14 15:56:26

kutucuk (219 views)
2013-05-12 17:10:36

kutucuk (218 views)
2013-05-12 15:36:09

UnluckyDevil (221 views)
2013-05-12 05:09:57
Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38

Java Data structures
by Roquen
2013-03-29 13:21:12

Topic Request
by kutucuk
2013-03-22 21:42:01
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!
Page created in 0.101 seconds with 20 queries.