Discuss Scratch

walkcycle
Scratcher
500+ posts

Better Custom Blocks

HoofEMP wrote:

You know, the “Run without screen refresh” option is pretty useful. You're adopting AAA game developer mentality; trying to remove a perfectly fine feature to “justify” adding another.
It's an operator. It runs without screen refresh.
stickfiregames
Scratcher
1000+ posts

Better Custom Blocks

walkcycle wrote:

HoofEMP wrote:

You know, the “Run without screen refresh” option is pretty useful. You're adopting AAA game developer mentality; trying to remove a perfectly fine feature to “justify” adding another.
It's an operator. It runs without screen refresh.
Not inherently. It's possible someone might want to make a reporter that takes time to run. Maybe an (fps) reporter would need no-refresh, although I'm not completely sure.










If you can read this, my signature cubeupload has been eaten by an evil kumquat!




or you just used Inspect Element, you hacker

;
Jonathan50
Scratcher
1000+ posts

Better Custom Blocks

That would really make custom reporters less useful, there are reasons to make blocking reporters, like
define ask (question) & report answer
ask (question) and wait
report (answer) :: control cap
or if you have an algorithm that runs slowly but you don't want to make the whole project freeze.

Having stage custom blocks global is definitely what should happen though.

Last edited by Jonathan50 (May 27, 2017 21:44:46)


Not yet a Knight of the Mu Calculus.
zaib_tanvir2008
Scratcher
38 posts

Better Custom Blocks

HoofEMP wrote:

You know, the “Run without screen refresh” option is pretty useful. You're adopting AAA game developer mentality; trying to remove a perfectly fine feature to “justify” adding another.

Plz stop sending the same picture
ThreadSnake
Scratcher
7 posts

Better Custom Blocks

SUPPORT!
walkcycle
Scratcher
500+ posts

Better Custom Blocks

stickfiregames wrote:

Not inherently. It's possible someone might want to make a reporter that takes time to run. Maybe an (fps) reporter would need no-refresh, although I'm not completely sure.
In Scratch, though.

Scratch reporters run without screen refresh.

Jonathan50 wrote:

That would really make custom reporters less useful, there are reasons to make blocking reporters, (…) or if you have an algorithm that runs slowly but you don't want to make the whole project freeze.
New stack blocks would still have screen refresh, for slower operation.

Jonathan50 wrote:

Having stage custom blocks global is definitely what should happen though.
Agree.
stickfiregames
Scratcher
1000+ posts

Better Custom Blocks

walkcycle wrote:

stickfiregames wrote:

Not inherently. It's possible someone might want to make a reporter that takes time to run. Maybe an (fps) reporter would need no-refresh, although I'm not completely sure.
In Scratch, though.

Scratch reporters run without screen refresh.
As I said, this is not an inherent feature that reporters must have, it's just that all the built-in ones have it, in the same way that most of the built-in stack blocks do. Jonathan50's example of reporters waiting for input is a good example of where it could be used, I could understand if you wanted to make no-refresh the default but there's no reason to force it.

Last edited by stickfiregames (May 29, 2017 15:53:48)











If you can read this, my signature cubeupload has been eaten by an evil kumquat!




or you just used Inspect Element, you hacker

;
walkcycle
Scratcher
500+ posts

Better Custom Blocks

stickfiregames wrote:

As I said, this is not an inherent feature that reporters must have, it's just that all the built-in ones have it, in the same way that most of the built-in stack blocks do. Jonathan50's example of reporters waiting for input is a good example of where it could be used, I could understand if you wanted to make no-refresh the default but there's no reason to force it.

Since reporters in Scratch run one way, having a feature to have them run another way is counterintuitive. And not necessary: stack blocks fill the void for waiting and slower tasks.
TheMonsterOfTheDeep
Scratcher
1000+ posts

Better Custom Blocks

walkcycle wrote:

stickfiregames wrote:

As I said, this is not an inherent feature that reporters must have, it's just that all the built-in ones have it, in the same way that most of the built-in stack blocks do. Jonathan50's example of reporters waiting for input is a good example of where it could be used, I could understand if you wanted to make no-refresh the default but there's no reason to force it.

Since reporters in Scratch run one way, having a feature to have them run another way is counterintuitive. And not necessary: stack blocks fill the void for waiting and slower tasks.
I believe that the exact opposite is true. I think that, a beginner, when playing around with custom blocks, might attempt something like this:
define (block :: custom)
wait (1) secs
report [hello] :: custom

when gf clicked
say (block :: custom)
And then be thoroughly confused that Scratch would choose to disallow this for some arbitrary reason.

my latest extension: 2d vector math
HoofEMP
Scratcher
100+ posts

Better Custom Blocks

zaib_tanvir2008 wrote:

HoofEMP wrote:

You know, the “Run without screen refresh” option is pretty useful. You're adopting AAA game developer mentality; trying to remove a perfectly fine feature to “justify” adding another.

Plz stop sending the same picture
What do you mean?


walkcycle
Scratcher
500+ posts

Better Custom Blocks

TheMonsterOfTheDeep wrote:

I believe that the exact opposite is true. I think that, a beginner, when playing around with custom blocks, might attempt something like this:
define (block :: custom)
wait (1) secs
report [hello] :: custom

when gf clicked
say (block :: custom)
And then be thoroughly confused that Scratch would choose to disallow this for some arbitrary reason.
But it wouldn't. You can put the wait block in and slow it down if want.

when green flag clicked
wait (1) secs
say [hello]

Better to just go with stack blocks for that I would think.

Still, a Scratch programmer should not have to anticipate a 'say [ ] block' is going to wait unless it is a 'say [ ] for ( ) secs' block. So there would be a reason to exclude ‘wait’ blocks from the define script of a reporter or operator block.

Last edited by walkcycle (May 30, 2017 04:40:52)

HoofEMP
Scratcher
100+ posts

Better Custom Blocks

walkcycle wrote:

TheMonsterOfTheDeep wrote:

snip
But it wouldn't. You can put the wait block in and slow it down if want.

when green flag clicked
wait (1) secs
say [hello]

Better to just go with stack blocks for that I would think.

Still, a Scratch programmer should not have to anticipate a 'say [ ] block' is going to wait unless it is a 'say [ ] for ( ) secs' block. So there would be a reason to exclude ‘wait’ blocks from the define script of a reporter or operator block.
The say [ ] for ( ) secs block doesn't update. It's basically this:

define say [x] for (y) secs
say (x)
wait (y) secs
say []

(also, don't forget TheMonsterOfTheDeep was referring to beginners to custom blocks; people who presumably had no prior experience or knowledge. Making things accessible and simple, so that a beginner could understand such concepts, is of high importance to the Scratch Team.)

Last edited by HoofEMP (May 30, 2017 06:46:13)



walkcycle
Scratcher
500+ posts

Better Custom Blocks

Yes, that's why having a 'say [ ]' block not wait because it has a reporter in its slot makes sense; reporters in Scratch don't do that.
stickfiregames
Scratcher
1000+ posts

Better Custom Blocks

walkcycle wrote:

stickfiregames wrote:

As I said, this is not an inherent feature that reporters must have, it's just that all the built-in ones have it, in the same way that most of the built-in stack blocks do. Jonathan50's example of reporters waiting for input is a good example of where it could be used, I could understand if you wanted to make no-refresh the default but there's no reason to force it.

Since reporters in Scratch run one way, having a feature to have them run another way is counterintuitive. And not necessary: stack blocks fill the void for waiting and slower tasks.
Having a feature to make them run without refresh is not counterintuitive. They would run whichever way the creator tells them to run by ticking or not ticking the “run without screen refresh” block, which is about as intuitive as you can get.

Also, your argument of “reporters shouldn't wait because reporters don't wait” is circular and is getting you nowhere.










If you can read this, my signature cubeupload has been eaten by an evil kumquat!




or you just used Inspect Element, you hacker

;
walkcycle
Scratcher
500+ posts

Better Custom Blocks

This is based on the way reporters run in Scratch. A feature to have them run another way is counter to the way Scratch does it.

The matter of waiting also originates with how Scratch does things.

The general gist is to add things in such a way that a Scratch programmer's knowledge of how Scratch works remains applicable to the new thing.

Last edited by walkcycle (May 30, 2017 15:40:00)

stickfiregames
Scratcher
1000+ posts

Better Custom Blocks

You keep saying “it's how Scratch does things” but the same argument could be used to reject changing anything.

All built-in blocks either wait or they don't, and the reason the built-in reporters don't wait is not because they are reporters but because the ST has designed each of them not to wait.

Custom blocks have an option to wait or not wait depending on whether the creator wants them to. Extending that idea to custom reporters would be perfectly intuitive, and a would mean a Scratch programmer's knowledge of how custom blocks work remains applicable to the new thing.

Last edited by stickfiregames (May 31, 2017 00:16:19)











If you can read this, my signature cubeupload has been eaten by an evil kumquat!




or you just used Inspect Element, you hacker

;
gdpr533f604550b2f20900645890
Scratcher
1000+ posts

Better Custom Blocks

walkcycle wrote:

This is based on the way reporters run in Scratch. A feature to have them run another way is counter to the way Scratch does it.

The matter of waiting also originates with how Scratch does things.

The general gist is to add things in such a way that a Scratch programmer's knowledge of how Scratch works remains applicable to the new thing.
I beg to differ. Allowing custom reporters to wait just like custom stack blocks is perfectly intuitive because a custom reporter and a custom stack block are both functions; a custom stack block merely has a return type of void. Waiting is merely an observable side effect of the function. Other imperative programming languages allow all their functions to pause; for example, JavaScript's prompt function is similar to Jonathan50's example.
Jonathan50
Scratcher
1000+ posts

Better Custom Blocks

Can you think of an example custom reporter that could be useful? Well reporters in Scratch can't do that, so custom reporters shouldn't be able to do that either.

Not yet a Knight of the Mu Calculus.
walkcycle
Scratcher
500+ posts

Better Custom Blocks

stickfiregames wrote:

You keep saying “it's how Scratch does things” but the same argument could be used to reject changing anything.

Then use the argument to reject fundamentally changing the way Scratch does things; to not change Scratch into a JavaScript, for example.

stickfiregames wrote:

All built-in blocks either wait or they don't, and the reason the built-in reporters don't wait is not because they are reporters but because the ST has designed each of them not to wait.

And, thus, that is a fundamental part of the nature of reporters in Scratch: Scratch Team's design choice for how reporters are. It is the reliable behavior of the building blocks that Scratch programmers depend on. “It's how Scratch does things.”

stickfiregames wrote:

Custom blocks have an option to wait or not wait depending on whether the creator wants them to. Extending that idea to custom reporters would be perfectly intuitive, and a would mean a Scratch programmer's knowledge of how custom blocks work remains applicable to the new thing.

True. With two intuitions as to the nature of Scratch, which is more important? Should reporters be given stack-block like features to keep the custom block interface identical? Or should custom reporter blocks in Scratch be like reporter blocks in Scratch?

A reporter block is a block that contains a value. These blocks can contain anything, from numbers to strings. Boolean Blocks are a special form of reporter blocks that report either “true” or “false”. To quickly view the value of a reporter, simply click it in the editor and a bubble will display the value.

Outside of this thread, are there any suggestions for a new reporter in Scratch that would need the checkbox?
stickfiregames
Scratcher
1000+ posts

Better Custom Blocks

All built-in blocks either wait or they don't, and the reason the built-in reporters don't wait is not because they are reporters but because the ST has designed each of them not to wait.
And, thus, that is a fundamental part of the nature of reporters in Scratch: Scratch Team's design choice for how reporters are. It is the reliable behavior of the building blocks that Scratch programmers depend on. “It's how Scratch does things.”
No it's not. The fact that they are reporters has nothing to do with whether they refresh or not.

Custom blocks have an option to wait or not wait depending on whether the creator wants them to. Extending that idea to custom reporters would be perfectly intuitive, and a would mean a Scratch programmer's knowledge of how custom blocks work remains applicable to the new thing.
True. With two intuitions as to the nature of Scratch, which is more important? Should reporters be given stack-block like features to keep the custom block interface identical? Or should custom reporter blocks in Scratch be like reporter blocks in Scratch?
Since the whole point of custom blocks is to be customisable, they should be given the options that other types of custom blocks have. They will still be like reporter blocks, because the defining feature of a reporter block is that it returns a value.

Outside of this thread, are there any suggestions for a new reporter in Scratch that would need the checkbox?
Not that I know of, but the ones suggested within this thread are perfectly valid uses.










If you can read this, my signature cubeupload has been eaten by an evil kumquat!




or you just used Inspect Element, you hacker

;

Powered by DjangoBB