Spiel ruckelt und ich kann die Ursache nicht finden ...

Previous topic - Next topic

Hamburgo

Ja, in den Projekt-Optionen steht ebenfalls 60 Hz drin, sowie
in der Aufl?sung 640 X 480

Kann mich aber nicht erinnern da jemals was eingetragen zu
haben, weil das meines Erachtens derzeit keinen Sinn macht,
da die Aufl?sung im Moment nur bis 1.024 x 768 einstellbar ist
und solche Monitore habe ich garnicht mehr.

Was verstehst Du eigentlich darunter, dass es bei Dir auch
"scheppert"?

Siehst Du ebenfalls das Ruckeln oder passiert da noch mehr
Unerw?nschtes ?

D2O

Hi, das in der IDE ist Standart, da es eh direkt im Code ?nderst wird die Standarteinstellung in der IDE
sowieso ?bergangen.

Mit "Schepperts" meinte ich das bei mir auch dieses "Ruckeln" vorhanden ist.
Man h?tte es jetzt auch mit einem "Absturtz" missverstehen k?nnen. (mein fehler) ;)
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Hamburgo

Weiter oben hattest Du vorgeschlagen, das Programm frame-unabh?ngig
umzuschreiben.

Was m?sste ich dazu tun?

Einfach alles, was mit diesen Frame-Funktionen zu tun hat, rausnehmen ?

Und in den IDE-Optionen den Parameter = 0 setzen ?


BumbleBee

Also ich habs auch mal probiert.
Geruckelt hat bei mir eigentlich nichts aber daf?r hat sich das Spiel immer nach paar Durchg?ngen  aufgeh?ngt und konnte nicht mehr richtig beendet werden. Apropos Beenden. =D
Ein Spiel mit Enter zu beenden ist aber glaube ich nicht so gut. Weil auf die Taste kommt man ja schon fast Automatisch.  So aus Versehen mitten im Spiel draufgedr?ckt steht dann blo? noch. Danke sch?n Auf Wiedersehen. :P
Ich w?rde die Steuerung ?ber die Maus machen. Mit gro?en Kn?pfen so wie am einem echten Automat. Und sch?n w?re noch, wenn irgendwo Geld rausk?me. Kannst du das noch mit einbauen. Bin grad etwas knapp. :P Ich denke es wird auf jeden Fall ein nettes Spiel wenn noch die kleinen Macken weg sind. =D

Cheers
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

Hamburgo

Hallo BumbleBee,

f?r den Fall, dass Du nicht den ganzen Dialog dieses Treads gelesen
hast, m?chte ich nochmals wiederholen, dass man, um die Ruckler
deutlich sehen zu k?nnen in der Config-Datei folgende Werte ab?ndern
sollte:

ShowRunden=40
PixelSprung=9

Solltest Du das aber gemacht haben und keine Ruckler gesehen haben,
dann best?tige mir das bitte nochmals ausdr?cklich.

Weil dann w?re Dein PC der erste, auf dem es "rund" l?uft.

D2O

Ich dacht mir das hier:

aber es scheint auch nicht das gelbe vom Ei zu sein.

Code (glbasic) Select

SETSCREEN 1024,768,1
LIMITFPS 100 //-1



WHILE TRUE

DRAWRECT 0,0,1024,768,RGB(0x00, 0xff, 0xff)
DRAWRECT x,100,32,32,RGB(0xff, 0x00, 0x00)
DRAWRECT xx,200,32,32,RGB(0xff, 0x00, 0xff)

x = x+movetime(0.1)

IF x > 1024 THEN x = -32

xx = xx+movetime(0.2)

IF xx > 1024 THEN xx = -32

printfps(10,10)

SHOWSCREEN

WEND


FUNCTION movetime:l_multi#
LOCAL  l_temp
l_temp = GETTIMER()
RETURN (l_temp*l_multi)
ENDFUNCTION


FUNCTION printfps% :l_x%,l_y%

STATIC fps_time%,fps_counter%,s_FPS%,fps_temp%
fps_time = GETTIMERALL()
fps_counter = fps_counter + 1
IF (fps_time-fps_temp)>1000
fps_temp = fps_time
s_FPS = fps_counter
fps_counter = 0
ENDIF
PRINT s_FPS+" Frames",l_x,l_y
RETURN s_FPS
ENDFUNCTION

I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

BumbleBee

Keine Angst, hab alles gelesen. Aber ist doch kaum zu sehen. :)
Es ruckelt doch normalerweise nicht, wenn ich LIMITFPS h?her einstell als mein Monitor sowieso grad macht.

Beispiel:
Monitor l?uft mit 60Hz. Stell ich auf LIMITFPS auf 60 oder weniger dann ruckelts halt.  Stell ich z.B. LIMITFPS auf 75 ist es weg. Hab aber  eh nur 60 im Vollbild. :P Also mach einfach LIMITFPS -1 und steuer alles ?ber einen Timer. Dann l?ufts  fl?ssig und ?berall gleich schnell. Oder frag beim Programmstart den Screen ab und nach diesen Werten richtet sich das Programm. :)

M??te das dann sp?ter nicht in den Beta Test Bereich verschoben werden? Trau mich nicht. Mal Schranz0r fragen. :)

Cheers
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

Hamburgo

Also, nun habe ich in den IDE-Optionen die Framerate = -1
gesetzt und im Programm auf 80 erh?ht.

Jetzt ruckelt es zwar nicht mehr ganz so stark, dennoch genug,
dass es routinierten Spielern auff?llt, auch bei Soll-Geschwindig-
keit.

Kann das evtl. bedeuten, dass mein Code manchmal keine 60 Frames
pro Sekunde hergibt, weil vielleicht zu d?mlich programmiert ?

GraKa = NVIDIA Geforce 9300 G

Oder ich an den Einstellungen der GraKa was ?ndern muss ?


Schranz0r

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Hamburgo

In den beiden anh?ngenden JPGs habe ich mal
die Konfiguration meiner GraKa abgelichtet.

Bitte schaut mal nach, ob da was nicht stimmt.

Solltet Ihr weitere Info?s brauchen, dann einfach
nur anfordern. Ich werde schnellstm?glich liefern.

Danke

[attachment deleted by admin]

Hamburgo

Also, ich habe jetzt mal mit den Einstellungen an meiner GraKa
rumgespielt.

Nur ein Parameter brachte eine sichtbare Ver?nderung und zwar
eine weitere Verschlechterung: Vertikale Synchronisierung.

Setze ich die auf "AUS" ruckelt das Spiel fast durchgehend in den
Rollen, der Rest des Bildes ist gewohnt stabil.

Hat einer eine Idee, worauf das schlie?en l??t ?

BumbleBee

Quote from: Hamburgo
Hat einer eine Idee, worauf das schlie?en l??t ?

Ja, das liegt wohl an deinem Code. :P   
Ich w?rde aber einfach mal ein kleines, ?hnliches, Programm machen (nur paar Zeilen) wo sich halt auch was bewegt oder dreht, vielleicht nur eine solche Walze oder sowas ?hnliches, und das nochmal ausgibig testen. Zum Beispiel LIMITFPS -1 und SLEEP 10. Dann eben mal ?ber einen Timer steuern, dann auch LIMITFPS 60 oder 80... einfach alles mal durchprobieren, und auch auf einem anderen Rechner testen.
Wenn da kein Ruckeln zu sehen ist, liegts wohl an deinem Spiel. =D Nur hast du da halt schon paar Zeilen mehr geschrieben und dadurch wirds halt vielleicht schwerer den "Fehler" zu finden. Daher einfach mal ein kleines Versuchsprogramm schreiben, obs da auch ruckelt.  Wir warten dann auf R?ckmeldung. :)

Cheers
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

Veritas

So nun bringen wir den Thread mal wieder zum Leben ;),
hast du ein kleines Versuchsprogramm dazu geschrieben, indem 100% davon auszugehen ist das keinerlei Micro-ruckler erkennbar sind?
Ich habe mal etwas dergleichen Versucht, das scheint so auch zu funktionieren.

Problem an der Sache: Ich habe das Gefühl das dennoch Microruckler bestehen, wenn auch nur dezent. Aber Sie sind vorhanden. Im einzelnen "mini"-drawrect, stört soetwas natürlich nicht so gewaltig.
Hat man nun 90% des Screens der sich zeitgleich bewegt fällt dieses micro-ruckeln einfach auf, da es zeitgleich bei allen passiert. Kann das irgendwas damit zu tun haben das ein Buffer voll ist und gelöscht wird um dann wieder beschrieben werden zu können oder irgendetwas GLBasic Internes dergleichen? Das quasie das dadurch quasi eine gewisse Latenz innerhalb der Animation entstehen kann?

Code (glbasic) Select
a = 20
b = 200
Speed = 9


//////////////////////////////
//////////////////////////////

LIMITFPS -1
Old_Timer=GETTIMERALL()

GETSCREENSIZE Width, Height

WHILE TRUE

    GT=(GETTIMERALL()-Old_Timer)/1000  //Durch Tausend für die Sekunden je größer der Unterschied zwischen aktuell und alten Timer, desto höher der Faktor
    Old_Timer=GETTIMERALL()



Counter = Counter + 1

IF KEY(200) = 1 THEN
Speed = Speed + 1
IF KEY(208) = 1 THEN Speed = Speed -1

IF KEY( 208) = 1 THEN Speed = Speed -1


// FOR i=0 TO 10 // eine schleife sorgt für längere Berechnung? daher höherer Faktor?

DRAWRECT b,a,100,100,RGB(255,0,0);

PixelSprung = Speed * GT
a = a + PixelSprung


// NEXT


IF (a>Height) THEN a = -100


IF (a<=0)
IF (Speed<=0)
a = Height + 100
ENDIF
ENDIF

PRINT GT,10,20
PRINT "Timer: "+GETTIMER()*1000, 10,40
PRINT "Speed & GT: "+PixelSprung,150,400
PRINT "Speed: "+Speed,500,400
PRINT "Counter "+Counter, 400, 20
PRINT "Timer: "+GETTIMERALL(), 400,40
// IF GETTIMERALL() >= 1000 THEN KEYWAIT
printfps(20,400)



SHOWSCREEN

WEND

FUNCTION printfps:l_x,l_y
GLOBAL fps_time, fps_counter, s_FPS, fps_temp
   fps_time    = GETTIMERALL()
   fps_counter = fps_counter + 1

   IF (fps_time-fps_temp) > 1000
  fps_temp    = fps_time
  s_FPS       = fps_counter
  fps_counter = 0
   ENDIF

   PRINT  s_FPS + " Frames", l_x, l_y
   RETURN s_FPS
ENDFUNCTION


(mit Pfeiltasten, lässt sich die geschwindigkeit hoch und heruntersetzen --> 9 ist nun eingestellt, da dies ursprünglich frameabhängig der Wert war, auf die art und Weise läuft das ganze natürlich wesentlich langsamer und somit auch kontrollierter)

Liebe Grüße Veritas
Tower: 2,5Ghz Quadcore/  8GB DDR2 Ram/ 1066Mhz FSB / ATI HD Radeon 4860.
Mobil:  DELL Studio XPS 16 / 2,53GHz intel Centrino 2 Duo / 4GB DDR 3 Ram/ 1066Mhz FSB/ ATI Radeon 4670 mobility

Never Argue with Idiots. They'll drag you down
to their level and beat you with experience.

Veritas

hm, schade das sich da wohl nichts mehr ergibt  :(
Tower: 2,5Ghz Quadcore/  8GB DDR2 Ram/ 1066Mhz FSB / ATI HD Radeon 4860.
Mobil:  DELL Studio XPS 16 / 2,53GHz intel Centrino 2 Duo / 4GB DDR 3 Ram/ 1066Mhz FSB/ ATI Radeon 4670 mobility

Never Argue with Idiots. They'll drag you down
to their level and beat you with experience.