Monday, July 21, 2008

Ideas for the next version

I'm thinking about what the next version of S4SL will look like and I'd love your input as I try to prioritize things to add. I've gotten some feature requests, and I have a few ideas of my own.

Here are some blocks I am thinking about adding:

* set texture [menu of a few fixed textures]
* set texture [name of any texture]
* distance to object [name of object]
* point toward object [name of object]
* rez [name of object] and move it [number] meters

Some other areas that I may think more about:

* particle effects
* loading URLs
* more sensing

Also, I'd like (eventually) to automate the code generation process more so that you only get the helper function code that you need, not the whole bag of tricks. At first I thought this didn't matter, since it's just a few hundred lines of bloat. But now I realize people will actually want to use the generated code to learn from, so if it makes more sense to look at it, they will have an easier time.

What do you think? Any comments on these? Other ideas?

27 comments:

Anonymous said...

Hi. I"ve just downloaded the mac version of this as I'm interested in getting scripted objects, but don't have the time to learn scripting from base up.

I hate having to bother my scripting-savvy friends to do simple stuff for me, and have heaps of ideas for what I want done.

I"m hoping that your programme will take the strain of some delightful relationships.

:) Shai Khalifa

Anonymous said...

I am loving this tool, and would love to see it taken to a broader spectrum of use. I am by no means a scripter, but with your tool I am able to piece together some things that will suit my needs.

Some things I would like to see are a more efficient way of scaling an object shrinking... perhaps the smooth rotation stuff as well.

I like the ideas you have so far, another one that would be handy is the ability to set it to res a specific object by name. To give inventory, or to try to animate an avatar. Example being like the huggers work in SL.

These are just some fun ideas to play around with.

Maximillian Merlin said...

Hey Eric,
this is a great tool.
I would call myselve an experienced scripter and i think you are on a good way with this creation.
I agree, that some commented lines more or less dont matter, but from the learning ascpect, i also think , it is better to take out all the unneeded trash.
All in all: great tool! (and i really love the sound in the tutorial vid!!:-))

Sphynx Soleil said...

With an eye towards making a window script, my suggestions (if they're not already included in your plans) would be things that do a "detect owner" (for owner-only usage) and things that help stuff work in linkset ("llMessageLinked" functions?)

Fim Fischer said...

Hello!

I just came across this very easy to use scripting assistance.

Creating a LSL-Script by just putting puzzle pieces together is perfect for people who are more into pictures/images than into numbers.

Scratch is a great idea and just perfect if it is merged with Second Life.

I would love to host a inworld Scripting/Showcase class using Scratch 4 SL.

Regards,

Fim Fischer
Marble Isle (Merx)

Fim Fischer said...

Here my wish list:

A bigger scripting desktop.
A full screen to place and compare scripting nuggets would be fine.

It seems as if an object does not 'listen to itself'.

For "my none-programmer understanding", the object should (also) listen for commands given by itself thru broadcasting (self-broadcasted commands should have a higher priority than predefined state changes), instead of just jumping into another state.

Thank you in advance!

Fim Fischer
(Marble Isle)

Anonymous said...

It would be great to get a simple description for the function of each different block to help the creative processes along.

I would also like to see a "move to (vector)" block included so that you can tell the object to move to a very specific vector. I appreciate that this might be a bit of an advanced idea for complete beginners but it is helpful for the amatures who do not know how to script it themselves.

Can we have "North/South/East/West" direction blocks for the movement of objects along a specific axis?

Many thanks

Uta Schism

Anonymous said...

Some suggestions for Things to add:

Some string handling would be good, with constants like owner name, creator name, object name, nearest avatar name etc.

The use of channel 0 (the public channel) is a bit problematic - it adds a lot of lag - you wouldn't notice it with 1 script, but if using lots it will be significant. Some method of choosing your channel perhaps so objects can talk to each other without everything listening?

And maybe LinkedMessages could be included as well as chat?

And an object should be able to listen to itself.

And I think it's a good idea to only include the code that's being used - it would make it much easier to learn from.

And if you're going to Rez objects, don't forget you've got to be able to kill them as well.

Keep up the good work.
Small review here....
http://slconceptual.wordpress.com/2008/07/26/scratch-for-second-life-s4sl-easy-lsl-coding/

Anonymous said...

A linux version would be nice.

Anonymous said...

I've just started playing with this, and I have to say the potential for this approach to LSL is incredible.

There are a few things I'd like to see implemented:

In "Controls", I'd like to see "When I am Touched" expanded to ..."When I am Touched by" with options "Anyone", "Owner", "Group Member", "Anyone But Owner", and "Anyone But Group Member". The "Group Member" should, of course, refer to the object's properties for the appropriate group.

"When I receive" needs a channel number option: "When I Receive message on channel XXX. Obviously, the "Broadcast" command needs an equivalent, "Broadcast message on channel xxx.

A "Repeat until" with conditionals would be good. There are ways to work around it with the current blocks, but it could be more elegant.

Elements to create "blue popup" menus would be a great addition as well...

And finally, texture manipulation tools... the ability to cycle through textures in the object, in particular.

Hope this gives you some ideas and incentives. ;)

BTW... I'm running S4SL on a Mac Powerbook G4, OS 10.4.11, and have had no problems pasting at all.

Anonymous said...

I second this post here below:
GREAT WORK BTW ! :)

"

There are a few things I'd like to see implemented:

In "Controls", I'd like to see "When I am Touched" expanded to ..."When I am Touched by" with options "Anyone", "Owner", "Group Member", "Anyone But Owner", and "Anyone But Group Member". The "Group Member" should, of course, refer to the object's properties for the appropriate group. "

Anonymous said...

How do you log on to s4sl?
tell me on my normal scratch acount

WyldFox said...

Even though I can program in basic, some TI calculator languages, and Game Maker Scripting, I cannot figure out the LL scripting language for the life of me at all. When a friend of mine found this, we just had fun playing with the program and making scripts for simple things.

Other than keep adding and updating, what something else I would like to see is broadcast on certian channels and what you are already planning (particles) for now.

Anonymous said...

S4SL definitely needs to only copy the commands it actually uses into the script - I'm not even sure why it doesn't. you can always add the option to "save full script" and "save compressed script" for those who want the 100+ lines of code that isn't being used.

I'd like to see an implementation of llSetPrimitiveParams so that I can program in a toggle for flexiprims

Anonymous said...

I am new to LSL, although I am a programmer in several other languages. Scratch has helped me get a handle on how to do several of the things I was interested in doing in LSL. I have been using it to help get me started on a few ideas and then go in and manually code the more advanced stuff that I needed. With that said, here are my recommendations for extended features that would make it a bit more versatile.

I agree with SLConceptual, and several others, on the fact that there needs to be a way to change the listen channel or even have separate listen channels (e.g. listen to owner commands on one, non-owner chat on 0, and broadcast to other objects on another.). Maybe have a default listen on 0 for basic communicating with the avatar (like a conversation) but also make it possible to issue "commands" on another so that you aren't spilling out junk chatter around groups of avatars. I also agree that llDie is needed. For instance you want the object to do something then remove itself after a certain criteria has been met (e.g., 10 avatars have touched it).

Also, when you have multiple "When I receive..." "hats" it generates a new function for each. It would be cleaner if it only generated one and had if/else if/else statements to check the message sent to a single function.

Include an If/Else If/Else control block option. It is possible to work around this using some nested if/else's but it would be nice to have a control for that purpose.

Some more sensing options would be nice. For instance name of owner, name of nearest avatar, name of avatar that touched/collided, etc.

A string and list variable type. One of the things I was going to try and do with Scratch is build a list of the avatars that touch the object, so when I come back around I could query the object to see who had touched it (i.e. a simple voting machine). In the case of the list variable, it would need add and remove functions, so that you could add to the list and remove from the list (e.g., add the avatar name who touched it or remove the avatar name if they had already touched it once.

Anonymous said...

In the next S4SL I would like for all the jumble in the actual script itself to be removed. When I take a look at the script it's very confusing because of all the added bits of LSL added in that doesn't actually matter in the script. For an example:

move(float steps)
{
vector fwd = llRot2Fwd(llGetRot()) * steps;
llSetPos(llGetPos() + fwd);
if (penState == TRUE) {
if (llGetInventoryType("lineSegment") == INVENTORY_NONE) {
llSay(0, "Oops! To draw a line, my inventory needs a lineSegment. You can get one from the Scratch Inventory Box.");
} else {

When I have made a pulsing script and that is not needed in the script and it just makes it awfully confusing, and so that is my idea. Just for it to be clear and easy to read :P

Anonymous said...

Id love for the phantom avatar to be able to be done with this, Ive never been able to use it cause the 'glitch' was 'fixed' (id have preferred it to stay the way it was)

Pinkhair 3d said...

It would be very nice to be able to determine distance on individual axis.

Also, perhaps an alternate 'forever' cap that ran at a lower priority, so when an event happens you don't have to wait for that idle loop to finish?

André Verwijs said...

when is the next verion comming?

TheAlpha31 said...

In December Eric sent me this email:

"A new version coming out, unfortunately it does not seem likely
anymore. My work has taken a different direction, so I am focused on
other things. There are some other projects doing similar things, to
make it easier for people to program in second life without knowing
LSL, and I hope that those become more useful to people (but I haven't
kept up on the latest news of those). Anyway sorry about that!

Eric"

Anonymous said...

(Point to object), (move to object) and (More sensing)... are all wonderful addons!! Please keep working on this tool! Maybe you have not gotten enough feedback on how awesome this tool is and how manny people in SL are using it.... I found it to be an invaluable teacher of LSL... THANKS!!! CGI Nightfire

Iggy O said...

Eric,

Thank you for Scratch! I'm not one who can get his head around LSL, but I find this program very intuitive for simple scripts.

I would love to make a few simple, low-prim sea monsters. All they'd need to do is move about. Can one set random motion w/ Scratch within a defined area?

Hope you'll reconsider leaving this wonderful project behind--educators like me would love to see more of it!

Anonymous said...

just one. PLEASE CARRY ON!
great work congrats.
:)

Unknown said...

This is awesome. Just what i need to start reverse engineering some complex code.
I hope that particles get in there soon.. and textures, of course. please, take your time.

I really appreciate this free service. truly in the spirit of second life.

thank you

-Ed Pony

Anonymous said...

In the next version I'd most like to see a owner check feature, a way to talk in channels (I can't seem to if it's already there), and what you already mentioned, a rezzer that can move whats rezzed.

Fim Fischer said...

Scratch is good as it is. After trying Scrtach for a few days, encouraged through the fast progress with Scratch, i continued scripting and was happy to find some residents who needed simple scripts. I continued scripting (without Scratch) and are now able to get very complex code done.
What i learned from Scratch: Just try something and if you stick to it, you will be sometimes good doing it. Sooner or later.

Scratch for SL is a amazingly, easy to use, tool to get started with scripting, even or especially if you are the bloody novice as i was, you will have encouraging successes from the beginning of your scripting career

Once you took the first stepts in scripting, encouraged by your newly discovered talents, empowered by Scratch 4 SL, you will be fine using the LSL Editor, which is already integrated in the SL Client.

For the progressing and enthusiastic scripter, i suggest the 'LSL-Editor', which is a script editor and run-time environment for LSL.

Don't make something too complex if it already fulfills it purpos.

http://www.lsleditor.org
http://www.lslwiki.net

Thank you to the Scratch Team.

Fim

sanchorelaxo said...

something that would be extremely useful: include ScratchPatchXML so i can export these commands to xml, apply xsl and send it rpc in-world. now we have S4SL doing it in real-time. that would basically rock my world.
i use http to power holodecks, sloodle, in world game controllers, etc. this tool would allow direct in-world/out of world interaction... well... shorter cycle than pasting code, anyway.

all we need now is an in-world interpreter of the xml.... ;)