The speed and precision of reality definitely matters for Hopscotch.
Fortunately programmers do not have to worry about Planck Time units, for their scale is so small it doesn’t matter (yet).
However, programmers do have to worry about the speed of light! For devices are getting so marvelously detailed and large, that light is not capable of traveling so quickly. So some calculations are required to wait for light to catch up to be fully computed.
Fortunately, with Hopscotch you will not have to worry about such matters. For smart and clever people have already solved the speed of light issue for us.
But you will run into a similar problem if you attempt to code anything in Hopscotch! Since Hopscotch is not a fully imperative language, but has declarative elements.
What’s an Imperative Language?
I’m so glad you asked. An imperative language works exactly like how you think a programming language should work. You can make Hopscotch an imperative language if you only create 1 character and a “when game starts” rule. That is, there’s only one page of code that starts at the top, and works it’s way down until it reaches the bottom. No multithreading issues can take place! (That is, if two things try to change the same variable at the same time)
An imperative language has only one thread of code running. Everything is ordered logically from top to bottom. The sad truth is that computers and Hopscotch do not really work this way.
What’s a Declarative Language?
No, I’m not so glad you asked this, as this is an uncomfortable and complex question. Many of your bugs are going to fall under this category (the category of timing issues especially)
In a Declarative language, there can be multiple threads of code running at the exact same time. Well, not exactly at the same time (if your computer is only running on 1 core), but the threads of code are overlapped so that functionally they are running at the exact same time. If your computer is running your program on multiple cores, then threads of code are indeed running at the exact same time!!! But you don’t have to worry about this with Hopscotch. I’m sure they didn’t do this to their Mac users.
Hopscotch is built using an Imperative Language, but they are actually simulating a Declarative Language. This is where it gets intense. The Hopscotch Team selected their own rules as to how multiple threads of code should be overlapped. These rules are not explained to the user, and so we have to figure them out. Rules such as, Which object’s code gets first priority? In what exact order is all the code being executed? You can figure out by trial and error, but over time as the Hopscotch player is updated, they may change the rules and bust your game if it relies on these rules working the way you understood them to. When building very complex projects in your future, bear in mind that you’ll have to have a deeper understanding in how the Hopscotch player executes code, so you can have a complex and large game run smoothly without lags.
You may have to implement waits and funny systems just so that your code runs the way you want. But people creating your computer had to do the exact same thing, since light is too slow.
I’m not an expert on this topic, but this was a quick presentation on it to the best of my abilities. I’ve seen that most of the new bug reports are related to Hopscotch’s implementation of this.