The VR metaverse is pretty big and it's hard to find stuff. We can crawl it like any search engine would, but there's no fun in that. Let's turn it into a game using exploration-focused VR chat bots.

For now, I'll be focusing solely on those parts intended to be seen with JanusVR. When I say "JanusVR", I'm using it as an umbrella term for two clients. There's JanusVR (the "native client"), a VR web browser which began development in 2013, and JanusWeb [github], an open-source WebVR client from 2016 that can connect to JanusVR worlds.

The VR portion of the metaverse, though relatively new, is already huge. JanusVR alone has had several thousand worlds, both big and small, developed for it, ranging from fully supported and updated, to quickly built then abandoned.

First, why am I the most interested in JanusVR, when there are various VR and webVR platforms intended to fill the same niche?

  • The "presence server" [github] meant to connect players through multiplayer is completely open-source, and much of what I've been doing connects directly to it, bypassing the clients.
  • JanusVR worlds can be hosted on any page that can display HTML. I've seen JanusVR worlds embedded on dedicated servers, piratepad links, wikis, Tumblr themes, and shared Dropbox links.
  • While large companies will try and control access to their product, there are no restrictions on who can view or interact inside JanusVR worlds. This makes connecting using bots a lot less of a hassle.
  • Low performance requirements. Though I wouldn't want to run the JanusVR client without a dedicated GPU, I routinely run a bot from a headless $10 linode server through JanusWeb to collect screenshots.

So, what can we do with this? There's a lot I've left unexplored, but I'll start with some that I've personally done over the past year:

  • "MockingBird", inspired by SOMA. Specifically for Halloween 2016, a bot scraped the JanusVR Discord server for public messages and avatars for a week. Jumbling the messages using markov chains, mixed in some "I'm a real person" type messages, and roamed around aimlessly interacting with confused users.
  • "Metaverse Explorer Drone" has been traveling from world to world for over a year, broadcasting its location to users of the JanusVR client. Its interactivity has changed over time. Currently it acts as a roaming search engine, finding links to VR worlds for users who know to ask.
  • "Metaverse Cambot" finds random worlds and briefly explores before tweeting screenshots (with some art style transfer mixed in) to the account @Metaverse_Cam
  • "Bot Ross", forked from the codebase of the Metaverse Explorer Drone, finds art from the "Vinebooru" and temporarily edits it (with credit!) into the world it's in.
  • A not-officially-named fork of the explorer drone which acted as a text-to-speech/speech-recognition relay to Cleverbot. I saw quite a few people try to argue with it.
  • A simple "walmart greeter" that sat in one of the first rooms a new user would enter, greeting them via VOIP with "Welcome to JanusVR, I love you".

Currently (April 2018) I'm working on a new bot from the ground up, powered by Python, with the intention of being very lightweight but with support for modules to expand its behavior. This bot already creates a database as it moves between different worlds of where it is, what it sees, who interacts with it, etc. Its first movement module uses Assimp and Bullet to find its way around Janus worlds -- any collision model Janus can load, it can load -- with pathfinding in the near future.

With a bit of backtracking to get where I'm at now, I'll be describing the creation of this new all-purpose bot.