I don’t wear hats (well)

But I’m about to wear several, for now!

I’m thrilled to announce that I (Duane) am starting full-time this week at Relm.US Inc. as CTO and acting CEO. When my brother, Chris, and I started this video game-like virtual world for teams last Christmas, we had no idea how important it would become in 2020 to help people feel connected online.

What is Relm? Imagine if Zoom and Animal Crossing had a baby. Let people customize their avatar and environment, then bring in business apps like whiteboards and kanban boards. All in a fun, human-connecting, open-source world.

As more and more teams, conferences, and classes have begun experimenting with flex work and hybrid online arrangements, it’s clear to us that although it’s wonderful to see collaborative tools online, tools are not enough. We need an environment to surround us and give us context as we work together–we need a place that grounds us, and gives us human connection throughout the day.

If you’re interested in learning more or if you’re seriously passionate about this kind of new development, let’s talk!


Relm Updates – July 9

Most of the development work has been focused on a server update that will be coming soon, but there have also been some helpful updates and improvements that have landed on the browser side:

  • NEW: Preliminary support for packed-glb and packed-gltf formats. See command-line gltfpack utility. This reduces some meshes and animations to 20% of original size.
  • NEW: Selecting a 3D object now highlights its edges in black.
  • NEW: Documentation (“Help”) now shows thought bar in command descriptions
  • NEW: When selecting a single item, a toast message now shows you what you selected (type and ID)
  • CHANGED: The upload limit has been changed to 4mb.
  • CHANGED: On Mac OS, you can now Cmd+click to remove selection (ctrl-click is indistinguishable from right-click)
  • FIXED: Restore landing coords to working state (x,z params in URL)
  • FIXED: Uploading a 3D object used to only accept a single mesh; now all meshes in a glb/gltf file are accepted.
  • FIXED: Documentation shows /share command for screen sharing
  • FIXED: You can now drag objects that are “underneath” other objects, if the under-object is selected.
  • FIXED: Players would sometimes get caught in “infinite reload loop” when triggering portal to other relm.
  • FIXED: Players would sometimes “moonwalk” (from other players’ perspectives) rather than instantly teleport when using portal.

The Open Source Ecology group has a cool use-case for Relm: since they build actual life-size machines, they can collaborate in virtual space and coordinate builds. They requested the ability to highlight edges of 3D objects in order to better show off some of their CAD models.



An oft-requested feature is now here: screensharing!

If you click on someone’s screen, you’ll get a full screen version of their screen.

For now, the only way to initiate a screen share is via the command /share. Sending the /share command again will exit screen sharing mode and return to regular video.

Would seeing each others’ screens side-by-side be useful for a follow-along tutorial? Maybe as a way to show what you’re working on with the team? We’re excited to see how people use this new capability!


New Features – June 22

Relm had a big refactor last month and as a result, there are quite a few new features:

  • Foldable images: creates an improved illusion that a 2D image is 3D by putting a “crease” down the center.
  • Ground: we now have flexible flooring! No more grey background. Ground can be circle-shaped, square-shaped, or “roughly circle”-shaped (pictured below) and keeps players within bounds.
  • Editor: object properties can be directly edited (currently as JSON)
  • Faster downloads: all images are now converted to both WebP and PNG so that we can use the much lighter-weight WebP format on browsers that support it.
  • More vibrant colors: the world was white-tinted, but now has truer more beautiful colors on textures.
  • The “Help” screen documentation is accurate again.


Fueling a Passionate Culture in the Remote Office

We were fascinated to read Chip Cutter’s article in the Wall Street Journal, “Office Culture: The Office is Far Away. Can Its Culture Survive?” He notes that managers “are fretting about how they can instill culture and encourage innovation when employees who once spent days together now rarely see each other in person.”

When we started Relm back in December of 2019, COVID-19 wasn’t even on our radar. Our co-founder, Chris Johnson, was connecting with his clients over phone and video conference from his remote location in British Columbia, Canada. But he felt lonely. And worse, he noticed that he couldn’t even tell how some of his associates and employees were doing.

One morning, he called up one of his associates only to find that he had attempted to take his life a day earlier. Chris was shocked, and discouraged. The news was made worse by the fact that Chris didn’t even have a hint that his associate was carrying some unspoken pain in his life. This potential loss of life seemed to have come out of the blue.

But what if it could be different? What if remote work could be a little more like face-to-face office work? You get a chance to check in with each other, ask how the weekend was, get coffee together. These rituals and human touch points that we’ve taken for granted are actually the bedrock of human connection and trust.

Teams need each other–and they need to trust each other–in order to work effectively. And more importantly, we need each other when we’re going through difficult times, for reassurance and advice. Life is not straight-forward. No one should need to feel structural loneliness.

Relm’s value proposition is this: if you’re in a remote team, we think work should be more fun, more human, and more focused on the rituals and emotions that build us up as teams and as people. We think you are probably a part of a forward-thinking company that is willing to spend more time in a remote work situation to have fun together, build culture, and ultimately to be human first. If we can bring our whole selves to work, the world will be better for it.

Do your employees need more space to be themselves, together? If you’re on the edge of the adoption curve, and willing to build your remote company culture in a game-like browser-based virtual world, let’s talk!


Relm Tech Stack

We’re really excited to be using some very new technologies in the browser to make a 3D collaborative world like Relm possible. All of the software we use has one aim: to make it more natural and pleasant to work together as human beings, remotely.

Here’s what we’re using:

  • THREE.js – a well-known library for displaying 3D graphics in the browser. It uses WebGL and has a lot of conveniences and optimizations that make it simpler for us (as world builders) to focus on the people and world we’re making, rather than obscure details about GPUs and shaders.
  • Yjs – a lesser-known javascript library that enables state synchronization across peers. Peers can be servers or clients: the cool thing about Yjs is that it doesn’t care about primary/replica databases or transport mechanisms. It reliably and consistently merges data so that all peers can have a shared view of the world.
  • stampit – a neat way to organize javascript code that is kind of halfway between functional and object-oriented. It’s actually very close to the “ECS” (Entity Component System) paradigm that many games are built with (including Unity3D, which we used to prototype our first versions of Relm, then called Ayanarra).
  • Jitsi – a fabulous open-source library for browser-based video conferences. We use lib-jitsi-meet, a lower-level library that they use for their service.

All of our source code is open source and available here:

You’re welcome to join us in the quest to make human-centered collaboration enjoyable on the web!


New Features – May 29

We’ve been busy making improvements to Relm. Some of the big new features include a character selection screen, a more robust Commands system, and Multiselect with the mouse pointer. You can see a complete list of changes in our Changelog.

May 24

  • NEW: There is an “Export Only Selected Objects” checkbox in the /export page.
  • NEW: The /select command now has /select locked and /select unlocked subcommands that select all locked or unlocked objects in the relm
  • NEW: As a shortcut to /object delete, objects can be deleted with the ‘delete’ or ‘backspace’ keys (object must be selected first)
  • CHANGED: Hint text to use the thought bar has changed from “Press Tab to Type” to “Press Enter to Type”
  • FIXED: Possible jitsi race condition that prevented some video/audio from connecting
  • FIXED: Border around videos is now more circular

May 23

  • NEW: Cmd+A (on Mac) or Ctrl+A (Linux/Windows) will select all objects in the relm (that are unlocked)
  • NEW: ESC key deselects all objects
  • NEW: /select all command selects all, and /select none deselects every object
  • NEW: Multiselect! You can shift+click on objects to add to the selection or ctrl-click to remove from the selection.
  • NEW: Commands that work on objects now work on all selected objects.
  • NEW: You can toggle lock/unlock state with keyboard shortcut “|” (shift+backslash). It operates on what your mouse pointer is hovering over.
  • NEW: Some commands have new abbreviations:
    • /o = /object
    • /o f = /object fetch
    • /o i = /object info
    • /o r = /object rotate
    • /o s = /object scale
  • CHANGED: You can no longer “secretly select” objects (i.e. click things to select but it wouldn’t show it was selected). This was implemented previously so we could unlock locked objects. Use shift+\ (`|`) instead.
  • CHANGED: /object up|down|left|right is now /orient up|down|left|right
  • CHANGED: Removed some obscure commands (abracadabra, lockall, unlockall, etc.)
  • CHANGED: /snap command now expects /snap off to turn grid snap off.
  • CHANGED: /portal command is now its own command, and has subcommands, create, url, and radius. Use /portal create [URL] to create a portal, then /portal url[RELM] to change its url, or /portal radius [RADIUS] to change its radius.
  • CHANGED: Better toast message when objects are locked & unlocked
  • CHANGED: Editor Mode (/mode editor) now allows selection of locked objects
  • CHANGED: Locking and unlocking objects removes selection to indicate the action completed
  • CHANGED: shift+\ shortcut for locking/unlocking now behaves as expected by acting on selected objects only
  • FIXED: Issue with GLTF and GLB files would sometimes show “NaN” as scale and no object would appear

May 21

  • NEW: /snap [SIZE] command will give you a snap-to-grid feature when dragging objects with the mouse. A good value for SIZE is 300, since the marble tiles are 300×300.
  • NEW: Ability to lock and unlock all objects in a relm.
  • NEW: Uploaded assets (images like PNG, JPG, WebP, as well as 3D GLB files) are now saved as an MD5 so that we don’t store duplicates (and client load time will potentially be faster)

May 20

  • NEW: There is now a “G” button on thought bubbles that will convert the thought into a gem/sign.
  • NEW: Player names can now be edited directly
  • CHANGED: Diamonds now have a spotlight directed toward the ground so you can see how high up they are.
  • FIXED: Label positions are less laggy during animation frames

May 19

  • NEW: There is now a “My Character” button in the upper-right corner that allows you to select a character.
  • NEW: First-time visitors will see the Character Selection screen right away.
  • NEW: You can import and export an entire relm! /import and /export will bring up a textarea where you can export & copy, or paste & import.
  • CHANGED: The “Invite” button has been temporarily removed since it isn’t useful until we have locked relms.
  • FIXED: The speed at which objects moved on others’ screens when dragged is no longer slower than usual.
  • FIXED: Removed the ‘close’ button from gem notes (diamonds/signs) since it didn’t work and the proper way to close it is by clicking the gem again.
  • FIXED: Thought bubbles are restored to their original location & have content shown as expected.

May 18

  • NEW: When two or more people are near you, if you zoom in as far is it will go, the camera will now drift toward the centroid of those near you, so it’s easier to see everyone’s video bubbles near the center of the screen.
  • NEW: Double-tapping an arrow key will cause your character to speed-walk in that direction [Special thanks to Gary for the suggestion!]
  • NEW: Signs can now have a message set (/sign message [MESSAGE]). Messages are pop-ups that appear when you click on a sign.
  • NEW: Signs can now also have a label set (/sign label [LABEL]). Labels are zoom-invariant text underneath the sign.
  • NEW: Right-click toast message now shows portal URLs
  • NEW: /obj clone command now takes an optional [COUNT] parameter so you can make more than 1 clone at a time.
  • NEW: If speech bubbles exceed capacity, they will now automatically convert to a rectangular format with scrollbar
  • NEW: When sharing links, links are now clickable
  • NEW: Right-click info panel now shows object locked status.
  • NEW: You can change the URL of a Diamond link with /object changelink https://...
  • NEW: You can create links to external websites with a new “interactive diamond” that indicates users can interact with / click on it. Use /link https://[url] to create a Link.
  • CHANGED: When focused on the thought bar, hitting ESC will (in addition to putting focus back on the game) close the thought bubble, if open
  • CHANGED: Thought bubble links are now only abbreviated after 30 characters (previously was 20)
  • CHANGED: [MESSSAGE] is now an optional parameter of /sign create
  • CHANGED: Renaming “Diamonds” to “Signs”
  • CHANGED: Create a sign with /sign create [MESSAGE] (used to be /dia)
  • CHANGED: Signs no longer need to be locked to be clickable.
  • FIXED: Video bubbles no longer travel on top of the game UI buttons in the upper-right corner.
  • FIXED: Video bubbles near the edge of the screen no longer drift away from the characters’ centerlines.
  • FIXED: You can now clone 3D objects (but you have to refresh to see them—secondary bug to be fixed later)
  • FIXED: Large words don’t cause empty speech bubble bug
  • FIXED: Text in speech bubbles can now be copied to clipboard


New Features – May 17

Yay! We just started the new Relm blog, so check back for regular updates.

Here are the most recent updates from this week:

(Thanks to our Lead Developer, and Founder Duane Johnson!)

ANNOUNCE: New Release
– NEW: Clicking on an already selected object will unselect it
– NEW: Portals can now be selected, deleted, moved
– NEW: You can now use /object clone to clone a selected object (including portals)
– CHANGED: Zoom now affects the video bubble size, so you can zoom in to your conversation
– CHANGED: Mouse clicks (and hover) are now more accurate, based on raycasting instead of approximate “nearest point”
– CHANGED: No more hover color (clicking is accurate enough that you don’t need to see annoying half-yellow state)
– FIXED: You can now click on things in the sky / halfway through the ground
– FIXED: Mouse wheel on Chrome+Windows platform now zooms more smoothly

ANNOUNCE: New Release
– NEW: You can now add “x” and “z” url parameters to any Relm link and the character will be sent to that particular coordinate in a relm. Example: (sends someone to the center 0,0 coords of the default relm)
– CHANGED: New 2D objects now default to the “up” orientation rather than flat “down”
– CHANGED: The /link command has been changed to the /portal command

ANNOUNCE: New Release
– NEW: You can stand objects up on the left or right, e.g. /obj left and /obj right
– CHANGED: Camera now focuses on character’s head. Zoom is affected most by this: on screens that are vertically short, you can now still see your video bubble
– CHANGED: Vignette effect is now white, in the distance

ANNOUNCE: New Release
– NEW: You can now drag and drop objects on the X-Z plane with the mouse!
– NEW: Objects are now automaticaly selected after upload
– NEW: You can now rotate objects with the /obj rotate DEGREES command

ANNOUNCE: New Release
– FIXED: Clicking on the “thought input box” no longer deselects the selected object
– FIXED: Buttons no longer take focus away from game controls
– FIXED: Video bubble no longer takes focus away from game controls
– FIXED: Clicking on the “mute/unmute” button no longer selects whatever object is behind it

ANNOUNCE: New Release
– NEW: You can now /obj lock and /obj unlock an object. Locked objects can’t be visibly selected or moved.
– NEW: /obj commands now show their results as a toast pop-up

ANNOUNCE: New Release
– NEW: There is now a /zoomrange max command that lets you zoom in and out farther than the default zoom range. /zoomrange default will set it back to normal.
– CHANGED: The “Help” button instructions are now a little more detailed.

ANNOUNCE: New Release
– NEW: Character’s name is now underlined in color, and mouse pointer now matches that color.
– FIXED: Mouse wheel direction is natural direction for zoom
– FIXED: Offscreen player labels now stay inside the screen

ANNOUNCE: New Release
– NEW: You can now upload 3D objects! GLBs and GLTFs are accepted. Currently, you can move & delete 3D objects, but not scale or rotate.

ANNOUNCE: New Release
– FIXED: Scaled image objects now work and don’t disappear or move mysteriously

ANNOUNCE: New Release
– NEW: 3D Objects are now normalized on first upload and can be scaled with /obj scale N command
– NEW: 3D Objects can now be rotated around the Y axis with /obj rotate DEGREES command

ANNOUNCE: New Release
– NEW: Right-click on objects shows info about it: type, UUID, asset, position, scale, rotation. You can further click on the asset URL to be taken to the source image/GLTF.
– CHANGED: Style changes to pop-up messages (gray background)
– CHANGED: Hovering over pop-up messages now prevents pop-up from automatically disappearing. Clicking dismisses it.
– CHANGED: Higher maximum for default “zoom in” size

Good work Duane, people are loving Relm more and more! 🙂