New DEV/Testing Builds!

New build announcements plus site news and changes.

Moderators: dorpond, trevor, Azhrei, Craig

Craig
Great Wyrm
Posts: 2107
Joined: Sun Jun 22, 2008 7:53 pm
Location: Melbourne, Australia

New DEV/Testing Builds!

Post by Craig »

Warning... This is a Development build it could blow up!!!!


Now that's out of the way, going forward the numbering of builds will indicate the type of build, with
1.4.<even number>.x beign a stable build that will mostly be about bug fixes and maybe some small changes that dont change campaing format or break compatability, and
1.4.<odd number>.x being development builds, which maybe unstable and probably shouldnt be used for your usual gaming unless you have adventerous players (not roleplaying adventures...)

The idea being we put big changes into 1.4.<odd>.x and use those builds to fix it up and when we think its stable release a 1.4.<even>.0 and then the next odd one opens for new features and bug fix patches can still be applied to the even numbered one that people can use week to week. Hopefully this should help us get new things in quicker as we dont have to worry about a release that breaks something (if its odd) and everyone can try the new things when they are available and help us test it/give feedback...
I hope it goes with out saying but I am going to say it anyway do NOT edit your campaign in this version and then expect to go back to 1.4.0.x, please make a backup!


One important new change is the versions that contain a Java VM with the download so a seperate download/install of Java is no longer required if you do not want to do this (downloads without the packaged Java Virtual Machine will also still be available). If you download one of these files when you first run MapTool it will need to go through an installation process, this could take anywhere between 2 and 10 minutes depending on the speed of your computer, this only happens the first time you run it (for each new version). If the install takes an extrodinarly long amount of time to run please let us know your computer/os/amount of memory etc. The two .zip files are the non JVM distributions, all other files contain the JVM just be sure to pick the correct one for your system ;)

The dev builds can currently be found at http://maptool.craigs-stuff.net/test-builds/ (they will move to main maptool site at some point). This version requires java 1.8, although if you download one of the downloads that contain the VM/installer this is not something you will have to worry about :)


1.4.1.5 Release Notes.
see 1.4.1.4 (that version had installation problems which are fixed in this version)

1.4.1.4 Release Notes.
http://forums.rptools.net/viewtopic.php?p=263495#p263495


1.4.1.3 Release Notes.
New Features
  • JavaScript API (first tentative steps) (Craig)
  • Draw explorer additions (Jagged)
    • set and get properties and merge drawing functions
  • Light/Fow/VBL (Jamz)
    • New checkRegion method to do a more relaxed bounds check, for use with VBL Tokens.
    • VBL Tokens now only show when token can "see" them. Currently 2/9ths of token need to be seen, that is 2 out of 9 "regions".
    • Multi-threaded one of the heavier chunks of code that processes Light. Slight improvements in some case, substantial improvements in others. YMMV
    • Beginning work on showing VisionBlocking Token over FoW. More enhancements to come.
    • New lighting option, "lumens" allows fow to be concealed vs revealed, ie "Magical Darkness" effect.
    • Token FoW path logic now multi-threaded to improve performance
    • drawPolygonVBL Macro bug fixed if x OR y where the same as last coordinate it would not draw.
    • FoW changes; new buttons drive what FoW is displayed [GM, All, PC, NPC] and is driven by ownership/GM permissions. Player clients can now see FoW for NPC's if they own them. GM's can now see FoW based on NPC, PC or "adversaries", ie tokens with no ownership. This gives GM's a better perspective on what each token can "see".
    • NPC's can now reveal FoW on movement (is Server option is checked). This allows player clients who "own" NPC tokens to freely move them, exposing FoW along the way.
    • New Macro function, exposeAllOwnedArea; exposes FoW for any tokens owned by the user
    • New Macro function, restoreFoW; resets all FoW for the map, duplicates the FoW reset when you import a new map sans dialog
    • New Map Menu, Restore Fog-of-War; duplicates the FoW reset when you import a new map with dialog prompt.
    • New Macro function, toggleFoW, duplicates menu function of the same
    • New Macro function, exposeFogAtWaypoints, duplicates menu function of the same
    • Map Menu option, FoW: Expose only at waypoints; Exposes Fow only at waypoints vs every cell along a tokens path
    • Lights has a new option, lumens (to be documented)
    • FoW has several changes to what a client or GM view can see is now based on "ownership" vs NPC/PC. (to be documented)
    • FoW "view" buttons control which tokens (via ownership) are used to show the current FoW. ie a GM can now see what his antagonists see, what the PC's see, what all NPC's can see, or what everyone can see. PC's get the same options by restricted again by ownership.
  • New Deployment Option: jWrapper (Jamz)
    • Updated MT Launcher to play nicely with jWrapper (mt.cfg moved to users .maptool/config directory to persist across upgrades)
    • New Icon created for Launcher
    • New Splash screen created for MapTool (also used for jWrapper installing splash)
    • SplashScreen class updated to support transparent background images and new coords for version #
    • New command line options for MapTool, debug, version, monitor, fullscreen, width, height, xpos, ypos. use -w=500 or -width=500 for instance to set MT frame width to 500. -fullscreen has no param.
    Other (Jamz)
    • Tokens now save a "large" thumbnail for use with larger preview thumbs. Small thumbnail is still saved for backwards compatibility with older MT versions.
    • Token "Path" improvements, fixes issue when dragging nonSnapToGrid with snapToGrid tokens together.
    • Token popup menu, Save As... now works on multiple tokens. Options added to default to token name or GM name as well as skip/show all prompts during save.
    • Token popup menu, Block Vision menu option creates VBL under token based on non-transparent pixels. Further refinements to be added...
    • Statusbar; Asset Cache Status shows disk spaced used by Assets in users .maptool folder. Double click on status flushes disk cache.
    • Statusbar; Image Thumbs Cache Status shows disk spaced used by Image thumbnails in users .maptool folder. Double click on status flushes disk cache.
    • Statusbar; User home free space Status shows free disk space for users home folder (where .maptool resides).
    • Asset Tree Right-Click menu option "Rescan..." to rescan a directory (as MT caches folder contents after they are read)
    • Thumbnail size increased to 500x500. This gives a much better preview of larger images (like maps) in the asset preview window now that they can be scaled with control+mousewheel.
    • Path fixes! These fixes come from Lee way back to 1.3b89 patches. It fixes snapToGrid and nonSnapToGrid tokens are moved together. (Lee/Jamz)
    • Save As Compatible lays the ground work to strip various fields/classes "on campaign save" so it's compatible with an older version.
Bug Fixes
  • MapTool Launcher Bug Fixes (Jamz)
    • Updated gradle build to reflect new launch.properties config to replace mt.cfg
    • launch.properties is now updated and stored as a resource in the JAR to be used as a default for new installations and to update JAR/JRE path values on new installations
    • New property MAPTOOL_VERSION added to track launch.properties and update properly when new MapTool version detected
    • Fixed Logging Bug, logging selections now persist properly across multiple launches
    • Default configuration (launch.properties) should properly install itself across all OS types
    • If jWrapper JRE is used (default unless changed) and a new version is detected, the config property will be updated
    • copyXmlFiles method commented out, default logging xml files stored in .maptool/logging directory
    • launch.properties in the same directory as the JAR will be used instead of what is stored in .maptool/config directory to allow mutltiple versions to be installed/ran manually
    • Updated template to remove mt.cfg references
  • Other
    • Fix for slow token deletion. https://github.com/RPTools/maptool/issues/47 (Craig)
    • Bug Fix: autoResize feature (Right-Click drag) https://github.com/RPTools/maptool/issues/49 (Jamz)
    • Maptool installing spash updated to match MT splash (added shadow under gear logo) (Jamz)
    • FoW bug fixed where calls to expose FoW were not passed to clients (Jamz)
    • Bug fix, statsheet will no longer show (and thus get in the way) when a token is being dragged. It will only show "on hover" when no mouse buttons are pressed. (Jamz)
    • Asset Tree duplicate listener removed which was causing asset tree contents to be refreshed twice. (Jamz)
    • AutoResize dialog bug fixed for vertical anchor text. (Jamz)
    • Fix for incorrect dock name and menu name in Mac OS X (Jamz)
Build/refactoring/"plumbing" related (Jamz)
  • Update gradle.properties.sample
  • Spotless prep for license application across java source.
  • Several new gradle tasks created to support fat jar creation and jWrapper build
  • Sample gradle.properties.sample file showing properties needed to run jWrapper build
  • Token class implements Cloneable now
  • Updated Spotless to 1.3.3 which includes 37 formatter fixes from Eclipse.
  • A couple of "formatting" changes to classes due to Spotless update (only a few classes, very minor)


JavaScript Additions
It is now possible to evaluate JavaScript with the MTScript macro js.eval(), .e.g {js.eval('return 1+1')}.
The JavaScript is wrapped up to stop scripts interfering with each other accidently so the return in the above is important. I know its not full JavaScript scripting at the moment, but other things have to happen before we can get the adding of complete scripts working. So its a case of one step at a time, and this allows us to create and test the API for full scripting (as well as get feedback) in preperation for when we can do the rest. The js.eval() function will remain even when there is full JavaScript scripting so its safe to use it in MTScript macros going forward.

There are two global objects available to your scripts.
MapTool, which holds objects/functions for interacting with (you guessed it MapTool)
MTScript, which holds objects/functions for interacting with MapTool Script/macro language.
As I said before there is not a whole lot yet just the behind the scenes stuff and some functionality to test different things (but you can still write some of your complex code as java script if you want as you can easily pass information back and forward between MTScript and JavaScript)
Strings, Numbers, JSON objects/arrays should all be converted to the correct representation when passing between MTScript and JavaScript

Broadcast
[js.eval("MapTool.chat.broadcast('This is a test')")]
[js.eval("MapTool.chat.broadcastTo(['gm'],'This is a test too')")]
[js.eval("MapTool.chat.broadcastToGM('This is a test to GMs')")]

ClientInfo
[js.eval('return MapTool.clientInfo.faceEdge()')]
[js.eval('return MapTool.clientInfo.faceVertex()')]
[js.eval('return MapTool.clientInfo.portraitSize()')]
[js.eval('return MapTool.clientInfo.showStatSheet()')]
[js.eval('return MapTool.clientInfo.version()')]
[js.eval('return MapTool.clientInfo.fullScreen()')]
[js.eval('return MapTool.clientInfo.timeInMs()')]
[js.eval('return MapTool.clientInfo.timeDate()')]
[js.eval('return MapTool.clientInfo.libraryTokens()')]
[js.eval('return MapTool.clientInfo.userDefinedFunctions()')]

Executing a MTScript macro and return result to JavaScript
[js.eval("MTScript.evalMacro('{a = a + 2d6}')")]
[js.eval("MTScript.execMacro('{a = 20d6}')")]

Reading/Setting MTScript macro variables
[js.eval("return MTScript.getVariable('a') +12")]
[a = js.eval("return { val1: 'a', val2: 'b' }")][json.get(a, 'val2')]
[a = js.eval("return [111,2,333,44]")] [json.get(a,2)]
[js.eval("MTScript.setVariable('a', 12)")][a]


Retrieve Tokens on a map and display thier name
(Unfortionately you can not do more than this yet)
[js.eval("return MapTool.tokens.getMapTokens()")]
[js.eval("return MapTool.tokens.getMapTokens()[0].getName()")]
[js.eval("return MapTool.tokens.getMapTokens()[1].getName()")]

Abort/Raise Error/Assert MTScript style
[js.eval("MTScript.raiseError('What an Error!?!?')")]
[js.eval("MTScript.abort()")]
[js.eval("MTScript.mtsAssert(true, 'nothing to see here')")]
[js.eval("MTScript.mtsAssert(false, 'something to see here')")]

User avatar
JamzTheMan
Great Wyrm
Posts: 1872
Joined: Mon May 10, 2010 12:59 pm
Location: Chicagoland
Contact:

Re: New DEV/Testing Builds!

Post by JamzTheMan »

Thanks Craig!

FYI, for those trying it out, if you use the wrapped install, it will should leave your current MapTool working as is. It does however share your .maptool user directory (so Assets, thumbs, auto-save, etc) by default, so backup, backup, and backup your campaign files.

Also, these builds are great jump starts for Macro/Framework developers. You can get a jump on using new macro code and take advantage of new functionality so your framework/macros will be ready for the next stable release! Also, great time to offer feedback/suggestions on anything that may have issues or just make life easier on you.
-Jamz
____________________
Custom MapTool 1.4.x.x Fork: maptool.nerps.net
Custom TokenTool 2.0 Fork: tokentool.nerps.net
More information here: MapTool Nerps! Fork

Craig
Great Wyrm
Posts: 2107
Joined: Sun Jun 22, 2008 7:53 pm
Location: Melbourne, Australia

Re: New DEV/Testing Builds!

Post by Craig »

Just one more important note!

There is nothing in place yet stopping you at the moment from creating an infinite loop in JavaScript and locking up MapTool, so if you are unsure please save your campaign before testing a macro change as you may lock up maptool.

User avatar
Jagged
Great Wyrm
Posts: 1306
Joined: Mon Sep 15, 2008 9:27 am
Location: Bristol, UK

Re: New DEV/Testing Builds!

Post by Jagged »

JS Functions, very exciting :)

User avatar
Full Bleed
Demigod
Posts: 4736
Joined: Sun Feb 25, 2007 11:53 am
Location: FL

Re: New DEV/Testing Builds!

Post by Full Bleed »

Craig wrote:It is now possible to evaluate JavaScript with the MTScript macro js.eval()
So, is there a performance benefit from using this?
Maptool is the Millennium Falcon of VTT's -- "She may not look like much, but she's got it where it counts."

Craig
Great Wyrm
Posts: 2107
Joined: Sun Jun 22, 2008 7:53 pm
Location: Melbourne, Australia

Re: New DEV/Testing Builds!

Post by Craig »

Full Bleed wrote:
Craig wrote:It is now possible to evaluate JavaScript with the MTScript macro js.eval()
So, is there a performance benefit from using this?
For small one/two liners in js.eval() nah, once there is support for a way to add more complex scripts for the more complicated stuff there should be significant performance benefits (as long as its not just a look that calls MTScript ;) ).
Having said that if people want to experiment with more complicated scripts there should be no reason that they couldn't put them in a property/table and do something like [js.eval(getProperty("propname"))], at the moment though you would need to get the info you want to operate in MTScript add it to say a json and then operate on it in the JavaScript.

Craig
Great Wyrm
Posts: 2107
Joined: Sun Jun 22, 2008 7:53 pm
Location: Melbourne, Australia

Re: New DEV/Testing Builds!

Post by Craig »

Craig wrote:
Full Bleed wrote: So, is there a performance benefit from using this?
For small one/two liners in js.eval() nah, once there is support for a way to add more complex scripts for the more complicated stuff there should be significant performance benefits (as long as its not just a look that calls MTScript ;) ).
Having said that if people want to experiment with more complicated scripts there should be no reason that they couldn't put them in a property/table and do something like [js.eval(getProperty("propname"))], at the moment though you would need to get the info you want to operate in MTScript add it to say a json and then operate on it in the JavaScript.
Just for a rough idea (these are obviously contrived examples but the difference should give you a good idea how much faster it will be)

For loop just adding 1 to a variable each time.

Code: Select all

[h: start=json.get(getInfo("client"), "timeInMs")]
[js.eval('var a= 0; for (var i = 0; i < 10000; i++) var a = a +1; return a')]
[h: end=json.get(getInfo("client"), "timeInMs")]
{end - start}
Run 1: 22ms
Run 2: 4ms
Run 3: 5ms
Run 4: 3ms
Run 5: 2ms

vs MTScript version

Code: Select all

[h: start=json.get(getInfo("client"), "timeInMs")]
[a = 0][for(i,0, 10000),h: a = a + 1][a]
[h: end=json.get(getInfo("client"), "timeInMs")]
{end - start}
Run 1: 1797ms
Run 2: 1793ms
Run 3: 1813ms
Run 4: 1784ms
Run 5: 1732ms


Looping through 10,000 values and adding them up (the roll is outside the timing in both cases as its not what we are timing)

Code: Select all

[h: rnd = json.rolls("3d6", 10000)]
[h: start=json.get(getInfo("client"), "timeInMs")]
[r: js.eval('var a= 0; var rnd = MTScript.getVariable("rnd"); for (var i = 0; i < rnd.length; i++) {a = a + rnd[i];} return a')]<br>
[h: end=json.get(getInfo("client"), "timeInMs")]
{end - start}
Run 1: 72ms
Run 2: 10ms
Run 3: 6ms
Run 4: 6ms
Run 5: 7ms

MTScript

Code: Select all

[h: rnd = json.rolls("3d6", 10000)]
[h: start=json.get(getInfo("client"), "timeInMs")]
[h: a = 0][h,for(i, 0, 10000): a = a + json.get(rnd,i)][a]
[h: end=json.get(getInfo("client"), "timeInMs")]
{end - start}
Run 1: 29032ms
Run 2: 29752ms
Run 3: 30051ms
Run 4: 30008ms
Run 5: 29406ms

Using a json with properties.

Code: Select all

[h: obj = json.set("", "val", 10)]
[h: start=json.get(getInfo("client"), "timeInMs")]
[r: js.eval('var a= 0; var obj = MTScript.getVariable("obj"); for (var i = 0; i < 10000; i++) {a = a + obj.val;} return a')]<br>
[h: end=json.get(getInfo("client"), "timeInMs")]
{end - start}
Run 1: 20ms
Run 2: 5ms
Run 3: 4ms
Run 4: 4ms
Run 5: 5ms

MTScript version

Code: Select all

[h: obj = json.set("", "val", 10)]
[h: start=json.get(getInfo("client"), "timeInMs")]
[h: a=0][h,for(i, 0, 10000): a = a + json.get(obj,"val")][a]
[h: end=json.get(getInfo("client"), "timeInMs")]
{end - start}
Run 1: 2431ms
Run 2: 2562ms
Run 3: 2434ms
Run 4: 2477ms
Run 5: 2622ms

User avatar
Jagged
Great Wyrm
Posts: 1306
Joined: Mon Sep 15, 2008 9:27 am
Location: Bristol, UK

Re: New DEV/Testing Builds!

Post by Jagged »

Interesting 8)

User avatar
JamzTheMan
Great Wyrm
Posts: 1872
Joined: Mon May 10, 2010 12:59 pm
Location: Chicagoland
Contact:

Re: New DEV/Testing Builds!

Post by JamzTheMan »

OK, that's pretty yummy! Wolph42 is gonna love that. Be interesting to see how much faster DungeonBuilder can do it's math....
-Jamz
____________________
Custom MapTool 1.4.x.x Fork: maptool.nerps.net
Custom TokenTool 2.0 Fork: tokentool.nerps.net
More information here: MapTool Nerps! Fork

User avatar
RPTroll
TheBard
Posts: 3159
Joined: Tue Mar 21, 2006 7:26 pm
Location: Austin, Tx
Contact:

Re: New DEV/Testing Builds!

Post by RPTroll »

Here's a quick example of the new Draw Explorer: Merge capability available in the Dev/Test build.

http://www.rptools.net/2016/06/draw-explorer-merging/
ImageImage ImageImageImageImage
Support RPTools by shopping
Image
Image

User avatar
Oriet
Cave Troll
Posts: 34
Joined: Mon Dec 05, 2011 10:58 am
Location: Somewhere that's not there, but not really here.
Contact:

Re: New DEV/Testing Builds!

Post by Oriet »

I've noticed some odd things with the Block Vision option in the right-click menu on tokens on test build 1.4.1.3. It creates the vision blocking element at the token's native size, not what it has been sized to.
Spoiler
Image
Unchecking the Block Vision option does remove the vision blocking element, or more accurately, it removes vision blocking for the shape and size of the token at the token's location when unchecked, even if it moved after creating the initial vision blocking element. I don't know if it's supposed to work that way or not, so I'm including it.

I am using Ubuntu 16.04 (with the Mate desktop environment), though I don't know if that should matter or not.


-Edited to put the large image in spoiler tags.
Kill them all, and let the Game Master grant the exp!

Image

User avatar
JamzTheMan
Great Wyrm
Posts: 1872
Joined: Mon May 10, 2010 12:59 pm
Location: Chicagoland
Contact:

Re: New DEV/Testing Builds!

Post by JamzTheMan »

Oriet wrote:I've noticed some odd things with the Block Vision option in the right-click menu on tokens on test build 1.4.1.3. It creates the vision blocking element at the token's native size, not what it has been sized to.
Spoiler
Image
Unchecking the Block Vision option does remove the vision blocking element, or more accurately, it removes vision blocking for the shape and size of the token at the token's location when unchecked, even if it moved after creating the initial vision blocking element. I don't know if it's supposed to work that way or not, so I'm including it.

I am using Ubuntu 16.04 (with the Mate desktop environment), though I don't know if that should matter or not.


-Edited to put the large image in spoiler tags.
Hi. Yea, that feature is "work in progress" and has some bugs. It works better on FreeSize than med/large/huge/etc set sizes.
-Jamz
____________________
Custom MapTool 1.4.x.x Fork: maptool.nerps.net
Custom TokenTool 2.0 Fork: tokentool.nerps.net
More information here: MapTool Nerps! Fork

Craig
Great Wyrm
Posts: 2107
Joined: Sun Jun 22, 2008 7:53 pm
Location: Melbourne, Australia

Re: New DEV/Testing Builds!

Post by Craig »

New build 1.4.1.4

New Features
  • Chinese translation updates. (lessercn@...)
  • Added ability to pass arguments to js.eval("expression", [arg, ... argN]). Arguments are available in the JavaScript expresion in an array called args[]. (Craig).
  • New menu option under Export -> Campaign As...
  • New Campaign Export dialog to select a previous version of MapTool to export as. Notes on what is stripped during exports are shown in the dialog and stored in the il8n language files.
Bug Fixes
  • Typo fixed in English translations (Azhrei)
  • Fix for MacOS X Dock and Menu String (Jamz)
  • Bug Fix to Support Multiple Monitors.
Build/Code Related
  • Fix eclipseClasspath in gradle build so that it creates entry in classpath for Nashorn. (Jamz)
  • DrawableGroupConverter class is unused at this time but added as an example on how to do custom xstream conversions for a class.
  • Updated X-Stream to version 1.4.9 to match Rplib

User avatar
JamzTheMan
Great Wyrm
Posts: 1872
Joined: Mon May 10, 2010 12:59 pm
Location: Chicagoland
Contact:

Re: New DEV/Testing Builds!

Post by JamzTheMan »

Thanks Craig!

FYI: Few more things sneaked in there as well:
  • Added a slider control on Asset Panel to adjust thumbnail sizes (clear your asset cache for best results). Meta+Mousewheel also works.
  • Fix for issue RPTools/maptool#85 (when you switch between the token selection tool and another tool (e.g. VBL) then the token tool always snaps back to the TOKEN layer)
  • Fix for bug in Map Explorer where if a token is double clicked to select and layer switches from Token to Hidden|Object|Background layer, token was not selected.
  • Fix for bug in Map Explorer where if a token is double clicked to select and layer switches from between any of the Hidden|Object|Background layers, the Layer dialog list selection was not updated.
-Jamz
____________________
Custom MapTool 1.4.x.x Fork: maptool.nerps.net
Custom TokenTool 2.0 Fork: tokentool.nerps.net
More information here: MapTool Nerps! Fork

taustinoc
Dragon
Posts: 515
Joined: Mon Aug 03, 2015 6:30 pm

Re: New DEV/Testing Builds!

Post by taustinoc »

I'm not sure exactly why, but as of this week's Windows Updates, the launcher for 1.4.1.3 and 1.4.1.4 errors out with "Error: A JNI error has occurred, please check your installation and try again," followed by a second notice that "A Java Exception has occurred." The .exes open up the screen that offers either MapTool or the Launcher, but when I click on either one, nothing happens. The same occurs on both the 64 and 32 bit .exes.

Interestingly, the Maptool .jars both launch directly (with, of course, the wrong memory settings.

The 1.4.1.3 .exe worked fine the last time I tried it, which was before this week's Windows Updates, and I think before last week's.

Windows 7, 64 bit, with both 64 and 32 bit Java (yes, I reinstalled), all the same.

I also got the exact same results on my 32 bit Win 7 box at work.

The launcher in 1.4.0.whatever works fine.

Post Reply

Return to “Announcements”