This is a read-only archive of the old Scratch 1.x Forums.
Try searching the current Scratch discussion forums.

#1 2009-03-28 13:38:26

Delocuro
Scratcher
Registered: 2008-11-08
Posts: 10

Useful Block Concepts

I'm a big game maker on scratch, and while I was working on a more recent game, quite a few issues came up in the programming that I have no solution for, and I also noticed a few brick combinations that are commonly used, and could easily be simplified into one block. Here are a few of the potential solutions I came up with that could be added to later versions of Scratch:

ScrollX/ ScrollY
As most experienced game designers know, scrollX and scrollY are commonly used variables in making scrolling games. They allow the camera to pan sideways or up and down, allowing large scrolling levels to be created. But scrolling levels take an excessive ammount of scripting: A separate sprite and script combo must be created for each tile of the scrolling level. What I propose we do to solve this problem is create a new set of movement blocks that look something like this:
Round, variable ScrollX and SrollY blocks, like the Current X position, y position blocks.
Normal block: Go to Scroll X [    ] Scroll Y [    ].
([    ] represents changeable number areas)
Normal block: Change Scroll X by [    ].
Normal Block: Change Scroll Y by [    ].

Solid Objects
Now pretty much every platformer you can make uses solid objects, but the current method of solid object making involves creating four separate sensing sprites for each moving charactor you want to resopnd to solid objects, and a long complex chain of scripts. Well, this could be eleminated and easily tranfered into one block:
Normal: Set Solid Effect to: [    >]
([    >] represents a list of choosable options.)
This block would be in the sensing category, and would allow the user to select a solid effect from a list of several effects: The obvious two being solid and not solid, but others could be added, such as liquid, gas, goo, or rubber. This would provide a wide range of options for programmers to choose of which objedcts they want to be solid, and what kind of movement effect they want those objects to have. Another block could be included, saying something along the lines of:
Normal: Set object kickback to: [        >].
This would have four main settings: High, Medium, Low, or none. This would be automaticlally added with any solid object blocks used in a sprite. Basically, it would determine how far back a solid sprite will fly after collision with another solid sprite. In addition to increasing the reality of the sprite movement even more, this would determine which objects are stationary, like ground. By setting the kickback to none, the sprite would not move when in collision with another sprite, making it solid like ground or heavy objects. Of course, this would not mean the object couldn't be moved in other ways, such as set motion paths, but it would insure that the object is not able to be moved by other solid sprites. Also, booleans could be included here, such as:
Boolean: <[    >] Solid?>
This would allow other object to make decisions or options based on whether or not a specific sprite is solid. Other blocks related to sprite movement and solid objects could be added, but I'll leave it up to the scratch team and veiwers to decide how specific those should be.

Brodcast/Commands
Of course, we all know and use the brodcasting blocks in the Controll section, and besides the movement blocks, these are probably some of the most usefull blocks on the program. However, there are two brodcast blocks that I've needed so many times, but just hasn't been added:
Normal: Wait Until I Receive [    >]
Normal: Repeat Until I Receive [         >]
This would probably be the most useful blocks I've listed so far. I've needed these blocks so many times, I couldn't count them if I tried. This would allow for A much wider range of possibility for reaction scripts to brodcasting blocks, and would allow for much easier timing on animations and game cutscenes, not to mention actions that you want sprites to take untill a certain point. Unfortunately, I can't think of a good example of this right now, but I'll post one when I run into a problem like this.

Sound Options
The final Main issue I ran into was the sound options on scratch. It's sometimes difficult to get sounds to work correctly on scratch, because it's not always possible to stop a song and recontinue it at any given point. If you use the "play sound [    >] until done" script, the song won't stop until it's completely finished, making it difficult to switch quickly between songs in a game. If you're good enough with programming, there are ways of solving this, but they require large amounts of scripting chains. You can use the "play sound [    >]" script, but this makes the song stop once it's finished, and if you try to use a forever or repeat block around it, it just plays the first not of the song over and over again. So I propose a
Normal: Play sound [    >] until
block that would allow a song to be repeatted all the way through, but be stopped and replaced with another song at any given point.

So that's all of the main issues I have to address about the current version of scratch.I look forward to hearing other peoples block suggestions, and possibly even seeing some of these issues fixed in scratch 1.4.
Scratch On,
~Delocuro~

Offline

 

#2 2009-03-30 20:47:12

Delocuro
Scratcher
Registered: 2008-11-08
Posts: 10

Re: Useful Block Concepts

...yeah, I knew I made it too long. No wonder there's no replies. Stupid Language arts teacher. Making me write five paragraphs in one post...

Offline

 

#3 2009-03-31 10:07:04

yambanshee
Scratcher
Registered: 2007-11-06
Posts: 500+

Re: Useful Block Concepts

some interesting ideas, although one thing you must remember, a lot of programs, and most certainly when you get down to lower level programs (such as flash, java etc...) requires more and more coding, and making it easy like this does not properly prepare the children here to learn as much as they can. In my opinion, scratch is not a software for you to make games, animations etc... instead a educational resource for younger ones to learn how scripting is, and give them a little push.

one area i do agree on is sound though. A simpler suggestion might be to play song starting A amount of seconds into it, making pausing possible.

Offline

 

#4 2009-03-31 10:40:23

Paddle2See
Scratch Team
Registered: 2007-10-27
Posts: 1000+

Re: Useful Block Concepts

You raise a some good points and suggest a number of useful blocks that would make good additions to Scratch - if it were the purpose of Scratch to make games.  But one of the purposes of Scratch is to teach programming skills and the logical thinking that must be learned to script effectively.   Keeping the Scatch vocabulary simple and general purpose suits the educational purpose better as it forces the user to learn to implement algorithms for scrolling and solid barriers and other functionality needed to make the project work.

I do agree with some of your suggestions though...better sound control would be very nice.  You maybe can accomplish some of what you want by using the Stop All Sounds block...but a Pause Sounds would be wonderful.

The Wait Until I Recieve and the Repeat Until I Recieve would both be useful...but you can achive the same functionality with the use of variables so they really don't bring anything new to the table.

BTW, I think your post was very well-written, kudos to you and your language arts teacher!


http://i39.tinypic.com/2nav6o7.gif

Offline

 

#5 2009-03-31 12:58:38

JSO
Community Moderator
Registered: 2007-06-23
Posts: 1000+

Re: Useful Block Concepts

Paddle2See, Yambanshee,

You know, I think Scratch has two fill in both aspects. It should allow people to learn programming, but it should also allow people to apply what they learned to a big project.

So, that means that Scratch, in my opinion, should have a limited set of blocks, allowing you to program everything.

At this moment, we have to replace that last word by "theoretically everything". So I think Scratch should be able to handle big projects, without losing all of its speed. (Creating big project can be useful too!)

A good example is my old RCRally project. I made it +- 2 years ago - it lacks just too much. In those two years, I learned a lot...

In  the last two weeks I've been redoing the whole thing, every possible script is changed. Right now, it goes super fast - every different aspect has its own script, almost none of the IF blocks resist...

This means that handling big projects learn you how to program efficiently, which means Scratch should *allow us* to create big projects. People want to show there projects too friends and say "look what I've made!", without getting the short (but quite mean to a programmer "way to slow". Any idea how many kids where already disappointed because of that?

Scratch needs a major redesign do improve it's speed, which is also important to me!


http://oi48.tinypic.com/2v1q0e9.jpg

Offline

 

#6 2009-04-01 06:26:12

bhz
Scratcher
Registered: 2008-07-06
Posts: 100+

Re: Useful Block Concepts

Delocuro wrote:

--long post--

Scrolling
Making [ ScrollX ] variables are not hard work at all. I don't see how this will fix the problem of having to make multiple sprites for the BG. But I would love the ability to make larger sprites, without taking an image of the screen. But there still should be a marker after each (180,240) area, just in case we don't want to go past it. (eg. a cross that fills the whole page)

Solid Objects
Kickback: Simply set XVel to -something or change x by -something.

[ I Receive ] boolean - look at my response to this topic

Offline

 

#7 2009-04-01 17:24:20

Delocuro
Scratcher
Registered: 2008-11-08
Posts: 10

Re: Useful Block Concepts

To paddle2see, yambanshee, etc... I kno scratch isn't made for making games, and in all honesty, if I had a better game making programm, I'd forget scratch and move on to make amazing, proffesional games. But unfortunately, good programms cost money, which I don't happen to have a whole lot of, and you can bet your life my parents wouldn't buy me one out of their pockets, with the cruddy state the economy's in fight now, so until I get a real game creating program, I'm stuck making all mah stuf on scratch, so I figure I may as well give some in=mprovement options while I'm using it.

Offline

 

Board footer