<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[dddice Blog]]></title><description><![CDATA[Blogs and beautiful data from the development team dddice, an online 3D digital dice roller.]]></description><link>https://blog.dddice.com/</link><image><url>https://blog.dddice.com/favicon.png</url><title>dddice Blog</title><link>https://blog.dddice.com/</link></image><generator>Ghost 5.22</generator><lastBuildDate>Mon, 02 Mar 2026 20:45:37 GMT</lastBuildDate><atom:link href="https://blog.dddice.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Opting in to the community dice library & EULA updates]]></title><description><![CDATA[<p>Owing to feedback we have received from the community, we at dddice have decided to make a change to our community dice library. We will be making inclusion of dice in the library an explicitly opt-in feature. </p><p>As we have begun to monetize the service, we want to make sure</p>]]></description><link>https://blog.dddice.com/opting-in-to-the-community-dice-library-eula-updates/</link><guid isPermaLink="false">66378ce62da10c0107ddfbd4</guid><dc:creator><![CDATA[Celeste Bloodreign]]></dc:creator><pubDate>Wed, 08 May 2024 12:10:16 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2024/05/Screenshot_Fri_Apr_14_010828_PM_EDT_2023.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.dddice.com/content/images/2024/05/Screenshot_Fri_Apr_14_010828_PM_EDT_2023.png" alt="Opting in to the community dice library &amp; EULA updates"><p>Owing to feedback we have received from the community, we at dddice have decided to make a change to our community dice library. We will be making inclusion of dice in the library an explicitly opt-in feature. </p><p>As we have begun to monetize the service, we want to make sure that everyone who has dice included in the <a href="https://dddice.com/dice">community library</a> understands and agrees to let us use their creations in this way. In support of this, we have added a paragraph to section 11 of our <a href="https://dddice.com/eula">end user license agreement</a> to be more explicit on this point. Please do review that before you add your dice to the community library.</p><p><strong>We will be changing the dice creation process to have dice hidden from the library by default, and include a button to add your dice to the library. </strong></p><p>For now, only Patreon supporters will be able to list their dice in the library. Everyone will still be able to share dice they have created with their friends directly &#x2013; either though share links or via GMs sharing their dice tray. <strong>All dice currently in the library will be removed, and if you want them added back, you will need to go through and re-add them.</strong></p><p>We value your feedback so keep it coming either via, <a href="https://discord.gg/VzHq5TfAr6">our Discord</a>, or our <a href="https://dddice.com/contact">contact from</a>.</p>]]></content:encoded></item><item><title><![CDATA[dddice is rolling into beta!]]></title><description><![CDATA[<p>It&apos;s been quite the journey since the project kicked off in October 2021. The app, the community, the dice have developed quite a lot in that time. We are now ready to take the next step in that journey and move the software into beta!</p><p>On <strong>April 11th</strong></p>]]></description><link>https://blog.dddice.com/dddice-is-rolling-into-beta/</link><guid isPermaLink="false">6602bd352da10c0107ddfb7c</guid><dc:creator><![CDATA[Celeste Bloodreign]]></dc:creator><pubDate>Wed, 27 Mar 2024 12:23:20 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2024/03/beta-blog-post.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.dddice.com/content/images/2024/03/beta-blog-post.png" alt="dddice is rolling into beta!"><p>It&apos;s been quite the journey since the project kicked off in October 2021. The app, the community, the dice have developed quite a lot in that time. We are now ready to take the next step in that journey and move the software into beta!</p><p>On <strong>April 11th</strong>, there will be a few changes. The most exciting being the marketplace launch. But first, we want to focus on what is staying the same.</p><h1 id="%F0%9F%94%92-what-wont-change">&#x1F512; What won&apos;t change</h1><p>dddice &#x2014; &#xA0;its platform, its integrations, its roll rooms, its stream overlays, the dice editor, the API &#x2014; will remain free to use, no signup required. </p><p>You will still be able to create as many custom dice and roll rooms as you want, and share those dice with your friends using share links.</p><p>We believe this is essential for dddice goblins to be able to convince their whole party to use the platform.</p><h1 id="%F0%9F%9A%80-what-will-change">&#x1F680; What will change</h1><p>The biggest change will be updates to our Patreon rewards. We will be following the model of other TTRPG apps editors and creative communities and making the community-created dice exclusive to Patreon supporters. Everyone can still browse the community collection, but only Patreon supporters may add the dice to their digital dice box. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F3B2;</div><div class="kg-callout-text">Any community-created dice you have already added to your dice box will still be yours!</div></div><p>To maintain your ability to play all the games you might want to play, there will be a small collection of completely free dice. This collection will support the most common systems &#x2014; <em>Dungeons &amp; Dragons, Pathfinder, World of Darkness, World of Darkness 5e &amp; Call of Cthulhu</em>. Some lesser-played systems will also have free dice &#x2014; <em>Mouse Guard, Coriolis, Alien, and The Living Dead</em>.</p><p>Each week, we will select a handful of the best community-created themes to feature on our marketplace landing page. These themes will be free for everyone to add to their digital dice box during that week.</p><p>The other big change is the Marketplace. We will start selling dice on April 11th to coincide with National Board Game Day. Many of you have already added some offerings into your wishlist, and now will be your time to finally add them to your digital dice box.</p><!--kg-card-begin: markdown--><table>
<thead>
<tr>
<th>What won&apos;t change</th>
<th>What will change</th>
</tr>
</thead>
<tbody>
<tr>
<td>Free to use</td>
<td>Community dice are a Patreon reward</td>
</tr>
<tr>
<td>No sign up required</td>
<td>Free dice collection</td>
</tr>
<tr>
<td>Create as many dice and rooms as you want</td>
<td>Rotating free themes</td>
</tr>
<tr>
<td>Share dice you created with your friends</td>
<td>Marketplace!</td>
</tr>
</tbody>
</table>
<!--kg-card-end: markdown--><h1 id="%F0%9F%A4%94-why-the-change">&#x1F914; Why the change?</h1><p>Many of you have asked over the years, &#x201C;how do you all make money&#x201D;? The answer is we don&#x2019;t, not really. While we do have our wonderful Patreon supporters, the money coming in from that does not yet cover our operating costs. We hope that by increasing the value of the Patreon subscription and selling premium dice, we can build a sustainable company and community that will be a part of the amazing things to come for TTRPGs.</p><p>Happy Rolling! &#x1F3B2;</p><p>~ Celeste Bloodreign &amp; nullfish</p>]]></content:encoded></item><item><title><![CDATA[Integrating dddice into the "HP Tracker" extension for Owlbear Rodeo]]></title><description><![CDATA[<div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F3B2;</div><div class="kg-callout-text">This article is a guest post by Josh, the developer of the <a href="https://extensions.owlbear.rodeo/hp-tracker">HP Tracker extension</a> for the Owlbear Rodeo Virtual Table Top. He is also a founder and developer at <a href="https://bitperfect.at/en">bitperfect</a> a custom software company. <br>&#x2014; &#x2665; Celeste Bloodreign</div></div><p>While DMing with Owlbear I realized I needed more functionality</p>]]></description><link>https://blog.dddice.com/integrating-dddice-in-hp-tracker-owlbear-extension/</link><guid isPermaLink="false">65d2f24b2da10c0107ddf86f</guid><category><![CDATA[Integration]]></category><dc:creator><![CDATA[Joshua Hercher]]></dc:creator><pubDate>Fri, 15 Mar 2024 12:00:00 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2024/03/HP_Tracker.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F3B2;</div><div class="kg-callout-text">This article is a guest post by Josh, the developer of the <a href="https://extensions.owlbear.rodeo/hp-tracker">HP Tracker extension</a> for the Owlbear Rodeo Virtual Table Top. He is also a founder and developer at <a href="https://bitperfect.at/en">bitperfect</a> a custom software company. <br>&#x2014; &#x2665; Celeste Bloodreign</div></div><img src="https://blog.dddice.com/content/images/2024/03/HP_Tracker.png" alt="Integrating dddice into the &quot;HP Tracker&quot; extension for Owlbear Rodeo"><p>While DMing with Owlbear I realized I needed more functionality for running my own games, so I created <a href="https://extensions.owlbear.rodeo/hp-tracker">HP Tracker</a>. Starting out as a simple tool for DMs to track Token HP with per player visibility, it now features a wide array of functionality, including creature statblocks. While dddice existed as a standalone extension in Owlbear, I really wanted to give my users the ability to roll damage directly from the HP Tracker statblocks while also supporting outside rolls from D&amp;D Beyond and if possible others. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.dddice.com/content/images/2024/03/Bildschirmfoto-2024-03-13-um-10.31.10.png" class="kg-image" alt="Integrating dddice into the &quot;HP Tracker&quot; extension for Owlbear Rodeo" loading="lazy" width="599" height="785"><figcaption>HP Tracker with dddice roll-buttons at the bottom</figcaption></figure><h2 id="1%EF%B8%8F%E2%83%A3-phase-1-%E2%80%94-research">1&#xFE0F;&#x20E3; Phase 1 &#x2014; Research</h2><p>As with all software development projects I started out researching the possibilities. </p><p>There was:</p><ul><li>Adding a fork of the Owlbear dice roller to HP Tracker</li><li>Doing everything from scratch</li><li>Use one of the existing dice rollers</li><li>Find a dice roller with an SDK or API</li></ul><p>Pretty quickly, it became clear that there was one solution that stood out &#x2014; dddice! dddice offers a well documented SKD and if that wasn&apos;t enough an API. Also, after a quick chat with <a href="https://blog.dddice.com/author/nullfish/">nullfish</a>, he gave me some pointers on where to start. So I made my decision that HP Tracker should get a full integration with dddice.</p><h2 id="2%EF%B8%8F%E2%83%A3-phase-2-%E2%80%94-getting-started">2&#xFE0F;&#x20E3; Phase 2 &#x2014; Getting Started</h2><p>Before starting with the implementation, I thought about all the features I wanted to implement. Because of the nature of Owlbear extensions, HP Tracker is basically a bunch of websites (token overview, statblocks, ...) that are connected to Owlbear via the <a href="https://docs.owlbear.rodeo/extensions/tutorial-hello-world/install-the-sdk/">OBR SDK</a>. The main extension window and the stat block popover are each their own &#x201C;website&#x201D;. I needed a React Component to handle the dddice stack, but also to limit the roll to only one of the opened &#x201C;websites&#x201D;. In other words, I didn&apos;t want someone to click on the main extension window and then for the dice to roll atop every popup my extension made.</p><p>So the basic structure was: </p><ul><li>Each HP Tracker site gets the dddice-component which can be used to log in, change settings and roll dice</li><li>A new transparent overlay is added where all dice rolls will be rendered</li><li>A roll log is shown every time the overlay finishes a roll</li></ul><p>Sounds simple enough! Let&apos;s go! </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.dddice.com/content/images/2024/03/Bildschirmfoto-2024-03-13-um-10.30.38.png" class="kg-image" alt="Integrating dddice into the &quot;HP Tracker&quot; extension for Owlbear Rodeo" loading="lazy" width="478" height="386"><figcaption>HP Tracker Owlbear Statblock with roll-buttons (STR hovered)</figcaption></figure><h2 id="3%EF%B8%8F%E2%83%A3-phase-3-%E2%80%94-but-wait-what-about-edge-cases">3&#xFE0F;&#x20E3; Phase 3 &#x2014; But Wait! What about Edge Cases?</h2><p>A thing I needed to keep in mind was, some Owlbear users were maybe already using the dddice extension. So a renderless mode needed to be added to HP Tracker. Because of dddice&apos;s client-server-model rolling in one extension and rendering in a second is easy. Synching rolls across apps is one of its basic features! The solution for HP Tracker is adding a toggle button to switch the rendering on or off. </p><p>Turning off dice rendering in HP Tracker led to the roll log no longer being displayed. Using dddice&apos;s event handlers made this easy to solve. I was able to hook directly into the roll events using the interface exposed by the <a href="https://docs.dddice.com/sdk/js/latest/classes/ThreeDDiceAPI.html"><code>ThreeDdiceAPI</code></a> object in the dddice SDK. &#xA0;</p><p>All other edge cases that popped up during development were quick to solve too, either by reading the SDK documentation or asking the very helpful dddice developers for help (Thank You <a href="https://blog.dddice.com/author/celeste/">Celest Bloodreign</a>!).</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F3B2;</div><div class="kg-callout-text">If you too are integrating with dddice, and you want the same help Josh got, come join our <a href="https://discord.com/invite/VzHq5TfAr6">discord</a>, we are happy to help</div></div><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.dddice.com/content/images/2024/03/Bildschirmfoto-2024-03-13-um-10.28.14.png" class="kg-image" alt="Integrating dddice into the &quot;HP Tracker&quot; extension for Owlbear Rodeo" loading="lazy" width="292" height="400"><figcaption>HP Tracker roll log</figcaption></figure><h2 id="4%EF%B8%8F%E2%83%A3-phase-4-%E2%80%94-gold-plating">4&#xFE0F;&#x20E3; Phase 4 &#x2014; Gold Plating</h2><p>Initially, my plan was to just add roll buttons to HP Trackers integrated Statblocks. However, using the dddice integration sped up the whole process so much I was able to add more functions for my users. I added: CustomRoll-Buttons, QuickRoll-Buttons, hidden rolls and more! All in all, integrating dddice into HP Tracker took about two weeks of programming in the evenings. Beating my initial estimation of two months by a lot.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.dddice.com/content/images/2024/03/Bildschirmfoto-2024-03-13-um-10.29.33.png" class="kg-image" alt="Integrating dddice into the &quot;HP Tracker&quot; extension for Owlbear Rodeo" loading="lazy" width="446" height="55"><figcaption>HP Tracker - customizable roll-buttons</figcaption></figure><h2 id="%F0%9F%94%8D-developer-findings">&#x1F50D; Developer Findings</h2><p>As I was using typescript for my implementation, I found that some operations were necessary when interacting with the dddice SDK. And as I found myself repeating them more than once I decided to wrap them into function (as developers tend to do). Here is a collection of some functions that others might also find useful.</p><h3 id="%F0%9F%A7%91-get-the-participant">&#x1F9D1; Get the Participant</h3><p>A lot of the times you want to know who exactly something belongs to. Whether it&apos;s a die roll or just look if a user is already part of a room. You end up getting the <code>user</code> from the SDK/API then getting the <code>room</code> and then looking if the <code>user</code> is registered as a <code>participant</code> in the room. </p><p>You can use this information to add the <code>user</code> to a <code>room</code> (if the <code>participant</code> is not found). Or change the <code>participant</code>s username so you can later use it, e.g., in the roll log (dddice uses this to display the D&amp;D Beyond Character names in their rolls).</p><p>My solution for this are the following two function:</p><!--kg-card-begin: markdown--><pre><code class="language-ts">export const getDiceUser = async (rollerApi: ThreeDDiceAPI) =&gt; {
    return (await rollerApi?.user.get())?.data;
};

export const getDiceParticipant = async (rollerApi: ThreeDDiceAPI, roomSlug: string | undefined, user?: IUser) =&gt; {
    let diceUser: IUser | undefined = user;
    if (diceUser === undefined) {
        diceUser = await getDiceUser(rollerApi);
    }
    if (diceUser &amp;&amp; roomSlug) {
        const diceRoom = (await rollerApi.room.get(roomSlug))?.data;
        // @ts-ignore we test diceUser in the if above it will not be undefined
        return diceRoom?.participants.find((p) =&gt; p.user.uuid === diceUser.uuid);
    }
    return undefined;
};
</code></pre>
<!--kg-card-end: markdown--><p>An example where I use this is this function</p><!--kg-card-begin: markdown--><pre><code class="language-ts">export const prepareRoomUser = async (diceRoom: IRoom, rollerApi: ThreeDDiceAPI) =&gt; {
    const participant = await getDiceParticipant(rollerApi, diceRoom.slug);
    const name = await OBR.player.getName();

    if (participant &amp;&amp; participant.username !== name) {
        await rollerApi.room.updateParticipant(diceRoom.slug, participant.id, {
            username: name,
        });
    }
};
</code></pre>
<!--kg-card-end: markdown--><p>The purpose is getting the current participant and making sure that when they roll a die, the participant username is set to their Owlbear username. So you can see at first glance which of the Owlbear user rolled the dice.</p><h3 id="%F0%9F%94%8C-initialize-and-connect-to-dddice">&#x1F50C; Initialize and connect to dddice</h3><p>Each time HP Tracker is started the user needs to be connected to dddice, so I have a function &#x2013; with some wrapper code I don&apos;t include here &#x2013; &#xA0;which is basically the auth flow I&apos;m using (roller being an instance of <code>ThreeDDice</code>). I also removed some functions and replaced them with their internal logic to make the code-flow more readable:</p><!--kg-card-begin: markdown--><pre><code class="language-ts">roller.initialize(canvas, await getApiKey(room), { autoClear: 3 }, `HP Tracker`);
        if (roller.api) {
            const diceRoom = await getDiceRoom(roller.api, room);
            if (diceRoom) {
                const user = (await roller.api?.user.get())?.data;
                if (user) {
                    const participant = diceRoom.participants.find((p) =&gt; p.user.uuid === user.uuid);
                    if (participant) {
                        await prepareRoomUser(diceRoom, roller.api);
                    } else {
                        try {
                            const userDiceRoom = (await roller?.api?.room.join(diceRoom.slug, diceRoom.passcode))?.data;
                            if (userDiceRoom) {
                                await prepareRoomUser(userDiceRoom, roller.api);
                            }
                        } catch {
                            /**
                             * if we already joined. We already check that when
                             * looking if the user is a participant in the room,
                             * but better be safe than sorry
                             */
                        }
                    }
                    roller.connect(diceRoom.slug, diceRoom.passcode, user.uuid);
                }
            }
            return true;
        }
</code></pre>
<!--kg-card-end: markdown--><p>What this does: </p><ol><li>Initialize the dddice API and let it know which application is connected</li><li>Get the room that is used for this session (there is some internal logic there to make sure we get the right room)</li><li>Get the dddice user</li><li>Check if the user is already a room participant<br>a. User is already a participant, make sure the correct username is set<br>b. User is not a participant, join the room and then make sure the username is correct</li><li>Connect the ThreeDDice instance to the room with the current user</li></ol><p>And the rest is beautifully rendered 3D dice &#x1F3B2;</p><h2 id="%F0%9F%8E%89-conclusion">&#x1F389; Conclusion</h2><p>I loved every step of the way. Each little progress got me excited, and the dice rendering is one of the best I&apos;ve seen across all digital dice rollers. If anybody is still on the fence of using dddice for their project, don&apos;t be! It&apos;s one of the best developer experiences I had in a long time.</p><figure class="kg-card kg-video-card kg-card-hascaption"><div class="kg-video-container"><video src="https://blog.dddice.com/content/media/2024/03/9736a36c-2951-4d7d-9afd-8343a788caf7.mp4" poster="https://img.spacergif.org/v1/1634x984/0a/spacer.png" width="1634" height="984" playsinline preload="metadata" style="background: transparent url(&apos;https://blog.dddice.com/content/images/2024/03/media-thumbnail-ember112.jpg&apos;) 50% 50% / cover no-repeat;"></video><div class="kg-video-overlay"><button class="kg-video-large-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button></div><div class="kg-video-player-container"><div class="kg-video-player"><button class="kg-video-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button><button class="kg-video-pause-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/><rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/></svg></button><span class="kg-video-current-time">0:00</span><div class="kg-video-time">/<span class="kg-video-duration"></span></div><input type="range" class="kg-video-seek-slider" max="100" value="0"><button class="kg-video-playback-rate">1&#xD7;</button><button class="kg-video-unmute-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/></svg></button><button class="kg-video-mute-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/></svg></button><input type="range" class="kg-video-volume-slider" max="100" value="100"></div></div></div><figcaption>HP Tracker with dddice integration demo</figcaption></figure><hr><p>This is a guest post written by Josh, the developer of HP Tracker. You can check out<a href="https://extensions.owlbear.rodeo/hp-tracker"> HP Tracker</a> in the <a href="https://extensions.owlbear.rodeo/">Owlbear Rodeo extension library</a> or find his other work (and blog posts) at <a href="https://bitperfect.at/en">bitperfect.at</a>.</p>]]></content:encoded></item><item><title><![CDATA[How to make your dice remix friendly using emissive maps]]></title><description><![CDATA[<div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F3B2;</div><div class="kg-callout-text">This article is a guest post by NatoPotato, one of our <a href="https://dddice.com/dice?creator=NAT0P0TAT0&amp;page=1">featured community dice creators</a>. He recently updated many of his themes to enhance their remixablity! We asked him to share his process with our community. &#x2014; &#x2665; Celeste Bloodreign</div></div><p>I&apos;m sure some of you have seen</p>]]></description><link>https://blog.dddice.com/how-to-make-your-dice-remix-friendly-using-emissive-maps/</link><guid isPermaLink="false">65b3aa492da10c0107ddf4e8</guid><category><![CDATA[Dice creation]]></category><dc:creator><![CDATA[Celeste Bloodreign]]></dc:creator><pubDate>Sat, 03 Feb 2024 13:17:27 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2024/01/Capture.PNG" medium="image"/><content:encoded><![CDATA[<div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F3B2;</div><div class="kg-callout-text">This article is a guest post by NatoPotato, one of our <a href="https://dddice.com/dice?creator=NAT0P0TAT0&amp;page=1">featured community dice creators</a>. He recently updated many of his themes to enhance their remixablity! We asked him to share his process with our community. &#x2014; &#x2665; Celeste Bloodreign</div></div><img src="https://blog.dddice.com/content/images/2024/01/Capture.PNG" alt="How to make your dice remix friendly using emissive maps"><p>I&apos;m sure some of you have seen a cool looking dice set, but thought it would look better with different colours. Though, when you try to remix it you find that the set was made using a coloured texture background, and there&apos;s only so much you can do with the colour settings.</p><p>Here&apos;s an example of what I mean, this is an old remix of my Poison Envy set that is still using a coloured texture, I&apos;ve given it a red colour filter and the center of the dice has turned black, not red, why is that?</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2024/01/wwwttt.png" class="kg-image" alt="How to make your dice remix friendly using emissive maps" loading="lazy" width="1200" height="578" srcset="https://blog.dddice.com/content/images/size/w600/2024/01/wwwttt.png 600w, https://blog.dddice.com/content/images/size/w1000/2024/01/wwwttt.png 1000w, https://blog.dddice.com/content/images/2024/01/wwwttt.png 1200w" sizes="(min-width: 720px) 720px"></figure><h1 id="%F0%9F%96%A4-why-so-black">&#x1F5A4; Why so black?</h1><p>It&apos;s to do with how the colour settings work. The diffuse colour is like painting, or printer ink. It doesn&apos;t add colour, it subtracts it. In other words, as far as light is concerned, it&apos;s actually the opposite colour being removed. </p><p>Think of printing on paper. If you mix yellow ink and cyan ink you get green, because the opposite of yellow is blue and the opposite of cyan is red, so you&apos;re taking away blue and red from the white paper, leaving green.</p><p>So in this case, by adding a red filter we&apos;ve actually removed green and blue, there&apos;s not much blue in there anyway, and green - green = black.</p><p>The outer edges of the dice appear red as the underlying texture has a green to yellow transition and yellow is red + green, so removing green from the yellow colour means we still have red left.</p><h2 id="%F0%9F%94%A6-using-emissive-colours">&#x1F526; Using emissive colours</h2><p>So what if we want to do the opposite and add colour? That&apos;s what the emissive colour settings are for! They add colour like a light shining onto the dice. When a red emissive colour is set it turns the dice yellow, not red, and also turns the black borders red, we don&apos;t want that, and if we apply both?</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2024/01/wh.png" class="kg-image" alt="How to make your dice remix friendly using emissive maps" loading="lazy" width="1200" height="578" srcset="https://blog.dddice.com/content/images/size/w600/2024/01/wh.png 600w, https://blog.dddice.com/content/images/size/w1000/2024/01/wh.png 1000w, https://blog.dddice.com/content/images/2024/01/wh.png 1200w" sizes="(min-width: 720px) 720px"></figure><p>Not ideal &#x1F622;. &#xA0;If the dice only had 1 or 2 colours, it wouldn&apos;t be so bad, but if there&apos;s more, and especially if there are gradients, it gets a bit more tricky. How do we resolve this? &#x2014; outline textures and emissive maps!</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Quick tip: if you&apos;re remixing a dice set and need the textures for editing, you can get them through your browser&apos;s dev tools (aka F12 menu).&#xA0;</div></div><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2024/01/AISE5jj.jpeg" class="kg-image" alt="How to make your dice remix friendly using emissive maps" loading="lazy" width="1200" height="690" srcset="https://blog.dddice.com/content/images/size/w600/2024/01/AISE5jj.jpeg 600w, https://blog.dddice.com/content/images/size/w1000/2024/01/AISE5jj.jpeg 1000w, https://blog.dddice.com/content/images/2024/01/AISE5jj.jpeg 1200w" sizes="(min-width: 720px) 720px"></figure><h2 id="%F0%9F%8D%B4-make-remix-friendly-textures">&#x1F374; Make remix friendly textures</h2><p>The first thing is to make an outline texture. This texture is layered on top of the background texture, much as one would do in an image editor like photoshop. Therefore, the part we want to include here is the part that is not affected by the colour gradient in the original texture. We could also include a part of the dice that is a solid colour that is different from the rest of the die, or the metal part if you&apos;re using metal. For the poison envy dice in this example, it&apos;s the black border.</p><p>We can take the texture, crop it to a single side if it&apos;s a full dice texture, modify it so that only the border is visible, then colour it white.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2024/01/YIX0DCA-1.jpeg" class="kg-image" alt="How to make your dice remix friendly using emissive maps" loading="lazy" width="1200" height="380" srcset="https://blog.dddice.com/content/images/size/w600/2024/01/YIX0DCA-1.jpeg 600w, https://blog.dddice.com/content/images/size/w1000/2024/01/YIX0DCA-1.jpeg 1000w, https://blog.dddice.com/content/images/2024/01/YIX0DCA-1.jpeg 1200w" sizes="(min-width: 720px) 720px"></figure><p>When we set this texture as the &quot;Diffuse Map&quot; in the &quot;Face Outline&quot; section we can now see the border. When changing the outline colour setting from the colour menu, you&apos;ll see that we can now control the colour of the border independently of the rest of the die. The emissive colour is still being applied over it, however &#x2013; green colour is having red added to it. We don&apos;t want that. </p><p>We could remove the emissive colour, but then the center of the die appears black again, so there&apos;s still a bit more work to do.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2024/01/gTjTC7b.jpeg" class="kg-image" alt="How to make your dice remix friendly using emissive maps" loading="lazy" width="1200" height="518" srcset="https://blog.dddice.com/content/images/size/w600/2024/01/gTjTC7b.jpeg 600w, https://blog.dddice.com/content/images/size/w1000/2024/01/gTjTC7b.jpeg 1000w, https://blog.dddice.com/content/images/2024/01/gTjTC7b.jpeg 1200w" sizes="(min-width: 720px) 720px"></figure><h2 id="%F0%9F%A6%B8%E2%80%8D%E2%99%80%EF%B8%8F-emissive-map-to-the-rescue">&#x1F9B8;&#x200D;&#x2640;&#xFE0F; Emissive map to the rescue</h2><p>Next thing we need is an emissive map, this is an image that controls how strongly the emissive colour is applied to the dice.</p><p>For now let&apos;s just start with a copy of the outline map we used above and colour it black instead of white, when we add it as the &#x201C;Emissive Map&#x201D; in the &#x201C;Face Outline&#x201D; section, the border now shows up as green even with both of the emissive colours set to full red.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2024/01/TGGmRrY-1.jpeg" class="kg-image" alt="How to make your dice remix friendly using emissive maps" loading="lazy" width="1200" height="448" srcset="https://blog.dddice.com/content/images/size/w600/2024/01/TGGmRrY-1.jpeg 600w, https://blog.dddice.com/content/images/size/w1000/2024/01/TGGmRrY-1.jpeg 1000w, https://blog.dddice.com/content/images/2024/01/TGGmRrY-1.jpeg 1200w" sizes="(min-width: 720px) 720px"></figure><p>So what happened? And wait, two different emissive colour options?</p><p>There are two things that are important in the emissive maps: transparency and brightness. Any part of the emissive map that is black will prevent any emissive colour from being applied. Black means &#x201C;no light here&#x201D;.</p><p>Any part that is transparent, will apply the base emissive colour, and any part that is white will apply the <code>outlineEmissive</code> colour. Let&apos;s try setting those to 2 different colours and changing the emissive map just to demonstrate.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2024/01/6ABzHaj.jpeg" class="kg-image" alt="How to make your dice remix friendly using emissive maps" loading="lazy" width="1200" height="579" srcset="https://blog.dddice.com/content/images/size/w600/2024/01/6ABzHaj.jpeg 600w, https://blog.dddice.com/content/images/size/w1000/2024/01/6ABzHaj.jpeg 1000w, https://blog.dddice.com/content/images/2024/01/6ABzHaj.jpeg 1200w" sizes="(min-width: 720px) 720px"></figure><p>Let&apos;s also get rid of the coloured base background texture, as that is always adding green, now we can see more clearly how the colours are mixing, the white part of the map allowing the blue outlineEmissive colour to mix with the red diffuse colour, while the transparency allows the yellow emissive colour to cover the rest.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2024/01/tNF1og7.jpeg" class="kg-image" alt="How to make your dice remix friendly using emissive maps" loading="lazy" width="1200" height="578" srcset="https://blog.dddice.com/content/images/size/w600/2024/01/tNF1og7.jpeg 600w, https://blog.dddice.com/content/images/size/w1000/2024/01/tNF1og7.jpeg 1000w, https://blog.dddice.com/content/images/2024/01/tNF1og7.jpeg 1200w" sizes="(min-width: 720px) 720px"></figure><h2 id="%F0%9F%93%A6-remixable-colour-gradients">&#x1F4E6; Remixable colour gradients</h2><p>To get that center-to-edge gradient to be colour setting controlled, we need to make edits to the emissive map. Let&apos;s create a square and set its colour to a round gradient. We&apos;ll set the center colour to black and the edge to either transparent or white, depending on which colour setting we want to key into &#x2013; &#xA0;transparent for base emissive, white for outline emissive. Layer this underneath the black layer for the border, then re-upload.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2024/01/KTjLX1Y.jpeg" class="kg-image" alt="How to make your dice remix friendly using emissive maps" loading="lazy" width="1507" height="751" srcset="https://blog.dddice.com/content/images/size/w600/2024/01/KTjLX1Y.jpeg 600w, https://blog.dddice.com/content/images/size/w1000/2024/01/KTjLX1Y.jpeg 1000w, https://blog.dddice.com/content/images/2024/01/KTjLX1Y.jpeg 1507w" sizes="(min-width: 720px) 720px"></figure><p>We can now see the red colour in the center transitioning to yellow at the edges. Now it&apos;s just a matter of adjusting the colour settings so see how remixable it really is! Of course if we&apos;re not happy with the gradient we can always adjust the emissive map. </p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2024/01/fcQEM5v.jpeg" class="kg-image" alt="How to make your dice remix friendly using emissive maps" loading="lazy" width="1320" height="400" srcset="https://blog.dddice.com/content/images/size/w600/2024/01/fcQEM5v.jpeg 600w, https://blog.dddice.com/content/images/size/w1000/2024/01/fcQEM5v.jpeg 1000w, https://blog.dddice.com/content/images/2024/01/fcQEM5v.jpeg 1320w" sizes="(min-width: 720px) 720px"></figure><h2 id="%F0%9F%8E%A8-dont-want-the-colours-mixing">&#x1F3A8; Don&apos;t want the colours mixing?</h2><p>As we can see there is some colour mixing happening. A blue emissive colour on a red diffuse colour results in magenta. If we want to go the extra mile and have the emissive colour be independent of the diffuse colour we need to modify and re-upload the outline map to prevent the colours from mixing too much.</p><p>We can achieve this by adding a radial gradient. Place this underneath the white border layer. Set the centre to transparent and the outer edge to black. The black colour in the map prevents the diffuse and outline colours from showing. This leaves only the emissive colours, allowing us to even use black as an emissive colour when usually setting an emissive colour to black would do nothing.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2024/01/outlinegradient-1.jpg" class="kg-image" alt="How to make your dice remix friendly using emissive maps" loading="lazy" width="1200" height="349" srcset="https://blog.dddice.com/content/images/size/w600/2024/01/outlinegradient-1.jpg 600w, https://blog.dddice.com/content/images/size/w1000/2024/01/outlinegradient-1.jpg 1000w, https://blog.dddice.com/content/images/2024/01/outlinegradient-1.jpg 1200w" sizes="(min-width: 720px) 720px"></figure><p>Once you&apos;re done with updating that one die in the set, you can repeat the process to make outline and emissive textures for the rest of the set &#x2013; and you&apos;re done!</p><h2 id="%F0%9F%97%BA%EF%B8%8F-how-the-maps-combine">&#x1F5FA;&#xFE0F; How the maps combine</h2><p>Often the outline diffuse and emissive maps should be opposites (white and transparent become black, black becomes white or transparent). Depending on what you want to achieve they might not follow that pattern, I&apos;ve made a handy chart to help clarify when you should use black, white or transparent in each map.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.dddice.com/content/images/2024/01/colourgraph.jpg" class="kg-image" alt="How to make your dice remix friendly using emissive maps" loading="lazy" width="1158" height="509" srcset="https://blog.dddice.com/content/images/size/w600/2024/01/colourgraph.jpg 600w, https://blog.dddice.com/content/images/size/w1000/2024/01/colourgraph.jpg 1000w, https://blog.dddice.com/content/images/2024/01/colourgraph.jpg 1158w" sizes="(min-width: 720px) 720px"><figcaption>Diagram to illustrate the interactions of the colours with the outline diffuse and emissive maps. Even without greys or partial transparency, you can have 4 areas that match the colour settings, 1 black area, and 4 areas with mixed colours.</figcaption></figure><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F5D2;&#xFE0F;</div><div class="kg-callout-text">You can read more about how the texture layering works in the <a href="https://docs.dddice.com/guides/dice-editor.html">dice creation documentation</a></div></div><p>Keep in mind that if emissive colours are allowed to mix with the diffuse/outline colours, the darker the emissive colour is, or the brighter the diffuse/outline colour is, the weaker the effect.</p><h2 id="%F0%9F%8E%B2-conclusion">&#x1F3B2; Conclusion</h2><p>The Poison Envy dice set uses a simple gradient, so the outline and emissive maps weren&apos;t too difficult to make. A more complicated arrangement of colours &#x2013; such as the Star Teller set &#x2013; &#xA0;just means you need more detailed map textures. </p><p>If you&apos;re decent at image editing, you should be able to filter out specific colours from the original coloured texture to be black/white/transparent without too much difficulty. Here we can see how the emissive map is applied. &#xA0;The transparent parts show on the dice as pink/yellow, and the white parts show as cyan/green.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.dddice.com/content/images/2024/01/KqE7e9g.jpeg" class="kg-image" alt="How to make your dice remix friendly using emissive maps" loading="lazy" width="1200" height="457" srcset="https://blog.dddice.com/content/images/size/w600/2024/01/KqE7e9g.jpeg 600w, https://blog.dddice.com/content/images/size/w1000/2024/01/KqE7e9g.jpeg 1000w, https://blog.dddice.com/content/images/2024/01/KqE7e9g.jpeg 1200w" sizes="(min-width: 720px) 720px"><figcaption>Transparency in the emissive map is shown here in pink. There&apos;s no pink in the actual texture.</figcaption></figure><p>I hope this helps with your dice making!</p><hr><p>This is a guest post written by NatoPotato, one of our featured community dice creators. You can check out all his dice on his <a href="https://dddice.com/dice?creator=NAT0P0TAT0&amp;page=1">creator page</a> and give them a remix, send him a discord friend request @nat0p0tat0 (zeros, not ohs), or check out his <a href="https://steamcommunity.com/id/NAT0P0TAT0/myworkshopfiles/">steam workshop creations</a>!</p>]]></content:encoded></item><item><title><![CDATA[Best Online Dice Rollers for You and Your Party in 2024]]></title><description><![CDATA[<p>The landscape of online TTRPG play has seen substantial growth in recent years. Platforms like Twitch and YouTube host vibrant communities of D&amp;D and other RPG streams, while numerous new Virtual Tabletops (VTTs), character generators, and GM toolkits have emerged into the limelight. In tandem, a variety of</p>]]></description><link>https://blog.dddice.com/best-online-dice-rollers-for-you-and-your-party-in-2024/</link><guid isPermaLink="false">659199d62da10c0107ddf3e3</guid><dc:creator><![CDATA[Celeste Bloodreign]]></dc:creator><pubDate>Thu, 04 Jan 2024 13:00:17 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2023/12/Screenshot_Fri_Apr_14_010828_PM_EDT_2023.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.dddice.com/content/images/2023/12/Screenshot_Fri_Apr_14_010828_PM_EDT_2023.png" alt="Best Online Dice Rollers for You and Your Party in 2024"><p>The landscape of online TTRPG play has seen substantial growth in recent years. Platforms like Twitch and YouTube host vibrant communities of D&amp;D and other RPG streams, while numerous new Virtual Tabletops (VTTs), character generators, and GM toolkits have emerged into the limelight. In tandem, a variety of apps boasting dice rolling features have been developed to cater to these online players. Here, we aim to highlight a selection of our preferred tools.</p><p>To keep this list concise, we&apos;ve focused on dice rollers that meet these three key criteria:</p><ol><li>Cross-Platform Compatibility: Available for Windows, Mac, Linux, iOS, and Android.</li><li>Online Functionality: Allows dice rolls to be shared in live multiplayer settings.</li><li>3D Visuals: Provides visually appealing dice animations akin to physical dice.</li></ol><h1 id="dddice">dddice</h1><p>dddice has significantly expanded its scope by prioritizing digital dice portability. It&apos;s become the favored dice roller for many new VTT and dice projects. Notably, it&apos;s integrated with diverse platforms like Tabyltop (a new VTT), QuestBound (a customizable RPG rules engine), and an upcoming multifaceted platform called AllTheRPGs, encompassing social media, universal character sheets, and RPG event planning.</p><p>Additionally, dddice integrates seamlessly with popular VTTs like Roll20, Foundry VTT, Owlbear Rodeo, and TaleSpire, and interfaces with character builders such as D&amp;D Beyond and Pathbuilder 2e. It offers a suite of tools for D&amp;D Live streamers, including overlays for roll results, rolls themselves, and a Stream Deck plug-in. With access from 18 different locations, users can enjoy dice animations anywhere they are connected.</p><h2 id="%F0%9F%91%8D-pros">&#x1F44D; Pros</h2><ol><li>10k+ community created dice themes</li><li>No signup required, start rolling in seconds</li><li>Support for Dungeons &amp; Dragons, Pathfinder, World of Darkness, Fate, Call of Cthulhu, Genesys and Fantasy Flight Star Wars</li><li>Customize 3D dice via an easy-to-use editor or more robust API</li><li>Share custom dice with your friends</li><li>Streamer support</li><li>Support for third-party apps via API and SDK</li></ol><h2 id="%F0%9F%91%8E-cons">&#x1F44E; Cons</h2><ol><li>Not a VTT, doesn&apos;t do character creation or automation of characters natively so you&apos;ll have to use a plugin to handle this</li><li>No native app support (but mobile works well enough!)</li><li>Lack of custom shapes, no gem d4s or d100 balls</li></ol><h1 id="dd-beyond">D&amp;D Beyond</h1><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2023/12/image-5.png" class="kg-image" alt="Best Online Dice Rollers for You and Your Party in 2024" loading="lazy" width="2000" height="827" srcset="https://blog.dddice.com/content/images/size/w600/2023/12/image-5.png 600w, https://blog.dddice.com/content/images/size/w1000/2023/12/image-5.png 1000w, https://blog.dddice.com/content/images/size/w1600/2023/12/image-5.png 1600w, https://blog.dddice.com/content/images/2023/12/image-5.png 2000w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://dndbeyond.com">D&amp;D Beyond</a> is great tool you are playing D&amp;D. If you play online then chances are you may already use this, but to those just starting their online RPG experience, this is worth checking out.</p><p>The dice offering of D&amp;D Beyond is not as robust. The biggest con here is only the user rolling the dice sees the actual 3D dice roll, the party just gets the final number in a pop up. It&apos;s a shame too, because some of the dice sets are really beautiful and some are only available via pre-orders. Sure, having rare dice is cool, but rolling them in front of your friends is cooler.</p><h2 id="%F0%9F%91%8D-pros-1">&#x1F44D; Pros</h2><ol><li>You probably already use D&amp;D Beyond for your character sheets</li><li>Beautifully animated 3D dice</li></ol><h2 id="%F0%9F%91%8E-cons-1">&#x1F44E; Cons</h2><ol><li>Party members only see results, not the animated dice</li><li>Limited, but growing die selection (additional themes are $6+)</li><li>No dice outside the standard set used for D&amp;D</li><li>No customization of the dice</li></ol><h1 id="roll20">Roll20</h1><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2023/12/image-9.png" class="kg-image" alt="Best Online Dice Rollers for You and Your Party in 2024" loading="lazy" width="717" height="427" srcset="https://blog.dddice.com/content/images/size/w600/2023/12/image-9.png 600w, https://blog.dddice.com/content/images/2023/12/image-9.png 717w"></figure><p><a href="https://roll20.net">Roll20</a> is a full-fledged, super popular VTT. It does have 3D dice, but unfortunately it&apos;s offering is the slimmest of all on this list. There is one theme, and the color is matched your player color. If all you want is the dice, this probably isn&apos;t for you, but if VTTs are your thing this is a strong choice.</p><h2 id="%F0%9F%91%8D-pros-2">&#x1F44D; Pros</h2><ol><li>Super popular VTT</li><li>Just a bit of config to enable the 3D Dice</li></ol><h2 id="%F0%9F%91%8E-cons-2">&#x1F44E; Cons</h2><ol><li>Roll20 is a full VTT, users need to create an account and create a game to roll 3D dice</li><li>The color of the die matches your player color, no other customization options</li><li>Not all dice types are rollable in 3D, Fudge dice are the notable exception</li><li>Lacks proper mobile support</li></ol><h1 id="dice-so-nice-for-foundry-vtt">Dice So Nice (for Foundry VTT)</h1><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2023/12/image-11.png" class="kg-image" alt="Best Online Dice Rollers for You and Your Party in 2024" loading="lazy" width="1275" height="714" srcset="https://blog.dddice.com/content/images/size/w600/2023/12/image-11.png 600w, https://blog.dddice.com/content/images/size/w1000/2023/12/image-11.png 1000w, https://blog.dddice.com/content/images/2023/12/image-11.png 1275w" sizes="(min-width: 720px) 720px"></figure><p>This is our second VTT option. <a href="https://foundryvtt.com/packages/dice-so-nice/">Dice So Nice</a> is a plug-in for Foundry VTT, also a very popular VTT. Unless you are already on the Foundry platform this is the highest investment in time and money required roll 3D dice.</p><p>If you are already using Foundry or are keen to get started with it, this might be the choice for you.</p><p>Users are able to customize there dice, and there are a few modules in the Foundry VTT module listing that add more dice to the options. You can also buy sets from RollSmith.com that come in the form of a paid Foundry VTT module</p><h2 id="%F0%9F%91%8D-pros-3">&#x1F44D; Pros</h2><ol><li>Integrated into Foundry which many people use already</li><li>Independent dice creators sell dice sets</li></ol><h2 id="%F0%9F%91%8E-cons-3">&#x1F44E; Cons</h2><ol><li>One-time purchase of $50</li><li>Need to self-host or pay for hosting to roll with your party</li><li>Foundry has a steep learning curve</li><li>Lacks proper mobile support</li><li>Players can&apos;t bring their own dice, the GM needs to install the dice into the world</li></ol><h1 id="owlbear-rodeo-20">Owlbear Rodeo 2.0 </h1><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2023/12/image-2-1.png" class="kg-image" alt="Best Online Dice Rollers for You and Your Party in 2024" loading="lazy" width="1275" height="714" srcset="https://blog.dddice.com/content/images/size/w600/2023/12/image-2-1.png 600w, https://blog.dddice.com/content/images/size/w1000/2023/12/image-2-1.png 1000w, https://blog.dddice.com/content/images/2023/12/image-2-1.png 1275w" sizes="(min-width: 720px) 720px"></figure><p>I&apos;m sure you have all heard about <a href="https://owelbear.rodeo">Owlbear Rodeo</a>. It&apos;s a super simple VTT that is easy, intuitive and your players can get playing no sign up required. </p><p>Last year the 2.0 version was released, an improved dice roller. This time you can see what other people roll!</p><h2 id="%F0%9F%91%8D-pros-4">&#x1F44D; Pros</h2><ol><li>Physics based rolling that rolls and tumbles identically on everyone&apos;s screen</li><li>Fast and easy to use, just like the rest of Owlbear Rodeo</li></ol><h2 id="%F0%9F%91%8E-cons-4">&#x1F44E; Cons</h2><ol><li>No dice customization</li><li>Can only roll one color of dice at a time</li><li>Only the standard D&amp;D &#xA0;dice are available</li></ol><h1 id="honorable-mentions">Honorable Mentions</h1><p>This section is for notable dice rollers that didn&apos;t make the top 5 but still fit the criteria.</p><h2 id="lets-role">Lets Role</h2><p>Has a <a href="https://lets-role.com/shop?sort=trending&amp;category=dice">shop </a>with some really nice 3d dice! </p><h2 id="fantasy-grounds">Fantasy Grounds</h2><p>A popular VTT with <a href="https://www.fantasygrounds.com/store/?sys=-1&amp;pub=-1&amp;typ=17&amp;search=&amp;sort=1">3D dice you</a> can roll!</p><h1 id="conclusion">Conclusion</h1><p>There are many ways to get your roll on! All it takes is finding the right tool for you and your party.</p><p>For us, 3D dice are a must, without them, part of the core essence of the game is lost.</p><p>If you play online with a VTT or character sheet that has them already build in, and you are happy with the dice choices provided, you are set! If you play in more than one game and want to bring your dice with you, or you want to try your hand an 3D dice crafting, give dddice a look!</p><p>Happy Rolling &#x1F3B2;</p><hr><p>If you&apos;re interested in joining our growing community, <a href="https://discord.gg/VzHq5TfAr6">join our Discord</a>, <a href="https://twitter.com/dddice_app">follow us on X (formerly known as Twitter</a>), <a href="https://reddit.com/r/dddice">join the subreddit</a>, and stay tuned for more updates.</p>]]></content:encoded></item><item><title><![CDATA[Authenticating with dddice in Quest Bound]]></title><description><![CDATA[<div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F3B2;</div><div class="kg-callout-text">This article is a guest post by Curt, founder of <a href="https://alpha.questbound.com/">Quest Bound</a>. He recently integrated dddice&apos;s 3D dice into Quest Bound, and we asked him to share a post on the process! &#x2014; &#x2665; Celeste Bloodreign</div></div><p>If you had to pick one thing that all tabletop RPGs</p>]]></description><link>https://blog.dddice.com/authenticating-with-dddice-in-quest-bound/</link><guid isPermaLink="false">658ed39a2da10c0107ddf303</guid><category><![CDATA[API]]></category><category><![CDATA[SDK]]></category><category><![CDATA[Guest]]></category><category><![CDATA[Integration]]></category><dc:creator><![CDATA[Curt Morgan]]></dc:creator><pubDate>Fri, 29 Dec 2023 19:34:44 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2023/12/cover.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F3B2;</div><div class="kg-callout-text">This article is a guest post by Curt, founder of <a href="https://alpha.questbound.com/">Quest Bound</a>. He recently integrated dddice&apos;s 3D dice into Quest Bound, and we asked him to share a post on the process! &#x2014; &#x2665; Celeste Bloodreign</div></div><img src="https://blog.dddice.com/content/images/2023/12/cover.png" alt="Authenticating with dddice in Quest Bound"><p>If you had to pick one thing that all tabletop RPGs have in common, you&apos;d probably say it&apos;s rolling dice. I knew from the beginning that dice rolling mechanics would play a huge part of my app, but deprioritized a nice interface in favor of the more niche features I wanted to bring to the community. When I found out that the fantastically approachable <a href="https://docs.dddice.com/sdk/js/latest/">dddice SDK</a> lets you integrate a 3D dice rolling UI with almost no effort, I was instantly sold. Here&apos;s a quick overview of my strategy for integrating my app with dddice.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2023/12/11fiAsa3QmtCQo.webp" class="kg-image" alt="Authenticating with dddice in Quest Bound" loading="lazy" width="325" height="177"></figure><h2 id="%F0%9F%A7%AA-the-use-case">&#x1F9EA; The Use Case</h2><p>My name&apos;s Curt and I&apos;m the creator of a tabletop role-playing game engine called Quest Bound. Quest Bound is an application for creating custom TTRPGs or recreating your favorite ones in a digital format. You could think of it as making your own &quot;D&amp;D Beyond&quot;, but for any tabletop RPG. Once your ruleset and custom, automated character sheets are created, you can make a character and bring it to the table or virtual tabletop.</p><p>That, of course, means rolling dice. From anywhere within Quest Bound, users may open a dice panel, select any number of dice and roll. Quest Bound will provide the UI for dice selection, authentication and switching between rooms--all wrappers around the <a href="https://docs.dddice.com/api/">dddice API</a>. The <a href="https://docs.dddice.com/sdk/js/latest/">dddice SDK</a> will provide the 3D rolling animations and real time connection to sync rolls between platforms.</p><h2 id="%F0%9F%8E%B2-rolling-without-friction">&#x1F3B2; Rolling without Friction</h2><p>One of the (many) advantages of using dddice is giving users the ability to sync rolls between platforms. This is crucial for integrating Quest Bound with virtual tabletops, but I also wanted to lower the friction to rolling as much as possible. Quest Bound is often used as a platform for solo play, so <strong>needing </strong>to authenticate with the online dice roller would be a non-starter.</p><p>Fortunately, the dddice API has an endpoint for <a href="https://docs.dddice.com/api/#user-POSTapi-1.0-user">creating a guest user</a> that requires no authentication. Guest users can roll, create and join rooms, giving Quest Bound all the functionality it needs without requiring users to login. <strong>Perfect!</strong></p><p>Of course, users should have the option of authenticating with their dddice account as well. Authenticated users can choose <a href="https://dddice.com/marketplace">3D dice</a> from their Digital Dice Box and select from their existing rooms.</p><p>Here&apos;s the plan &#x2013; Quest Bound users who login for the first time will have a dddice guest user created on their behalf, which will be used to roll. At anytime, they can authenticate with their dddice account to select a room and choose a theme from their Digital Dice Box.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2023/12/dddice-auth-flow.png" class="kg-image" alt="Authenticating with dddice in Quest Bound" loading="lazy" width="851" height="455" srcset="https://blog.dddice.com/content/images/size/w600/2023/12/dddice-auth-flow.png 600w, https://blog.dddice.com/content/images/2023/12/dddice-auth-flow.png 851w" sizes="(min-width: 720px) 720px"></figure><h2 id="%E2%9A%92-working-with-the-dddice-sdk">&#x2692; Working with the dddice SDK</h2><p>The SDK is a pleasure to use. Instantiating it requires only a ref to a canvas element and the user auth token. I made a custom hook, <code>useDice</code>, that took the canvas ref as an argument. The rest of the authentication logic is held within the hook.</p><p>That logic mostly boiled down to two functions, plus a few helpers to wrap the API endpoints.</p><pre><code class="language-TypeScript">export const authenticateDddiceUser = async (): Promise&lt;DiceUser&gt; =&gt; {
  // These are pulled from Cookies
  const authUserToken = getToken();
  const guestUserToken = getGuestToken();

  const token = authUserToken ?? guestUserToken;
  const isGuest = !authUserToken;

  if (token) {
    const user = await getUser(token);
    const { roomSlug, roomName, roomPasscode, rooms } = await getLastRoom(token, isGuest);
    return {
      roomSlug,
      roomName,
      roomPasscode,
      userToken: token,
      username: user.data.username,
      userId: user.data.uuid,
      rooms: !isGuest ? rooms : [],
      isGuest,
    };
  }

  const res = await bootstrapGuestUser();
  return res;
};

const bootstrapGuestUser = async () =&gt; {
  const userToken = await createGuestUser();
  setGuestToken(userToken);

  const { slug, name } = await createRoom(userToken);
  // This slug is used in the getLastRoom function
  localStorage.setItem(&apos;dddice-guest-room&apos;, slug);

  const guestUser = await getUser(userToken);

  return {
    roomSlug: slug,
    roomName: name,
    userToken,
    userId: guestUser.data.uuid,
    username: guestUser.data.username,
    rooms: [],
    isGuest: true,
  };
};</code></pre><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Quick tip! The <code>creatGuestUser</code> call will accept an auth header. If you provide one, it will be used to enforce the rate limit of 3 calls per minute. During this initial set up, I provided this call with the Quest Bound API key, which spread that rate limit across all QB users &#x1F62C;</div></div><p>Just like that, 3D dice rolling across Quest Bound!</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2023/12/rolling.gif" class="kg-image" alt="Authenticating with dddice in Quest Bound" loading="lazy" width="1920" height="1080" srcset="https://blog.dddice.com/content/images/size/w600/2023/12/rolling.gif 600w, https://blog.dddice.com/content/images/size/w1000/2023/12/rolling.gif 1000w, https://blog.dddice.com/content/images/size/w1600/2023/12/rolling.gif 1600w, https://blog.dddice.com/content/images/2023/12/rolling.gif 1920w" sizes="(min-width: 720px) 720px"></figure><h2 id="%F0%9F%94%91-third-party-authentication">&#x1F511; Third Party Authentication</h2><p>When it comes time for users to login to their dddice account, you can follow the <a href="https://docs.dddice.com/api/#integration-authentication">third party auth flow</a>. All you have to do is create an activation code, then poll for that code&apos;s usage. Once the user accepts the code in another tab, you can retrieve their token from the <code>readActivationCode</code> endpoint.</p><p>Create a new instance of the SDK with the new token and be sure to provide it within the authorization header of the dddice API calls.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2023/12/auth.gif" class="kg-image" alt="Authenticating with dddice in Quest Bound" loading="lazy" width="1920" height="1080" srcset="https://blog.dddice.com/content/images/size/w600/2023/12/auth.gif 600w, https://blog.dddice.com/content/images/size/w1000/2023/12/auth.gif 1000w, https://blog.dddice.com/content/images/size/w1600/2023/12/auth.gif 1600w, https://blog.dddice.com/content/images/2023/12/auth.gif 1920w" sizes="(min-width: 720px) 720px"></figure><p></p><h2 id="%F0%9F%9A%80-conclusion">&#x1F680; Conclusion</h2><p>Working with the <a href="https://docs.dddice.com/sdk/js/latest/">dddice SDK</a> was a great experience. Within a <strong>couple of hours</strong>, Quest Bound had a robust dice rolling mechanism with 3D elements, authentication and real time syncing between platforms. I&apos;m looking forward to following the latest dddice features and continuing to build out this integration.</p><hr><p>This is a guest post written by Curt, the founder of <a href="https://signup.questbound.com?location=dddice-blog">Quest Bound</a>. You can <a href="https://signup.questbound.com?location=dddice-blog">sign up for Early Access</a>, or follow Quest Bound&apos;s development on their <a href="https://blog.questbound.com">blog</a>, <a href="https://www.instagram.com/quest_bound/">insta</a> or join their <a href="https://discord.gg/7QGV4muT39">discord</a>!</p>]]></content:encoded></item><item><title><![CDATA[Building the dddice symbiote for TaleSpire]]></title><description><![CDATA[<p>Symbiotes are a unique take to third-party extensions that the developers at Bouncyrock are taking to allow the community to expand its functionality. The name symbiotes is very apt. Unlike other extension methodologies the symbiote is not subordinate to TaleSpire nor given free rein to change everything. Rather, TaleSpire allows</p>]]></description><link>https://blog.dddice.com/building-the-dddice-symbiote-for-talespire/</link><guid isPermaLink="false">64949af6471891021051e450</guid><category><![CDATA[Integration]]></category><dc:creator><![CDATA[Celeste Bloodreign]]></dc:creator><pubDate>Thu, 22 Jun 2023 19:08:39 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2023/06/IMG_8564.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.dddice.com/content/images/2023/06/IMG_8564.png" alt="Building the dddice symbiote for TaleSpire"><p>Symbiotes are a unique take to third-party extensions that the developers at Bouncyrock are taking to allow the community to expand its functionality. The name symbiotes is very apt. Unlike other extension methodologies the symbiote is not subordinate to TaleSpire nor given free rein to change everything. Rather, TaleSpire allows the symbiote to run alongside (especially during full screen mode) and each can enhance the other via an API. Very symbiotic if you ask me! I&#x2019;m not going to go into the technical details, you can get a much better explanation from the dev logs on the subject or in the official docs. I will, however, share my experience building a symbiote for my own app dddice! </p><hr><p>I get into the details at the <a href="https://bouncyrock.com/news/articles/guest-dev-log-celeste-bloodreign-dddice-dot-com">Bouncyrock Dev Blog</a> &#x2013; read the rest over there.</p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[3D Dice for all your damage type needs 🔥🥶🤢💀🌩️ pt. 1]]></title><description><![CDATA[<p>With the release of particle effects in <a href="https://dddice.com/changelog">v0.13.0</a> we have had some really cool submissions. These effects can really bring out the elemental nature of the dice. Read on for a list of dice to enhance the viauals of your elemental attacks!</p><h1 id="%F0%9F%94%A5-fire">&#x1F525; Fire</h1><p>The first dice that</p>]]></description><link>https://blog.dddice.com/3d-dice-for-all-your-damage-type-needs/</link><guid isPermaLink="false">6460182c47baf802109579fe</guid><dc:creator><![CDATA[Celeste Bloodreign]]></dc:creator><pubDate>Thu, 18 May 2023 11:27:48 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2023/05/dddice-screenshot-1684081833121.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.dddice.com/content/images/2023/05/dddice-screenshot-1684081833121.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"><p>With the release of particle effects in <a href="https://dddice.com/changelog">v0.13.0</a> we have had some really cool submissions. These effects can really bring out the elemental nature of the dice. Read on for a list of dice to enhance the viauals of your elemental attacks!</p><h1 id="%F0%9F%94%A5-fire">&#x1F525; Fire</h1><p>The first dice that come to mind for fire are the coal dice! Complete with licks of flame. </p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dddice.com/dice/coal-lhj3iixx"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Coal - 3D Dice for Dungeons &amp; Dragons | dddice</div><div class="kg-bookmark-description">Roll 3D dice for tabletop roleplaying games live in your browser. Invite friends to roll live or connect with tools such as Roll20, Foundry VTT, and D&amp;D Beyond to bring your dice collection everywhere.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://dddice.com/images/android-icon-192x192.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"><span class="kg-bookmark-author">dddice</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.dddice.com/themes/coal-lhj3iixx/preview/d20-c22956fa172bd7ab95079db1ce716028.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"></div></a></figure><p>This dice set is only available to our Patreon supporters. <a href="https://www.patreon.com/dddice">Support us on Patreon</a> to get access.</p><p>A second option is the Fireball dice by <a href="https://dddice.com/dice?creator=handa&amp;page=1">handa</a>. There are no particle effects on this one, but the coloration says it all!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dddice.com/dice/fireball-ldemqwpg"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Fireball - 3D Dice for Dungeons &amp; Dragons | dddice</div><div class="kg-bookmark-description">Roll 3D dice for tabletop roleplaying games live in your browser. Invite friends to roll live or connect with tools such as Roll20, Foundry VTT, and D&amp;D Beyond to bring your dice collection everywhere.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://dddice.com/images/android-icon-192x192.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"><span class="kg-bookmark-author">dddice</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.dddice.com/themes/fireball-ldemqwpg/preview/d20-d0a3127bd828be4bd568a982c920f444.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"></div></a></figure><h1 id="%F0%9F%A5%B6-cold">&#x1F976; Cold</h1><p>There are so many options for cold damage but I have limeted myself to two. The first is &#xA0;J&#xF6;tunnsteinn! This dice set by <a href="https://dddice.com/dice?creator=handa&amp;page=1">handa</a> is so cold that they cause snow to fall.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dddice.com/dice/jotunnsteinn-lhm8usky"><div class="kg-bookmark-content"><div class="kg-bookmark-title">J&#xF6;tunnsteinn - 3D Dice for Dungeons &amp; Dragons | dddice</div><div class="kg-bookmark-description">Roll 3D dice for tabletop roleplaying games live in your browser. Invite friends to roll live or connect with tools such as Roll20, Foundry VTT, and D&amp;D Beyond to bring your dice collection everywhere.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://dddice.com/images/android-icon-192x192.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"><span class="kg-bookmark-author">dddice</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.dddice.com/themes/jotunnsteinn-lhm8usky/preview/d20-d7ab0f16326be15fb257469c45a6e528.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"></div></a></figure><p>The second is Snow by <a href="https://dddice.com/dice?creator=Amira">Amira</a> with a snow flake motif.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dddice.com/dice/snow-lealyna5"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Snow - 3D Dice for Dungeons &amp; Dragons | dddice</div><div class="kg-bookmark-description">Roll 3D dice for tabletop roleplaying games live in your browser. Invite friends to roll live or connect with tools such as Roll20, Foundry VTT, and D&amp;D Beyond to bring your dice collection everywhere.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://dddice.com/images/android-icon-192x192.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"><span class="kg-bookmark-author">dddice</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.dddice.com/themes/snow-lealyna5/preview/d20-ccd4ad6a3ab3c890f48d23a5d4f5488e.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"></div></a></figure><h1 id="%F0%9F%A4%A2-poison">&#x1F922; Poison</h1><p>There is a bit of a debate as to which color represents poison. Some say green and some say purple. Whicheber camp you fall in we have a dice set for you! First up is Poison Envy by <a href="https://dddice.com/dice?creator=NAT0P0TAT0">NAT0P0TAT0</a>.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dddice.com/dice/toxic-gas-leb3pjhf"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Poison Envy - 3D Dice for Dungeons &amp; Dragons | dddice</div><div class="kg-bookmark-description">Roll 3D dice for tabletop roleplaying games live in your browser. Invite friends to roll live or connect with tools such as Roll20, Foundry VTT, and D&amp;D Beyond to bring your dice collection everywhere.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://dddice.com/images/android-icon-192x192.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"><span class="kg-bookmark-author">dddice</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.dddice.com/themes/toxic-gas-leb3pjhf/preview/d20-6fcb125afd24e4e914e829beda8cdc06.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"></div></a></figure><p>For team purple we have a dice set that was creatred using our &quot;remix&quot; feature. A purple version of Poison Envy called Arkalist by <a href="https://dddice.com/dice?creator=Archvirtualist">Archvirtualist</a>.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dddice.com/dice/toxic-gas-lep4hb26"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Arkalis - 3D Dice for Dungeons &amp; Dragons | dddice</div><div class="kg-bookmark-description">Roll 3D dice for tabletop roleplaying games live in your browser. Invite friends to roll live or connect with tools such as Roll20, Foundry VTT, and D&amp;D Beyond to bring your dice collection everywhere.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://dddice.com/images/android-icon-192x192.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"><span class="kg-bookmark-author">dddice</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.dddice.com/themes/toxic-gas-lep4hb26/preview/d20-16a2afaddbdf6d0f1021b430b7894333.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"></div></a></figure><h1 id="%F0%9F%92%80-necrotic">&#x1F480; Necrotic</h1><p>Necrotic dammage is the type of death, disease and wasting away. We have two sets by user <a href="https://dddice.com/dice?creator=j3str3">j3str3</a>. </p><p>The first is Purple Haze. I personally assocatre necrotic damage with purple. Combine that with the skull on the 20 ans it really fits.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dddice.com/dice/untitled-dice-lec2jvoe"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Purple Haze - 3D Dice for Dungeons &amp; Dragons | dddice</div><div class="kg-bookmark-description">Roll 3D dice for tabletop roleplaying games live in your browser. Invite friends to roll live or connect with tools such as Roll20, Foundry VTT, and D&amp;D Beyond to bring your dice collection everywhere.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://dddice.com/images/android-icon-192x192.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"><span class="kg-bookmark-author">dddice</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.dddice.com/themes/untitled-dice-lec2jvoe/preview/d20-40a3d2be71ab10bea5a567ef87aec989.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"></div></a></figure><p>The second is Skull and Roses. The stringy red patterns reminds me of veins. Its very mecabre when combined with the skull imadry. So Skul, much Necrotic.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dddice.com/dice/untitled-dice-leazpdm6"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Skull and Roses - 3D Dice for Dungeons &amp; Dragons | dddice</div><div class="kg-bookmark-description">Roll 3D dice for tabletop roleplaying games live in your browser. Invite friends to roll live or connect with tools such as Roll20, Foundry VTT, and D&amp;D Beyond to bring your dice collection everywhere.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://dddice.com/images/android-icon-192x192.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"><span class="kg-bookmark-author">dddice</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.dddice.com/themes/untitled-dice-leazpdm6/preview/d20-fa5b18540ce5ee2fad95fee1d16c18e2.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"></div></a></figure><h1 id="%F0%9F%8C%A9%EF%B8%8F-lightning-and-thunder">&#x1F329;&#xFE0F; Lightning and Thunder</h1><p>While I do understand the technical differences between lightning and thunder damage, visually, they always tend to lump together in my mind. Our first entry, Heart of the Storm by <a href="https://dddice.com/dice?creator=j3str3">j3str3</a> is a good example. featuring a lightning bolt and a blue, textured and shiny surface; is it lightning, is it thunder or is it both?</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dddice.com/dice/heart-of-the-storm-lebr36we"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Heart of the Storm - 3D Dice for Dungeons &amp; Dragons | dddice</div><div class="kg-bookmark-description">Roll 3D dice for tabletop roleplaying games live in your browser. Invite friends to roll live or connect with tools such as Roll20, Foundry VTT, and D&amp;D Beyond to bring your dice collection everywhere.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://dddice.com/images/android-icon-192x192.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"><span class="kg-bookmark-author">dddice</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.dddice.com/themes/heart-of-the-storm-lebr36we/preview/d20-3821315cdea9d93140b0b8ff2212ec88.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"></div></a></figure><p>The second takes a much smaller approach to the subject, the dice set Sparks by <a href="https://dddice.com/dice?creator=boss9o5">boss9o5</a>. With images of sparks, or maybe fireworks in the side. Sparks could definitely do some lightning damage, but fireworks would be thunder (or maybe a but of fire too). Seeng my point yet?</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dddice.com/dice/sparks-lhcndigz"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Sparks - 3D Dice for Dungeons &amp; Dragons | dddice</div><div class="kg-bookmark-description">Roll 3D dice for tabletop roleplaying games live in your browser. Invite friends to roll live or connect with tools such as Roll20, Foundry VTT, and D&amp;D Beyond to bring your dice collection everywhere.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://dddice.com/images/android-icon-192x192.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"><span class="kg-bookmark-author">dddice</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn.dddice.com/themes/sparks-lhcndigz/preview/d20-22e740f4323237d1d4497306f60b1567.png" alt="3D Dice for all your damage type needs &#x1F525;&#x1F976;&#x1F922;&#x1F480;&#x1F329;&#xFE0F; pt. 1"></div></a></figure><h1 id="%F0%9F%8E%B2-dice-dice-everywhere">&#x1F3B2; Dice dice everywhere!</h1><p>these are but a small sample of the 5000+ community created dice available. Most of these have been created using our dice editor. Its very powerful yet accessable. I look forward to what you all create and to expand this list as the rest of the damage types get some representatives .</p><p>If you&apos;re interested in joining our growing community, <a href="https://discord.gg/VzHq5TfAr6">join our Discord</a>, <a href="https://twitter.com/dddice_app">follow us on Twitter</a>, <a href="https://reddit.com/r/dddice">join the subreddit</a>, and stay tuned for more updates.</p>]]></content:encoded></item><item><title><![CDATA[How To make dice in Blender and import them to dddice using gLTF]]></title><description><![CDATA[<p>In previous blog posts I have explained how to <a href="https://blog.dddice.com/using-the-dddice-api-to-create-your-own-3d-dice-themes/">upload dice set via our API</a>, and even how to <a href="https://blog.dddice.com/three-js-and-glsl-dice-story/">use Blender to update the dice models</a>. In this article I will walk you though the process of creating a set of dice completely within Blender and use the dddice API</p>]]></description><link>https://blog.dddice.com/how-to-make-dice-in-blender-and-import-them-to-dddice-using-gltf/</link><guid isPermaLink="false">64412ae001cf3b0210b4a158</guid><category><![CDATA[API]]></category><category><![CDATA[Graphics]]></category><category><![CDATA[Dice creation]]></category><dc:creator><![CDATA[Celeste Bloodreign]]></dc:creator><pubDate>Thu, 20 Apr 2023 22:01:44 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2023/04/Capture-1.PNG" medium="image"/><content:encoded><![CDATA[<img src="https://blog.dddice.com/content/images/2023/04/Capture-1.PNG" alt="How To make dice in Blender and import them to dddice using gLTF"><p>In previous blog posts I have explained how to <a href="https://blog.dddice.com/using-the-dddice-api-to-create-your-own-3d-dice-themes/">upload dice set via our API</a>, and even how to <a href="https://blog.dddice.com/three-js-and-glsl-dice-story/">use Blender to update the dice models</a>. In this article I will walk you though the process of creating a set of dice completely within Blender and use the dddice API to upload it so you can roll it on our platform.</p><div class="kg-card kg-callout-card kg-callout-card-yellow"><div class="kg-callout-emoji">&#x26A0;&#xFE0F;</div><div class="kg-callout-text">This article assumes you have a working knowledge of Blender particularly creating node based shaders and using plug-ins.&#xA0;</div></div><p>To follow this workflow you will need Blender, as well as a plugin called <a href="https://blendermarket.com/products/simplebake---simple-pbr-and-other-baking-in-blender-2">SimpleBake</a>. SimpleBake is unfortunately not a free tool. As of the time of this writing it costs $16 USD. Its possible bake all the texture you need without it, but its a cumbersome process, the money was well worth it.</p><h1 id="%F0%9F%8E%ACgetting-started">&#x1F3AC;Getting Started</h1><p>To get started, use this Blender file that has our basic dice geometries. Be careful how you modify these models. Any rotation will have consequences in the physics engine that could cause your dice to show incorrect faces, or even land on edge.</p>
        <div class="kg-card kg-file-card kg-file-card-medium">
            <a class="kg-file-card-container" href="https://blog.dddice.com/content/files/2024/07/modelsv2.blend" title="Download" download>
                <div class="kg-file-card-contents">
                    <div class="kg-file-card-title">Modelsv2</div>
                    
                    <div class="kg-file-card-metadata">
                        <div class="kg-file-card-filename">modelsv2.blend</div>
                        <div class="kg-file-card-filesize">1 MB</div>
                    </div>
                </div>
                <div class="kg-file-card-icon">
                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs><title>download-circle</title><polyline class="a" points="8.25 14.25 12 18 15.75 14.25"/><line class="a" x1="12" y1="6.75" x2="12" y2="18"/><circle class="a" cx="12" cy="12" r="11.25"/></svg>
                </div>
            </a>
        </div>
        <p>Alternatively you can download these fbx files and import them into blender</p>
        <div class="kg-card kg-file-card kg-file-card-medium">
            <a class="kg-file-card-container" href="https://blog.dddice.com/content/files/2024/07/dddice_fbx.zip" title="Download" download>
                <div class="kg-file-card-contents">
                    <div class="kg-file-card-title">Dddice fbx</div>
                    
                    <div class="kg-file-card-metadata">
                        <div class="kg-file-card-filename">dddice_fbx.zip</div>
                        <div class="kg-file-card-filesize">125 KB</div>
                    </div>
                </div>
                <div class="kg-file-card-icon">
                    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><defs><style>.a{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;}</style></defs><title>download-circle</title><polyline class="a" points="8.25 14.25 12 18 15.75 14.25"/><line class="a" x1="12" y1="6.75" x2="12" y2="18"/><circle class="a" cx="12" cy="12" r="11.25"/></svg>
                </div>
            </a>
        </div>
        <h1 id="%F0%9F%93%82opening-the-template-file">&#x1F4C2;Opening the template file</h1><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2023/04/image-1.png" class="kg-image" alt="How To make dice in Blender and import them to dddice using gLTF" loading="lazy" width="2000" height="1125" srcset="https://blog.dddice.com/content/images/size/w600/2023/04/image-1.png 600w, https://blog.dddice.com/content/images/size/w1000/2023/04/image-1.png 1000w, https://blog.dddice.com/content/images/size/w1600/2023/04/image-1.png 1600w, https://blog.dddice.com/content/images/size/w2400/2023/04/image-1.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>Once you open the template file you should see something like the above. These are the basic dice meshes. Its perfectly possible to create really amazing dice without touching the mesh at all. In fact, most of our <a href="https://dddice.com/dice">featured themes</a> all share these meshes.</p><p>In our blog post about how we <a href="https://blog.dddice.com/three-js-and-glsl-dice-story/">created our pride month dice</a>, we explain the 3 sets of UV coordinates that have been defined in our meshes. You can also get exported <a href="https://docs.dddice.com/guides/dice-editor.html#background">UV templates</a> from our documentation on dice creation.</p><p>Next we will hop over to the Shading tab, and with a bit of cooking show magic, create ourselves a material using the node based shaders.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2023/04/image-2.png" class="kg-image" alt="How To make dice in Blender and import them to dddice using gLTF" loading="lazy" width="2000" height="1125" srcset="https://blog.dddice.com/content/images/size/w600/2023/04/image-2.png 600w, https://blog.dddice.com/content/images/size/w1000/2023/04/image-2.png 1000w, https://blog.dddice.com/content/images/size/w1600/2023/04/image-2.png 1600w, https://blog.dddice.com/content/images/2023/04/image-2.png 2000w" sizes="(min-width: 720px) 720px"></figure><div class="kg-card kg-callout-card kg-callout-card-yellow"><div class="kg-callout-emoji">&#x26A0;&#xFE0F;</div><div class="kg-callout-text">In order for your shader to import into dddice properly, the final node needs to be a Principled BSDF shader node</div></div><h1 id="%F0%9F%A5%A7baking-the-models">&#x1F967;Baking the models</h1><p>We suggest you watch the <a href="https://youtu.be/HGoQrqu_V1A">SimpleBake tutorial video</a> to understand all the options so that you can select the right ones for your shader. For example, SimpleBake isn&apos;t able to auto-detect which textures to bake, you need to select them. However here are some important parameters you need for things to import correctly into dddice:</p><p>Make sure all models have the UV Coordinate set &quot;UV_Packed&quot; selected as active.</p><p>Bake your textures at 1024 x 1024.</p><p>Use these &quot;Export Settings&quot;:</p><ul><li>Check &quot;Export Bakes&quot;</li><li>Check &quot;Export mesh&quot;</li><li>Check &quot;Sub-folder per object&quot;</li><li>Set &quot;Export Form&quot; to GLTF&#x2003;</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2023/04/image-3.png" class="kg-image" alt="How To make dice in Blender and import them to dddice using gLTF" loading="lazy" width="648" height="582" srcset="https://blog.dddice.com/content/images/size/w600/2023/04/image-3.png 600w, https://blog.dddice.com/content/images/2023/04/image-3.png 648w"></figure><h1 id="%F0%9F%93%83making-the-manifest">&#x1F4C3;Making the manifest</h1><p>Uploading exported glTF dice via the API is a much simpler process than the method described in other blog posts. The reason for this is that all texture and shader data is packed in the gLTF files, so none of that needs to be detailed in the manifest.</p><p>Here is an example of a gLTF manifest</p><figure class="kg-card kg-code-card"><pre><code class="language-json">{
  &quot;id&quot;: &quot;bloodreign-gltf&quot;,
  &quot;version&quot;: &quot;1.0.0&quot;,
  &quot;api_version&quot;: &quot;2.0&quot;,
  &quot;name&quot;: &quot;gLTF demo&quot;,
  &quot;description&quot;: &quot;First anniversary dice redone in gLTF&quot;,
  &quot;label&quot;: {
    &quot;color&quot;: &quot;#ffffff&quot;,
    &quot;background_color&quot;: &quot;#1f1f1f&quot;
  },
  &quot;meshes&quot;: {
    &quot;d4&quot;: &quot;d04.glb&quot;,
    &quot;d6&quot;: &quot;d06.glb&quot;,
    &quot;d8&quot;: &quot;d08.glb&quot;,
    &quot;d10&quot;: &quot;d10.glb&quot;,
    &quot;d10x&quot;: &quot;d10x.glb&quot;,
    &quot;d12&quot;: &quot;d12.glb&quot;,
    &quot;d20&quot;: &quot;d20.glb&quot;
  }
}</code></pre><figcaption>.glb is a binary form of .gLTF</figcaption></figure><p>As you can see, you only need the generic metadata (<code>id</code>, <code>version</code>, <code>api_version</code>, <code>name</code>, <code>description</code>, and <code>label</code>) plus the <code>meshes</code> section.</p><p>If you are making a set of dice that isn&apos;t the standard d4 to d20 set, you will need to add other sections like <code>available_dice</code> or <code>values</code>. If you are using gLTF meshes, the <code>vert_shader</code>, <code>frag_shader</code>, <code>textures</code>, and <code>uniform</code> keys are ignored, but all the others can be used.</p><p>More details can be found in our <a href="https://blog.dddice.com/using-the-dddice-api-to-create-your-own-3d-dice-themes/">previous post on the API</a>.</p><h1 id="%E2%86%97uploading-via-the-api">&#x2197;Uploading via the API</h1><p>Once you have you manifest definition written out it is time to upload it all with the API. You should read the <a href="https://docs.dddice.com/api/?ref=docs#introduction">documentation</a> to familiarize yourself with uploading a theme. When I upload my themes I use a bash script to automate most of it. I &#x2764; automation.</p><p>To use this script you will need <a href="https://nodejs.org/en">node.js</a> and <a href="https://stedolan.github.io/jq/">jq</a> installed as well as a bash run environment.</p><pre><code class="language-bash">#!/usr/bin/env bash
shopt -s nullglob
shopt -s extglob
API_URI=&apos;https://dddice.com&apos;

# set the working dir
WORKING_DIR=${1:-.}
WORKING_DIR=${WORKING_DIR%/}
MANIFEST=&quot;${WORKING_DIR}/manifest.json&quot;

# increment the minor version number
# this is the part that needs node.js and jq
# you can comment these out safely if you don&apos;t have them
# you will need to increment the version number by hand
VERSION=$(jq -r &quot;.version&quot; &quot;$MANIFEST&quot;)
VERSION=$(npx semver -i patch &quot;$VERSION&quot;)
CONTENTS=$(jq &quot;.version=\&quot;${VERSION}\&quot;&quot; &quot;$MANIFEST&quot;)
echo -E &quot;${CONTENTS}&quot; &gt; &quot;$MANIFEST&quot;

# build the curl command
COMMAND=&quot;curl --header &apos;Authorization: Bearer ${API_KEY}&apos; --header &apos;Accept: application/json&apos; -F manifest=&apos;&lt;${MANIFEST}&apos;&quot;

# find all the assets in the working dir
for asset in &quot;$WORKING_DIR&quot;/*.+(jpg|png|fbx|glb|gltf|mp3|wav|webp); do
    COMMAND=&quot;${COMMAND} -F $(basename ${asset})=&apos;@${asset}&apos;&quot;;
done

# find all the shaders
for shader in &quot;$WORKING_DIR&quot;/*frag*; do
    COMMAND=&quot;${COMMAND} -F frag_shader=&apos;&lt;${shader}&apos;&quot;;
done
for shader in &quot;$WORKING_DIR&quot;/*vert*; do
    COMMAND=&quot;${COMMAND} -F vert_shader=&apos;&lt;${shader}&apos;&quot;;
done

# execute the curl command
bash -c &quot;$COMMAND $API_URI/api/1.0/theme&quot;</code></pre><p>This script searches a directory for your asset files, then combines them with the manifest.json in the same directory and uploads them via curl. Super helpful. Make sure to <a href="https://dddice.com/account/developer">generate your API key first</a> and <code>export API_KEY=&lt;your api key here&gt;</code>.</p><p>I look forward to all the dice you will create with this API.</p><p>If you&apos;re interested in joining our growing community, <a href="https://discord.gg/VzHq5TfAr6">join our Discord</a>, <a href="https://twitter.com/dddice_app">follow us on Twitter</a>, <a href="https://reddit.com/r/dddice">join the subreddit</a>, and stay tuned for more updates.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Building an extension for Owlbear Rodeo 2.0]]></title><description><![CDATA[<p>Third-party extensions are a tried and true method of allowing the general community to add functionality to an existing piece of software. I&apos;m sure I don&apos;t need to remind you of the plethora of browser extensions that have become available over the decades since browsers made</p>]]></description><link>https://blog.dddice.com/building-an-extension-for-owlbear-rodeo-a-3rd-party-perspective/</link><guid isPermaLink="false">63fca8cecd7e0f02103f8373</guid><category><![CDATA[Integration]]></category><dc:creator><![CDATA[Celeste Bloodreign]]></dc:creator><pubDate>Wed, 01 Mar 2023 17:05:30 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2023/03/owlbear-rodeo-extension--1-.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.dddice.com/content/images/2023/03/owlbear-rodeo-extension--1-.jpg" alt="Building an extension for Owlbear Rodeo 2.0"><p>Third-party extensions are a tried and true method of allowing the general community to add functionality to an existing piece of software. I&apos;m sure I don&apos;t need to remind you of the plethora of browser extensions that have become available over the decades since browsers made such available. As of February 2023, Owlbear Rodeo 2.0 has expanded their application to allow third-party extensions. I will be taking you though what it was like building an extension for Owlbear, as a third-party developer. </p><hr><p>I get into the details in a guest post on the Owlbear Rodeo Development Blog &#x2014; You can read it <a href="https://blog.owlbear.rodeo/building-an-extension-for-owlbear-rodeo-2-0/">over there</a>.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Playing Tabletop Role-playing Games Online without a VTT]]></title><description><![CDATA[<p>Virtual Tabletops (VTT) have undoubtedly made tabletop role-playing games such as Dungeons &amp; Dragons more accessible and approachable. VTTs and similar software have also helped other tabletop systems such as Pathfinder and Call of Cthulhu explode in popularity.</p><h2 id="what-is-a-vtt">What is a VTT?</h2><p>A Virtual Tabletop is a piece of software</p>]]></description><link>https://blog.dddice.com/playing-tabletop-role-playing-games-online-without-a-vtt/</link><guid isPermaLink="false">6322fff42e7437020b9d0f6e</guid><category><![CDATA[Resources]]></category><dc:creator><![CDATA[nullfish]]></dc:creator><pubDate>Thu, 19 Jan 2023 16:51:57 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2023/01/streaming-mode.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.dddice.com/content/images/2023/01/streaming-mode.jpg" alt="Playing Tabletop Role-playing Games Online without a VTT"><p>Virtual Tabletops (VTT) have undoubtedly made tabletop role-playing games such as Dungeons &amp; Dragons more accessible and approachable. VTTs and similar software have also helped other tabletop systems such as Pathfinder and Call of Cthulhu explode in popularity.</p><h2 id="what-is-a-vtt">What is a VTT?</h2><p>A Virtual Tabletop is a piece of software that offers useful tools to play tabletop role-playing games (TTRPGs) online and sometimes offline. There are many out there that offer immersive visualizations for players, faster automation for attack and damage rolls, and can even offer reliable communication tools with audio and video chat for your whole party. With all these tools available, you can practically replicate the experience of a real tabletop entirely online and this experience is extremely appealing to many.</p><p>VTTs can come with a cost however. </p><h2 id="the-cost-of-vtts">The Cost of VTTs</h2><p>Many VTTs are subscription-based and only offer certain features behind a paywall. Others can be costly upfront and require a reasonable amount of tinkering to get just right. No one tool fits all parties, though many VTTs are trying, and this can lead to increased complexity and a steep learning curve.</p><p>With so many VTT options, starting a new TTRPG can sometimes feel like a daunting task.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2023/01/image.png" class="kg-image" alt="Playing Tabletop Role-playing Games Online without a VTT" loading="lazy" width="640" height="360" srcset="https://blog.dddice.com/content/images/size/w600/2023/01/image.png 600w, https://blog.dddice.com/content/images/2023/01/image.png 640w"></figure><h2 id="play-ttrpgs-no-vtt-required">Play TTRPGs, No VTT Required</h2><p>There is another way to play tabletop role-playing games online.</p><p>Theater of the Mind is one of the purest and often the easiest way to play TTRPGs. To start, all you need is some dice and a good imagination.</p><h2 id="tools-for-theater-of-the-mind">Tools for Theater of the Mind</h2><p>Tools such as <a href="https://dddice.com?ref=blog">dddice</a> offer a simple, alternative interface to engage in your favorite tabletop role-playing games. dddice is a multiplayer 3D dice roller that allows you to roll, collect, and create 3D dice with your friends (or foes). There is no sign-up required and all features of dddice are completely free.</p><p>dddice promises and delivers on a single core component of all TTRPGs, rolling dice! No complicated map setup, character creation, or scene management - simply pick your favorite dice and start rolling. In combination with other free tools such as Discord or Zoom, starting a new TTRPG with your party has never been easier.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2023/01/Screenshot-Thu-Jan-19-11-25-38-AM-EST-2023.png" class="kg-image" alt="Playing Tabletop Role-playing Games Online without a VTT" loading="lazy" width="1920" height="1080" srcset="https://blog.dddice.com/content/images/size/w600/2023/01/Screenshot-Thu-Jan-19-11-25-38-AM-EST-2023.png 600w, https://blog.dddice.com/content/images/size/w1000/2023/01/Screenshot-Thu-Jan-19-11-25-38-AM-EST-2023.png 1000w, https://blog.dddice.com/content/images/size/w1600/2023/01/Screenshot-Thu-Jan-19-11-25-38-AM-EST-2023.png 1600w, https://blog.dddice.com/content/images/2023/01/Screenshot-Thu-Jan-19-11-25-38-AM-EST-2023.png 1920w" sizes="(min-width: 720px) 720px"></figure><h2 id="still-want-to-use-a-vtt">Still Want to Use a VTT?</h2><p>Awesome! dddice can be combined with your favorite tabletop software such as Roll20, Foundry VTT, and even the <a href="https://apps.elgato.com/plugins/com.dddice.app">Elgato Stream Deck</a>!</p><figure class="kg-card kg-video-card"><div class="kg-video-container"><video src="https://blog.dddice.com/content/media/2023/01/streamdeckclipfromstream.mp4" poster="https://img.spacergif.org/v1/1280x720/0a/spacer.png" width="1280" height="720" loop autoplay muted playsinline preload="metadata" style="background: transparent url(&apos;https://blog.dddice.com/content/images/2023/01/media-thumbnail-ember196.jpg&apos;) 50% 50% / cover no-repeat;"></video><div class="kg-video-overlay"><button class="kg-video-large-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button></div><div class="kg-video-player-container kg-video-hide"><div class="kg-video-player"><button class="kg-video-play-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/></svg></button><button class="kg-video-pause-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/><rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/></svg></button><span class="kg-video-current-time">0:00</span><div class="kg-video-time">/<span class="kg-video-duration"></span></div><input type="range" class="kg-video-seek-slider" max="100" value="0"><button class="kg-video-playback-rate">1&#xD7;</button><button class="kg-video-unmute-icon"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/></svg></button><button class="kg-video-mute-icon kg-video-hide"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/></svg></button><input type="range" class="kg-video-volume-slider" max="100" value="100"></div></div></div></figure><p>Don&apos;t like paper character sheets? Try <a href="https://chrome.google.com/webstore/detail/dddice/npmficphbhbhebhjfekjopgkpojjcfem">dddice&apos;s D&amp;D Beyond plugin</a>. Want to use maps in Foundry VTT? Try <a href="https://foundryvtt.com/packages/dddice">dddice&apos;s Foundry VTT plugin</a>.</p><p>Use your favorite tools to automate character creation or create immersive maps and leverage dddice to roll click-clacks anywhere you are.</p><h2 id="conclusion">Conclusion</h2><p>If you&apos;re looking for an easy way to play tabletop role-playing games online, <a href="https://dddice.com">dddice</a> offers an infinite number of different dice and dice themes to choose from and let&apos;s you roll live with your party in seconds - no signup required!</p><p>If you&apos;re interested in joining our growing community, <a href="https://discord.gg/VzHq5TfAr6">join our Discord</a>, <a href="https://twitter.com/dddice_app">follow us on Twitter</a>, <a href="https://reddit.com/r/dddice">join the subreddit</a>, and stay tuned for more updates.</p><p>So what are you waiting for? <a href="https://dddice.com">Get rolling</a> and have fun!</p>]]></content:encoded></item><item><title><![CDATA[3D Dice at Scale]]></title><description><![CDATA[<p>dddice is a simple platform to roll 3D dice with friends. Well ... we say simple but the infrastructure that powers over 60,000 rolls (and growing) has also grew in complexity. Our users depend on us for their game nights and there is nothing worse than something going wrong during</p>]]></description><link>https://blog.dddice.com/v0-6-0-3d-dice-at-scale/</link><guid isPermaLink="false">6344933b0a921f020bf00142</guid><category><![CDATA[Release]]></category><dc:creator><![CDATA[nullfish]]></dc:creator><pubDate>Tue, 11 Oct 2022 11:59:25 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2022/10/hero-background.jpeg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.dddice.com/content/images/2022/10/hero-background.jpeg" alt="3D Dice at Scale"><p>dddice is a simple platform to roll 3D dice with friends. Well ... we say simple but the infrastructure that powers over 60,000 rolls (and growing) has also grew in complexity. Our users depend on us for their game nights and there is nothing worse than something going wrong during a fun night with friends.</p><p>We sincerely value our amazing community and in order to support the next 1,000,000 rolls and users, we have taken on some unseen but necessary backend work to ensure we are shipping consistently stable and performant software.</p><p>If you enjoy articles about &quot;how the sausage is made&quot;, then read on!</p><h2 id="what-powers-dddice">What powers dddice?</h2><p>Since <a href="https://blog.dddice.com/use-3d-dice-anywhere-with-dddice-v0-3-0/">our humble beginnings</a>, dddice has been powered by a monolithic PHP backend using MySQL and Redis databases to serve up pages and WebSocket connections. We believe in choosing boring technology that is predictable and dependable.</p><p>All of our sites have been hosted on a single Virtual Machine (VM) living in the cloud. During our growth, we only upgraded this server once - from a 2 vCPU/4GB RAM VM to a beefier 4 vCPU/8GB RAM VM.</p><p>This VM, up until now, powered our main application, several background workers, cron jobs, this blog, our documentation site, an internal company handbook, a WebSocket server, and a chromedriver instance used to generate previews for custom dice themes.</p><p>It wasn&apos;t much, but it was honest work and it served us well.</p><p>While nothing was particularly wrong with our VM, it was clear that dddice was growing and so were our users&apos; expectations. We wanted to ensure that every single update was ready to handle the traffic that a large gaming group brought. Not only did we seek to meet our users&apos; expectations, we wanted to exceed them. Obviously a single VM was not going to make the cut for a global-ready platform designed for everyone to enjoy.</p><p>In order to ready ourselves for a global audience, we began the arduous process of analyzing our MySQL tables, dissecting every bit of our infrastructure, and making the necessary changes needed to ensure we stay performant and stable throughout our growth.</p><h2 id="picking-the-right-horses">Picking the right horses</h2><p>Our company handbook meticulously outlines how to architect our applications. When we began, we set a high-standard to ensure everything we did was &quot;portable&quot;. This meant if we wanted to drop a hosting provider or a particular service and move to another, we could with little to no changes to our codebase or deployment system. Take into consideration that dddice is built by two people working part-time, we needed processes in place to make changes sane to develop and deploy. Building a gaming service is no easy task especially given the high standards that gamers often have.</p><p>We have since adopted a new philosophy, &quot;picking the right horses for the race.&quot; This means we carefully analyze our previous and future needs to pick infrastructure that makes sense for the next 1,000,000 users. Instead of writing messy configuration files for the sake of portability, we instead have decided to write the necessary interfaces that interact with the <em>right</em> services that provide us ultimate performance and stability.</p><p>So what are the right horses?</p><p>Our new infrastructure uses <a href="https://fly.io">Fly.io</a> as our hosting platform which allows us to deploy our application close to our users. Instead of a single VM hosted in Newark, NJ, we now have the luxury to deploy dddice anywhere our users are and serve pages and WebSocket connections <em>fast. </em>We can scale to dozens, hundreds, or thousands of servers anywhere in the world all with a single command.</p><p>We also dropped MySQL for <a href="https://vitess.io/">Vitess</a>, specifically hosted with <a href="https://planetscale.com">PlanetScale</a> as our database of choice. Instead of dealing with the headaches that come with MySQL read-write replicas, we now offload those tasks with someone we can trust. Our backend has been updated to support read-write replication which makes page loads faster for our global users. Similar to Fly, we can deploy multi-region databases with a single command.</p><p>All of our services and sites are reliably deployed using <a href="https://github.com/features/actions">GitHub Actions</a> which has replaced our growing mess of <a href="https://www.terraform.io/">Terraform</a> templates.</p><p>These services give us the peace-of-mind that growth spikes are not going to bring us to a grinding halt.</p><h2 id="testing-testing-is-this-thing-on">Testing, Testing ... Is this thing on?</h2><p>We pride ourselves on stability; however, dddice is considered to be <strong>alpha</strong> software which means things can be expected to break from time-to-time. It is far from our intention, but we have been attempting to move fast to meet user demands.</p><p>v0.6.0 is the first release to heavily focus on testing which is providing more confidence in our systems. We have begun to focus on three fundamental types of testing for maximum assurance: unit, integration, and end-to-end.</p><p>Our unit tests are starting to capture the small user-interface nuances and bugfixes we make to ensure these work correctly through updates. Our integration tests are providing clarity into our API and how it responds to good and bad inputs. End-to-end tests are ensuring everything works together in harmony. While end-to-end tests are sometimes slow, we are focusing heavily in this department to ensure our tests capture and assure the exact user experience.</p><p>We hope in the next few minor releases (v0.7.x and on), we will start to transition from alpha software to something much more predictably stable.</p><h2 id="conclusion">Conclusion</h2><p>We have made significant improves to our company culture, architecture, and infrastructure to best support the next cycle of growth. We continue to operate with a tiny-but-mighty team to build the best dice rolling service possible.</p><p>We are proud of the platform we built and the community we have fostered so far.</p><p>If you&apos;re interested in joining our growing community, <a href="https://discord.gg/VzHq5TfAr6">join our Discord</a>, <a href="https://twitter.com/dddice_app">follow us on Twitter</a>, <a href="https://reddit.com/r/dddice">join the subreddit</a>, and stay tuned for more updates.</p><p>We hope to dive deeper into some of our infrastructure in future posts.</p><p>Until then - <a href="https://dddice.com">happy rolling</a>!</p>]]></content:encoded></item><item><title><![CDATA[Dice Games to Play in a Tavern]]></title><description><![CDATA[<p>So your party has a night in a tavern. It&apos;s been a long journey and now everyone is looking forward to relaxing, having a pint of grog, and tossing some dice around (perhaps winning some copper?)</p><p>We&apos;ve compiled a small list of dice games you can</p>]]></description><link>https://blog.dddice.com/dice-games-to-play-in-a-tavern/</link><guid isPermaLink="false">6322fff42e7437020b9d0f70</guid><dc:creator><![CDATA[nullfish]]></dc:creator><pubDate>Wed, 07 Sep 2022 13:15:52 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2022/09/tj-holowaychuk-rDyZ8t-MYxU-unsplash.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.dddice.com/content/images/2022/09/tj-holowaychuk-rDyZ8t-MYxU-unsplash.jpg" alt="Dice Games to Play in a Tavern"><p>So your party has a night in a tavern. It&apos;s been a long journey and now everyone is looking forward to relaxing, having a pint of grog, and tossing some dice around (perhaps winning some copper?)</p><p>We&apos;ve compiled a small list of dice games you can play while enjoying your stay at a tavern or anywhere your party might have a moment of downtime.</p><h1 id="liars-dice">Liar&apos;s Dice</h1><p>This game can be played with 2 or more players, no deception checks required.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2022/09/Screenshot-Wed-Sep--7-09-05-21-AM-EDT-2022-1.png" class="kg-image" alt="Dice Games to Play in a Tavern" loading="lazy" width="1920" height="1080" srcset="https://blog.dddice.com/content/images/size/w600/2022/09/Screenshot-Wed-Sep--7-09-05-21-AM-EDT-2022-1.png 600w, https://blog.dddice.com/content/images/size/w1000/2022/09/Screenshot-Wed-Sep--7-09-05-21-AM-EDT-2022-1.png 1000w, https://blog.dddice.com/content/images/size/w1600/2022/09/Screenshot-Wed-Sep--7-09-05-21-AM-EDT-2022-1.png 1600w, https://blog.dddice.com/content/images/2022/09/Screenshot-Wed-Sep--7-09-05-21-AM-EDT-2022-1.png 1920w" sizes="(min-width: 720px) 720px"></figure><h3 id="how-to-play">How to Play</h3><p>Each player begins by rolling 5 six-sided dice (5d6) while concealing their roll.</p><p>The first player begins by announcing any face value and the minimum number of dice that have that value. For example, a player can say, &quot;I have two 3&apos;s&quot; implying there are at least two dice rolls that are &quot;3&quot;. Rolls of &quot;1&quot; can be considered &quot;wildcards&quot;, meaning they can be used as a placeholder for another value.</p><p>The next player sitting clockwise from the first player then can make two choices: challenge the previous player by declaring, <strong>&quot;LIAR</strong>&quot;, or raising the stakes by announcing they have more dice rolls at the given face value or a higher face value. For example, the next player can either say, &quot;I have two 4&apos;s&quot;, a higher face value or, &quot;I have three 3&apos;s&quot;, a higher quantity of the previous bid.</p><p>If a player declares, &quot;liar&quot;, then all players reveal their dice and a winner is declared. If the challenger successfully finds the liar then they win, otherwise the original bidder wins.</p><p>You are free to choose how betting might work - whether it&apos;s copper, silver, or dice!</p><h1 id="avandras-favor">Avandra&apos;s Favor</h1><p>Avandra&apos;s Favor or sometimes called &quot;The Changebringer&apos;s Favor&quot; is a simple dice game popularized by the critically-acclaimed <a href="https://critrole.com/">Critical Role</a>.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2022/09/Screenshot-Wed-Sep--7-09-09-33-AM-EDT-2022.png" class="kg-image" alt="Dice Games to Play in a Tavern" loading="lazy" width="1920" height="1080" srcset="https://blog.dddice.com/content/images/size/w600/2022/09/Screenshot-Wed-Sep--7-09-09-33-AM-EDT-2022.png 600w, https://blog.dddice.com/content/images/size/w1000/2022/09/Screenshot-Wed-Sep--7-09-09-33-AM-EDT-2022.png 1000w, https://blog.dddice.com/content/images/size/w1600/2022/09/Screenshot-Wed-Sep--7-09-09-33-AM-EDT-2022.png 1600w, https://blog.dddice.com/content/images/2022/09/Screenshot-Wed-Sep--7-09-09-33-AM-EDT-2022.png 1920w" sizes="(min-width: 720px) 720px"></figure><h3 id="how-to-play-1">How to Play</h3><p>The rules are simple, a player places a bet and rolls two six-sided dice (2d6).</p><p>The roll total must total <strong>7</strong> or <strong>12</strong>. If the total is not these two numbers, the player loses and can choose to walk away or double their bet to roll an additional six-sided dice (1d6) in order to make the total equal <strong>7</strong> or <strong>12. </strong>If one of these totals is reached, the player wins their bet.</p><h1 id="pig">Pig</h1><p>Pig is a simple dice game that involves a single six-sided die (1d6). First player to score 100-points wins.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2022/09/Screenshot-Wed-Sep--7-09-13-35-AM-EDT-2022.png" class="kg-image" alt="Dice Games to Play in a Tavern" loading="lazy" width="1920" height="1080" srcset="https://blog.dddice.com/content/images/size/w600/2022/09/Screenshot-Wed-Sep--7-09-13-35-AM-EDT-2022.png 600w, https://blog.dddice.com/content/images/size/w1000/2022/09/Screenshot-Wed-Sep--7-09-13-35-AM-EDT-2022.png 1000w, https://blog.dddice.com/content/images/size/w1600/2022/09/Screenshot-Wed-Sep--7-09-13-35-AM-EDT-2022.png 1600w, https://blog.dddice.com/content/images/2022/09/Screenshot-Wed-Sep--7-09-13-35-AM-EDT-2022.png 1920w" sizes="(min-width: 720px) 720px"></figure><h3 id="how-to-play-2">How to Play</h3><p>Players take turns rolling a six-sided die (1d6) and adding the value to a running total; however, if a player rolls a &quot;1&quot;, all points for that turn are lost.</p><p>A player can roll as many times as they like in a single turn. A player&apos;s turn ends when a &quot;1&quot; is rolled or the player decides to &quot;hold&quot;.</p><p>The first player to score 100-points or more wins.</p><h1 id="ch%C5%8D-han">Ch&#x14D;-han</h1><p>Another simple dice game that requires only two six-sided dice (2d6) and puts the Game Master front-and-center.</p><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2022/09/Screenshot-Wed-Sep--7-09-15-19-AM-EDT-2022.png" class="kg-image" alt="Dice Games to Play in a Tavern" loading="lazy" width="1920" height="1080" srcset="https://blog.dddice.com/content/images/size/w600/2022/09/Screenshot-Wed-Sep--7-09-15-19-AM-EDT-2022.png 600w, https://blog.dddice.com/content/images/size/w1000/2022/09/Screenshot-Wed-Sep--7-09-15-19-AM-EDT-2022.png 1000w, https://blog.dddice.com/content/images/size/w1600/2022/09/Screenshot-Wed-Sep--7-09-15-19-AM-EDT-2022.png 1600w, https://blog.dddice.com/content/images/2022/09/Screenshot-Wed-Sep--7-09-15-19-AM-EDT-2022.png 1920w" sizes="(min-width: 720px) 720px"></figure><h3 id="how-to-play-3">How to Play</h3><p>The Game Master rolls two six-sided dice (2d6) and conceals the roll. Players then take turns betting if the roll is &quot;Ch&#x14D;&quot; (even) or &quot;Han&quot; (odd). &#xA0;Players often bet by bartering bets between each other. Once all bets are placed, the Game Master reveals the dice and the winners collect their earnings.</p><h1 id="conclusion">Conclusion</h1><p>There are a <em>handful</em> (&#x1F60F;) of dice games to play while your party has some downtime.</p><p>If you&apos;re looking for an easy way to play some of these games, <a href="https://dddice.com">dddice</a> offers an infinite number of different dice and dice themes to choose from and let&apos;s you roll live with your party in seconds - no signup required! To conceal rolls, use the &quot;Hidden Roll&quot; feature and invoke mystery by revealing your rolls to other connected players.</p><p>If you&apos;re interested in joining our growing community, <a href="https://discord.gg/VzHq5TfAr6">join our Discord</a>, <a href="https://twitter.com/dddice_app">follow us on Twitter</a>, <a href="https://reddit.com/r/dddice">join the subreddit</a>, and stay tuned for more updates.</p><p>So what are you waiting for? Get rolling and have fun!</p>]]></content:encoded></item><item><title><![CDATA[Using the dddice API to Create Your Own 3D Dice Themes]]></title><description><![CDATA[While we do have an editor for our online dice, it has its limits. If you want an unlimited experience you need to use the API.]]></description><link>https://blog.dddice.com/using-the-dddice-api-to-create-your-own-3d-dice-themes/</link><guid isPermaLink="false">6322fff42e7437020b9d0f6d</guid><category><![CDATA[Dice creation]]></category><category><![CDATA[API]]></category><dc:creator><![CDATA[Celeste Bloodreign]]></dc:creator><pubDate>Tue, 06 Sep 2022 12:58:13 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2022/08/tempsnip.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.dddice.com/content/images/2022/08/tempsnip.png" alt="Using the dddice API to Create Your Own 3D Dice Themes"><p>While we do have an editor for our online dice, one that let&apos;s you remix our themes or even create your own, it has its limits. If you want a truly unlimited dice creation experience you need to use the API, and core to that is understanding the dddice manifest definition.</p><p>Typically, a 3D model consists of meshes, shaders, and parameters to those shaders, aka uniforms. A dice set is, simply put, a collection of all the things that make up 3D models, enough to define all the dice in the set. The dddice manifest is what the API uses to bind all these pieces together.</p><h1 id="manifest-example"> Manifest example</h1><p>The dddice manifest is a well-defined JSON object, here is an example:</p><figure class="kg-card kg-code-card"><pre><code class="language-json">{
  &quot;id&quot;: &quot;dddice-standard&quot;,
  &quot;version&quot;: &quot;1.0.0&quot;,
  &quot;api_version&quot;: &quot;2.0&quot;,
  &quot;name&quot;: &quot;Standard&quot;,
  &quot;description&quot;: &quot;Just&#xA0;your&#xA0;average&#xA0;set&#xA0;of&#xA0;dice,&#xA0;nothing&#xA0;too&#xA0;fancy.&quot;,
  &quot;label&quot;: {
    &quot;color&quot;: &quot;#000000&quot;,
    &quot;background_color&quot;: &quot;#e3d12d&quot;
  },
  &quot;frag_shader&quot;: &quot;shader.frag&quot;,
  &quot;vert_shader&quot;: &quot;shader.vert&quot;,
  &quot;available_dice&quot;: [
    {
      &quot;id&quot;: &quot;d4&quot;,
      &quot;type&quot;: &quot;d4&quot;
    },
    {
      &quot;id&quot;: &quot;d6&quot;,
      &quot;type&quot;: &quot;d6&quot;
    },
    {
      &quot;id&quot;: &quot;d8&quot;,
      &quot;type&quot;: &quot;d8&quot;
    },
    {
      &quot;id&quot;: &quot;d10&quot;,
      &quot;type&quot;: &quot;d10&quot;
    },
    {
      &quot;id&quot;: &quot;d10x&quot;,
      &quot;type&quot;: &quot;d10&quot;
    },
    {
      &quot;id&quot;: &quot;d12&quot;,
      &quot;type&quot;: &quot;d12&quot;
    },
    {
      &quot;id&quot;: &quot;d20&quot;,
      &quot;type&quot;: &quot;d20&quot;
    }
  ],
  &quot;textures&quot;: [
    {
      &quot;binding&quot;: &quot;u_numberMap&quot;,
      &quot;src&quot;: {
        &quot;d4&quot;: &quot;standard.png&quot;,
        &quot;d6&quot;: &quot;standard.png&quot;,
        &quot;d8&quot;: &quot;standard.png&quot;,
        &quot;d10&quot;: &quot;standard.png&quot;,
        &quot;d12&quot;: &quot;standard.png&quot;,
        &quot;d20&quot;: &quot;standard.png&quot;,
        &quot;d10x&quot;: &quot;standard_d10x.png&quot;
      }
    }
  ],
  &quot;uniforms&quot;: {
    &quot;diffuse&quot;: {
      &quot;type&quot;: &quot;color&quot;,
      &quot;value&quot;: {
        &quot;r&quot;: 1,
        &quot;g&quot;: 0.929,
        &quot;b&quot;: 0
      }
    },
    &quot;number&quot;: {
      &quot;type&quot;: &quot;color&quot;,
      &quot;value&quot;: {
        &quot;r&quot;: 0.463,
        &quot;g&quot;: 0.424,
        &quot;b&quot;: 0
      }
    },
    &quot;specular&quot;: {
      &quot;type&quot;: &quot;color&quot;,
      &quot;value&quot;: {
        &quot;r&quot;: 0.1,
        &quot;g&quot;: 0.1,
        &quot;b&quot;: 0.1
      }
    },
    &quot;shininess&quot;: {
      &quot;type&quot;: &quot;f&quot;,
      &quot;value&quot;: 30
    }
  },
  &quot;meshes&quot;: {
    &quot;d4&quot;: &quot;d04.fbx&quot;,
    &quot;d6&quot;: &quot;d06.fbx&quot;,
    &quot;d8&quot;: &quot;d08.fbx&quot;,
    &quot;d10&quot;: &quot;d10.fbx&quot;,
    &quot;d10x&quot;: &quot;d10.fbx&quot;,
    &quot;d12&quot;: &quot;d12.fbx&quot;,
    &quot;d20&quot;: &quot;d20.fbx&quot;
  },
  &quot;sizes&quot;: {
    &quot;d4&quot;: 1,
    &quot;d6&quot;: 1,
    &quot;d8&quot;: 1,
    &quot;d10&quot;: 1,
    &quot;d10x&quot;: 1,
    &quot;d12&quot;: 1,
    &quot;d20&quot;: 1
  },
  &quot;values&quot;: {
    &quot;d4&quot;: [
      1,
      2,
      3,
      4
    ],
    &quot;d6&quot;: [
      1,
      2,
      3,
      4,
      5,
      6
    ],
    &quot;d8&quot;: [
      1,
      2,
      3,
      4,
      5,
      6,
      7,
      8
    ],
    &quot;d10&quot;: [
      1,
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10
    ],
    &quot;d10x&quot;: [
      10,
      20,
      30,
      40,
      50,
      60,
      70,
      80,
      90,
      0
    ],
    &quot;d12&quot;: [
      1,
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10
    ],
    &quot;d20&quot;: [
      1,
      2,
      3,
      4,
      5,
      6,
      7,
      8,
      9,
      10,
      11,
      12,
      13,
      14,
      15,
      16,
      17,
      18,
      19,
      20
    ]
  }
}</code></pre><figcaption>sample manifest from from our standard theme</figcaption></figure><h1 id="the-src-element"> The <code>src</code> element</h1><p>Before we get into each individual section, let&apos;s start with how we handle the <code>src</code> element. Everywhere in the manifest this can either be a string, or an object. The string is used to apply that value to all dice in the set; the object to define different sources for each die in the set. For example, we can use a string to define a single texture that is used for all dice in a set OR we can define an object to define different textures for different dice models.</p><h1 id="metadata"> Metadata </h1><p>The first section above defines metadata about the die, the required ones are:</p><ol><li><code>id</code> &#x2013; a unique ID following <a href="https://en.wikipedia.org/wiki/Clean_URL#Slug">slug format</a> to identify your dice to the system.</li><li><code>version</code> &#x2013; a version number for this die following <a href="https://semver.org/spec/v2.0.0.html">semver 2.0.0</a>. The API does not allow updating a version once submitted, so your id/version combo must be unique.</li><li><code>api_version</code> &#x2013; the version of the API you are targeting with your file. Right now only version 2.0 themes are allowed.</li><li><code>name</code> &#x2013; &#xA0;the human readable name that is displayed to users, doesn&apos;t have to be unique.</li><li><code>description</code> &#x2013; the description you want for your dice, shows up on the dice share and info pages.</li><li><code>label</code> &#x2013; defines the colors used to display the name of your dice within the app, <code>color</code> is the font color and <code>background_color</code> is the... background color </li></ol><h1 id="available-dice"> Available Dice</h1><p>The <code>available_dice</code> definition is an important bit of data that has effects on the rest of the manifest definition. It defines which dice are in the set, and what roll physics they use. You can read more about the data structure in our <a href="https://docs.dddice.com/sdk/js/latest/interfaces/IAvailableDie.html">SDK documentation</a>. The important thing to point out here is that the <code>id</code>&apos;s you select are used as the keys in the other objects in the file, particularly the <code>src</code> objects. If you are lazy and you intend for all of <code>id</code>, <code>notation</code>, and <code>type</code> to be equal, you can use a string instead of an object. </p><p>The second important point is that the order of this array is important. Its the order the dice are shown in to the user in previews. The final die is used if only one die can be shown.</p><h1 id="shaders"> Shaders</h1><p>This section defines the 3D shaders to apply to you dice. You have 3 general options here: supply no shader info, add your shader code as a JSON-encoded string, or reference an external <code>.frag</code>, <code>.vert</code> or <code>.glsl</code> file. There are two keys: <code>frag_shader</code> for your fragment shade and <code>vert_shader</code> for your vertex shader. </p><p>In the example we reference external files <code>shader.frag</code> and <code>shader.vert</code> which define our fragment shader and vertex shader, respecitvely.</p><p>If you supply no shader information, the dice will default to the shader used by the <code>dddice-standard</code> theme. Its based on phong, and you can read about it in a <a href="https://blog.dddice.com/customizing-three-js-phong-shader-for-animated-3d-dice/">previous blog post</a> of ours. We also have an <a href="https://blog.dddice.com/tag/shaders/">entire section of shader articles</a> for you to read with articles that have details on how we built our other shaders.</p><h1 id="textures"> Textures</h1><p>This section is for specifying the textures that will be applied to your mesh. Its an array of objects. Each object has a <code>binding</code> key which is the uniform name to bind to and a <code>src</code> key which is the file name of the texture. As noted above, <code>src</code> can be a string, meaning a single file that applies to all dice in the set, or a <code>src</code> object (like in the example) where the file varies.</p><p>Our shaders are based off of three.js shaders, so look there for more details. For our standard shader we added <code>u_numberMap</code> on top of those from the <a href="https://threejs.org/docs/#api/en/materials/MeshPhongMaterial">MeshPhongMaterial </a>of three.js. </p><p>The <code>u_numberMap</code> is a texture layer that contains the numbers to put on the faces. When a user rolls a &quot;hidden&quot; die, this texture isn&apos;t displayed (thus hiding the numbers). When that die gets unhidden, this texture is faded in.<br></p><h1 id="uniforms"> Uniforms</h1><p>This section defines uniforms that are passed to the shader. Like the textures (which are just really uniforms from the pov of the shader) we support the uniforms defined in the three.js shaders we stand on top of. You can set values for any uniforms the shaders expose here. Our standard shader supports all the uniforms defined in <a href="https://threejs.org/docs/#api/en/materials/MeshPhongMaterial">MeshPhongMaterial </a>just like the textures. </p><p>The data model is based on the <a href="https://threejs.org/docs/#api/en/core/Uniform">uniform data model of three.js</a>, with one additional feature, a <code>color</code> uniform type. Despite what the linked doc says, the native underlying material we use (ShaderMaterial) doesn&apos;t support colors defined using rgb hex strings. So we added our own layer. If you use the <code>color</code> type you can use normal everyday hex strings. If you use vec3 you need to specify the colors in a linear color space, a float from 0 to 1. </p><p>In addition our standard shader defines a <code>numbers</code> uniform to tint the color of the <code>u_numbersMap</code> texture. If the numbers in that texture are in white, this becomes a coinvent way to change their color. It will also allow users who remix your die the most flexibility in changing the number&apos;s colors.<br><br>If you are not using a <code>u_numberMap</code> then the <code>number</code> uniform needs to be set to white . Otherwise the color acts as a diffuse color, and if not set it will make your die all black!</p><h1 id="sounds">Sounds</h1><p>The sounds section isn&apos;t included in the example above as its optional, but also a bit complicated. This section allows you to customize the sounds the dice make when they collide with each other during the roll and the sounds the dice make when &quot;shaken&quot; before a roll. You can also select a sound to play when a particular face is the final result. Check out our <a href="https://dddice.com/dice/dddice-music">musical dice</a> for an example of that!</p><figure class="kg-card kg-code-card"><pre><code class="language-json">{
...
&quot;sounds&quot;:[
    {
      &quot;on&quot;: &quot;die.value&quot;,
      &quot;src&quot;: &quot;G4.wav&quot;,
      &quot;value&quot;: 20
    },
    {
      &quot;on&quot;: &quot;die.collide&quot;,
      &quot;src&quot;: &quot;roll.mp3&quot;
    },
    {
      &quot;on&quot;: &quot;roll.loading&quot;,
      &quot;src&quot;: &quot;shake.mp3&quot;,
      &quot;value&quot;: &quot;&gt;=2&quot;
    }
  ]
...
}</code></pre><figcaption>Example sounds section of the manifest</figcaption></figure><h2 id="collision-sounds">Collision Sounds</h2><p>Sounds that roll on collisions need the <code>on</code> key set to <code>die.collide</code>. The <code>src</code> key then contains the name of the mp3 file to play. We recommend these sounds to be abut 1s in length and have little starting and trailing silence.</p><p>If you specify more than one <code>die.collide</code> sound, for each roll made, one of the sounds will be used at random.</p><h2 id="shake-sounds">Shake Sounds</h2><p>Sounds that play during the &quot;shaking your hand&quot; animation. This is only applicable to the dice rooms on dddice.com at the moment. Set <code>on</code> to <code>die.loading</code> and <code>src</code> to the mp3 you want to play.</p><p>You can supply different sounds for different hand sizes using the value key. Its a simple conditional expression with an implied <code>hand_size</code> as the left-hand-side of the evaluation.</p><h2 id="rolled-sounds">Rolled Sounds</h2><p>Sounds can be played when a ceritian face is rolled. These will play once the roll animation copmletes and the die comes to rest with a particular face showing. Set the <code>on</code> to &#xA0;<code>die.value</code> and the <code>value</code> to the index of the face to play the sound on.</p><h1 id="optional-items"> Optional items</h1><p>The rest of the keys <code>meshes</code>, <code>sizes</code> and <code>values</code> are purely optional. If you don&apos;t specify them, the values shown in the example will be used as defaults. </p><ol><li><code>meshes</code> &#x2013; names of the <code>.fbx</code> files that define the geometries for the dice. Be careful if you edit these, at current the physical simulations don&apos;t get their data from the models. If you want to edit the uv coordinates, have at it!</li><li><code>sizes</code> &#x2013; want a huge d20? a tiny d6? edit these values.</li><li><code>values</code> &#x2013; these are the values that get displayed in the chat box when the die is rolled. They are indexed from 1 to max die face. If you do change this, make sure it aligns with your textures and uv coords.</li></ol><h1 id="extending-other-themes"> Extending Other Themes</h1><p>If all the above is daunting, and yeah it kinda is ... you can cut out a bunch of work by extending other themes. Include an <code>extend</code> key with the id of the theme you want to extend. Your new theme will inherit all the values from the theme you extend instead of the defaults. We used this to create the variations of <code>dddice-standard</code> and <code>dddice-old-school</code>. So yeah, programmers be lazy </p><h1 id="upload-via-the-api"> Upload via the API</h1><p>Once you have you manifest definition written out and all your textures ready, it is time to upload them with the API. You should <a href="https://docs.dddice.com/api/?ref=docs#theme-POSTapi-1-0-theme">read the documentation</a> to familiarize yourself with creating a theme. When I upload my themes I use a bash script to automate most of it. I  automation. </p><p>To use this script you will need <a href="https://nodejs.org/">node.js</a> and <a href="https://stedolan.github.io/jq/">jq</a> installed as well as a bash run environment.</p><pre><code class="language-bash">#!/usr/bin/env bash
shopt -s nullglob
shopt -s extglob
API_URI=&apos;https://dddice.com&apos;

# set the working dir
WORKING_DIR=${1:-.}
WORKING_DIR=${WORKING_DIR%/}
MANIFEST=&quot;${WORKING_DIR}/manifest.json&quot;

# incriment the minor version number
# this is the part that needs node.js and jq
# you can comment these out safely if you don&apos;t have them
# you will need to incriment the version number by hand though
VERSION=$(jq -r &quot;.version&quot; &quot;$MANIFEST&quot;)
VERSION=$(npx semver -i patch &quot;$VERSION&quot;)
CONTENTS=$(jq &quot;.version=\&quot;${VERSION}\&quot;&quot; &quot;$MANIFEST&quot;)
echo -E &quot;${CONTENTS}&quot; &gt; &quot;$MANIFEST&quot;

# build the curl command
COMMAND=&quot;curl --header &apos;Authorization: Bearer ${API_KEY}&apos; --header &apos;Accept: application/json&apos; -F manifest=&apos;&lt;${MANIFEST}&apos;&quot;

# find all the assets in the working dir
for asset in &quot;$WORKING_DIR&quot;/*.+(jpg|png|fbx|glb|gltf|mp3|wav|webp); do
    COMMAND=&quot;${COMMAND} -F $(basename ${asset})=&apos;@${asset}&apos;&quot;;
done

# find all the shaders
for shader in &quot;$WORKING_DIR&quot;/*frag*; do
    COMMAND=&quot;${COMMAND} -F frag_shader=&apos;&lt;${shader}&apos;&quot;;
done
for shader in &quot;$WORKING_DIR&quot;/*vert*; do
    COMMAND=&quot;${COMMAND} -F vert_shader=&apos;&lt;${shader}&apos;&quot;;
done

# execute the curl command
bash -c &quot;$COMMAND $API_URI/api/1.0/theme&quot;
</code></pre><p>This script searches a directory for any <code>.fbx</code>, <code>.png</code>, <code>.frag</code>, and <code>.vert</code> files, and then combines them with the <code>manifest.json</code> in the same directory and uploads them via curl. Super helpful. Make sure to <a href="https://docs.dddice.com/api/#authenticating-requests">generate your API </a>key first and <code>export API_KEY=&lt;your api key here&gt;</code>.</p><p>I look forward to all the dice you will create with this API.</p><p>If you&apos;re interested in joining our growing community, <a href="https://discord.gg/VzHq5TfAr6">join our Discord</a>, <a href="https://twitter.com/dddice_app">follow us on Twitter</a>, <a href="https://reddit.com/r/dddice">join the subreddit</a>, and stay tuned for more updates.</p>]]></content:encoded></item><item><title><![CDATA[Best Online Dice Rollers for RPGs in 2022]]></title><description><![CDATA[There are a plethora of dice rolling apps that showcase a vast array of features for many different platforms. We evaluate the top 5 for 2022]]></description><link>https://blog.dddice.com/best-online-dice-rollers-for-rps-in-2022/</link><guid isPermaLink="false">6322fff42e7437020b9d0f6f</guid><dc:creator><![CDATA[Celeste Bloodreign]]></dc:creator><pubDate>Wed, 31 Aug 2022 21:42:17 GMT</pubDate><media:content url="https://blog.dddice.com/content/images/2022/08/bg-3.jpeg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.dddice.com/content/images/2022/08/bg-3.jpeg" alt="Best Online Dice Rollers for RPGs in 2022"><p>Since the pandemic, more and more tabletop role-playing games have been happening online. This has fueled a huge surge in apps to help mediate the online experience - from Virtual TableTops (i.e. VTTs) to character sheet apps, encounter builders, and world builders. In this article we will be focusing on dice rollers.</p><h2 id="why-use-a-dice-roller">Why use a dice roller?</h2><p>Rolling dice is core to the tabletop role-playing experience, and sharing the suspense and uncertainty they create is second only to the socially interactive nature of the game. </p><p>There are a plethora of dice rolling apps that showcase a vast array of features for many different platforms. In order to make this list manageable, we feature dice rollers that meet the three requirements below:</p><p>1) C<strong>ross Platform: </strong>Users should be able to roll on Windows, Mac, Linux, iOS, and Android.<br>2) <strong>Online: </strong>Dice rolls should be shared with your party in a live multiplayer setting.<br>3) <strong>3D: </strong>Dice rolls should look good and resemble physical dice.</p><h1 id="dddice"><a href="https://dddice.com?ref=blog&amp;rel=dice-rollers-2022">dddice</a></h1><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2022/08/image-12.png" class="kg-image" alt="Best Online Dice Rollers for RPGs in 2022" loading="lazy" width="2000" height="841" srcset="https://blog.dddice.com/content/images/size/w600/2022/08/image-12.png 600w, https://blog.dddice.com/content/images/size/w1000/2022/08/image-12.png 1000w, https://blog.dddice.com/content/images/size/w1600/2022/08/image-12.png 1600w, https://blog.dddice.com/content/images/size/w2400/2022/08/image-12.png 2400w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://dddice.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Digital 3D dice roller | dddice</div><div class="kg-bookmark-description">Roll 3D dice for tabletop roleplaying games live in your browser. Invite friends to roll live and run your next virtual session for free!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://dddice.com/images/android-icon-192x192.png" alt="Best Online Dice Rollers for RPGs in 2022"><span class="kg-bookmark-author">dddice</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://dddice.com/images/social-card-twitter.png" alt="Best Online Dice Rollers for RPGs in 2022"></div></a></figure><p>The newest offering on this list is dddice, having only been released in February of 2022. Despite still being in alpha, it has a full feature set and many 3D dice themes. </p><p>This app follows the philosophy of &quot;do one thing and do it well&quot;, so if you want a more feature-rich experience for your tabletop gaming sessions, then one of the other apps might be for you. Their roadmap does list VTT integrations but they aren&apos;t a reality yet.</p><h2 id="%F0%9F%91%8D-pros">&#x1F44D; Pros</h2><ol><li>Many 3D dice themes</li><li>No signup required, start rolling in seconds</li><li>Support for Dungeons &amp; Dragons, Pathfinder, World of Darkness, Fate, and Call of Cthulhu</li><li>Customize 3D dice via an easy-to-use editor or more robust API</li><li>Share custom dice with your friends</li><li>Streamer support</li><li>Support for third-party apps via API and SDK</li></ol><h2 id="%F0%9F%91%8E-cons">&#x1F44E; Cons</h2><ol><li>New to the scene, not much publicity</li><li>No integrations with VTTs (yet)</li><li>Documentation to create own themes is lacking</li></ol><h1 id="dd-beyond"><a href="https://dndbeyond.com">D&amp;D Beyond</a></h1><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2022/08/image-5.png" class="kg-image" alt="Best Online Dice Rollers for RPGs in 2022" loading="lazy" width="2000" height="827" srcset="https://blog.dddice.com/content/images/size/w600/2022/08/image-5.png 600w, https://blog.dddice.com/content/images/size/w1000/2022/08/image-5.png 1000w, https://blog.dddice.com/content/images/size/w1600/2022/08/image-5.png 1600w, https://blog.dddice.com/content/images/size/w2400/2022/08/image-5.png 2400w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.dndbeyond.com/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">D&amp;D Beyond</div><div class="kg-bookmark-description">An official digital toolset for Fifth Edition (5e) Dungeons &amp; Dragons (D&amp;D).</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.dndbeyond.com/avatars/thumbnails/104/378/32/32/636511944060210307.png" alt="Best Online Dice Rollers for RPGs in 2022"><span class="kg-bookmark-author">D&amp;D Beyond</span><span class="kg-bookmark-publisher">Michael Galvis</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.dndbeyond.com/content/1-0-2199-0/skins/waterdeep/images/Waterdeep_opengraph.png" alt="Best Online Dice Rollers for RPGs in 2022"></div></a></figure><p>D&amp;D Beyond is great tool you are playing D&amp;D. If you play online then chances are you may already use this, but to those just starting their online RPG experience, this is worth checking out. </p><p>The dice offering of D&amp;D Beyond is not as robust. The biggest con here is only the user rolling the dice sees the actual 3D dice roll, the party just gets the final number in a pop up. It&apos;s a shame too, because some of the dice sets are really beautiful and some are only available via pre-orders. Sure, having rare dice is cool, but rolling them in front of your friends is cooler.</p><h2 id="%F0%9F%91%8D-pros-1">&#x1F44D; Pros</h2><ol><li>You probably already use D&amp;D Beyond for your character sheets</li><li>Beautifully animated 3D dice</li></ol><h2 id="%F0%9F%91%8E-cons-1">&#x1F44E; Cons</h2><ol><li>Party members only see results, not the animated dice</li><li>Limited, but growing die selection (additional themes are $6+)</li><li>No dice outside the standard set used for D&amp;D</li><li>No customization of the dice</li></ol><h1 id="roll20"><a href="https://roll20.net">Roll20</a></h1><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2022/08/image-9.png" class="kg-image" alt="Best Online Dice Rollers for RPGs in 2022" loading="lazy" width="717" height="427" srcset="https://blog.dddice.com/content/images/size/w600/2022/08/image-9.png 600w, https://blog.dddice.com/content/images/2022/08/image-9.png 717w"></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://roll20.net/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Roll20</div><div class="kg-bookmark-description">Roll20 brings pen-and-paper gameplay to your browser with features that save time and enhance your favorite parts of tabletop games.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://roll20.net/favicon.ico" alt="Best Online Dice Rollers for RPGs in 2022"><span class="kg-bookmark-author">Roll20</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://app.roll20.net/images/Roll20-OG.png?1661448838" alt="Best Online Dice Rollers for RPGs in 2022"></div></a></figure><p>Roll20 is a full fledged, super popular VTT. It does have 3D dice, but unfortunately it&apos;s offering is the slimmest of all on this list. There is one theme, and the color is matched your player color. If all you want is the dice, this probably isn&apos;t for you, but if VTTs are your thing this is a strong choice.</p><h2 id="%F0%9F%91%8D-pros-2">&#x1F44D; Pros</h2><ol><li>Super popular VTT</li><li>Just a bit of config to enable the 3D Dice</li></ol><h2 id="%F0%9F%91%8E-cons-2">&#x1F44E; Cons</h2><ol><li>Roll20 is a full VTT, users need to create an account and create a game to roll 3D dice</li><li>The color of the die matches your player color, no other customization options</li><li>Not all dice types are rollable in 3D, Fudge dice are the notable exception</li><li>Lacks proper mobile support</li></ol><h1 id="dice-so-nice-for-foundry-vtt"><a href="https://foundryvtt.com/packages/dice-so-nice/">Dice So Nice</a> (for Foundry VTT)</h1><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2022/08/image-11.png" class="kg-image" alt="Best Online Dice Rollers for RPGs in 2022" loading="lazy" width="1275" height="714" srcset="https://blog.dddice.com/content/images/size/w600/2022/08/image-11.png 600w, https://blog.dddice.com/content/images/size/w1000/2022/08/image-11.png 1000w, https://blog.dddice.com/content/images/2022/08/image-11.png 1275w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://foundryvtt.com/packages/dice-so-nice/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Dice So Nice! | Foundry Virtual Tabletop</div><div class="kg-bookmark-description">Dice So Nice!, a Module available for Foundry Virtual Tabletop</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://foundryvtt.com/static/assets/icons/fvtt.png" alt="Best Online Dice Rollers for RPGs in 2022"><span class="kg-bookmark-author">Foundry Virtual Tabletop</span><span class="kg-bookmark-publisher">Simone</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://gitlab.com/riccisi/foundryvtt-dice-so-nice/-/raw/master/dice-so-nice.gif?raw=true" alt="Best Online Dice Rollers for RPGs in 2022"></div></a></figure><p>This is our second VTT option. Dice So Nice is a plug-in for Foundry VTT, also a very popular VTT. Unless you are already on the Foundry platform this is the highest investment in time and money required roll 3D dice. </p><p>If you are already using Foundry or are keen to get started with it, this might be the choice for you. </p><h2 id="%F0%9F%91%8D-pros-3">&#x1F44D; Pros</h2><ol><li>Integrated into Foundry which many people use already</li><li>Built on top of Major&apos;s 3D Dice Roller (see below) so shares many of the features and themes</li><li>Independent dice creators sell dice sets</li></ol><h2 id="%F0%9F%91%8E-cons-3">&#x1F44E; Cons</h2><ol><li>One-time purchase of $50</li><li>Need to self-host or pay for hosting to roll with your party</li><li>Foundry has a steep learning curve</li><li>Lacks proper mobile support</li></ol><h1 id="majors-3d-dice-roller"><a href="https://majorvictory.github.io/3DDiceRoller/">Major&apos;s 3D Dice Roller</a></h1><figure class="kg-card kg-image-card"><img src="https://blog.dddice.com/content/images/2022/08/image-7.png" class="kg-image" alt="Best Online Dice Rollers for RPGs in 2022" loading="lazy" width="1616" height="1035" srcset="https://blog.dddice.com/content/images/size/w600/2022/08/image-7.png 600w, https://blog.dddice.com/content/images/size/w1000/2022/08/image-7.png 1000w, https://blog.dddice.com/content/images/size/w1600/2022/08/image-7.png 1600w, https://blog.dddice.com/content/images/2022/08/image-7.png 1616w" sizes="(min-width: 720px) 720px"></figure><!--kg-card-begin: markdown--><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="http://dnd.majorsplace.com/dice"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Major&apos;s 3D Dice</div><div class="kg-bookmark-description">Online 3D dice roller</div><div class="kg-bookmark-metadata"><span class="kg-bookmark-author">Majorsplace</span><span class="kg-bookmark-publisher">MajorVictory</span></div></div><div class="kg-bookmark-thumbnail"><img style="display: none" src alt="Best Online Dice Rollers for RPGs in 2022"></div></a></figure>
<!--kg-card-end: markdown--><p>Majors 3D Dice is at the core of the Dice So Nice plug-in for Foundry VTT. If you liked the dice above but don&apos;t want the overhead of buying Foundry, give this one a try.</p><p>The dice customization options are plentiful but not very precise. You can choose a few parameters and these influence the dice that are generated.</p><h2 id="%F0%9F%91%8D-pros-4">&#x1F44D; Pros</h2><ol><li>Dice to support many systems with exotic dice including Genesys, Star Wars, and Fate</li><li>Plethora of different dice style attributes that can be combined to make dice from</li></ol><h2 id="%F0%9F%91%8E-cons-4">&#x1F44E; Cons</h2><ol><li>User Interface is not intuitive, looks clunky</li><li>No true detailed dice customization </li></ol><h1 id="honorable-mentions">Honorable Mentions</h1><p>This section is for notable dice rollers that didn&apos;t fit the 3 criteria but I thought we&apos;re worth mentioning because they came close, and are notable.</p><h2 id="rolz"><a href="https://rolz.org/">Rolz</a></h2><p>No 3D rolls but features a multiplayer experience.</p><h2 id="teal3d"><a href="http://emanchado.github.io/3d-die-roller/dice/">Teal3D</a></h2><p>A basic 3D dice roller with no customization. The oldest one on this list. The original version seems to be down, but mirrors exists and does not have multiplayer functionality.</p><h1 id="conclusion">Conclusion</h1><p>There are lots of options to roll digital click-clacks!</p><p><strong>Winner:</strong> If you&apos;re looking to get rolling in seconds, <a href="https://dddice.com?ref=blog&amp;rel=dice-rollers-2022">dddice</a> looks to be a solid choice. With no signup required and lots of themes to choose from, your party is sure to have a good time rolling for whatever system your party plays.</p><p>If your party is looking for a more robust tabletop experience complete with character sheets, a VTT might be what you&apos;re looking for. However, with dddice&apos;s API and SDK integrations, they may soon be a worthy contender for your favorite VTT.</p><p>So what are you waiting for? <a href="https://dddice.com?ref=blog&amp;rel=dice-rollers-2022">Start rolling on dddice in seconds now!</a></p>]]></content:encoded></item></channel></rss>