Less lag here : https://turbowarp.org/636145323 Added : - Modulo (%) and Random (rand) operator inside Math - Unary (length, abs, floor, ceiling, sqrt, cos, sin, tan...) - Logic node : (and, or, ==, !=, >, >=, text contains) 0 is false, any other value are true. By default Logic block return 1 for true. And the most important change : - Dark theme x) (just a black background) " a < b " is the same as " b > a ", so you don't need an < operator (same with <=) Some other operator like != can be make with "a - b" (return 0 if both number are equal), but this only work if a and b are number. Some other operator can be made with other, but it is nicer to have them : we can use 1 node instead of X nodes.
Thank to @ego-lay_atman for the original project. Check it : https://scratch.mit.edu/projects/607605987 His project is super impressive, taking into account scratch limitations. Section full of idea for @ego-lay_atman (some random idea, do what you want with them. ) Since I'm currently learning too on how to make a programming language, there are some easy stuff/ideas I can say : Create a way to create your own Node (just a black box that contains other nodes), this can be useful for making math function. Of course this user defined node can have input and output. Node should not be evaluated at each tick : it cause lag and it is useless : evaluating 1 + 3 = 4 the first time, but the result will be the same the next tick. Math node (like the other) can only be evaluated when one of the input change. So this is more like a "triggered" system. If you change 1 + 3 to 1 + 4, as soon as you change the 3 to a 4, you "triggered" the Math node (by changing one of its input). The math node calculate the result, then it "trigger" the nodes that use it's output. (so the "triggered signal" propagate) I let you decide what "trigger" mean : - Should the node instantly trigger the next one ? (this will freeze the game while a node is triggered, so if you have an endless loop it will just crash I guess) - Should you let 1 tick frame between each "trigger" (to avoid crash on endless loop.) (Node should do their calculation only when they are triggered) Some block don't return a value, but they need to update other block. Think of a "if/else" node : it contain a boolean (0=false, other value =true), and if the boolean is true it will execute an X node, but if is false it will execute an Y node. "Executing" another block is not a data transfert like with other node, it don't pass a value, it just trigger a node. This imply that node them self are data. (because node like if else can reference other node to trigger them later) See for an if else block idea And GG for making this node editor, especially on Scratch.