Cogspace https://www.cogspace.com a place for thinking about things Sat, 03 Jun 2023 09:07:38 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 Zonai Font (from The Legend of Zelda: Tears of the Kingdom) https://www.cogspace.com/2023/05/29/zonai-font-from-the-legend-of-zelda-tears-of-the-kingdom/ Mon, 29 May 2023 09:45:00 +0000 https://www.cogspace.com/?p=865 Update: A previous version of this font used an arbitrary mapping instead of the proposed Kunrei-shiki romaji mapping. If you want that version of the font for whatever reason, you can find it here.

A new Zelda game is upon us, and it contains a new writing system, and so it is time for me to make a font.

Here’s the download and here’s how it works:

Note: This mapping may not be correct. It is based on a Kunrei-shiki romaji interpretation of the source texts (game assets, art book, promotional media) that there seems to be significant disagreement on. I know very little Japanese, so I’m not really in a position to comment one way or the other. Nevertheless, I needed an order to put the font in, and this seems to be as good a choice as any for the time being.

From my perspective, romaji is a logical guess given that 14 characters is exactly the right number assuming dakuon are ignored, as is the case in the Ocarina of Time kana cipher.

I did a cursory frequency analysis using a survey of the few sample texts that appear in game, sorting the characters by frequency and comparing that to expected Japanese phoneme frequencies. The resulting order was very similar to that achieved in the referenced research, with most letters being off by one or two positions, and only two significant outliers: W and H, which are exactly what I’d expect the outliers to be in a quick-and-dirty analysis substituting phoneme frequency for romaji frequency.

While I definitely cannot vouch for the translations given, and there seems to be a lot of doubt as to their accuracy from people who know way more about Japanese than I do, the basic concept seems sound.

Anyway, I will try to keep this page updated when more information comes to light.

]]>
Scratching Your Own Itches Using 3D Printing https://www.cogspace.com/2023/05/26/how-to-scratch-your-own-itches-using-3d-printing/ Fri, 26 May 2023 23:55:55 +0000 https://www.cogspace.com/?p=840 In the world of open source software, the phrase “scratching one’s own itches” comes up pretty frequently.

The idea is this: If you’re working on a problem and find you’re missing a useful tool, you can build it yourself and share it with the community. When enough people do this, we get great tools.

I’ve been doing this for years. I created my Zelda fonts because I wanted to be able to write stuff with them. I created Roll20 Enhanced Keyboard Shortcuts because I wanted better tools for running D&D. And of course, I have also built and contributed to more typical open source software projects. But in the past few years, a new technology has entered the hobbyist realm for solving what we might call “hardware problems” using general-purpose tools. I am talking, of course, about 3D printers.

3D printing has actually been around for a long time, but until fairly recently it has been very expensive. Today, you can get a really solid 3D printer with quality of life features like auto-leveling and filament runout detection for $200 or less, and a kilogram of PLA filament runs about $20. In addition, our tools for designing, sharing, and preparing these models for printing have gotten really, really good.

3D printing has turned out to be a very useful tool for scratching one’s own itches, and to illustrate that (and maybe help get some creative juices flowing) I’ll share three personal projects I’ve worked on recently.

Note: None of the products linked in this post are sponsored placement or affiliate links. I don’t even necessarily recommend them. They’re just products I use.

To Gridfinity And Beyond

Gridfinity is a modular organization system created by cyborg mad scientist and YouTuber Zack Freedman. At its heart, it is an open-source standard for building inter-compatible 3D-printed 42mm storage blocks that can stack together and rearrange to adapt to the ever-changing organizational needs of maker spaces of all sorts and sizes.

As it turns out, 42mm was a very good size choice. The popular ALEX drawer units from IKEA (two of which form the legs of my desk) fit 7 Gridfinity units on the horizontal axis per drawer, and just over 12 units deep. So two 7×6 frames just about perfectly fill one drawer (with a small spacer in the back to absorb the rest of the Y axis). So I’ve been printing up a mess of frames and bins and designing a bunch of my own storage blocks to perfectly contain the various THINGS that have been overflowing in my office for entirely too long.

Making Storage Blocks

Making these storage blocks is really easy! Here’s my process (using Fusion 360):

  1. Grab KptnAutismus’ Gridfinity templates for Fusion360 (they’re the best starting point).
  2. Measure the thing I’m trying to store in terms of how many blocks it will take up.
  3. Open up the appropriate template file and set the parameters for blocks (rows/cols) and height.
  4. Take more precise measurements of the thing I want to store and using calipers and add a good 0.5mm of clearance in every direction.
  5. Slap a sketch on the flat surface of the block, draw the shape of the thing to be stored, dimension it using the numbers from Step 4, and cut it out of the storage block.
  6. Add extra cutouts to make use of extra space, allow enough room for fingers to grab tools, put some nice chamfers all around, and export the model as an STL
  7. Slice it up in PrusaSlicer and print it.

Sometimes this takes a few iterations, but filament is cheap and the end result is a perfect container for storing exactly your crap with little wasted space and ideal ergonomics for your specific use case. It’s a great way to get started with designing and printing your own models.

Headphone Hanger

For a long time, I’ve used an under-desk headphone hanger, but since it was attached with adhesive, when I switched to my new desk I had to buy a new one. Except one thing had always bugged me about my old headphone hanger, so I took the opportunity to design and 3D print something perfect.

I use wireless headphones (Arctis 7, to be precise) and the old headphone hanger did not have any way of keeping the charging cable tidy. So when it came time to design my own hanger, I cut a hole through it to pass the charging cable through, to keep everything nice and neat.

A few Command strips to stick it to the underside of my desk, and my headphones are now perfectly cradled and the charging cable is corralled. And if this design is useful to anyone else, you can find it right here.

Ergonomic Wrist Rest

Probably my favorite 3D print so far, and my first foray into printing with flexible filaments, is a wrist rest for my keyboard. For a long time I’ve been using the Wooting silicone wrist rest which is very nice, but it has one critical flaw: In standard typing position, my left wrist hangs off the edge of the wrist rest, which is not terribly comfortable.

With the perfect wrist rest for me non-existent in the market, I decided to load a kilo of black Overture TPU into my Kobra Max and modeled my own perfect wrist rest in Fusion 360. I discovered the best way to print this specific design was on its back (the flat side that goes up against the keyboard) at 0.1mm layer height, and the end result is not perfectly smooth, but close enough and has been quite nice to type up this article on.

That’s all for this one. I hope some of these models prove useful to those who find them.

]]>
Dicey Situations: How To Turn Random Encounters Into Full-Fledged Adventures https://www.cogspace.com/2022/04/03/dicey-situations-how-to-turn-random-encounters-into-full-fledged-adventures/ Sun, 03 Apr 2022 09:43:41 +0000 https://www.cogspace.com/?p=747 As you step into the quaint country tavern, eager for a pint and a bite to eat after a long day on the road, you overhear a farmer complaining loudly of his pigs going missing in the night. The fellow he’s talking to spits and says “I suspect I know what did that! I caught one of those little green buggers sneaking around my sheepfold yesterday! If it hadn’t been so quick I would’ve wrung its neck!” The pig farmer shakes his head. “Goblins are tougher than they look. Don’t go risking your own hide over it. I say we wait for some ratcatchers to wander into town and pay them to do it for us. We made a heap off the last harvest. I’m sure if we all pool together, we could offer a convincing prize for getting rid of those nasty monsters…”

Adventures. Players want ’em, and DMs need ’em. But sometimes you’re fresh out of prewritten modules and stumped for inspiration. Whenever I don’t know what to throw at my players, I reach for a random encounter generator. Specifically, this one. I roll up two or three encounters and imagine how those creatures might interact with each other, and that usually gets the creative juices flowing.

Now, I know what you’re thinking. Goblins stealing livestock isn’t exactly high art. I do enjoy the classics, but point taken. What you and the PCs don’t know yet, however, is that the reason the goblins are stealing the livestock is because their leader has been captured by a coven of hags that need the animal parts to brew a vile potion that will blight the crops for miles around, leading to mass suffering and starvation! See? Now it’s interesting!

And that right there is basically the whole trick to this method. Let’s build one together, and I’ll explain it as we go.

Step 1: Random Encounters

Roll 1: 1 Giant Crocodile

Roll 2: 1 Grick Alpha

Wait, what even is a grick?

Oh.

Uh.

Alright, just to be safe, let’s get one more.

1 Pseudodragon

Wow. This is going to be an odd one. I’m excited.

Step 2: Tie It Together

Okay, this is kind of an insane prompt, but I can work with it. The grick has a stone camouflage ability, normally lives in caverns. That’s a good starting point.

Pseudodragons often live in small caves, so maybe it’s in the same one as the grick. Gricks are not immune to poison, so maybe its venomous tail barb is enough to keep the grick from messing with it.

The giant crocodile is an interesting element. It could be a case of mistaken identity. Perhaps someone saw the grick’s tail and mistook it for a crocodile? Perhaps… or maybe there used to be crocodiles here but they’ve gone missing (because the gricks ate most of them). Could be an element of the local economy. That’s fun.

Perhaps our grick slithered up out of an underwater cave opening because its usual supply of food (crocodiles) has dwindled. Gricks are ambush predators, so it could be hanging out along the riverbanks to attack fishermen and travelers.

Okay, this is all well and good, but a pile of monsters is not an adventure. Why should the PCs care?

Step 3: Motivate the Players

How exactly you’ll get your players on board with the adventure depends a lot on play style, so you’ll have to tailor this to your table, but for my players, the promise of treasure or a magic item works well, as does an opportunity to be a hero… Sometimes.

Of course, if you award XP for killing monsters, that alone may be sufficient motivation. And there’s also the possibility of getting the pseudodragon as a familiar, but thinking ahead a bit, I’m not sure how to seed that into the hook. In this case, I’ll lean into the randomness and rely on good ol’ donjon to generate a treasure hoard.

800 cp, 5000 sp, 2300 gp, 70 pp, 3 x black onyx (150 gp), 2 x diamond (100 gp), amethyst (100 gp), coral (100 gp), jade (100 gp), jet (100 gp), spinel (100 gp), tourmaline (100 gp), Potion of Resistance (psychic) (uncommon, dmg 188), Goggles of Night (uncommon, dmg 172), Keoghtom’s Ointment (uncommon, dmg 179), Potion of Growth (uncommon, dmg 187)

Some potions, Goggles of Night, gems, and coins. These could be the belongings of a jewel thief whose magic goggles helped them work in the dark! It’s way too much loot for one grick alpha though, which brings us to…

Step 4: Fleshing It Out

So far we have one encounter and a treasure hoard. We need to expand that idea into a full adventure. In this example, that probably means building out our underwater cavern into a small dungeon. Let’s say there are more gricks in there, and our alpha will sometimes be out in the river hunting prey and other times it’ll be down in the cavern eating, while the smaller gricks and the pseudodragon try to snag scraps as they can. At the back of this cavern, we can stick a skeleton with the Goggles of Night still on its skull and the rest of the loot nearby. Perhaps this treasure functions as a tiny adorable hoard for the pseudodragon. I would probably sprinkle some of those gems and coins like breadcrumbs leading into the back of the cavern, too.

At this point, you can iterate this process until you’ve built a big enough adventure, rolling more random encounters for inspiration whenever you get stuck. But eventually, it’ll be time to stop building and start advertising.

Step 5: Add a Hook

Our shiny new adventure won’t be much use if the players don’t know about it!

Perhaps a crocodile hunter had a run-in with the grick alpha and barely escaped with their life. We could just have this person notice the obvious adventurers in town and run up to them and ask them for help, or simply offer a warning about the road they spotted it on, in case they’re going that way.

Maybe the locals know about the underwater cavern and have some local legend about the treasure that’s down there. Once the players near the cavern, we can have one of the gricks attack them, or they could simply notice some gemstones glittering beneath the water’s surface in the mouth of the cave.

We could easily do both. If the players don’t want to help the hunter, we could have a bard telling the local legend about the jewel thief in the tavern, perhaps mentioning their magic glasses and that they stashed their loot in Crocodile Cave.

That’s all there is to it! You might need to re-roll a few times if what you get is too weird (or not weird enough, depending on your game) but this method has never failed to help me come up with a suitable adventure for my players. I hope you find it useful too!

]]>
Tunic’s Writing System – New Font! [SPOILERS] https://www.cogspace.com/2022/03/23/tunics-writing-system-new-font-spoilers/ Wed, 23 Mar 2022 07:52:28 +0000 https://www.cogspace.com/?p=656 Update: An earlier version of this font used . (period) for syllable inversion. The new version uses _ (underscore) instead.

I haven’t even played this game yet, but I saw that it had its own writing system, so I decided to jump on creating a font for it!

First things first, here’s the download: Tunic Font v0.2 (ZIP)

This writing system is not a simple 1:1 cipher for English, but rather a phonetic script, so it requires some special considerations to use it correctly. As with my Zelda fonts, I decided to use custom ligatures1 to implement all the different symbols. These are the letter sequences to generate all 42 symbols:

The following table shows how these sequences are supposed to map onto English phonemes:

a
hat
/æ/
ar
far
/ar/
ah
law
/ɑ/
ey
hey
/e̩ɪ/
e
pet
/e/
ee
meet
/i/
eer
beer
/ir/
u
sunny
/ə~ʌ/
er
air
/eɪr/
i
hit
/ɪ/
ie
pie
/aɪ/
ir
bird
/ɜr/
o
toe
/oʊ/
oy
toy
/oɪ/
oo
toon
/u/
ou
book
/ʊ/
ow
how
/aʊ/
or
more
/or/
b
bat
/b/
ch
chat
/tʃ/
d
debt
/d/
f
fret
/f/
g
get
/g/
h
hat
/h/
j
jet
/dʒ/
k
kid
/k/
l
let
/l/
m
met
/m/
n
net
/n/
ng
king
/ŋ/
p
pet
/p/
r
rat
/r/
s
sat
/s/
sh
ship
/ʃ/
t
tent
/t/
th
thin
/θ/
dh
this
/ð/
v
vet
/v/
w
wet
/w/
y
yet
/j/
z
zit
/z/
zh
casual
/ʒ/

vowel
carrier
,
,
.
.
!
!
?
?
_
syllable
inverter
Note: The IPA used here was created from the perspective of Standard American English, but should (hopefully) be fairly consistent for RP as well.

To write using this font:

  • Type whatever you want to write phonetically, using the letter combinations above. Use only lowercase.2
  • Vowels are designed to overlap the preceding consonant. To write a vowel on its own, use a - (hyphen) to create a blank line to attach the vowel to. Example: “eye” would be written -ie
  • To create an inverted syllable (vowel first) write it backwards, then add an _ (underscore) after. Example: “ant” would be written na_t

Finally, here is an example text putting together everything discussed above:

“All human beings are born free and equal in diginity and rights. They are endowed with reason and conscience and should act toward one another in a spirit of brotherhood.”

Article 1, Universal Declaration of Human Rights

Thanks for reading, now go forth and make cool stuff!


Credit Due:

Footnotes:

  1. Some programs (notably MS Paint and WordPad) do not support custom ligatures, but most do. I have personally tested LibreOffice Writer, GIMP, and Affinity Photo, and they all work. I’m sure Word and Photoshop work as well.
  2. The characters outside the basic Latin alphabet are mapped to the appropriate IPA Unicode symbols. If you are comfortable writing using the IPA, this font should support it. Note however that many of the letters within the basic Latin alphabet are mapped in a nonstandard way, so you’ll have to account for that (e.g. “j” = /dʒ/, “a” = /æ/, etc.)

Creative Commons LicenseThis font is licensed under a Creative Commons Attribution 4.0 International License.

]]>
I Made Another Font for Hylian (From The Legend of Zelda: Ocarina of Time [3D]) https://www.cogspace.com/2022/03/11/i-made-another-font-for-hylian-from-the-legend-of-zelda-ocarina-of-time-3d/ Fri, 11 Mar 2022 22:11:03 +0000 https://www.cogspace.com/?p=628 Download: OcarinaOfTime.zip

Not content to remaster fonts from one Zelda game, I have created one for Ocarina of Time! Behold:

This font is the version featured in Ocarina of Time 3D and the Hyrule Encyclopedia. It is set up so you can type romaji and get the syllable glyphs shown in the table above (limited to just those symbols). Incomplete syllables will have the consonants rendered in Latin letters (borrowed from the Triforce font) to make it easier to know what you’re typing.

Be aware that, like the other font, it uses custom ligatures and will only work in an application which supports them (in particular, MS Paint and WordPad do not, but most other programs do). If you want to use the font in a program that doesn’t support ligatures, you’ll have to use something like Character Map to copy and paste the extended Latin characters and other symbols that the ligatures are mapped onto.

I think my Zelda font adventures are probably done for the moment, though I am considering making a blockier version of this font to match the original OoT style. The existing “Hylian 64” font (available on zeldauniverse.com) has leading (vertical spacing) issues and could also benefit from the romaji ligature treatment.

]]>
An Improved Modern Hylian Font (From The Legend of Zelda: The Wind Waker) https://www.cogspace.com/2022/03/04/an-improved-modern-hylian-font-from-the-legend-of-zelda-the-wind-waker/ Fri, 04 Mar 2022 11:51:08 +0000 https://www.cogspace.com/?p=575 Font download: WindWaker.zip

If you’ve ever played Link’s cel-shaded seafaring adventure on the GameCube (or its HD remake), you’re no doubt familiar with the writing that is the subject of this post. It features prominently throughout the game, written on signs, letters, and maps, and even appearing in speech boxes. Perhaps you have wondered if it really says anything?

Yes! It does. Specifically, this script is called Modern Hylian and is basically a cipher for Japanese. Each character represents a single syllable, with the exception of the character for the letter n, the only consonant which can appear at the end of a Japanese word. Here is the full script with each character labeled in romaji:

I recently got interested in being able to write some stuff in this script, but unfortunately the only font I could find (the so-called “Ancient Hylian” font available on zeldauniverse.net) was less than ideal for my purposes.

The font looks good, but it doesn’t work. It maps some (but not all) of the characters rather arbitrarily to the English alphabet, which simply does not work well at all for a Japanese-compatible syllabary.

My version of the font supports katakana input and also uses ligatures to support typing romaji, so you can enter 「ナラガ ハイリアゴカ ワカラナイヨウガナ」 or “naraga hairiagoka wakaranaiyougana” and get the text below:

Get the font here and go to town! Please note that not all programs support text with ligatures. MS Paint and WordPad are two notable programs that don’t, but most others do, including MS Word, LibreOffice Writer, PhotoShop, Affinity Photo, and GIMP to name a few.

]]>
To Catch Starlight https://www.cogspace.com/2021/12/27/to-catch-starlight/ Mon, 27 Dec 2021 07:06:16 +0000 https://www.cogspace.com/?p=568 13.7 billion years ago, the first stars formed.

4.5 billion years ago, the Earth, our only home, coalesced from a cloud of dust.

3.5 billion years ago, life arose on our world.

440 million years ago, the first land animals left the primordial ocean behind

65 million years ago, some of the earliest mammals survived the extinction that wiped out the dinosaurs

55 million years ago, the first primate evolved

7 million years ago, the earliest hominids evolved

300,000 years ago, the first member of our species Homo sapiens, was born.

10,000 years ago, the world witnessed the dawn of human civilization

3,500 years ago, the earliest known glass was made in the Middle-East.

411 years ago, Galileo used his improved telescope to make astronomical observations that would revolutionize how we understand our solar system

118 years ago, the Wright brothers completed the first powered flight at Kitty Hawk

100 years ago, Edwin Hubble discovered that the universe extends beyond our galaxy, and developed the theory of red-shifting, discovering in the process that our universe is expanding.

60 years ago, James Webb became the second administrator of NASA and led the Apollo program. The same year, Yuri Gagarin became the first human being to travel to space. “I see Earth!” he said, “It is so beautiful.”

31 years ago, the Hubble Space Telescope was placed into orbit, and after a successful mission to correct a flaw in its optics, it was able to take photos of thousands of galaxies hiding in the darkness between the nearer stars.

25 years ago, work began on its successor, the James Webb Space Telescope.

24 hours ago, on Christmas Day 2021, the JWST was launched into space on board an Arianne rocket, bound for the Earth-Sun L2 point, far beyond the orbit of the Moon.

2 weeks from now, it will (we hope) have finished unfolding and stationing itself, and a long calibration process will begin.

And finally, 6 months from now, if all goes well, this engineering marvel will chill itself to nearly absolute zero, reach out with its golden mirror, and catch those ancient photons that have been traveling through the darkness since the first stars shone in our universe, long before our planet even existed.

]]>
REKS 1.7 Released! (Roll20 Enhanced Keyboard Shortcuts) https://www.cogspace.com/2021/11/30/reks-1-7-released-roll20-enhanced-keyboard-shortcuts/ Tue, 30 Nov 2021 21:51:26 +0000 https://www.cogspace.com/?p=561 Quite a few updates have come out since my last post about REKS, so I figured it was high time I talked about those!

Just looking for the user script? Grab it here.

Since v1.0, I’ve added the following features and improvements to REKS:

Better Dice Rolling

The dice roller (\r) now supports all Roll20 flavored dice expressions, including fudge dice (dF). Consequently, the very limited fudge dice command (\f) is no longer needed and has been removed.

Token Settings

  • \v Set vision for selected token
    • \vn Normal vision
    • \vx Blind (disable vision
    • \vd<dist> Darkvision
  • \l<bright>[/<dim>] Set token lighting
  • \s[name] Toggle token status markers by name (blank to clear all)
  • \o<opts> Set a wide variety of other token options, including:
    • Bar values & attribute mappings
    • Bar location & style
    • Visibility & edit permissions for bars, auras, and token name
    • Change token name & toggle nameplate visibility

Page Controls

  • \g Control page display
    • \ga<pagename> Send players & GM to the named page
    • \gp<pagename> Send just players to the named page
    • \gg<pagename> Send just the GM to the named page
    • \gs<settings> Set page settings:
      • Grid settings
      • Dynamic lighting settings
      • Fog of war

Game & User Prefs

  • \p<prefs> Set game/user level preferences, including:
    • Set display name
    • Enable/disable advanced keyboard shortcuts, 3D dice, animated graphics, etc.
    • Scroll settings
    • Status marker position
    • Player avatar size & location
    • Configure / disable integrated video chat

I used this to create a macro to configure a new Roll20 game just the way I like it: \p dsn=GM,aks=y,3dd=y,a3d=y,pas=n,cht=n

Miscellaneous

  • \nt Quickly and easily create rollable tables.
  • Various bugfixes and reliability improvements
  • Dev server support
  • Random QoL fix: Added an event filter to prevent accidentally losing work on a handout by hitting escape

If all that sounds good, head on over to GreasyFork and install the updated script!

]]>
[New Release] Enhanced Keyboard Shortcuts For Roll20 (v1.0) https://www.cogspace.com/2021/10/26/new-release-enhanced-keyboard-shortcuts-for-roll20-v1-0/ Tue, 26 Oct 2021 06:34:48 +0000 https://www.cogspace.com/?p=520 Are you running tabletop RPGs in Roll20 and finding yourself frustrated by the limitations of its keyboard shortcuts? Want to control audio, automate combat, roll dice, and even create characters and handouts all from the comfort of the keyboard, and without having to spring for a pro account? Perhaps you’re looking to drive Roll20 with a macro pad like a Stream Deck?

Well, good news! Today I’m releasing Enhanced Keyboard Shortcuts for Roll20, a script which runs in any web browser using the userscript manager of your choice.

Installation

  1. Install a userscript manager. I recommend Tampermonkey.
  2. Go to the userscript page and click the button to add it.

That’s it!

Usage

Press \ (backslash) to summon the input bar, then type whatever command you want to execute.

Note: Parameters follow commands with no spaces. r3d8 not r 3d8

  • h Show the help menu
  • c<msg> Chat – Send any message, including commands.
    Example: c/w gm Roll with advantage: [[2d20kh1]]
    Note: This command doesn’t work with chat popped out.
  • r<dicexpr> Roll dice
    Example: r3d6
    Supports dice with 4, 6, 8, 10, 12, 20, or 100 sides.
    (For fudge dice, use f)
    ! exploding dice, e.g. r1d8!
    !! compounded explosion (Shadowrun style)
    </># Target number, e.g. r4d6>4
  • f<count> Roll 1-5 fudge dice
    Note: Only 1-5 dice are supported because the Advanced Dice Roller doesn’t support fudge dice.
  • a– Audio
    Note: These commands don’t work with the Jukebox popped out.
    • as Stop all audio
    • an Play next track
    • ap<title> Play playlist, e.g. apCombat
    • at<title> Play track, e.g. atRain - Heavy
  • n– Create new things
    • nh New handout
    • nc New character
  • t– Turn tracker
    • to Open turn tracker
    • tc Clear turn tracker
    • tx Close turn tracker
    • tn Next turn
    • ts Sort turns
  • m– Run macros
    • mcs Start combat (stop audio, start “Combat” playlist, open turn tracker, clear turn tracker)
    • mce End combat (stop audio, start “Dungeon” playlist, close turn tracker, clear turn tracker)

Due to this new, far more capable system, Roll20 Bookmarklets will no longer be updated. All features have been ported over and new features will only be added to this userscript.

Have a suggestion or a feature request? Feel free to email me!

]]>
Roll20 Bookmarklets v1.2 (Now With Dice Roller) + New Stream Deck Setup! https://www.cogspace.com/2021/10/24/roll20-bookmarklets-v1-2-now-with-dice-roller-new-stream-deck-setup/ Sun, 24 Oct 2021 08:21:36 +0000 https://www.cogspace.com/?p=476 Last month I showed off my Stream Deck setup for Roll20 and followed it up with a suite of bookmarklets for improved music controls.

A few days ago I got an email from a reader who discovered that the dice roller setup I presented in the original Stream Deck post didn’t work with the chat popped out. I hadn’t caught this because I didn’t even know you could do that! Of course, I knew the solution right away…

Bookmarklets to the rescue!

Today’s Roll20 Bookmarklets release adds dice rolling – every option in the quick dice roller is supported, from 1d4 to 5d100 as well as the toggles for GM mode, exploding dice, etc.

Click here to download Roll20 Bookmarklets v1.2 and read on for information on how to integrate it into a Stream Deck.

Stream Deck Integration

Note: Only Chrome and Firefox are supported by Roll20, so only those browsers are supported by these docs. If you want to use a different browser, you’ll have to figure out how to make it work.

Prerequisites:

Setup:

  1. If you don’t already have one, create a Roll20 Bookmarklets folder and put it in the first slot of your bookmarks bar. It won’t work unless it’s in the first slot! Also, each bookmarklet’s title must start with a unique letter or number!
    • You can use folders to organize things (as per the screenshot above), just make sure each folder has a unique letter or number at the beginning of its name.
  2. Choose the correct macro prefix for your browser (it should focus the first item in the bookmark toolbar and open the folder):
    • Chrome{{alt}{shift}{b}}{{enter}}
    • Firefox{{ctrl}{l}}{{tab}}{{tab}}{{tab}}{{enter}}
  3. Create a SuperMacro button
  4. Enter the prefix from step 3 and add on the number(s)/letter(s) needed to select the correct bookmark. For example, for the “Roll 2d8” macro in the screenshot above, the full macro for Chrome would be {{alt}{shift}{b}}{{enter}}332
    • The “332” at the end selects the correct bookmark by navigating down through the folder tree:
      • The first 3 selects “3. Dice”
      • The second 3 selects “3. d8”
      • Finally, the 2 selects “2. 2d8”

That’s it! Simply repeat steps 3 and 4 for each button you want to add to the Stream Deck.

]]>