This page or section is in question as to whether it is useful or not. You can discuss whether you think it should be deleted or not on its talk page. (April 2024) Reason: Seems overly specific for its own article |
This article or section may not have content matching Scratch Wiki editing standards. Please improve it according to Scratch Wiki:Guidelines and Scratch Wiki:Editing Conventions. (April 2024) |
Speedcode is when programmers have a loop which runs too slow, so they define a script, drag the contents of the loop into the new function and then add an amount of that newly created function where the script intended to run, making the code run faster. Although it makes the code more complex and hard to read, it works. This tutorial will show how to create them.
Workings of Speedcode
Speedcode works because it saves CPU cycles, and it is also commonly referred to as 'untying a loop',[citation needed] as instead of using a loop, your simply putting all inside your script in a function, then copy and pasting the function multiple times where the loop would be.
Creating Speedcode
An example of when speedcode is required is when a game's game loop is too slow. Create a new project then create this script in Sprite1 (Scratch Cat):
when green flag clicked go to x: (0) y: (0) set [gravity v] to (-1) forever Step Forward in Simulation end define Step Forward in Simulation change [gravity v] by (-0.2) if <(y position) < (-130)> then go to x: (0) y: (-130) set [gravity v] to (0) end change y by (gravity) when [space v] key pressed change (gravity) by (5)
Run it, and one will notice that the cat fall slowly. Look at the script starting with 'when green flag clicked', and add another 'Step Forward in Simulation' block below the first one. It fell down twice as fast, because instead of running it once per frame, it ran twice per frame. It is possible to make it even faster by adding running the script more each frame, like so:
when green flag clicked repeat (5) say (loop) change (loop) by (1)
turns into
when green flag clicked loop loop loop loop loop define loop say (loop) change (loop) by (1)