Our massive new update, Data Delve, is live today for everyone. Special thanks goes to all the Mentors who have spent the last couple of months helping us test these new features on the Dev server, as well as building all the great character sheets that are now available to the community. If you just want the short version, see today's blog post: <a href="http://blog.roll20.net/post/87112838355/data-delve" rel="nofollow">http://blog.roll20.net/post/87112838355/data-delve</a>... Without further ado, the change log... QuantumRoll QuantumRoll is the new dice engine we're introducing. It handles all the rolls for all Roll20 games across the whole service. It uses a truly random number generator and provides insight into the status of rolls so you can verify for yourself that the system is working. For a full overview, read the preview blog post: <a href="http://blog.roll20.net/post/80684919470/data-delve" rel="nofollow">http://blog.roll20.net/post/80684919470/data-delve</a>... Using QuantumRoll is no different than rolling dice as usual. If you see the "quantum" symbol next to the result: ...then you know that the roll result was generated by the new system. This also applies to inline rolls: Note that QuantumRolls will not apply to rolls that use rollable tables or rolls made with 3D Dice or the API. Character Sheets <a href="https://www.youtube.com/watch?v=4-8ONf9r8gs" rel="nofollow">https://www.youtube.com/watch?v=4-8ONf9r8gs</a>
The Data Delve update also introduces Character Sheets. This is a feature that is designed to mimic the paper character sheets that we're all used to having when playing games in-person. The GM can choose a character sheet template for the game (either from the community-contributed library, or if they're a Mentor by making their own from scratch). Then all the Characters in the game (including those controlled by the players) will have a handy "Sheet" tab that you can view and edit. You can also double-click the titlebar of the Character dialog box to minimize it, handy for the GM to keep track of multiple sheets at once. Sheets can range from basic sets of fields (the way you'd just scratch a quick note on a piece of paper), to fully interactive digital experiences, with auto-calculating values and roll buttons to let you perform checks and attacks directly on the sheet itself. For more information on Character Sheets and what they're capable of, check out our preview blog post: <a href="http://blog.roll20.net/post/82092273480/data-delve" rel="nofollow">http://blog.roll20.net/post/82092273480/data-delve</a>... And for all the details on how to use Character Sheets in your game, check out the Wiki: <a href="https://wiki.roll20.net/Character_Sheets" rel="nofollow">https://wiki.roll20.net/Character_Sheets</a> Video and Voice Improvements We've overhauled the built-in video and voice system that's powered by Tokbox and WebRTC. It should now use less bandwidth, allowing more people to use it at once on slower connections. We've also made it so the various options (such as "Receive Audio Only") now work more reliably, and there's now individual mute controls for each participant. Also, when receiving audio-only from a player, you will now see their avatar photo displayed instead of just a "mic" icon with a black background. Better Auto-Complete The auto-complete sorting order when editing macros and abilities has been redone so that it should do a better job finding what you're actually looking for. We've also added "selected" and "target" options to those auto-complete menus in the Macro editor. Finally, we've added the ability to specify the Character for an auto-complete in the Macro editor. So for example if you're making a Macro and you specifically want to only show attributes for the "Riley" character, type like so: "@Riley|<attrname>". Notice the pipe character ( | ) between the "Riley" and the attribute you are trying to find. That will signal the autocomplete to "only show attributes for Riley, no one else." Better Dev/Main Syncing We've implemented a new way of syncing Dev and Main that results in much better integration. Now when you make changes to your account (e.g. changing your password, changing your subscription to Mentor, erc.) those changes are synced immediately from Main to Dev. So if, for example, you forget your password and reset it on Main (as you should), you'll be able to login with that new password on Dev right away without needing to wait 2 hours. In addition, this eliminates the every-2-hours "can't login for 5 minutes" syncing completely. Also, upgrading to Mentor status will grant you access to the Dev server right away. Finally, accounts which are created on Main are synced immediately to Dev as well, so if a player in your game doesn't have an account and they create one on Main they can join your game on Dev right away instead of needing to wait up to 2 hours. API Changes As of today there are a few new functions in the API to help you take advantage of the new sheets. getAttrByName(character_id, attribute_name, value_type); This function allows you to get the value of an attribute, taking into consideration that the value may be provided by the default value of a sheet. You can still do attribute_object.get("current"); as before, but if you do so a) the attribute may not actually exist yet, and b) there may be a default value provided by a sheet at play. This function takes all that into account and will return either the attribute's value that already exists, or the default value (including auto-calc formula) of the sheet if the default is being used. var character = getObj("character", "-JMGkBaMgMWiQdNDwjjS"); getAttrByName(character.id, "str"); // the current value of str, for example "12" getAttrByName(character.id, "str", "max"); //the max value of str, for example "[[floor(@{STR}/2-5)]]" getSheetDefaultValue(attrname, valuetype) Returns the global default value (it's the same for all characters) for the current sheet if one is in use. Might be useful for some scripts, so we included it. In addition to those new functions, sendChat() has been updated so that it can now roll attributes and abilities from the sheet. For example: sendChat("API", "/roll @{Riley|str|max}"); Even if str_max is a formula from a sheet, that will now work properly. sendChat() has also been brought up to speed with other previous changes to the dice engine, such that you can now nest attributes and abilities, and make use of floor(), ceil(), etc. Finally, we have fixed the support for bio, notes, and gmnotes fields on the Characters and Handouts. Using the set() functions (e.g. character.set("bio")) should "just work", however when getting the value, you must now pass a callback function to receive the value (as we have to do a little network stuff in the background which may take a second to complete). Here's an example: var character = getObj("character", "-JMGkBaMgMWiQdNDwjjS"); character.get("bio", function(bio) { log(bio); //do something with the character bio here. }); Improved Character Dialog Layout We've made improvements to the way that the Character Edit + View dialogs relate to each other. The Attributes + Abilities pane has been moved solely to the View screen, and you can now edit, add, re-order, etc. your Attributes and Abilities directly from there without needing to go into the Edit screen for the Character. We've also made some improvements to the way the Abilities are laid out, so you can now easily roll the Ability and toggle its Macro and Token Action status quickly. There is still a Character Edit screen, but you now only need to use it to edit information that is updated less-often, such as the Name of the Character, who can control it, the default token, etc. Server Improvements We've also heavily invested in the Roll20 servers behind-the-scenes, and you can expect speedier page loads across the site. Misc/Bugfixes: The horizontal scrollbar is now always visible in the page toolbar on Mac computers. We've added security headers to the main Roll20 application. In theory these headers disallow scripts from external sites from being imported when running Roll20, which should hopefully cut down on the number of adware and malware applications which interfere with Roll20. Inline roll formatting has been fixed for inline rolls which are really long (e.g. 99d20) In addition to the floor() and ceil() functions, you now have access to a round() function when making your dice rolls. For example, /roll round(3d6/2). [Bugfix] You can now delete a page after you have unarchived it without needing to reload. [Bugfix] Rolling a 0-sided dice (e.g. /roll 10d0) will now correctly report "0" as the result instead of "1". [Bugfix] Negative numbers between 0 and 1 (e.g. -0.5) are now handled correctly by the dice engine. [Bugfix] Players can no longer access abilities or attributes of Characters they do not control even if they know the name of the attribute or ability (does not affect the use of @{target}). In addition, if a player could previously control a Character, if their control is removed any macros associated with that Character's abilities will be removed from their macro bar. [Bugfix] Attempting to set a number to the "Red X" icon in the status effect markers tray no longer assigns a number to one of the colored dots. The number is correctly ignored. [Bugfix] Right-clicking while drawing with the FX Tool will no longer create a "stuck" special effect. Enjoy!