Thursday, November 16, 2017

Mote 1.11 Changelog


What's new:

This version has a ton of internal changes which we'll itemize below. This major release marks the start of the Global Repository (GREP, don't laugh anyone LOL) experiment. "Experiment", because it's future is dependent on Sandstorm's success. That's just reality folks ;)

You can read more about it on our blog post on the subject.

We've also overhauled z-ordering (draw order) in Mote, using an algorithm we cam up with. More details about this can be found on our other new blog post.

Anyway, we hope you all enjoy this release!

  • This is the final client config for Sandstorm. Please test.
  • The active perspective gets saved on exiting the application.
  • Addressed holow area edge case for path finding and MELs, especially when used for unsnapped movement
  • Improved path finding logic. 
  • New hotkeys for when the map has focus. Alt + 1 to 4 selects the active layer
  • Added support for extra mouse buttons (i.e. back and forth). For now, this was only applied to the map.

    New functionalities are:


    • Forward button = Redo last drawn object
    • Back button = Undo last drawn object
    • Shift + Forward button = Go to next map (cycles)
    • Shift + Back button = Go to previous map (cycles)
    • Ctrl + Forward button = Redo last drawn blocking or fog object.
    • Ctrl + Back button = Undo last drawn blocking or fog object.
We forgot to update the context help list prior to making this release. We'll get it on the next one ;)
  • function.define has a new parameter to define a description for what the UDF, returns. For more info, review its auto-completion entry.
  • json.get now defaults to JSON object, when an empty or blank entry is passed by the user.
  • The Sandstorm Login dialog can now be properly canceled and closed via the dialog control (i.e. 'X' window control). Escape to cancel & close, will also work.
  • We added an entry to the Tools menu to force the initial function correction process, which is part of the file conversion when converting an MT campaign or framework to Mote 1.6+. We realized that some users were still using some obsolete methods, even after 1.6+, and couldn't avail of the automated process.
Fixed:
  • Reported issues w/ Window API functions
  • Reported issues w/ Token Bar functions
  • Sandstorm login dialog could not be closed. Now it can be closed, and hitting Escapse, will also close this dialog.
  • User-defined functions created via function.define will now display the its description properly.
  • Erroneous code completion entries.
  • Several minor issues and bugs.
  • Disabled Dynamic Blocking on a previous version. It should be working again.

Sandstorm: Global Repository

The Global Repository (GREP) is an experimental Sandstorm module we've recently completed. It is a feature where users subscribed to Session Hosting on our Sandstorm service, can upload image data found within their framework or campaigns, for Sandstorm to host and disseminate to their players.

Long-time users of Mote know that a repository allows others who connect to a game session to receive game assets a lot quicker. This is because they are able to download these assets directly from an online source, as opposed to getting them from the GM's machine, where the transfer speed is often bottle-necked by the available upload bandwidth of the session's host.

Basically, the system works this way: A subscriber to Session Hosting (usually the GM), has full access to it. They can perform uploads to the GREP, and clients connecting to their game sessions, will be served assets by Sandstorm, if available and as needed.

Beyond just being a content delivery service, the GREP lays the foundation for a browsable library of user-driven, contributed content, that everyone around the world, can access and use for their gaming needs.

Mote 1.11 is the first version of the client, that uses this repository. For a limited time, all users can freely upload image assets, without any size limits. This will allow everyone to test the service as well help us out with ironing out any issues, before Sandstorm goes live.

To begin the process, simply log into Sandstorm via Mote, select any number of tokens as upload candidates, right-click on one of the selected tokens to open the context menu, and select the option to upload the assets to Sandstorm.

Note that all images that are associated to a token, such as the portrait image and the actual token image, will be processed for upload. At the end of the testing period we've set aside for Sandstorm (which is ending soon, by the way), all uploaded content will be purged, and only subscribers to Session Hosting, can avail of this feature for their gaming group. Users should also expect an upload size limit, as well.

Uploads are tagged, according to the genres selected by the uploader. You will understand what we mean by this, when you first use the feature. An asset will be attributed to the user who first uploads it into the GREP (by way of e-mail address), and will be named or identified, by the file name of the image's source. With these things in mind, do name your uploads (i.e. all associated images) with something thoughtful and/or intuitive, as this will be immutable for the entire time the asset exists in the GREP. Attributions will not be made public, but will rather be used to notify an uploader, of any concerns regarding an upload.

We do want to ask everyone to only upload content that is legally permissible to share. For the sake of everyone who will come to use this service, we also ask people to only upload content that is helpful to the VTT experience. Nothing that is not safe for work (i.e. NSFW), please LOL.

Part of our future-proofing for this service, is to have a takedown process, for any content that is reported to be in breach of copyrights, or any other claims of ownership, and you may experience a sudden loss of access to an upload, if we are told to remove it from the GREP. We will release guidelines and fair usage info, once Sandstorm goes live for public use. We ask users to adhere to these policies, as any violation of them policies, will be met with penalties.

While Mote's version of repositories allows the serving of other Mote-specific files (specifically audio and databases), the GREP can only serve image assets, for now. The "lifetime" of GREP and its expansion to allow the other file types is largely dependent on the success of Sandstorm, as a whole. This holds true for the rest of our developmental branches, so please do help us out in growing Sandstorm's subscriber base :D

New World Order

Most of you know what z-ordering is. For those who don't, in Mote, it simply is the numerical order by which map objects and entities, are drawn, stacked from lowest to highest.

Mote inherited the z-Ordering scheme from MT, which basically used the highest and lowest values of rank, in order to place what's newly added to a map. Drawing order was also determined by which layer the object, background, or entity (e.g token), was on. In this system, even if the z-order value placed a background stamp above, let's say, player tokens, it will always get drawn at the bottom of such entities.

When we made changes in Mote, we inadvertently affected this system, ending up with z-order overruling layer placement. This caused some chaos on imported campaigns and frameworks, where objects and entities suddenly appeared based on what their z-Order told them to be.

Back then, we applied a quick fix, basically still keeping the MT system, and applying some methods to return the relevance of layer placement. Unfortunately, this solution was not comprehensive, and recent user reports exposed its weaknesses. Reverting back to what MT had, is also a no-go. the system has its own flaws as well.

In 1.11, we went back to this part of the code, discussed and implemented what we hope to be, a final solution. Our new algorithm looks like this:

  • Separate backgrounds and map entities into 2 groups. Backgrounds z-ordering will be from 0 and negative "infinity". Everything else will start from 1 to positive "infinity".
  • If something is added to the map, it's z-order will be determined by what it's placed on.

    If it's placed on a vacant part of the map, it will have a z-order rank based on the layer it's on. If it's placed on a stack of other map objects or entities, it will get the highest rank, for that stack. Other components of the stack, will have their z-ordering, adjusted accordingly.
  • Any other stacks, entities, or objects that have some relation to the affected stack, will also have their values adjusted. We term such a collection as a cluster.
We've also upgraded the Fix Map Object and Entity Types action under the Map menu. Apart from setting Token/Object/Background typing according to the layer it is found on, it will set an initial z-order of 0 for Backgrounds, and 1 for everything else.

Users will also be prompted if they want to reset z-order values for everything, using an extension of our new algorithm. This will "compress" stacks and set z-ordering for "standalone" stamps and tokens, to values in the new ordering that are relative to what they originally were in the former ordering.

We hope you these changes are welcome to you all. Note that this will only affect campaigns and/or frameworks, from this point on. Any exsiting values for z-ordering will remain, as long as these are not submitted either through the action mentioned above, or an automatic correction is made, when something is moved in between layers, or an invalid value for z-ordering, is set.

As with all such changes to Mote, we advise that users keep backups of their campaigns/frameworks.

Cheers!


.

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...