Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (483)
Games in Android Showcase (110)
games submitted by our members
Games in WIP (550)
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  
  Threads, sleeping  (Read 924 times)
0 Members and 1 Guest are viewing this topic.
Offline davey

Junior Newbie




Java games rock!


« Posted 2005-02-07 14:48:34 »

I'm not new to programming or Java in general, but very new to games programming.  I've not done it before and thought I'd have a go at writing something simple, so I started writing a breakout sort of game.

Developing on Linux I got a ball moving across the screen.  I created a thread which runs my moveBall() method whenever it's awake.

It's here that I have become unstuck.  To get any kind of reasonable speed on Linux I have to sleep for the lowest time available on my system (10ms).  (When I start doing any kind of collision detection in that method performance goes right off, but that's probably another problem).

However, when it runs on Windows, the sleep needs to be set to 1000 to move at a "reasonable" speed.

However, if sleeping for 1000 milliseconds is a second, it seems to me that the Windows one is wrong, even though it's more usable (i.e. I have a lot of scope to make it faster or slower).

So three questions, really.  Which OS sounds like it's exhibiting broken behaviour, and why is the performance so bad on Linux?

Is there any useful online introduction to the basics of games writing, especially in Java?  I'm not trying to make a living out of it, just get a bit of experience in something that could be fun.

TIA,
Offline oNyx

JGO Coder


Medals: 2


pixels! :x


« Reply #1 - Posted 2005-02-07 15:06:04 »

>if sleeping for 1000 milliseconds is a second, it seems to me
>that the Windows one is wrong

1000 msecs=1 second

But that works and it really sleeps for about a second - even on windows. So... most likely your code is to blame.

Well, in general that approach is flawed. Different machines have different speed. Each frame takes more or less time... so you actually need to determine how many time elapsed and adjust the wait time span accordingly.

If you're using 1.5, it's easy, because you can use nanoTime().

Like so:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
private long timeNow, timeThen, timeLate = 0, timeDelta, desiredFrameRate=75;
[...]
g.dispose();
sync(1000000000L/desiredFrameRate);
strategy.show();
[...]
private void sync(long frameFraction)
{
      long gapTo = frameFraction + timeThen;
      do
      {
            Thread.yield();
            timeNow = System.nanoTime();
      }while(gapTo > timeNow+timeLate);

      if(gapTo<timeNow)
            timeLate = timeNow-gapTo;
      else
            timeLate = 0;
      timeDelta = timeNow - timeThen;
      timeThen = timeNow;
}


You can ignore (remove) the timeDelta bit if you want to use tick based animation.

>I'm not trying to make a living out of it

There is no reason to point that out, because it doesn't make a difference Wink

>Is there any useful online introduction to the basics of
>games writing, especially in Java?

There are tons of information out there. gamasutra.com and nehe.gamedev.net for example.

Check out kev's tuts:
http://www.cokeandcode.com/index.php?page=resources

弾幕 ☆ @mahonnaiseblog
Offline bauerr

Junior Member




Java!!!!!!!!!!! !!!


« Reply #2 - Posted 2005-02-07 16:39:09 »

Hi,

you can also have a look at this tutorial:

http://www.javacooperation.gmxhome.de/TutorialStartEng.html

But the tutorial  mentioned above is better.  Wink
This one is for real beginners.

Ralf
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline davey

Junior Newbie




Java games rock!


« Reply #3 - Posted 2005-02-07 18:42:19 »

Quote


Ah.  Far better ways of doing things.  Time to junk my code and start again.

Thanks for the pointers
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.

CopyableCougar4 (15 views)
2014-08-22 19:31:30

atombrot (28 views)
2014-08-19 09:29:53

Tekkerue (25 views)
2014-08-16 06:45:27

Tekkerue (23 views)
2014-08-16 06:22:17

Tekkerue (15 views)
2014-08-16 06:20:21

Tekkerue (22 views)
2014-08-16 06:12:11

Rayexar (61 views)
2014-08-11 02:49:23

BurntPizza (39 views)
2014-08-09 21:09:32

BurntPizza (31 views)
2014-08-08 02:01:56

Norakomi (38 views)
2014-08-06 19:49:38
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

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
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!