# Information

| Introduction |

Welcome to the StarLogo 2.0 release of StarLogo, a programmable modeling environment designed to help you model and explore the workings of decentralized systems, such as bird flocks, traffic jams, and market economies.

A Macintosh-only version of StarLogo has been available for several years. In February 2000, we released the first Java-based version of StarLogo, designed to run on all different types of computers. We called this new version StarLogo 1.0, and we renamed the Macintosh-only version MacStarLogo. (While the Java-based version of StarLogo runs on Macintosh computers, Mac users with older 68K and PowerMac computers might prefer to use MacStarLogo for performance reasons.) In August 2000 we released version 1.1. It included updated features and bug fixes, and in 2001 we made another update to version 1.2.

The latest version is 2.0, and it includes many new features, enhancements, and bug fixes that are outlined below in the New Features section. This document will discuss how to run StarLogo, new features in version 2.0, the differences between StarLogo and traditional MacStarLogo, the system requirements for running this version, and some implementation issues.

As you use StarLogo 2.0, please let us know what you think. Please send suggestions and bug reports to bug-starlogo@media.mit.edu (Be sure to include system details, including your operating system, so we can easily pin down any problems).

Thanks again for trying out this new version of StarLogo!

| How to Run StarLogo |

To use StarLogo, you will need to have a version of Java 1.1 (with Swing) or higher installed on your computer.

Our installer for Windows includes a Java 1.4 runtime from Sun Microsystems. This version will not interfere with any other versions of Java installed on your machine, and you won't have to worry about compatability. We do not use or require any other version of Java to be installed on your computer.

The Mac OS 9 version requires MRJ 2.2.5 or higher. If you don't yet have MRJ 2.2.5 (or are not sure) and have Mac OS 9, use the Software Update control panel to install any updates from Apple. One of these will be MRJ 2.2.5 or higher. If you use Mac OS 8.1 or higher, you can download MRJ from Apple's Java web site at http://developer.apple.com/java/download.html.

We support MacOS X 10.1 and higher. If you get the Java Update 1.3.1 for OS X 10.1, be advised that multi-monitor support is broken. There are still quite a few problems with MacOS X Java, even on 10.2, so feel free to email at bug-starlogo@media.mit.edu when bad things happen.

On Unix, we recommend using your vendor's Java, as long as it is compatible with Java 1.2 or higher. We include a shell script to run StarLogo, and include a special shell script for Solaris. On Linux, we recommend Sun's JDK over Blackdown because of far fewer bugs in the AWT implementation. If you can get Sun's JDK 1.4, that'll be even less buggy. A note: there are interactions between some window managers and Java which cause new windows to open in a really small size. You might try a different window manager first, to see if it is the problem, but if not, tell your window manager to allow you to place the window manually when it pops up, rather than automatically. This will give you the opportunity to resize it.

After you have succesfully installed StarLogo, follow these instructions to run StarLogo on your computer:

On a Windows PC

- In the Start Menu, look for the StarLogo 2.0 program group. Click on the StarLogo application file to run StarLogo.
- StarLogo should start up and pop two windows up on the screen. If you don't see them, they might be hidden behind other windows. Check your taskbar for them.

On a Mac

- Make sure that you have MRJ 2.2.5 or higher (from http://developer.apple.com/java/download.html) installed on your Macintosh before trying to run StarLogo.
- Double-click on the StarLogo application.
- StarLogo should start up and pop two windows up on the screen.

On Unix

- Install your favorite Java 1.2.x, or Java 1.3.x, Java 1.4.x.
- Go to the StarLogo distribution directory.
- Execute the unix-run-starlogo shell script. (Note: If you use Solaris, execute the solaris-run-starlogo shell script instead).
- Note: We've seen that StarLogo requires that you set Java to use a larger stack size. This is necessary with Sun's Java; we're not sure whether this is necessary on other Unixes.

| Adventures in Modeling and The StarLogo Design Discussion Area |

Last year we published a book, Adventures in Modeling (http://education.mit.edu/starlogo/adventures) , that inroduces learners of all ages to designing, creating and exploring models in StarLogo. Adventures in Modeling focuses on a series of open ended design challenges that build in complexity. It comes with a series of sample projects, that are available inside of your StarLogo download folder.

The StarLogo Design Discussion Area (http://education.mit.edu/dda) is an online forum for posting and discussing StarLogo projects. It may be used in conjunction with Adventures in Modeling, or simply to share StarLogo models with other users. There are already hundreds of proejcts available there to browse and to search. Through the DDA, you can look at other user's code and use StarLogo models as applets in a compatible browser.

| New Features in Version 2.0 |

Bugs Fixed Since 1.2.2:

- Fixed parsing of statements similar to: sum-of-turtles [xcor] / count-turtles so that you don't need parens: (sum-of-turtles [xcor]) / count-turtles.
- If a turtle dies while being asked to do something (inside of an ask-turtles), he will stop obeying the commands, but will stay alive (in a zombie state) long enough to respond to all queries about his state (e.g. xcor, ycor, etc). Once the ask-turtles is finished, the zombie turtle will then die.
- A turtle that dies while grabbing other turtles now lets go before dying.
- Turtles shouldn't show up outside the patch grid anymore (sometimes they would appear one patch outside).
- Compiler now reports a bug if you forget to put a space between your operators (+, -, *, /, etc) inside of a parenthesized expression (e.g. set foo (3 +4) will now report an error that +4 isn't understood). Previously, the erroneous operator and whatever followed it were ignored and not included in the compiled code.
- max-of-turtles now returns the proper answer if the answer is negative.
- Sometimes when StarLogo saved/loaded a project, all of the buttons got the same id number (invisible to the user) causing all but one button to stop working. This is fixed.
- Fixed a bug in diffuse4 that caused it to hang.
- The case primitive now takes up MUCH less memory (a constant amount) on the stack, so you can have enormous (or even small) case statements without overflowing the turtle's stack memory.
- Widgets that need to draw black actually draw in a really really dark gray now, so that if you drag them ontop of a black patch grid, they're still visible.
- When an enumerated variable (e.g. turtles-own [temp [hot cold warm]]) is the same name as some other already defined thing, the compiler now reports an error.
- setplot-xrange and setplot-yrange arguments were interpreted in the wrong order.
- When you drop the max or raise the min value of a slider, the current value, if out of range, will now peg itself to the min or max, whichever is closer.
- Sometimes when you compiled, the cursor would remain an hourglass. We think this one is licked.
- Sometimes after you compiled by clicking on the Interface window onto a button, the cursor would get stuck as a Move cursor. We think this one is licked, too.
- Sometimes the keyboard focus would be lost from the interface window, making the keyboard command 'delete' to delete a widget not work right. This always works now.
- All the following commands now exclude the caller turtle from the calculation: sum-of-turtles, sum-of-breeds, list-of-turtles, list-of-breeds, one-of-turtles, one-of-breeds, min-of-turtles, max-of-turtles, min-of-breeds, max-of-breeds, average-of-turtles, average-of-breeds, variance-of-turtles, variance-of-breeds, median-of-turtles, median-of-breeds, list-of-turtles-with, list-of-breeds-with, min-of-turtles-with, min-of-breeds-with, max-of-turtles-with, max-of-breeds-with, average-of-turtles-with, average-of-breeds-with, variance-of-turtles-with, variance-of-breeds-with, median-of-turtles-with, median-of-breeds-with. All the other variants of these commands were already correct.
  - Note: count-turtles, count-turtles-with, count-breeds, count-breeds-with will not exclude the calling turtle. That's so that whenever a turtle asks for this value, he gets the same value as all other turtles.
- When we save the output window and the info window, they now save with Windows linefeeds, rather than always using a \n.
- Fixed memory leak in count-turtles-with.
- one-of-{turtles, breeds}-{here, at, towards} now returns a random turtle who is not yourself, rather than just the topmost turtle on that patch.
- You can now change the size of of the patch grid while the turtles are moving without causing a crash.
- If you ask a turtle to do something, but that turtle doesn't exist, StarLogo used to freeze up. That's fixed.
- When you invoke New Project from the menu, it now creates 100 turtles, just like starting the StarLogo application.
- If you load a project that causes the interface window to become larger than your screen, we shrink it to fit.
- We now use a better oval drawing algorithm in the paint tools.

Features Added Since 1.2.2:

- Added shapes feature for turtles. There is a shape editor that allows you to create new shapes, and a shape chooser that allows you to choose individual shapes for your turtles. Turtle shape can also be set using the setshape command. Shapes appear at patch sizes 8, 16, and 32.
- Added templates (not compatible with Mac OS 9) that allow users to easily begin creating models using a "wizard".
- Added many new kinds of plots (histograms, bar charts, x-y plots, scatter plots), all of which can be placed on the StarLogo interface and created with simple point and click procedures.
- Added a legend widget that allows the user to define what specific colors or shapes represent.
- Removed the MS-DOS Windows that pops up when you run StarLogo in Microsoft Windows.
- Support more of Resnick's TT&TJ StarLogo syntax, including turtles-have, patches-have, added dash between "set" and the variable name (e.g. turtles-have [foo-bar] set-foo-bar 5) but only if the variable itself has a dash in it.
- Increased StarLogo's maximum memory size to 256 MB. It won't take 256 MB initially, but if need be, it will grow to that size. In Microsoft Windows, the maximum size will be capped at the amount of free physical RAM or 256 MB, whichever is smaller (with a minimum of 32 MB allocated to StarLogo).
- Scroll-wheel mice should be supported in Java 1.4, thus being supported by StarLogo as we install it on Microsoft Windows. If you have a different platform that comes with its own Java, scroll-wheel mouse support must be added by your platform vender's Java, not by us.
- Support for native MacOSX Java application.
- In Microsoft Windows, changed the default folder that File/Open... and File/Save menu items go to the Users's My Documents folder.
- Swing is now required (and included) on all supported StarLogo platforms. This should fix problems where the control center resize panel bar was not working on MacOS 9.
- Added tooltips. Users can add their own tooltips to their buttons, sliders, monitors, text boxes and legends.
- Added cut-copy-paste support in the Interface window for buttons, sliders, monitors, text boxes, legends and plot widgets.
- We no longer run the compiler every time after you click out of the procedures page. We now run it on-demand, the first time you perform an action that requires compiled code after making a modification to the procedures pane, a button, slider or monitor.
- You can now only resize the patches to sizes 1, 2, 3, 4, 5, 6, 7, 8, 16, and 32. Shapes only show up in sizes 8, 16 and 32.
- Added code template generation feature to make it easier to begin certain kinds of StarLogo projects without training in the StarLogo programming language.
- Added a speed-control slider to enable you to control the speed of StarLogo simulations. Believe it or not, sometimes StarLogo runs too fast. With this slider you can slow it down and even pause it.
- Can now save the patches/turtles as a GIF (without the interface part of the window).
- Added a display in the color bar to show you what color is currently selected. You can also type in your own StarLogo expression (that evaluates to a number between 0 and 140 (larger numbers will be rounded)) to select the perfect color.
- Added a status bar to the main Interface window to show you what patch your cursor is over. Also lets you see the size of a widget as you resize it.
- StarLogo now saves a backup project every three minutes and deletes it when you manually save your project. Think of this as insurance in case StarLogo crashes on you. When StarLogo starts up and tries to load a project that has a backup, it will let you choose which version to keep, the backup or the most recently saved version of the project.
- Put the StarLogo project's name on the Control Center window so you can tell which one is which if you have StarLogo running twice (You can only run StarLogo twice on Windows and Unix).
- Added a trash can to the user interface to make it really obvious how to delete a widget. Drag it to the trash. Note: the trash deletes the widget immediately. There is no undo.
- remove, sublist, insert, remove-element, reverse
- asin, acos, log
- Removed the Stop All button from the Control Center and replaced it with a Stop sign button in the Interface window. When your project is running, you tend to look at the Interface window, not the Control Center. And a button with words was less obvious to click on than a picture of a stop sign.
- Removed the Clear Graphics button from the Control Center. No one ever touched it. And once people started painting things on the patch canvas, they didn't want to casually clear their painting with one click.
- Added a Snap to Grid feature in the Interface window.
- Much of StarLogo has Spanish support. We'll release a spanish-language version of StarLogo soon.
- You can now import pictures (JPG, GIF and PNG) without having Quicktime installed. If you have Quicktime installed (and StarLogo can tell) it'll use it instead, for loading pictures, because Quicktime supports more image formats than we do.
- You can now save the graphing window as a GIF.
- StarLogo can now print any of its windows.
- Paint tools are now always visible instead of hidden behind a toolbar button.
- Added Show Spaces menu item so you can see little squares between words in the procedures pane. This makes it easier for kids to copy code.
- The command center now displays what you type in bold, and what StarLogo returns in plain text. It's prettier, no?
- The default patch size is now 8x8, and there are 51x51 patches.
- You can now turn off the gray border around text widgets.
- Note: partner and partners may only be used textually within a grab statement. A procedure called from within grab does not have access to partner or partners.
- If you used plot commands in your StarLogo 1.x project and load it into StarLogo 2.0, you'll get a new plot widget created in your interface. This is where the plot commands will go. You will not be able to delete this plot widget (unless you remove all the plot commands from your code).
- To push a button from code, you now have to say start<buttonname> instead of <buttonname> in order to avoid name conflicts by users naming the button the same as a procedure.

New Commands Added Since 1.2.2:

- asin, acos
- alive?, alive?-of
- ask-turtles-with, ask-patches-with, ask-frogs-with
- plotxy
- clear-plots
- log
- dolist, dotimes
- sort-num-list, average-of-list, max-of-list, median-of-list, min-of-list, mode-of-list, sdev-of-list, variance-of-list
- average-of-patches, average-of-turtles, median-of-patches, median-of-turtles mode-of-patches, mode-of-turtles, sdev-of-patches, sdev-of-turtles, variance-of-patches, variance-of-turtles
- sum-of-patches-with, min-of-patches-with, max-of-patches-with, average-of-patches-with, median-of-patches-with, mode-of-patches-with, variance-of-patches-with, sdev-of-patches-with
- sum-of-turtles-with, min-of-turtles-with, max-of-turtles-with, average-of-turtles-with, median-of-turtles-with, mode-of-turtles-with, variance-of-turtles-with, sdev-of-turtles-with
- print-status
- insert, remove, remove-element, reverse
- save-next-version
- shape, shape-at, shape-towards
- setshape, setshape-of, setshape-at, setshape-towards
- who-max-of-frogs, who-max-of-frogs-with, who-max-of-turtles, who-max-of-turtles-with, who-min-of-frogs, who-min-of-frogs-with, who-min-of-turtles, who-min-of-turtles-with

Bugs Remaining in 2.0:

- Can't run StarLogo applets via https.
- Windows 2000 and XP introduced a new kind of mouse pointer feature called a pointer shadow. When you have this turned on (which it is by default) it wreaks havoc with graphical Java applications. It causes them to draw much more slowly and makes the cursor flicker on and off really fast. To get much better graphics performance in StarLogo, go to your Mouse control panel, and turn Pointer Shadows off.
- Code templates don't work on MacOS 9 or X. The code doesn't properly interpret the difference between Windows and Mac/Unix line feeds.
- Don't use the backtick (`) character in your StarLogo code or in the Info window. We don't deal with it well.
- On Windows 95, you see the Windows 2000 trash can, rather than the Windows 95 trash can. On Unix systems you always see the Windows 2000 trash can, rather than the ones native to KDE or Gnome or whatever desktop manager you are using.
- The turtle in the about box has a strange smile.
- Many dialog boxes aren't aesthetically pleasing. We'll work on it. Java (AWT and Swing) sure doesn't make this easy.
- MacOS X does not recognize file type and creator codes any more. StarLogo has been changed to open any type of file, but to be safe, on MacOS X we save project with a .slogo ending (and no creator/type code). If you have saved a project in MacOS X and try to use it in MacOS 9/Classic it will not have a proper creator/type code. You'll need to add a creator code of 'StrL' and a type code of 'TEXT' to be able to load it.
- Double-clicking on a project file in MacOS X will properly launch StarLogo, but will not open the project. This is a bug in Java in MacOS X and as of MacOS X 10.2, has not been resolved.
- Still no 3-D holographic cerebral interface.

| Implementation |

StarLogo is based partly on Java code and partly on a language we created called YoYo. YoYo is a variant of Logo that is built on Java and allows you to construct Logo/Java hybrid programs and put them on the Web. We've used YoYo here to write the StarLogo compiler and script our user interface.

Getting Started | Community | Tutorial Commands | Projects | FAQ | Info