Upcoming: Performance and Technical Changes

RigidBody Set/Add Accumulators

When multiple Set* or Add* calls happen in the same frame on the same object they effectively overwrite each other with the last applied winning. We will now collapse all updates within the same frame. For Set* methods that means overwriting the queued value, for Add* it means accumulating the total force. All OperationCompleteEvents registered will come back with success == false except the final one set.

Coroutine Limit

Scripts are now limited to 32 coroutines at a time. Blocked and waiting coroutines count; coroutines that have completely finished do not.

Performance improvements

For newly saved scripts we have optimized the script timeslicing to reduce overhead. In most cases for most scripts this is probably a minimal improvement. For some extreme cases though it can be an improvement in both memory use and script performance.

Improved Coroutine Scheduling

This is a minor change that should largely be invisible, but since it can affect script behavior I wanted to call it out. Coroutines should after this change in most cases not yield to other coroutines or events from the same script unless blocked or waiting. This is a nuanced scheduling update: before this change it is possible on long running scripts for two coroutines within the same script that do not yield, block or wait to still “interleave”. With this update this should not be the case with only some extreme exceptions. If you want your coroutines to be “nice” use Yield() or Wait(TimeSpan.FromTicks(1)) at appropriate points in your loops.


Please sign in to leave a comment.