Index of /~abo/projects/wilr/

NameLast ModifiedSizeType
../ -  Directory
arc/2003-Feb-02 00:52:44-  Directory
installer/2003-Oct-18 17:36:31-  Directory
movies/2003-Feb-02 07:06:04-  Directory
swf/2003-Feb-02 05:57:51-  Directory
README.txt2003-Feb-02 05:57:324.5Ktext/plain;charset=utf-8
TODO.txt2003-Feb-02 05:57:3223.1Ktext/plain;charset=utf-8
wilr.prj2003-Feb-02 08:34:1211.3Kapplication/octet-stream
Warlpirri Interactive Learning Resource Project

This was a Macromedia Director project developed Primarily by Wendy Baarda.
I (Donovan Baarda) did some work on scripting and integrating the final
movie player from the multitude of movies and casts. Documentation of my
work on this project can be found online at;

A diary and mbox format mailbox of correspondance relating to my
contributions to this project can be found in the swf directory. Various
historical files and media can be found in the arc directory. The Macromedia
Director files can be found in the wendy directory.

The "wilr-aui" projectors that run the program on Windows or Mac can be
found in the "movies" directory. It can be installed to hard disk by copying
the entire contents of the "movies" directory into a suitable directory.
Saving of user scores does not work when the projectors are run directly off
the CD, only when running off a writable hard disk.

Guidelines for Macromedia Director Projects

After battling through trying to clean up movies created by Wendy, the
following guidelines have become apparent. Mostly they relate to reducing
duplication. Duplication is bad, because it spreads stuff all over the
place. This means you spread mistakes everywhere, so when you fix or improve
it, you have to fix it everywhere it was duplicated, and often you miss
places. Unfortunately, Macromedia Director seems to encourage duplication,
so you have to actively work at avoiding it in the short term to reap the
long term benefits.

Rule 1) Never copy cast members! The Edit;Copy menu item is off-bounds when
manipulating casts. If you need to use a cast member in another
movie, move it into an external library and link that library.

Rule 2) Don't copy behaviors and modify them! If you find yourself copying
and slightly modifying large behaviours, instead think about what it is that
is different and try to make one behaviour handle all the special cases.
Either that or factor out the common parts of the behavior into a movie
script and call it from the specialist behaviour.

Rule 3) Before you put a cast member into a library, check that it doesn't
already exist! That includes in other external libraries. If you find that a
member already exists for that purpose but is not as good, replace it, don't
just add it. This means the other movies will benefit from the new improved
version. Make sure you put the replacement cast member into exactly the same
spot as the old one.

Rule 4) Give cast members meaningful and unique names! This makes it much
easier to refer to them in scripts, and helps you realise when you are about
to duplicate something.

Rule 5) Never delete anything from an external library! It is nearly
impossible to know if that cast member is used or not in any of the movies,
and deleting it will break them. This rule makes the other rules about
avoiding duplication even more critical, because once you break them, you
can't fix it. However, the one exception to this rule is when you _want_ to
break things and are prepared to go through all the movies and fix them.

Rule 6) put related cast members into the same cast library. The idea of
breaking casts up based on media type is bad, because it means they
libraries are not self-contained and break easer when the other library gets
changed (as with the faces.cst loops and sounds from snd tija.cst). This
means fancy scripts should be in the same library as the cast members they

Rule 7) Don't write piddly little behaviours again and again and again. I
know you didn't use Edit:Copy, but the result is the same. Instead put the
behaviour in a cast library and drag-n-drop it where you need it. Most of
these behaviours are already in the scrip.cst. Even if they are simple,
sometimes you find a better way to do it, and it's much easier to change it
once in a library than 50 times all over the place.

Rule 8) don't write scripts that refer to sprites (or anything else) by
number. These scripts are so fragile they shatter with the smallest prod,
even if you think it is unrelated. Use "me.spriteNum" instead. The other
benefit of this is makes the behaviour re-usable because you can drag it
onto any sprite and it will work.

These simple rules will save much heartache and time later on. In the short
term they will force you to think harder about casts and scripts, but in the
long term you will have less that needs fixing, and fixing things will be