Changes between Version 56 and Version 57 of squeak_faq


Ignore:
Timestamp:
02/02/2021 04:25:51 PM (3 years ago)
Author:
patrick.rein
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • squeak_faq

    v56 v57  
    218218Das Stepping Model von Morphic ist relativ einfach und basiert auf einem Prozess, welcher alle stepping Methoden ausführt, wenn ihre `Morph>>stepTime` abgelaufen ist. Im Umkehrschluss heißt das aber auch je mehr `Morph>>step` Methoden aufgerufen werden, desto mehr Zeit wird zwischen einzelnen Schritten benötigt (da mehr berechnet wird). Die `#stepTime` gibt dabei einen Wunschwert an, nach dem die `#step` Methode wieder aufgerufen werden soll. Nun kann es aber sein, dass die `#step` Methoden soviel zu tun haben (oder andere Prozesse), dass die Überprüfung nur alle 50 ms ausgeführt wird und somit kann eine Zeit von 33 ms nicht garantiert werden. Allerdings wird durch die beschriebene Bewegung eine explizite `#runStepMethods` Message an die Welt gesendet, welcher die Abarbeitung aller steps auslöst. Das heißt der UI Prozess löst bei seiner Reaktivierung eine Neuberechnung aus.
    219219
    220 ==== Lösungen ====
     220===== Lösungen =====
    221221
    2222221. In Preferences gibt es eine Option "higher performance" diese sorgt für ein häufigeres updaten des UI Prozesses, dass könnte ggf. helfen.
     
    225225
    2262263. Die wahrscheinlich schnellste Alternative ist, eine Game Loop zu implementieren (Design Pattern für Spiele), welche abhängig von der verstrichenen Zeit die Animation berechnet und somit immer gewährleistet, dass unabhängig von der Performance die Animation zu einem Zeitpunkt überall gleich weit ist (ruckelnd oder nicht). Dann würdet ihr komplett auf das Stepping Protokoll verzichten.
     227
     228==== Unser Spiel ruckelt nur auf MacOS!?! Was können wir tun? ====
     229Das Rendering von Squeak nutzt Heuristiken um zu entscheiden welche Bereiche des Bildschirms neu gezeichnet werden müssen. Diese führen bei Spielen mit wenigen Morphs zu einem Verhalten, dass die MacOS VM nicht gut umsetzen kann. Als Resultat benötigt das Zeichnen eurer Morphs viel mehr Rechenzeit als eigentlich nötig ist. Die dafür Lösung ist es bei jedem Step dem obersten Morph eures Spiels die Nachricht `#changed` zu schicken. Damit drückt ihr aus, dass sich dieser Morph geändert hat und komplett neu gezeichnet werden soll.
    227230
    228231
     
    408411
    409412
    410 
    411 
     413=== Immer wenn wir einen Sound abspielen gibt es davor einen kurzen Lag. Wie können wir den Sound ohne Verzögerung abspielen? ===
     414
     415Die Verzögerung liegt daran, dass das Sound-System in Squeak erst einen Prozess zum Befüllen des SoundBuffers startet. Erst wenn dieser Prozess läuft kann euer Sound abgespielt werden. Ihr könnt das lösen, indem ihr kontinuierlich einen "leeren" Sound abspielt, z.B. mit `RepeatingSound>>#repeatForever:`. Falls ihr eine Hintergrundmusik abspielt, hat das den selben Effekt.
    412416
    413417