Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (526)
Games in Android Showcase (127)
games submitted by our members
Games in WIP (593)
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  
  Scrolling problems  (Read 1159 times)
0 Members and 1 Guest are viewing this topic.
Offline 2DGamer

Senior Newbie




Java games rock!


« Posted 2004-08-16 10:51:24 »

Hello again,

Posted my latest game attempt in the "Your games here" topic, but there seems to be a few wrinkles that need to ironed out so I thought I'd start a new thread here and fling some code at you.

The thread:
http://www.java-gaming.org/cgi-bin/JGNetForums/YaBB.cgi?board=Announcements;action=display;num=1091819583

The game:
http://home.chello.no/~ttollefs/game/scroller/scroller.html
or
http://student.iu.hio.no/~s113388/SpaceStationII.jnlp

Sooo ... where to start. As I understood it the game speed was all over the place and some of the tiles didn't have the good sense to stay in one place. I've changed the game loop since then from using Thread.sleep()

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
public void run()
            {
                  while (true)
                  {
                        try
                        {   sleep(m_iFrameDelay);   }
                        catch(InterruptedException ie)
                        {   System.err.println("m_iFrameDelay was interrupted");   }

                        ref.gameCycle();
                  }
            }


to the following (posted in forums.java.sun.com)

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
public void run()
      {
            final int MILLI_FRAME_LENGTH = 1000/30;
            long startTime = System.currentTimeMillis();
            int frameCount = 0;
            while(true)
            {
                  ref.gameCycle();
                  frameCount++;

                  while((System.currentTimeMillis()-startTime)/MILLI_FRAME_LENGTH <frameCount)
                  {            Thread.yield();         }

                  if (ref.getKeyState(KeyEvent.VK_ESCAPE))
                        break;
            }
            ref.destroy();
      }

The original version used java 1.5's System.nanoTime()
which I changed to currentTimeMillis(). the gameCycle() method updates what needs to be updated and calls repaint(). My update() method looks like this:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
public void update(Graphics g)
      {
            // Paint game graphics to off-screen image
            renderGameOffscreen();

            // Draw the off-screen image to on-screen
            do
            {
                  int returnCode = vImgOffscreen.validate(getGraphicsConfiguration());
                  if (returnCode == VolatileImage.IMAGE_RESTORED)
                  {
                      // Contents need to be restored
                      renderGameOffscreen();          // restore contents
                  }
                  else if (returnCode == VolatileImage.IMAGE_INCOMPATIBLE)
                  {
                      // old vImgOffscreen doesn't work with new GraphicsConfig; re-create it
                      vImgOffscreen = createVolatileImage(Constants.GAMEWIDTH, Constants.GAMEHEIGHT + Constants.BOTTOM_Y_OFFSET);
                      renderGameOffscreen();
                  }
                  g.drawImage(vImgOffscreen, 0, 0, this);
             }
             while (vImgOffscreen.contentsLost());
      }

// Method renders all game graphics to an off screen volatile image
      public void renderGameOffscreen()
      {
            do
            {
                  if (vImgOffscreen.validate(getGraphicsConfiguration()) == VolatileImage.IMAGE_INCOMPATIBLE)
                  {
                        // old vImgOffscreen doesn't work with new GraphicsConfig; re-create it
                        vImgOffscreen = createVolatileImage(Constants.GAMEWIDTH, Constants.GAMEHEIGHT + Constants.BOTTOM_Y_OFFSET);
                  }

                  Graphics2D g = vImgOffscreen.createGraphics();

                  switch (m_iGameState)
                  {
                        ... paints what needs to be painted based on the current game state ...
                  }

                  g.dispose();
            }
            while (vImgOffscreen.contentsLost());
      }



Been having a hard time trying to figure out what could be wrong because I don't have any real problems with speed or weirdo tile placements on this end ... so anything seem wrong with the game loop or my drawing routine?
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

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

The first screenshot will be displayed as a thumbnail.

toopeicgaming1999 (71 views)
2014-11-26 15:22:04

toopeicgaming1999 (60 views)
2014-11-26 15:20:36

toopeicgaming1999 (14 views)
2014-11-26 15:20:08

SHC (27 views)
2014-11-25 12:00:59

SHC (25 views)
2014-11-25 11:53:45

Norakomi (31 views)
2014-11-25 11:26:43

Gibbo3771 (25 views)
2014-11-24 19:59:16

trollwarrior1 (38 views)
2014-11-22 12:13:56

xFryIx (77 views)
2014-11-13 12:34:49

digdugdiggy (55 views)
2014-11-12 21:11:50
Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
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!