Monday, July 31, 2006

The Agency: Fix posted for Windows Saturday afternoon

If you downloaded the Windows version of Preview 3 prior to Saturday afternoon, you may see an error message when you attempt to run the program stating that you are missing a file called MSVCR71D.dll. If you get this error, please download the program again now and reinstall it. We apologize for the inconvenience.

Labels: ,

The Agency: StarLogo TNG got "Dugg"

StarLogo TNG appeared on Digg yesterday.

For those of you not yet familiar with the site, Digg is a popular collaborative blog. Articles are submitted by members of the community, and the readership votes and comments on their favorite (or least favorite) articles.

Some people loved it, others hated it, and a few missed the point altogether, but feel free to check it out and add your own feedback if you like.

Labels:

Saturday, July 29, 2006

The Agency: Preview 3 released

We are proud to announce the release of StarLogo TNG Preview 3. This version contains many optimizations/bug fixes, and also contains some exciting new features (look for the search functionality and Typeblocking in addition to graph blocks). A full change log is below.

The final push for StarLogo TNG will see an overhaul of the blocks canvas and a number of new features that we have on tap. We may release a Preview 4 in late summer/early fall before a final 1.0 release this fall. Be on the lookout and enjoy Preview 3.

The StarLogo Team

---------------------------------
CHANGE LOG

Preview 2 to Preview 3

StarLogo Changes:
— Saves more project state: workspace view and zoom, runtime speed and time, procedure block folding
— File menu maintains list of recently viewed files
— File dialog filters for .sltng files and starts from the most recently viewed directory
— Help menu items link to documentation, tutorials, and FAQ in Starlogo TNG website

SpaceLand Changes:
— 200% terrain rendering speed increase
— Faster collision detection (no computation for breeds without a collision block)
— Improved agent eye positions for all shapes
— Improved key press detection

StarLogoBlocks Changes:
— Added typeblocking on workspace (select "Keyboard moves blocks" from Options menu)
— Added incremental search box for blocks
— Added Line and Bar Graph blocks in workspace and removed graph wizard
— Added Shape Width, Height, Length blocks
— Added Dig and Build blocks to create straight-walled terrain features
— Changed behavior of Stomp and Yank to create smoother terrain.
— Variables and procedure blocks dragged onto the Global page now appear in the Global drawer
— Improved blockdoc tooltips
— Fixed saving/loading bug where blocks disappeared on project load
— Fixed sliders bug causing incorrect updates and label changes
— Fixed deleting breeds bug
— Monitors now compatible with global variable declarations
— Monitors update at higher frequency (250 ms)
— Monitors can report positive or negative infinity.
— Changed procedure block collaspe/expand icon to a triangle

Terrain Editor Changes:
— Changed underlying format to allow for vertical walls.

Virtual Machine Changes:
— Made StarLogo time no longer dependent on computer speed

As always, your feedback is valuable. Feel free to post a comment below or send email to starlogo-request@education.mit.edu.

Labels: , ,

Wednesday, July 26, 2006

Agency Insider: Type blocks with your keyboard

In Preview 3, due for release very soon, we will introduce a new feature called Typeblocking. Typeblocking is our word for using the keyboard to type out blocks instead of dragging them onto the factory with a mouse. For some users who prefer to use the keyboard, mastering Typeblocking may allow for much faster StarLogo model development. To enable Typeblocking, choose "Keyboard moves blocks" from the "Options" menu. Note that if you want to resume using the keyboard to move the camera in Spaceland or control models with keyboard input blocks, you will need to choose the correct setting from the Options menu. Choosing among these options will be easier in a future version.


Just as when typewriting, there is a cursor for Typeblocking to show you which block currently has focus and where the next typed block will appear. The block cursor highlights the current block with focus in blue. For example, drag the "forward" block onto the workspace. It will appear highlighted in blue. Next, drag out the "right" block and attach it to the forward block. Notice that focus transferred to the "right" block. You can move the cursor by clicking on blocks or by using the tab or arrow keys to shift focus within a single stack of blocks.To place additional blocks on the stack, simply begin typing the name of the block. For example, if you type "heading," then you will see the autocomplete list appear with your current query in red and the list of all blocks that may be connected to the block with focus. Here, the "heading" and "heading of," blocks can connect to the "right" block's number port, and the "set heading" block can connect to its next command port. You can use the arrow keys or the mouse to select the block from the list that you want to appear and then press enter or double-click to cause that block to appear.

In this example, we chose the "heading" block, and that block flew out and connected itself to the number port appropriately. Now, if we give focus back to the "right" block and type "heading" again, only the "set heading" block appears in the list because the number port is full and cannot accept a new block.In addition to using the autocomplete list to type blocks that fit into the block with focus, Typeblocking is further optimized for arithmetic expressions. If a block such as the "right" block has an empty number port, simply type the number you want, and a number block of that value will connect itself automatically. When a number block has focus, it is simple to extend the expression using simple binary operators to add, subtract, multiply, or divide other numbers.Finally, in addition to supporting the connection of new blocks, Typeblocking includes other keyboard shortcuts for making StarLogo TNG more efficient to use with a keyboard. For example, Command-+ (or Control-+ on Windows) zooms into the block workspace, while Command-(minus sign) zooms out and Command-0 returns the workspace to its default zoom level. Additionally, when a procedure block has focus, Command-Enter toggles the rolled up state of the procedure. For any other block, Command-Enter causes StarLogo TNG to execute that block as though it had been double-clicked on. If a block is editable, pressing enter (without holding down the Command key) toggles edit mode for the block to make it easy to change the block's value.

We look forward to sharing this exciting new feature in Preview 3 with you soon, and we would appreciate your feedback on its usefulness to you in creating your StarLogo TNG models.

Labels: , ,

Thursday, July 20, 2006

The Agency: Email notifications back online

For those of you who subscribe to new posts via our blog mailing list, it should be working properly again. You may wish to check the blog to catch up on a few posts you may have missed in the meantime. Sorry for the inconvenience, and thanks for reading!

Labels:

Friday, July 14, 2006

The Agency: StarLogo finds space at... MySpace?

Yes, you read correctly. Apparently even StarLogo has its very own MySpace profile now. The "26 year old Pisces from Cambridge" is still listed as single, so feel free to check it out and add StarLogo to your list of friends today...

Labels:

Wednesday, July 12, 2006

Block Talk: Hey! Who hit me?

Collisions, or agent-agent interactions, are at the heart of many StarLogo models. For example, in case you haven't seen it yet, the Paintball Tutorial provides an example of using collisions to determine when agents of breed Paintball collide with agents of breed Turtle.

Whenever you create a breed, new collision blocks are added to every breed drawer. If you have two breeds, say, Turtles and Giraffes, then the breed drawer for Turtles will have a Turtles-Turtles collision block as well as a Turtles-Giraffes collision block. The breed drawer for Giraffes will have Giraffes-Giraffes and Giraffes-Turtles collision blocks.

It is important to note that the Giraffes-Turtles and Turtles-Giraffes blocks are effectively the same. If you take one out onto the Workspace, the other disappears from the drawer as well, because you can only have one collision block for each pair of breeds.

Many times, knowing that an agent collided with an agent of a particular breed is enough. In the example below, whenever a turtle and giraffe collide, the turtle reacts to the collision by turning right 90 degrees. It does not matter which giraffe was involved in the collision, only that it was some giraffe, and that was enough to make the turtle want to turn 90 degrees to the right.

However, sometimes we do want to know information about the other agent in the collision so we can react specifically to that agent. For example, what if the turtle would prefer to turn in the direction of the giraffe instead of simply turning right? Well, the turtle would need to set its own heading to the heading of the giraffe, as shown below. But we're missing something in the example. We need the who number of the giraffe that collided with us in order to obtain its heading.
That's where the collidee block comes in. It is special block found in the Other Agents category (show below), which is the same category that the "heading of" block is in. The collidee block is a special kind of number block that can only be connected inside of collision blocks. It automatically provides the who number of the other agent in the collision. Thus, if you use the collidee block in the Turtles region, then it returns the who number of the giraffe. If you put it in the Giraffes region, then it returns the who number of the turtle.


Therefore, in our example, if we want the turtle to set its heading to the heading of the giraffe, we use the collidee block to get the who number of the giraffe for the "heading of" block, and we're done!

If you look at the Paintball Tutorial, you'll see that the collidee block is used to set the color of the turtle to be the color of the paintball it collided with. The collidee block is not used in the Paintball region, because the paintball does not care which turtle it hit. The paintball dies because it hit some turtle, regardless of which one it happened to be.

In your models that incorporate agent-agent interactions, you won't always need the collidee block, but if the response you need requires information from the other agent in the collision, just remember to use the collidee block and the other blocks found in the "Other Agents" category.

Labels: ,