![]() |
Replay-Funktion in einem Spiel?
Morgen,
ich versuche gerade eine Replay-Funktion in ein Spiel einzubauen. Das mache ich so, dass ich in einem Timer Screenshots von einem Bereich des Screens mache und diese wiederum in einem Timer "abspiele". Mit dem Ergebnis bin ich sehr unzufrieden, weil wenn die Form verdeckt ist, das überdeckende Fenster gespeichert wird und überhaupt kommt' mir diese Lösung sehr wackelig vor. Hat jemand bessere Ideen eine Replay-Funktion in ein Spiel einzubauen? Hier ma' die Screenshot-Funktion:
Delphi-Quellcode:
Gruß
function CaptureScreenRect( ARect: TRect ): TBitmap;
var ScreenDC: HDC; begin Result := TBitmap.Create; with Result, ARect do begin Width := Right - Left; Height := Bottom - Top; ScreenDC := GetDC( 0 ); try BitBlt( Canvas.Handle, 0, 0, Width, Height, ScreenDC, Left, Top, SRCCOPY ); finally ReleaseDC( 0, ScreenDC ); end; end; result.SaveToFile(ExtractFilePath(Paramstr(0))+'replay\'+'Shot'+inttostr(nr)+'.bmp'); nr:=nr+1; // <-- eine globale Variable result.Free; end; Calculon -- |
Re: Replay-Funktion in einem Spiel?
Da Du ja alle Informationen hast, um selber den aktuellen Spielstand zu zeichnen, musst Du diese Daten nur regelmässig speichern. Z.B. welche Figur gerade wo ist, usw. - was da zu speichern ist, hängt natürlich von Deinem Spiel ab. Screenshots vom eigenen Fenster sind da wohl eher suboptimal ;)
|
Re: Replay-Funktion in einem Spiel?
Zitat:
![]() Gruß Calculon -- |
Re: Replay-Funktion in einem Spiel?
Hallo Calculon,
ich denke auch, dass Du alle Ereignisse mit einem Zeitstempel speichern musst. Das geht schneller und braucht weniger Speicher. Es gibt Screenrecorder, die alles auf dem Bildschirm mitschneiden (siehe Daniel-Videos), die brauchen aber ganz ordenetlich Prozessorleistung und Zeit. Das ist sicher nicht anders, wenn du Screen-Copys machst. stahli |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz