As video games has brought many sources of entertainment to our lives that we all can enjoy, we can also try to bring our imaginations to life by developing something as media/software. I even have made a quote to myself that impressed many people whom I met in real life:
"An electronic device may also be used for something productive, if you can just let your imagination fly!" - Papichi05
There are plenty of methods to do this. This includes animating, developing games, and even non-electronic games! Developing games is the most popular method. There are many programming languages that you can use, and this includes Scratch.
I've been using Scratch for over 5 years, and I still love using it. Scratch is a children's tool where you can create basically anything that comes to your mind. You can create stories, animations, games, etc. Because of how easy it is to use and the interface design, it has gotten so popular and many children (with an average of 13 years of age) has joined in. Even young adults, like myself, has joined in.
But because it does have lots of design and moderation flaws, it does have many, MANY issues. So...
Is Scratch a really good programming language to use?
Well, here's a short answer: Technically, yes, but not really. It has all sorts of tools you need, but it is very limited.
Plus, if you share your project, it is completely open-source and it is licensed under the CC-by-SA license.
This means that literally anybody in this entire planet can see literally inside of your project, which allows them to view and redistribute your code, art, and even audio. If you make a very complex project or a revolutionary project, then it is easy for someone to download your project source, reupload it, and then claim it as their own, which is NOT OK as we all know it. They also have this thing called "remixing". What it means is that basically, if you push the "remix" button on a project, it literally copies the entire project and you will have all access to it, and that "remix" will be listed on your personal file folder. And when you share it, you can also literally change all of the details and descriptions of the project, which means you can also literally claim it as yours if you wanted to and the website mods won't care at all. Well, OK, sure, a message at the top of the project description that says "Thanks to [original author] for creating the original project" will pop up, but that still wasn't enough.
When it comes to remixing, a lot of high-skilled talented people like me will not be really happy with it. When someone remixes a project, they can change anything they want under their heart's content. Recoloring is one of the most popular methods "remixers" can do when they remix. But here is another concern to be aware of:
"Most of the recoloring on Scratch, however, is recoloring of the artwork of other people on the same website. Why, you might ask? Because it's so quick, painless and easy to steal someone's art on Scratch and call it your own, you wouldn't believe it. You see, Scratch has this thing called "remixing". Basically, all you need to do is search up a project, click a button to see the inside of it, adjust it to your heart's content, click another button, and boom! You just entirely stole someone's long, labored, beautiful work."
"And do you think the Scratch Team cares about the fact that so many people are stealing the art of others just so they can feel special about themselves? You bet your sweet ass they don't! In the Scratch Rules, it says that everything submitted to Scratch is automatically licensed in the Creative Commons. Which means anyone can edit your projects in any way they want."
These quotes you just read is one of the biggest controversies that has been occurring on Scratch for many years, and it is still happening today. So, if you are making a project, sharing it is not recommended. But you can still share projects if you want to if you're making a joke project or something, because those kinds of projects that is meant as a joke don't really matter at all.
Another big problem is that the website mods doesn't let you to mention that you are not allowing remixing or taking anything from the project. So, a lot of people have suggested that there should be a way to disable remix, but the Scratch Team rejected it because it is "against the main core principle of Scratch, which is that anyone can remix another user's project and add their own ideas and a violation to the Creative Commons Attribution-Share Alike License".
For me, I have mixed opinions for this remixing culture. It has its own good and bad sides. It's good because people can describe what they changed in their remix and then share it to the original author to help them out. It's also bad because many people, especially to young children, can abuse this feature by simply calling it as theirs, especially if they bypass the remixing method by downloading the entire project and reupload it to their account. But that method, however, isn't tolerated. The good thing about remixing is that it does have a little bit of security on its own, so people REALLY need to provide appropriate credit and calling projects as theirs isn't tolerated.
So, in my opinion, the remixing button should ONLY be used by people who are actually smart enough to provide credit and then described what changes they have made. So, if you wanted to share on Scratch, PLEASE be careful on what you're sharing.
But luckily, we don't need to be on Scratch anymore.
Because you can still do the same programming method on 2 moderations that are WAY better than Scratch itself.
Because Scratch has allowed anybody to remix, the source code of Scratch is also available on GitHub. So, people who are familiar with JavaScript decided to copy Scratch and modify it.
First off, let's get into Cocrea/Gandi IDE. Both are 2 different things, though. Gandi IDE is a mod of Scratch that implemented lots of new designs and features that Scratch does not have. Same thing with TurboWarp. Cocrea is a website where you publish projects that was made with Gandi IDE. And guess what? Remixing is now optional there! That website does not have to be subject to the CC-by-SA license anymore, so there is no need to be on Scratch! One thing I do have to mention, though, is that the moderation in Cocrea is unknown because it is recently new, so I'll keep an eye out for you.
In Scratch, all you get is a square, basic stage, low quality, and 30 FPS. But Gandi IDE and TurboWarp, however features widescreen, JavaScript compiler, 60 FPS, and more. Speaking of compiler, what it does is that it converts the code that you made using blocks into JavaScript to make them a run lot faster and smoother. Scratch's interpreter, however, is a lot slower. If you want to learn more on how Scratch's interpreter works, take a look at the collapsible list. Otherwise, you can skip this part.
Scratch's interpreter processor
You see, Scratch's interpreter walks an abstract syntax tree at runtime.
The script above internally looks like this:
{
"va[U{Cbi_NZpSOSx_kVA": {
"opcode": "event_whenflagclicked",
"inputs": {},
"fields": {},
"next": "tzXnZ{8G!xK|t^WAWF{m",
"topLevel": true
},
"tzXnZ{8G!xK|t^WAWF{m": {
"opcode": "control_forever",
"inputs": {
"SUBSTACK": {
"name": "SUBSTACK",
"block": "$xf$bq|xl(}RhT-K,taS"
}
},
"fields": {},
"next": null,
"topLevel": false
},
"$xf$bq|xl(}RhT-K,taS": {
"opcode": "motion_movesteps",
"inputs": {
"STEPS": {
"name": "STEPS",
"block": "cw__.I:g}Y~`:5KmO00q"
}
},
"fields": {},
"next": null,
"topLevel": false
},
"cw__.I:g}Y~`:5KmO00q": {
"opcode": "data_variable",
"inputs": {},
"fields": {
"VARIABLE": {
"name": "VARIABLE",
"id": "`jEk@4|i[#Fk?(8x)AV.-my variable"
}
},
"next": null,
"topLevel": false
}
}
Whenever Scratch executes any block, it has to do a lot of things:
It has to look up the block using its ID, and which function the block's opcode corresponds to.
If the block has inputs, those are also blocks, and must go through the same steps as any other block, and so must any deeper inputs.
It manually maintains a stack of blocks, loops, conditions, procedures, etc.
Scratch scripts can be yielded, so all of this has to happen in a way that can be paused and resumed later.
Scratch scripts can be changed while they're running, so caching everything ahead of time is difficult.
etc. There is a lot going on in Scratch whenever it executes even a single block.
The interpreter overhead is added on top of the overhead of JavaScript itself. As this code involves many dynamic types, it can be hard for the JavaScript JIT to optimize it.
TurboWarp's compiler
Text Source
You can see that game developers like me wanted the most of the program's performance. For me, I always wanted 60 FPS and all of that. But that's not the only good thing. There are a lot of more useful advanced features than just 60 FPS.
And remember how I said that Scratch is open source? Well, guess what? You can literally see INSIDE the blocks of Scratch and learn coding from there, OR you can convert projects to JavaScript using this website: Leopard
Another good thing is that custom extensions are now possible, which means you can make your own blocks by writing JavaScript and then load them to TuroWarp or Gandi IDE. There are many useful custom extensions to use from here: TurboWarp Extension Gallery
An example of a custom extension code looks like this:
Pretty cool, right? And with the coding of the blocks you're making, you can make Scratch do anything you want. Like the picture above, the name for the custom extension is "stretch", which lets sprites stretch horizontally and vertically, just like the 16-bit classic games.
Conclusion:
There are pros and cons with Scratch and the mods themselves. But after reading all of the stuff I said, is Scratch a really good programming language to use?
Well, in reality, it is yes and no.
Yes, because with the unofficial mods, you get to have more freedom. And no because you will still have some limited tools and on the Scratch website, your work is vulnerable to thieves, whether the people on Scratch or the Scratch Team realize it or not. But sharing small projects or joke projects to the website is mostly safe to do so. Publishing large, revolutionary projects to Scratch is not recommended. If you want to share your BIG works to the public without leaving it open source, then consider using the TurboWarp Packager and then embed it to a website like GameJolt or itch.io, OR upload it to Gandi IDE, publish it on Cocrea, and the disable remixing. That's the best you can do.
You can also switch to a different programming language in order to leave Scratch entirely as a whole. You can use ClickTeam Fusion, Python, Unity, and more.
People used to say that Scratch as a whole isn't a real programming language, but it actually is. How? Well, check out the code inside the Scratch blocks on GitHub or view the source code of custom extensions. It should be that obvious.
Programming languages is what made possible of bringing imaginations to life on screens that we can entertain and interact with. Not everything is rainbows and flowers, and everything has its ups and downs, including life itself, but if you can take advantage of what you're good at, then one day, you will be able to find a sudden success at some point.
And that is it for this topic. I hope you liked my writings, and don't steal, m'kay?