My own version of Snap!

So, this isn't really a mod, but rather another program that is inspired by Snap! Here is the website: It's in development, so there are no sprites and things like that yet, but it's extremely fast. It runs much faster than snap, as the blocks are not updated in real-time, but rather compiled. So, what are your thoughts? When I will finish it, would you use it to make actual game projects with it? I want to hear your feedback.


SCRATCH, SNAP, and MITAI2 all blended together ! I like it a lot.

  • Interface is very clean.
  • HELP popups are very cool.
  • Coding area ZOOM in/out is very nice.
  • Coordinate origin threw me off a bit, but it is like the real-world!
  • Tried to do some timings and realized there was no TIMER yet.
  • One thing I did not like is the fact that the block option / selection menus only open when the block is dropped on canvas. Makes it cumbersome to review blocks.
  • Many more in depth options within the commands.
  • I like the resizeable canvas.


  • Will there be a display mode for full-screen?
  • Are there going to be any movement controls for things drawn on canvas?
  • What is MOUSE GRAGGED ?
  • Curious about what is planned for MOBILE input?
  • Other than a few LOCAL Storage entries, where is the Project saved? I could exit / enter browser and restore my test program, but could not find it anywhere on disk? And if TABS are changed in the Browser, then the code is gone. Had to restore the closed window to be able to reload the project.
  1. Yes, I am actually in progress of adding a full screen mode. 2. There are movement controls, such as "if key pressed". if you are talking about sprites, I am also in progress of adding them, just like in Scratch or Snap! 3. Mouse dragged is an event when mouse is held and moved, so it's dragged. 4. In the mobile input there will be gyroscope, battery state and acceleration sensors. 5. The project is entirely saved in localStorage, as it's annoying sometimes to download thouthands of verisons of your project and then load them again. I don't actually know where localStorage is located, but you can search it up yourself. Thanks for your feedback

P.S. sorry for my grammer, I am 14 and English is not my primary language.

Oh yeah, I actually have a timer. You can use "do every Nth frame". The name describes the block.

That's great! It looks like Blockly blocks; did you use that as a starting point?

People who know me won't be surprised at what I consider the most important missing thing: first class procedures. That is, a reporter version of the block that makes new blocks, which wouldn't include a name for the new block. In a word, lambda. In two words, grey rings, which is what that feature looks like in Snap!.

As for compiling, Jens is very adamant about maintaining the "liveliness" of blocks, so that for example you can insert a block into the middle of a running script, and what it does will change midstream. (More plausibly, you can change the value of an input to a block and see immediately how that changes its behavior.) But once in a while I want to do a really long computation and start complaining about Snap! being slow. Typically there's no graphics at all in such a project. For that sort of thing I'd definitely consider using a compiled Snap!.

(I should mention that just-in-time compilation is on our long-term list of missing capabilities.)

P.S. @tguneysu was pointing out a spelling error in the mouse input blocks. :slight_smile:

My idea of timer is not a frame based one, since that is totally execution speed dependent. I was talking about Snap! like millisecond timer.

LocalStorage: As I have mentioned before, unless one restores the Browser session and tabs, the saved code does not load.

Oh yeah, I forgot to say that. Localstore is basically a larger-than-usual cookie. It is encrypted and can only be retrieved in the same browser, on the same computer, with the same user, and on the same web site. And it has a size limit. So you're really better off doing what we do in the "export project" menu item: open a system file save dialog so you can save the project as a regular file that any program can read.

Lambda is a great idea in case if people will use your engine / programming language for writing simulations, etc. In my case, I am trying to make a game engine, mosty for artists who want to easily design full games without the need to learn HTML, JavaScript, etc. This is exactly why lambda will not fit in my program and why I focus on compiling the code first. Later, the users will be able to even export it in iframe and .apk formats and fully monetize their projects.

Okay then, I will actually add those. Will work on it right now.

Why do you think λ is only for simulations? Maybe OOP is just for simulations, but any kind of program can benefit from higher order functions, and if you're compiling into Javascript, it has λ so that's not a problem! :smile:

The only thing is their is no motion blocks, just something to think about

S/he already said "no sprites yet." :wink:

sorry, didn't see that