<table><tr><td style="">helfferich 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><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>

<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></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>