Das Spiel zur Schweinegrippe ist da!
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Kaeru Gaman hat geschrieben:- hast du ein SetFrameRate oder ein SetRefreshRate drin?
- hast du irgendein timing drin?
nunja, der Hintergrund meiner Frage war, dass SetFrameRate / SetRefreshRate die Ursache für das Flackern hätten sein können.CptGreenwood hat geschrieben:Befürchte, nein! Eben Anfänger...
Mal sehen, wie es jetzt funktioniert, wenn du das DrawImage komplett durch Sprites ersetzt hast.
Drawing ist immer fürchterlich langsam, darauf solltest du so weit wie möglich verzichten.
außerdem ist die effektive Größe des Textes beim Drawing auch von den Systemeinstellungen abhängig.
wenn also jemand "zufällig" sein Windows auf "Große Schriftarten" stehen hat,
sind die Buchstaben größer als bei dir und sprengen das Layout.
zur Abhilfe kannst du SpriteFots benutzen.
als kleines Beispiel wie man eine TextConsole auf SpriteBasis realisiert verlinke ich dir auch mal einen älteren Beitrag von mir:
http://www.purebasic.fr/english/viewtopic.php?t=28597
Zuletzt geändert von Kaeru Gaman am 03.09.2009 10:30, insgesamt 1-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- HeX0R
- Beiträge: 3040
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Es funktioniert!
Bekommst du noch zusammen, was du genau in was geändert hast?
Ich werde mal versuchen ein Fehler-Beispiel zusammenzucoden, kann ja nicht sein, dass es beim Imagedrawn zu Problemen kommen kann.
Bekommst du noch zusammen, was du genau in was geändert hast?
Ich werde mal versuchen ein Fehler-Beispiel zusammenzucoden, kann ja nicht sein, dass es beim Imagedrawn zu Problemen kommen kann.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
- CptGreenwood
- Beiträge: 125
- Registriert: 12.07.2007 10:40

Eigentlich war es eine ganz simple Umstellung. Das Spielbrett besteht aus zwei Bildern (oberer Teil und unterer Teil), die ich am Anfang des Bildaufbaus "DrawBoard" (s.o.) per "DrawImage" gezeichnet habe. Nun habe ich die zwei Bilder nicht mehr als Images geladen, sondern als Sprites und daher nicht mehr mit "DrawImage", sondern mit "DisplaySprite" dargestellt (wie alle anderen Grafiken auch...).
War ein guter Tip, zu analysieren, was beim Intro anders läuft, als beim Spiel selbst (da wird nämlich kein Spielbrett gezeichnet...).
Dann schmeiße ich die alte Version mal raus und mache die neue zur alten. Danke für eure Hilfe.
- HeX0R
- Beiträge: 3040
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Ich hab hier ein Beispiel zusammengezimmert, das bei mir genauso flimmert wie das Ursprungsgame:
Irgendwie komisch, dass das dann sooo langsam hier wird
Code: Alles auswählen
InitSprite()
InitKeyboard()
Procedure DrawBoard()
If StartDrawing(ScreenOutput())
DrawImage(ImageID(0), 0, 0)
DrawImage(ImageID(1), 0, 384)
StopDrawing()
EndIf
EndProcedure
Procedure main()
OpenScreen(1024, 768, 32, "Test")
If CreateImage(0, 1024, 384, 32)
StartDrawing(ImageOutput(0))
FillArea(0, 0, -1, #Red)
StopDrawing()
EndIf
If CreateImage(1, 1024, 384, 32)
StartDrawing(ImageOutput(0))
FillArea(0, 0, -1, #Blue)
StopDrawing()
EndIf
Repeat
FlipBuffers()
ClearScreen(RGB(0, 0, 0))
DrawBoard()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
EndProcedure
main()
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
- CptGreenwood
- Beiträge: 125
- Registriert: 12.07.2007 10:40
Ich würde ja auf eine spezielle GraKa-Treiber-Monitor-Kombi tippen, die Zicken macht, wie gesagt, ich habe das Game auf etlichen verschiedenen Systemen, vom Gamer-PC bis zum Netbook ausprobiert und hatte kein Flimmern. Lediglich habe ich fest gestellt, dass wenn Windows ein Mitteilungsbedürfnis über die Taskleiste hat, der Bereich im Game für ein paar Sekunden flackert, der der Taskleiste entspricht. Aber das war alles.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Code: Alles auswählen
StartDrawing(ScreenOutput)
DrawImage(#Bla,...
StopDrawing()
Code: Alles auswählen
DisplaySprite(#Bla,...
außerdem ist ein Draw sowieso langsam, weil es eine völlig andere Zugriffsart darstellt.
immer dran denken!
das gibt auf manchen Kombis eben Sync-Probleme, auf anderen nicht.
... das flackern der taskleiste ist völlig normal, jedes im Fullscreen laufende professionelle Game zeigt den Effekt,
z.b. wenn mein Avast meint, mich über eine neue Version informieren zu müssen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- CptGreenwood
- Beiträge: 125
- Registriert: 12.07.2007 10:40
Dachte ich mir am Ende fast, werde es mir hinter die Löffel schreiben!
Zuletzt geändert von CptGreenwood am 03.09.2009 11:11, insgesamt 1-mal geändert.
- HeX0R
- Beiträge: 3040
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Jo, hab ich mir auch gerade durch den Kopf gehen lassen.
Ein 1024x768/24Bit Image verbratet 2,25MB Hauptspeicher.
Und die müssen bei jedem FlipBuffer() (also i.d.R. alle 16ms) in den Videospeicher geschoben werden (während die Sprites dort eh schon rumliegen).
Kein Wunder eigentlich, dass das lahm wird...
Vielleicht sollte man in den Knigge der PB-Programmierung aufnehmen niemals, unter gar keinen Umständen Images direkt auf einen Screen zu zeichnen.
Ein 1024x768/24Bit Image verbratet 2,25MB Hauptspeicher.
Und die müssen bei jedem FlipBuffer() (also i.d.R. alle 16ms) in den Videospeicher geschoben werden (während die Sprites dort eh schon rumliegen).
Kein Wunder eigentlich, dass das lahm wird...
Vielleicht sollte man in den Knigge der PB-Programmierung aufnehmen niemals, unter gar keinen Umständen Images direkt auf einen Screen zu zeichnen.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
weil auf manchen Rechnern bzw. Graka-Moni-Kombis zwar die Framerate in den Keller sackt, es aber trotzdem nicht zu Sync-Problemen führt.CptGreenwood hat geschrieben:Dachte ich mir am Ende fast, werde es mir hinter die Löffel schreiben!
Aber warum hat das selbst bei einem Atom-Netbook problemlos funktioniert?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.