PC Interpretiert zu schnell!

Anfängerfragen zum Programmieren mit PureBasic.
D4uS1
Beiträge: 268
Registriert: 02.09.2006 12:16

PC Interpretiert zu schnell!

Beitrag von D4uS1 »

Ich hab da son Problem. Ich hab nur n DirectX Patch installiert und schon fängt mein PC an die PB Progs falsch zu interpretieren. Es läuft jetzt alles viel zu schnell. Kann man irgentnen code machen damit der das an jedem Rechner gleich interpretiert?
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

Am besten arbeitest du zeitgesteuert.
Alternativ kannst du aber auch einfach SetFrameRate() verwenden.
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Ich habe mal was von Forum-Threads bzw. Tutorials was gejört, die hießen ungefähr so: "Wie man erreicht, dass Spiele immer gleich schnell laufen".

Such doch mal danach, ansonsten rate ich dir, mit Delay() zu arbeiten oder mit ElapsedMilliseconds() sozusagen zu überprüfen, ob / wie viel Zeit verstrichen ist.

Statt dem PB-Befehl solltest du lieber QueryPerformanceCounter_() & Co. nehmen, das ist dasselbe wie ElapsedMilliseconds(), nur kann das noch genauer messen (weil dazu richtige Hardware benutzt wird, sofern vorhanden).
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

> Statt dem PB-Befehl solltest du lieber QueryPerformanceCounter_() & Co. nehmen, das ist dasselbe wie ElapsedMilliseconds()
Nein, das sollte man nicht, weil dadurch ein wichtiges Feature von PureBasic, die Plattformunabhängigkeit, verloren geht.
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

..außerdem, wenn es dasselbe ist, warum sollte man es dann bevorzugen?

zum timing:

Code: Alles auswählen

wait=500

Repeat
  ;...
  ms=ElapsedMilliseconds()
  ;...
  If ms>timer
    ;DIESE ZEILEN WERDEN NUR
    ;ALLER 'wait' MILLISEKUNDEN
    ;AUSGEFÜRHT
    timer=ms+wait
  EndIf
  ;...
  ;...
Until quit
[wobei sich die genauigkeit jedoch in grenzen hält, und auch vom OS abhängt]






beispiel:

Code: Alles auswählen

CreateImage(0, 20,20)
hWin=OpenWindow(0,  200,150, 200,60, "")
CreateGadgetList(hWin)
  ImageGadget(1, 20, 20,  200,100, ImageID(0) )
  ImageGadget(2, 90, 20,  200,100, ImageID(0) )
  ImageGadget(3, 160,20,  200,100, ImageID(0) )


wait1=80
wait2=1000
wait3=300

Repeat
  ms=ElapsedMilliseconds()

  If ms>timer1
    HideGadget(1, show1)
    show1!1
    timer1=ms+wait1
  EndIf

  If ms>timer2
    HideGadget(2, show2)
    show2!1
    timer2=ms+wait2
  EndIf

  If ms>timer3
    HideGadget(3, show3)
    show3!1
    timer3=ms+wait3
  EndIf

  If WaitWindowEvent(10)=#PB_Event_CloseWindow
    quit=1
  EndIf
Until quit

und was and51 meinte: "Wie läuft mein Spiel auf allen PCs gleich schnell?"
ist ein tut auf remi meier's page
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

vonTurnundTaxis hat geschrieben:> Statt dem PB-Befehl solltest du lieber QueryPerformanceCounter_() & Co. nehmen, das ist dasselbe wie ElapsedMilliseconds()
Nein, das sollte man nicht, weil dadurch ein wichtiges Feature von PureBasic, die Plattformunabhängigkeit, verloren geht.
na und? Schon mal StandFurz' Beitrag genauer angesehen? Er installierte einen DirectX Patch. Also arbeitet er sowieso nur mit Windows.


#NULL hat geschrieben:..außerdem, wenn es dasselbe ist, warum sollte man es dann bevorzugen?
hast du nicht richtig gelesen :wink: Die Antwort habe ich schon gegeben.. Laut Win32.hlp wird im Gegensatz zu ElapsedMilliseconds() bei QueryPerformanceCounter_() richtige, echte hardware benutzt, um "hochauflösende", also exakte zeitmessungen zu ermöglichen.

Glaub mit, QueryPerformancecounter_() ist wesentlich geneuer als GetTickCount_(). Ich habe beide Methoden schon mal in der Schule verwendet, um Zeiten zu messen. GetTickCount_() entspricht halt ElapsedMilliseconds, nur dass letzteres auch Nicht-Win-kompatibel ist.



@ #NULL: danke für den Link; ich wusste nur noch den Titel, nicht aber, wo das Ganze zu finden ist.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
FGK
Beiträge: 249
Registriert: 09.01.2005 14:02
Computerausstattung: i5-4430 CPU / 8GB RAM
GeForce GT630
Windows 10 Home / 64-bit
Wohnort: Augsburg

Beitrag von FGK »

[Offtopic]

@AND51
na und? Schon mal StandFurz' Beitrag genauer angesehen? Er installierte einen DirectX Patch.
Also arbeitet er sowieso nur mit Windows.
hast du nicht richtig gelesen Die Antwort habe ich schon gegeben..
Laut Win32.hlp wird im Gegensatz zu ElapsedMilliseconds() bei QueryPerformanceCounter_() richtige,
echte hardware benutzt, um "hochauflösende", also exakte zeitmessungen zu ermöglichen.
Ist schon witzig, wie einer der häufig ohne genaues durchlesen der Posts
seinen Senf dazu geben muß, plötzlich so akribisch darauf hinweist man solle
gefällligst die Vorgänger-Postings doch genau durchlesen bevor man antwortet! :twisted:

[/Offtopic]
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

QueryPerformanceCounter ist eh ne schlechte Wahl fuer Spiele ,
braucht zu viel Leistung. ElapsedMilliseconds sollte hier vollkommen
ausreichen.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

FGK hat geschrieben:Ist schon witzig, wie einer der häufig ohne genaues durchlesen der Posts
seinen Senf dazu geben muß, plötzlich so akribisch darauf hinweist man solle
gefällligst die Vorgänger-Postings doch genau durchlesen bevor man antwortet! :twisted:
Heee, das war nicht böse gemeint! Das :wink: sollte dies eigentlich bekräftigen.
Ich wollte dich lediglich darauf hinweisen, dass das Ziel-OS eh nur Windows sein wird.

Selbst wenn: Findest du es also nicht gut, dass ich in diesem Thread mal aufgepasst habe und dass mir dieser Punkt nicht antgangen ist? Soll ich künftig lieber nur wieder die ersten drei Sätze der Posts lesen? :cry:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

> Ich wollte dich lediglich darauf hinweisen, dass das Ziel-OS eh nur Windows sein wird.
Das mag ja sein, ging aber nicht aus dem Post hervor. Und warum sollte man sich mit überflüssiger WinAPI-Verwendung den Weg für eine eventuelle Portierung versperren?
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Antworten