Character Service Migration Update

Character Service Migration Update

 

Update 6/8/2020: We have decommissioned (and removed) many endpoints used by our older Character Sheet. These routes were never publicly supported, and are being removed to avoid potential issues with data freshness and accuracy. We continue to explore the opportunity to provide a supported, documented API in the future.


Hello! We are excited to announce that we have rolled out the new Character Service to all users. This is the culmination of 9+ months of work by the D&D Beyond Character Sheet team, and represents an important improvement in our technical platform to scale well into the future.

Here’s some of the technical improvements we’ve achieved with this update:

  • Server resources: 48 CPU per node -> 4 CPU per node
  • Average response time: 150ms -> 45ms
  • Get Character response time: 762ms -> 268ms
  • Page load time: 5.95 sec -> 2.48 sec

Again, this has been a monumental effort and represents a huge step forward in scaling DDB for the future. I’d like to thank the entire DDB Engineering team, but also specifically the Characters Team - Craig, Jason, Julie, Pasquale and Scott.

Features

  • Large rewrite to the underlying sheet/builder application.
    • One bundle, so we can cache required files better and download less data
    • Lazily make requests for many pieces of data that were always included that are not needed for most interactions in the sheet/builder
    • Less image requests and more integrated SVGs for smoother transitions and visuals available quicker.
    • Update technologies to give us quicker iterations with more confidence in the changes.
    • First service fully using the entitlement service.
      • Substantial performance gains when accessing paid content, as well as a central source of truth.
  • Snippet rewrite
    • Full order of operations and nested parentheses support.  Ex: {{2+((classLevel/2)+1)}}
    • Catches more invalid snippet syntax
    • Can no longer have curly braces as a renderable character.  Any curly braces that aren’t used to identify a snippet “{{snippetCode}}” will be replaced before they are shown.
  • PDF generation now returns a URL instead of directly downloading it in your browser.  This allows you to download the pdf for yourself, or easily send it to someone else.
  • Added a way to remove all customizations from things in the sheet. There is now a “Remove Customizations” button in “Customize” section on Items, Spells, Actions, Creatures
  • Character Sheet/Builder version can now be found at the bottom of the preferences UI
  • Add skill advantage/disadvantage information to the sheet. Shows both in the main Skill box and when you click a skill in the sidebar it will have the full summary. Note: This will be added shortly after the new service goes live.

Fixes

  • Fixed issue with auth failing after opening your sheet after it has been opened for day(s) at a time. This would normally error out and force you to refresh your sheet in order to re-auth with the server.
  • Fixed dual wielder feat giving bonuses for unequipped items 
  • Fixed custom attacks missing from PDF
  • Fixed remaining fuel not persisting on Infernal Machines
  • Fixed magic items with spells crashing the sheet if the charge usage could scale the spell past level 9.  
  • Fixed feat option actions crashing when clicking them in the sheet to view more info in sidebar
  • Fixed Wildshape calculation issues with skill and saving throw numbers
    • After talking about it we are going to do two things:
      • Fix expertise
      • Fix half proficiency
    • The rest we are going to leave as is, until we can get any further official clarification.  The two options that are still at the heart of the problem in an example where the creature is proficient and the character is not
      • The creature gives proficiency to the character and you take the higher of the two.
      • The creatures skill number is the amount you get
    • We decided to keep ours as option 1 in this situation for now.
  • Fixed bug with overriding skill stat. Modifiers would not match the overridden stat.  For example if you changed Athletics to DEX, any modifiers that gave you bonuses to Dexterity Ability Checks, would not have hit Athletics.
  • Fixed issue with armor not applying a -10 adjustment to speeds if you didn’t meet STR requirement and you are not using Variant Encumbrance.
    • This was undocumented bug, and found it when figuring out why speeds were different than before for low STR characters
  • Fixed issue with being able to add more than 10 creatures at a time if you entered in the number and hit add.
    • Maximum of 10 was not enforced on manual data entry in SimpleQuantity component
  • Fixed certain customization fields not enforcing server validation rules.
    • Things like minimum values and max string length. This is for things like custom actions/items/skills and vehicle/creature names
  • Set validation constraints on character HP fields (current, temp, and max)
  • Fixed Currency UI in builder to validate min/max integer allowed and provide error messaging
    • This was an pre-existing bug from before and currently on Prod, but fixed to match updates we made to the Currency Pane
  • Set validation constraints on character description fields for Age and Weight.
  • Fixed manual rolled HP to obey validation constraints.
  • Fixed issue with sorting some class features. This most likely was only affecting subclass features.
    • Ex: Knowledge domain cleric’s class feature “Blessings of Knowledge” was at the top of the level 1 class features, and is now at the bottom based on its display order of 100
  • Fixed issue with magic staves not being able to be marked as “Hex Weapon” or “Pact Weapon”
    • Mundane staff will still not work until the backend adds a quarterstaff weapon behavior to it
  • You will now see disadvantage on STR/DEX saves/skills If you wear armor you are not proficient in.

 

33

Comments

  • To post a comment, please or register a new account.
Posts Quoted:
Reply
Clear All Quotes