GLBasic forum

Other languages => GLBasic - de => Topic started by: Hamburgo on 2009-May-01

Title: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-01
Hallo zusammen,

ich habe ein Spiel nachgebaut, sowas ?hnliches wie einen Daddel-Automaten
in dem Bildfolgen durch 9 Fenster durchlaufen, nach einigen Runden stehen
bleiben und bei ?bereinstimmungen Punkte als Gewinne ausgesch?ttet werden.

Das Ganze l?uft auch recht perfekt, aber zwischendrin ruckelt es unrhythmisch
und ich kann den Fehler nicht finden.
In der Einzelbildbetrachtung stimmen die Werte exakt und werden auch korrekt
umgesetzt.

Das Original l?uft auf meinem und viel schw?cheren PC problemlos. An der Menge
der Bild-Informationen kann es somit eigentlich nicht liegen. sodass ich langsam
den Eindruck gewinne, dass es an OpenGL liegt oder GLBasic einfach aus irgend-
einem Grund ?berfordert ist.

Hat einer der Cracks hier im Forum mal Lust sich das anzuschauen ?
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: D2O on 2009-May-01
Lade doch mal was Spielbares hoch um es auf verschiedener Hardware zu Testen.

Ich selber hatte auch schonmal ein kleines Problem mit GLB, dabei war aber nicht GLB schuld sondern ne
"Falsche" einstelung im Grafikkarten Treiber.
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-01
Als ZIP-File ?
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: D2O on 2009-May-01
zip, rar, 7z.... was Du willst  :)

Ne, im grunde kann fast jeder zip oder rar.
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-01
Ich habs in eine 7z-exe gepackt und als TXT angeh?ngt.
So ist sie nur 4-MB gro?.

Alle anderen Formate waren viel gr??er.

Bitte benennt die Datei in .exe um und f?hrt sie aus.

Danke.

[attachment deleted by admin]
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-01
Es liegt ein PDF bei, in dem die Parameter-Datei beschrieben ist,
z.B. Bildschirmgr??e oder Frequenz-Rate usw.

Das Ruckeln ist bei normler Spiel-Geschwindigkeit nur schwer zu
sehen, man nimmt nur wahr, dass da etwas st?rt und nervt.

Um es deutlich sehen zu k?nnen, muss man die Geschwindigkeit
runtersetzen: PixelSprung = z.B. 9 statt 42 (Standard)

Danke f?r die Hilfe.
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: D2O on 2009-May-01
Hallo,
in der Standart version ist das Spiel erst garnicht bei mir gelaufen(Keine R?ckmeldung), hier musste ich erstmal das hier einstellen:
Quote
[RunTime]
Screen=7
GameScreen=4


Dann w?rs noch nett wenn man erfahren k?nnte wie man den Automat Steuert!?
Bis jetzt habe ich nur 2 Sachen herausgefunden:
Pfeil nach oben = Es wird irgendwie was ein gesetzt und die Fenster bekommen eine verbindung ?
Enter = "Vielen Dank....." und ende?
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-02
Oh, Entschuldigung, da habe ich ja m?chtig geschlafen.

Das Spiel ist recht simpel.

Der Einsatz wird ?ber die Pfeil-Oben-Taste gesetzt.

Mindest-Einsatz sind 64 und Max = 320 Punkte.

Mit der Pfeil-Unten-Taste wird ein Durchlauf gestartet.

Entsteht ein Gewinn, so muss die Gutschrift ?ber die Pfeil-Oben-Taste angestossen werden.

Ansonsten mit der Pfeil-Oben-Taste neu setzen und das Game beginnt von vorn.

Mit er ENTER-Taste wird das Programm beendet.

Mehr ist das nicht.

Viel Spass.
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-02
Mit Screen = 7 und GameScreen = 7
m?sste es eigentlich auch laufen.
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: D2O on 2009-May-02
Moin moin,

jepp mit der 7ner einstellung gehts auch :)
es war nur aus die 10ner einstellung bezogen die drin war.

So nun mal ein kleinet Testbericht ;)

1. Zu einfach,  soblad ich mehr als 3000$?? hatte, spielte ich nur noch mit dem max. einsatz (320 flocken)
    Ich konnte hier nur noch mit gewinn arbeiten.
    Das 1 und 2 mal wo ich nichts gewonnen habe wurde mt der n?chsten runde oftmals doppelt und dreifach wieder ausgezahlt.
    (Hier sollte ne ?berarbeitung stattfinden)
2. Einmal hatte ich einen Programmh?nger/Absturtzt. Ich konnte Ihn aber nicht mehr Reproduzieren.
     Der Gewinn war auf 16 und als ich es mit der Pfeiltaste Oben ?bernehmen wollte, blieb der Zahlungssound irgendwie in einem
     Loop h?ngen und nichts ging mehr.
3. Ruckler oder h?nger hatte ich ansonsten nicht (zumindest nicht bemerkt) der einzige Grafik Sound ruckler der vorkam war, als meine
    W?chentliche Festplattensicherung gestartet ist und das auch nur beim Start.
   Die Daten sicherung lief dann im Hintergrund weiter und das Spiel lief dann auch wieder Tadellos.
4. Kurzwahltasten f?r die eins?tze w?ren auch nicht schlecht: Min. Mid. Max. Einsatz.
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-02
Danke f?r den kleinen Testbericht und die wertvollen Info?s
und Anregungen.

Das Programm hat noch ein paar kleine Bucks und es spuckt
noch zuviele Gewinne aus.
Die will ich aber erst angehen, wenn ich das Problem mit dem
Ruckeln eleminiert habe.

Bitte setze mal in der Config-Datei unter [Laufkontrolle]:

ShowRunden=40
PixelSprung=9

Bei dieser Geschwindigkeit laufen die Bilder recht langsam
und lange durch die ViewPorts.

Unter diesen Einstellungen kann ich auf meiner Maschine
die Ruckler/H?nger recht deutlich sehen.

Man muss aber recht konzentriert hinschauen, um die mit-
zubekommen.

Ich w?re Dir sehr dankbar, wenn Du dir das mal f?r 2 bis 3
Runden antun w?rdest.

Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: D2O on 2009-May-02
Jepp,
mit den von Dir geneannten einstellungen "schepperts" auch bei mir.
Das errinert mich ein wenig an das Tearing:
http://de.wikipedia.org/wiki/Tearing (http://de.wikipedia.org/wiki/Tearing)

Ich weis nicht, wie Du die Frame begrenzung einh?ltst, ich vermute mit der IDE oder "LIMITFPS"
Hast Du schonmal daran gedacht das ganze Frameunabh?ngig zu machen( Schau mal im Forum rum).

Da ist noch was, am anfang drehen sich die Walzen recht lange, hat man dann einen h?heren Gewinn gemacht, drehen sie sich nur
noch einen Bruchteil so lange wie am anfang.
Absicht?
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-02
In dem Thema Frequenzen und Frames bin ich etwas schwach, das
ist eine relative BlackBox f?r mich.

Das Thema verstehe ich nicht wirklich.

Auf Empfehlung wegen eines anderen Problems, habe ich vor Monaten
folgenden Code eingebaut:

Code (glbasic) Select

GLOBAL Frequenz%[]
DIM Frequenz%[11]

Frequenz% [1] =  50
Frequenz% [2] =  59
Frequenz% [3] =  60
Frequenz% [4] =  70
Frequenz% [5] =  75
Frequenz% [6] =  80
Frequenz% [7] =  85
Frequenz% [8] =  90
Frequenz% [9] =  95
Frequenz%[10] = 100

displayUpdateFreq = Frequenz%[MonitorFrequenz%] // + 60

LIMITFPS displayUpdateFreq

--------------------------------------------------------------------------

SUB ShowBackBuffer:

LOCAL SleepShow%

SHOWSCREEN

IF ShowEnde% < 1 THEN SleepShow% = update_Delay(displayUpdateFreq)

IF SleepShow% > ShowSleep% THEN ShowSleep% = SleepShow%
SLEEP ShowSleep
ENDSUB


In der Config-Datei ist standardm??ig MonitorFrequenz=3 gesetzt,
also gem?? meiner Tabelle = 60 Hz.

Was das wirklich bewirkt, davon habe ich keinen Dunst, leider.

Meine aber, dass ich damit die CPU-Last habe erheblich drosseln
k?nnen, die Anfangs immer bei 100% lag.

Damit ich Dir korrekt antworten kann, was verstehst Du unter
Frame-Begrenzung ?ber die IDE ?
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Schranz0r on 2009-May-03
LIMITFPS
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: D2O on 2009-May-03
Quote from: Hamburgo on 2009-May-02
..
.

Damit ich Dir korrekt antworten kann, was verstehst Du unter
Frame-Begrenzung ?ber die IDE ?


In der IDE: -> Projekt->Optionen
Das ist aber das selbe wie LIMITFPS
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-03
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 ?
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: D2O on 2009-May-03
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) ;)
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-03
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 ?

Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: BumbleBee on 2009-May-03
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
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-03
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.
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: D2O on 2009-May-03
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

Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: BumbleBee on 2009-May-03
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
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-04
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 ?

Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Schranz0r on 2009-May-04
hast du vsync an bei deiner GraKa?
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-05
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]
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Hamburgo on 2009-May-06
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 ?
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: BumbleBee on 2009-May-07
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
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Veritas on 2010-Mar-30
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
Title: Re: Spiel ruckelt und ich kann die Ursache nicht finden ...
Post by: Veritas on 2010-Apr-15
hm, schade das sich da wohl nichts mehr ergibt  :(