Friday
Jul162010

Getting Started

One of the more common things I hear from new users of MiceOnABeam is "What's the best way to get started?".  They're impressed by the tool's capabilities, the comprehensive online documentation and find the tutorial helpful, yet the design paradigm is different enough that it can still be difficult to know how to get started on a new script model.

Component LibraryTo assist these new users, a Model Library is now available. The library consists of an initial set of model examples that illustrate designs for some basic Second Life® activities such as animating an avatar or displaying a menu dialog.

As MiceOnABeam is a visual design tool, pictures of each state of a model are shown along with short descriptions of the logic flow between the connected modeling elements.

Using a Model Example
The support for reusable components is a great feature of MiceOnABeam and the Component Library is key to this. Model examples should be downloaded and stored within the Library folder of your MiceOnABeam user directory. They can then be accessed and their descriptions viewed via the Component Library browser from within the tool.

To use a component, click and drag it from the browser into a State Editor, then connect it to other modeling elements within your script model as required.

While these models were created for illustrative purposes only, they can be configured/customized and incorporated into your designs if desired. Note that the models are provided free of charge but without warranty of any kind. You are free to modify and redistribute them.

Initial Set of Examples
The initial set of model examples include:

  • AnimateAvatar: Animates an avatar with a set animation.
  • AnimateOnSit: Animates an avatar that sits on a prim.
  • ChatAnimate: Animates an avatar that chats a desired animation.
  • ChatCommands: Chat command processor.
  • FollowAvatar: Causes a prim to follow it's owner.
  • MoveAvatar: Moves an avatar via a prim.
  • SetAvatar: Chat commands to animate; set floating text; turn on a face light.
  • ShowMenu: Displays a menu & waits for the user to make a button selection.
  • Timer: Shows how a model can be subject to an overall timeout constraint.
  • And more...

Model Example


I'm working on more model examples for inclusion in the library down the road. A Community Library has also been set up where you can share models that you think will be useful to others.

Antonius

Wednesday
Jun092010

MiceOnABeam Version 1.0.0 General Release

One of the great things about being a self-employed software developer is that you get to do the wide range of activities that comprise the designing, building, testing, deploying and marketing of a new software application. It's simply impossible to get bored and it's certainly been a great ride creating MiceOnABeam and being able to announce it's general release.

Free and Professional Versions of MiceOnABeam

With the general release MiceOnABeam is now provided in Free and Professional versions. A Free version will always be made available with each new release as I feel strongly that's it's important to get the program out there and make it available to everyone regardless of their ability to pay.

Aside from a couple of restrictions (code generation is limited to a maximum of five states and the new Performance Analysis feature is disabled) the free version is otherwise fully functional and can be used to create scripts for the Second Life world.

At the same time I'd like to defray some of the expenses involved in developing the program so I've created a Professional version which has no restrictions.  A license for this version can be purchased for $L3000 at Second Life's XStreet Marketplace.

The Model IS the Implemention

One of the key benefits developing a MiceOnABeam model for a script is that the script's architecture not only becomes clearer to understand, but is actually represented by concrete design components that are automatically translated to LSL code. In other words, the model is the implementation!

This enables the development of a whole range of features that can operate at the abstraction level of the model itself and provide higher-level insights into the design than would otherwise be available through a similar analysis of a script coded directly.

The new Performance Analysis feature is an initial step in this direction. Read on below for full details.

Performance Analysis

Delays and lag are significant issues to be considered when developing scripts for the Second Life world. As a result scripters must pay careful attention to the execution times of processing intensive activities or algorithms.

To address this need, MiceOnABeam models can now be automatically instrumented with LSL code to measure and report execution timings for selected components within a script model. This is a powerful new feature that can help users identify performance bottlenecks in their designs.

Each model component type can be configured to monitor either all usages (e.g., monitor all States in the model) or only particular instances of that type.

For monitored components users can select to output the number of times a component's code has been executed, it's cumulative execution time and it's average execution time.

STATS>> *** PERFORMANCE STATS ***       Count   Tot Time  Avg Time
[09:14] Object: STATS>> EVENT_listen:     3     2.940365  0.980122
[09:14] Object: STATS>> EVENT_sensor:     0     0.000000  0.000000
[09:14] Object: STATS>> EVENT_timer:      8     0.719490  0.089936
[09:14] Object: STATS>> EVENT_touch_end:  2     0.789647  0.394824

Down the Road

Next up is the development of a library of free re-usable MiceOnABeam script models. Given that visual scripting is new for many scripters (or perhaps they used modeling techniques for analysis and design- but not for implementation), I recognize that it is essential to have a set of reusable building-blocks to help new users get started.

The availability of building-blocks together with MiceOnABeam will also hopefully encourage and enable Second Life members who have been intimidated by the complexity of programming to augment their SL experience by being able to add behavior to their SL creations.

An open library will also be made available on the MiceOnABeam website where contributions by users will be made available for anyone to download and use.

Later in the year and contingent upon Linden Lab plans, MiceOnABeam will support the use of the C# language for use within a script model and will generate a complete C#-based script.

For full details on the release please check out the Release Notes.

Antonius

Sunday
Mar212010

MiceOnABeam Version 0.3.0B Released

MiceOnABeam version 0.3.0 Beta has been released and is now available for downloading here. All users of version 0.2.0 Beta should switch to the new release as soon as possible.

This is primarily a maintenance release that fixes some important bugs, but I did take the opportunity to add in two key optimizations to the code generation.

Code Generation Improvements

The Group Transition was a prime candidate for some improvement. Recall that a Group Transition is used when the code handling a particular LSL event is common to two or more states, e.g., an on_rez event. This is a very powerful and useful feature.

In the generated code, the transition action code was shared, but the Guard Condition code together with setup code to invoke the Group Transition was not.  With this release all such code common to several states is now shared where possible.

Another feature whose code generation has been optimized is the Final State which signifies completion of the script model or portion thereof. A Completion Transition is used in conjunction with a Final State to indicate the next state to transition to when a Final State has been entered from within a Composite State.

In previous releases, if a Composite State had a Completion Transition, then it would be propagated to each substate, whether or not the completion event could have been generated from within the substate. With this release the code generator will only create a Completion Transition on those substates that contain a Final State somewhere within their nested context.

Code Generation Options

For convenience a new menu item Generate LSL (Optimized) has been added to the Script menu within the main menu bar. This temporarily adjusts the code generation options resulting in more compact and optimized LSL code generated.

If you are using an external LSL simulator for debugging your scripts the non-optimized version may be desirable so that you can read the self-commented code and can take advantage of the execution tracing options. However the optimized version should almost always be used to generate the final, tested script for the SL environment.

Support for Pre-Release LSL functions

Also of interest in v0.3.0B is support for upcoming LSL functions that will be supported in a future SL release (functions relating to getting & setting individual prim link parameters & various prim media functions & constants). These are now supported by the MiceOnABeam parser and code editor for the convenience of those users using pre-release versions of the SL server & viewer.

For full details on the release please check out Release Notes.

Antonius

Saturday
Mar062010

Live At Last!

I had the pleasure a couple of weeks ago of being interviewed by the ravishing Dousa Dragonash on Metaworld3's Nightly News channel www.livestream.com/metaworld3.

She had heard about the recent beta release of MiceOnABeam and had all sorts of questions on the rationale for developing the program and it's applicability for new SL scripters as well as experienced ones.

Well, being interviewed on a virtual world live broadcast was certainly a new one for me as you'll notice by the stiffness of my body throughout the interview. (My avatar has yet to learn to walk & chew gum at the same time. :-)  But it was a great experience none the less.

The Nightly News is filmed at MetaverseTV's neat studios in world. Dousa will also be known to fans of the MBC News virtual news cast.

The interview can be found here.

Antonius

Saturday
Mar062010

Mea Culpa

A critical bug has been reported in v0.2.0B that occurs when using a Final State modeling component. MiceOnABeam will crash when drawing a transition to a Final State.

The problem was introduced by a small last minute addition to v0.2.0B that ensured that a transition with a Completion event could not be directly connected to a Final State (thereby creating an infinite loop in the model).

Fortunately there's a simple workaround: Just create the new transition first to another state. Then select and drag the transition's end-point over to the Final State.

Sorry for any inconvenience that this may have caused anyone. The has been fixed for the upcoming v0.3.0B release due out the week of March 22nd.

Antonius