Seite 4 von 5

Verfasst: 23.06.2008 12:56
von R4z0r1989
genau danilo ^^
die software is ja installiert von der maus :-)
schon immer.
und selbst als ich den pc platt gemacht hab und alles neu drauf.
es hing wieder so rum.
als ob wenn ich die maus schneller bewege er das nicht mehr erkennt!

Verfasst: 23.06.2008 13:34
von dllfreak2001
Ach jetzt eine verschörung gegen mich, na dann werde ich nicht mehr versuchen zu helfen.

Verfasst: 23.06.2008 14:01
von kswb73
MouseDeltaX() und MouseDeltaY() benutze ich nur, wenn man die Karte mit der mittlen Maustaste bewegt. Anstonsten benutze ich ganz normal MouseX(),MouseY().
Es könnte sein dass das an der niedrigen FrameRate die ich benutze (30).

Verfasst: 23.06.2008 14:37
von Kaeru Gaman
> an der niedrigen FrameRate die ich benutze (30)

hast du ein delay drin?
wenn nicht, bau doch mal eins ein, was ressourcen freigibt vorm flippen...

Code: Alles auswählen

#FrameRate = 30

SetFrameRate(#FrameRate)
FrameDauer = 1000 / #FrameRate - 4   ; -4 damit er ein bissel Luft hat...
Repeat
  LoopDauer = ElapsedMilliseconds()

  ; Hier den ganzen Game Kram,
  ; aber wirklich alles!

  ; wie lange haben wir gebraucht? =LoopDauer
  LoopDauer = ElapsedMilliseconds() - LoopDauer
  ; wir warten die Differenz zu FrameDauer
  Delay( FrameDauer - LoopDauer )
  FlipBuffers() ;erst jetzt Flippen wir
Until EXIT
FlipBuffers blockiert die CPU wenn es wartet.
mit einem angepassten Delay wie hier gibst du den Großteil der ungenutzten Zeit fürs OS und damit für Hintergrundtasks frei.

Verfasst: 23.06.2008 15:18
von kswb73
danke, werd ich mal einbauen.

PS: du solltest vor dem Delay() abfragen ob die Zeit nicht negativ ist. Sonst block das Delay() das Programm nur.

Verfasst: 23.06.2008 15:27
von Kaeru Gaman
ja, is mir auch grad eingefallen... :mrgreen:
is ja gut wenn du's gemerkt hast. ;)

Verfasst: 23.06.2008 16:04
von gnasen
Ist elapsedMilliseconds() nicht arg ungenau für diesen Zweck?
Ich meine der verzieht doch schonmal bis zu 50ms...

Verfasst: 23.06.2008 16:41
von Kaeru Gaman
keine 50, nur 12-16...
da könnte man eine höhere genauigkeit aktivieren, gabs auch schon oft codes dazu...
danilo hat da etliche beispiele gepostet damals...

aber der kernpunkt ist, es ist ausreichend.
wenn bei so einem 30FpS Game mal ein Frame aussetzt, ist das nicht tragisch.
wenn der zusätzliche Maustreiber nicht genug CPU-Zeit bekommt, schon eher.

Verfasst: 23.06.2008 19:36
von Josef Sniatecki
@ Kaeru Gaman:
Das Beispiel mit dem "Framerate" kann ich gut in meinem Spiel gebrauchen.
Mich hat's immer gewundert, wenn mein Spiel auf manchen anderen
Computern viel zu schnell läuft.
Danke. :allright:

Update

Verfasst: 09.07.2008 12:53
von kswb73
Hab ein kleines Update erstellt. Jetzt sind drei Bugs raus.
  • Objecte werden an der richtigen Stelle angezeigt.
  • Fenster kann nach dem minimieren wieder maximiert werden
  • Beim Gruppieren wird die Gruppe wieder gelehrt. (alte Gruppenmitglieder sind nicht mehr drin.)