<table><tr><td style="">schwarzer added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D9790" rel="noreferrer">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #8C98B8;
          color: #6B748C;
          font-style: italic;
          margin: 4px 0 12px 0;
          padding: 8px 12px;
          background-color: #F8F9FC;">
<div style="font-style: normal;
          padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D9790#189002" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">D9790#189002</a>, <a href="https://phabricator.kde.org/p/helfferich/" style="
              border-color: #f1f7ff;
              color: #19558d;
              background-color: #f1f7ff;
                border: 1px solid transparent;
                border-radius: 3px;
                font-weight: bold;
                padding: 0 4px;" rel="noreferrer">@helfferich</a> wrote:</div>
<div style="margin: 0;
          padding: 0;
          border: 0;
          color: rgb(107, 116, 140);"><p>Do you mean switching the interval/substeps/speed? Or switching from a change in timer interval to the substeps?</p>

<p>I'll try to explain:</p>

<ol class="remarkup-list">
<li class="remarkup-list-item">Why change the interval? The basic loop is: Move ball -> Check for collisions -> Change direction, perform actions, according to collisions, etc. -> Move ball -> ... The speed determines how far the ball is moved during the "Move ball". If the ball is moved too far, the collision detection might be inaccurate (E.g. the extreme case is the ball moving through a brick with no detected collision). To avoid such bugs, we move the ball only half the distance, but twice as often.</li>
<li class="remarkup-list-item">Why use substeps now? In the original code, this was done by cutting the gameTimer interval in half. However, this broke during the port to QML, because QML timer have a minimum interval of 16ms. Cutting it in half to 8ms does not have any effect. The alternative approach is to keep the gameTimer interval, but perform the basic loop twice.</li>
</ol></div>
</blockquote>

<p>Thanks for the explanation. That made it more clear. :)</p>

<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><p>I hope this made it a little bit more clear. I am still wondering if the new approach has performance issues (moving the balls sequentially, instead of in parallel), but I don't think it matters as the collision detection, which is much more costly, is done sequentially as well.</p></blockquote>

<p>I played on a five years old laptop and when the "cut" came, the ball felt more smooth. In general it is better than before the change here.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R393 KBreakout</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D9790" rel="noreferrer">https://phabricator.kde.org/D9790</a></div></div><br /><div><strong>To: </strong>helfferich, KDE Games<br /><strong>Cc: </strong>schwarzer, KDE Games<br /></div>