Hello,
This forum is a bit quiet these days (as are most Delphi
forums). You may want to try the forum on the Pascal Game Development
website. They have a DelphiX section. The site address is here:
http://www.pascalgamedevelopment.com
Good luck with your game.
Ian
From: delphigames@yahoogroups.com [mailto:delphigames@yahoogroups.com]
On Behalf Of ericmort19
Sent: 26 May 2009 23:15
To: delphigames@yahoogroups.com
Subject: [DelphiGames] Re: DXTimer Problem
Thanks Igor but that would result in a very jerky movement. The sprites
need to move in small increments at frequent intervals to get smooth
movement. It's like a video, 10 frames per second and the video is
jerky, 25 FPS and it's smooth.
I have tracked this down to a problem with DirectX timers on some
Windows XP machines. Mine is one of them and although I can find plenty
of discussion about it I haven't come up with a fix. I have tested my
game on my old Win98SE machine, another XP machine, a Windows Vista
machine and even on Windows 7 Beta. It runs perfectly on all of them
(well the 98SE machine struggles a bit but still increments the speed
correctly) so the problem is not with my code and it's not compiled into
the exe.
It would be nice if someone has a fix.
Thanks
--- In delphigames@yahoogroups.com
<mailto:delphigames%40yahoogroups.com> , Igor Stojkovic
<stojkovic.igor@...> wrote:
>
> Maybe this wont be so helpful but...
>
> I would keep the running on max fps, and update game state at
> different speed. For example: instead of moving a sprite by 10pixels
> on every update and using fps to regulate how much pixels per second
> that amounts to, I would let the game run at max fps, but i would
> measure how much time passed since last update and move the sprite
> accordingly - 100ms passed and game is at slow so move it by 10px,
> 100ms passed and game is at fast so move it by 20px.
>
> On Tue, May 26, 2009 at 3:55 AM, ericmort19 <barberic19@...> wrote:
> >
> >
> > I am developing a game using UNDelphiX with Delphi 7 and have a
problem with
> > the DXTimer. The game has 10 game levels and 3 levels of difficulty.
> > The game speed should increase in a linear progression from 20 FPS
in Level
> > 1 Beginner to a max of 40 FPS in Level 10 Expert or whenever the 40
FPS is
> > achieved.
> > My code is this, where aDifficultyTime is a local variable and
FLevel is the
> > game level variable with a range of 1..10.
> >
> > // set game speed - runs at 20..40 FPS
> > case FDifficulty of
> > gd_Beginner: aDifficultyTime := 0;
> > gd_Advanced: aDifficultyTime := 5;
> > gd_Expert: aDifficultyTime := 10;
> > else aDifficultyTime := 0;
> > end;
> > DXTimer.Interval := 52 - aDifficultyTime - (FLevel*2);
> > if DXTimer.Interval < 25 then DXTimer.Interval := 25; // max 40 FPS
> >
> > The FPS output runs like this, starting at 16 FPS instead of 20 and
jumping
> > to 21, 24 and finally a max of 32 :-
> >
> > Level Beginner - 16 FPS. Should be 20.
> > Level Expert - 21 FPS. Should be 25.
> > Leve3 Beginner - 21 FPS. Should be 21.
> > Leve3 Expert - 21 FPS. Should be 27.
> > Leve5 Beginner - 21 FPS. Should be 24.
> > Leve5 Expert - 24 FPS. Should be 31.
> > Leve8 Beginner - 21 FPS. Should be 28.
> > Leve8 Expert - 32 FPS. Should be 38.
> > Leve10 Beginner - 21 FPS. Should be 31.
> > Leve10 Expert - 32 FPS. Should be 40.
> >
> > I ran the DX Diagnostics tool from Start>Run>dxdiag and that found
no
> > problems. Relevant sections of the report below. If I leave the
dxdiag
> > window open and run the game it behaves as it should with a gradual
increase
> > in speed as it progresses through the level. When I close the dxdiag
window
> > the timer resumes it's weird behavior.
> >
> > Please has anyone any ideas how to fix it.
> >
> > DX Diagnostics output report - relevant bits.
> > ------------------
> > System Information
> > ------------------
> > Time of this report: 5/26/2009, 10:22:48
> > Machine name: ERIC-XP3
> > Operating System: Windows XP Professional (5.1, Build 2600) Service
Pack 2
> > (2600.xpsp_sp2_rtm.040803-2158)
> > Language: English (Regional Setting: English)
> > System Manufacturer: GBT___
> > System Model: GBTUACPI
> > BIOS: Award Modular BIOS v6.00PG
> > Processor: AMD Athlon(tm) 64 X2 Dual Core Processor 6000+, MMX,
3DNow (2
> > CPUs), ~3.0GHz
> > Memory: 2046MB RAM
> > Page File: 372MB used, 3566MB available
> > Windows Dir: C:\WINDOWS
> > DirectX Version: DirectX 9.0c (4.09.0000.0904)
> > DX Setup Parameters: Not found
> > DxDiag Version: 5.03.2600.2180 32bit Unicode
> >
> > ------------
> > DxDiag Notes
> > ------------
> > DirectX Files Tab: No problems found.
> > Display Tab 1: No problems found.
> > Sound Tab 1: No problems found.
> > Sound Tab 2: No problems found.
> > Sound Tab 3: No problems found.
> > Music Tab: No problems found.
> > Input Tab: No problems found.
> > Network Tab: No problems found.
> >
> > --------------------
> > DirectX Debug Levels
> > --------------------
> > Direct3D: 0/4 (n/a)
> > DirectDraw: 0/4 (retail)
> > DirectInput: 0/5 (n/a)
> > DirectMusic: 0/5 (n/a)
> > DirectPlay: 0/9 (retail)
> > DirectSound: 0/5 (retail)
> > DirectShow: 0/6 (retail)
> >
> > ---------------
> > Display Devices
> > ---------------
> > Card name: NVIDIA GeForce 7300 SE/7200 GS
> > Manufacturer: NVIDIA
> > Chip type: GeForce 7300 SE/7200 GS
> > DAC type: Integrated RAMDAC
> > Device Key: Enum\PCI\VEN_10DE&DEV_01D3&SUBSYS_82501043&REV_A1
> > Display Memory: 512.0 MB
> > Current Mode: 1024 x 768 (32 bit) (100Hz)
> > Monitor: Philips 109B50
> > Monitor Max Res: 1920,1440
> > Driver Name: nv4_disp.dll
> > Driver Version: 6.14.0011.6218 (English)
> > DDI Version: 9 (or higher)
> > Driver Attributes: Final Retail
> > Driver Date/Size: 6/29/2007 02:43:00, 5690624 bytes
> > WHQL Logo'd: n/a
> > WHQL Date Stamp: n/a
> > VDD: n/a
> > Mini VDD: nv4_mini.sys
> > Mini VDD Date: 6/29/2007 02:43:00, 6807328 bytes
> > Device Identifier: {D7B71E3E-4293-11CF-B96B-5BA200C2CB35}
> > Vendor ID: 0x10DE
> > Device ID: 0x01D3
> > SubSys ID: 0x82501043
> > Revision ID: 0x00A1
> > Revision ID: 0x00A1
> > Video Accel: ModeMPEG2_A ModeMPEG2_B ModeMPEG2_C ModeMPEG2_D
ModeWMV9_B
> > ModeWMV9_A
> > Deinterlace Caps: {6CB69578-7617-4637-91E5-1C02DB810285}:
> > Format(In/Out)=(YUY2,YUY2) Frames(Prev/Fwd/Back)=(0,0,0)
> > Caps=VideoProcess_YUV2RGB VideoProcess_StretchX
VideoProcess_StretchY
> > DeinterlaceTech_PixelAdaptive
> > {335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(YUY2,YUY2)
> > Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB
> > VideoProcess_StretchX VideoProcess_StretchY
> > DeinterlaceTech_BOBVerticalStretch
> > {6CB69578-7617-4637-91E5-1C02DB810285}: Format(In/Out)=(UYVY,YUY2)
> > Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB
> > VideoProcess_StretchX VideoProcess_StretchY
DeinterlaceTech_PixelAdaptive
> > {335AA36E-7884-43A4-9C91-7F87FAF3E37E}: Format(In/Out)=(UYVY,YUY2)
> > Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB
> > VideoProcess_StretchX VideoProcess_StretchY
> > DeinterlaceTech_BOBVerticalStretch
> > {6CB69578-7617-4637-91E5-1C02DB810285}:
Format(In/Out)=(YV12,0x3231564e)
> > Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB
> > VideoProcess_StretchX VideoProcess_StretchY
DeinterlaceTech_PixelAdaptive
> > {335AA36E-7884-43A4-9C91-7F87FAF3E37E}:
Format(In/Out)=(YV12,0x3231564e)
> > Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB
> > VideoProcess_StretchX VideoProcess_StretchY
> > DeinterlaceTech_BOBVerticalStretch
> > {6CB69578-7617-4637-91E5-1C02DB810285}:
Format(In/Out)=(NV12,0x3231564e)
> > Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB
> > VideoProcess_StretchX VideoProcess_StretchY
DeinterlaceTech_PixelAdaptive
> > {335AA36E-7884-43A4-9C91-7F87FAF3E37E}:
Format(In/Out)=(NV12,0x3231564e)
> > Frames(Prev/Fwd/Back)=(0,0,0) Caps=VideoProcess_YUV2RGB
> > VideoProcess_StretchX VideoProcess_StretchY
> > DeinterlaceTech_BOBVerticalStretch
> > Registry: OK
> > DDraw Status: Enabled
> > D3D Status: Enabled
> > AGP Status: Enabled
> > DDraw Test Result: Not run // ran OK when tested
> > D3D7 Test Result: Not run // ran OK when tested
> > D3D8 Test Result: Not run // ran OK when tested
> > D3D9 Test Result: Not run // ran OK when tested
> >
> > -------------
> >
> >
>
>
>
> --
> Pozdrav,
> Igor Stojkovic mailto: stojkovic.igor@...
> Join new social network and get you share of the company at
> www.me2everyone.com/208754
>
This email is intended solely for the person to whom it is addressed and may
contain confidential or legally privileged information. If you are not the
intended recipient, be advised that you have received this email in error and
that any use, dissemination, forwarding, printing or copying of this email is
strictly prohibited. Please notify the author by replying to this email and
destroying all copies of the email and attachments. Access to this email by
anyone else is unauthorised.
Email may be susceptible to data corruption, interception, unauthorised
amendment, viruses and delays or the consequences thereof. Any views or opinions
presented are solely those of the author and do not necessarily represent those
of Grosvenor Technology Ltd.
Grosvenor Technology Ltd. (incorp. Newmark Technology Ltd.) is a company
registered in England with company number 2412554.
The Grosvenor Technology Ltd. Registered Office address is Millars Three,
Southmill Road, Bishop's Stortford, Herts, CM23
[Non-text portions of this message have been removed]