Friday, September 29, 2017

Movement in Mote


We're excited to announce several new movement-related features for our Mote application. These features are still in design mode, so do expect bugs here and there, though we've done our best to root out any we could find, prior to the release of version 1.9. As always, help us out by reporting any issue you may find :)

Starting off, we've added a new tool group to add Movement Event Layers (MEL) to the map. In a nutshell, when a token enters a defined MEL area, things happen.

MELs are based off previous tools and inherit all the good stuff we've added to them, such as undo/redo, deletion, grouping, merging (incomplete testing, do at your own risk), and drag relocation. As drawables, MELs can only be seen by GMs 

The most basic event, which triggers automatically, is movement cost. When you want to draw a MEL, you can enter a value for cost, using the upgraded control panel found at the lower right of the map.

You can also set a unique ID for a MEL, here.

New Attributes

To track movement, 2 attributes were added to the token model: Current Movement, and Movement Cap. Each time a token is moved, it's current movement gets updated. Each time a token is picked up and dragged for movement, it's current movement is compared against it's movement cap. 

If a potential path's length (for snapped-to-grid movement) or distance (for unsnapped movement) exceeds the token's set cap, you will get a visual cue in the form of red cells or lines. All movement that exceeds the cap will be automatically denied, should a user set the token down.

To set the values for these new attributes, you can either use the Token Editor dialog, or use the new functions we've added to the Token Properties API (more on this later). Setting a cap will automatically set the current movement to 0. Conversely, blanking out the cap field, will deactivate movement tracking for the token.

To keep with the underlying logical design, a token's current movement is set back to 0, after each initiative round.

Steps vs. Distance

As of this time, we treat movement costs against "steps" instead of how far (distance) a token can travel. Rest assured, the design is still malleable, so this can be changed in the future, once this feature is discussed with the user community.

The main reason for this choice is simplicity. Steps are easier to keep track of, and computations based on them, are easier as well. If the map grid is changed, it will not affect step values.

Of course, one can bind steps to actual distance values, via script, but that's another subject best reserved for another time and with the input of more experienced script writers ;) 

Enforcement

The enforcement of these new movement-related features is active by default.

This can be toggled on the session level. when you start one by hosting a server. Remember, session policies in Mote can be updated on-the-fly, even when the session is ongoing.

Advanced Features

Apart from the basic functionality of MELs, you can also set them to trigger scripts once a token is placed within it's bounds.

Unlike the usual event hooks, we try to make things simpler for designers by:
  •  Predefining what library to have. What this means is, in order for user-defined event hooks to work, you need to have a library token named lib:mel in your campaign/framework. If you don't have one yet, just drop in a new token and name it lib:mel.

    This is where you will place your macro events. If there is no such library token present, Mote will ignore the significance of a token landing on a MEL.
  • You can name your macro events any way you like. To enable their invocation, when you are about to draw a MEL, make sure you associate it with a macro event by typing in the name of the macro on the Event ID field in the control panel. Event IDs are different from MEL IDs, although you can use the same value for both, because, why not?

  • All triggered events will have the following set of helpful variables:(subject to change in the future):
    • layer.id: the ID of the triggered MEL
    • event.id: self-reference for the event associated with the triggered MEL
    • token.id: the primary token that triggered the MEL
    • move.distance: how far the token moved.
    • move.contacts: a JSON array of coordinates where the token intersected the MEL bounds.
  • New script functions for this featuer have been added they are: token.movement, token.setMovement, token.movementCap, token.setMovementCap, token.resetMovement, and token.toggleMovement.
Editing

MELs are limitedly editable, and you can only do so one at a time, even when a group of MELs, is selected (i..e the primary MEL will hold focus). 

To edit a MEL, just click to select the one you want to change. You will see the control panel update its contents. For now, the only editable items are MEL Id, Event ID, and Movement Cost.

Borders

Since the areas of Mote drawables also include their borders, you must take this into consideration when laying MELs. If you don't want the added border area, make sure you set the borderless option (i.e. a white square with a red diagonal line running through it), before you draw.

Closing

We hope you all enjoy this new feature, and we'll be eager to hear if and when you incorporate this into your games :)

Help us improve on it by giving us feedback, either in our forums, or on G+. 

Thanks guys!

Video Hangouts

Subscribers to Sandstorm's Full-feature plan can now host video hangouts in their sessions! When creating a server, just make sure you...