# RoundTableXR A simple chrome extension / bot for creating XR representations of Discord channels. ## Contents [TOC] ## Requirements - Discord API - Web3 database and decentralized hosting - Simple smart contract for recording room info - A couple 3D voxel models to test with ## Inspirations - Mozilla Hubs - Spacial - Immersed - CryptoVoxels ## To Do (complete by 25th) 1. - [x] Create a Discord bot 2. - [x] Launch a Web2 room on `arweave` using bot 3. - [ ] Make 3D room in `babylon.js` (complete by 30th) 1. - [x] Go through docs 2. - [x] Do guided learning 3. - [x] Add full room (28th) 4. - [ ] Add random 3D model 5. - [ ] Commands for themed rooms - Castle - Office - Village 7. - [ ] Add guild and channel data 4. - [ ] Write smart contract to store Discord channel info (July 16th) 5. - [ ] Combine all 4 for simple demo (July 30th) 6. - [ ] Pay for Heroku server ## Possible future development - Could be cool if it was used to create a 3D representation of DungeonMaster ## Steps ### Discord API: - Use Rich Presence? - Discord [documentation](https://discord.com/developers/docs/intro) - Use a Discord bot to send info to the 2D room: https://discord.com/developers/docs/topics/oauth2#bots - Use `discord.js` to create bot: https://discord.js.org/#/ - Docs: https://discord.js.org/#/docs/main/stable/general/welcome #### Commands: 1. `create` 2. `sync` 3. `delete` 4. `join` #### Additional Features: **Don't forget to add these features soon...** https://discordjs.guide/command-handling/adding-features.html#command-categories ### Arweave: - Uses `arweave.js`: https://github.com/ArweaveTeam/arweave-js #### Data to initially display: - Guild name - Channel name - Members in the channel #### Snag: can't deploy a whole directory with `arweave-js` Solution: copy [`arweave-deploy`](https://github.com/ArweaveTeam/arweave-deploy/blob/master/src/commands/deploy-dir.ts) or [`arkb`](https://github.com/textury/arkb/tree/051816dde5e46aae3753e619ba0cca675e7f27b9) - Done here: https://github.com/ECWireless/roundtable-xr/blob/master/helpers/deploy.js ### Babylon.js - Start with this walkthrough: https://www.smashingmagazine.com/2020/10/using-webxr-with-babylonjs/ - In the future, consider using a [Headless Engine](https://doc.babylonjs.com/advanced_topics/serverSide) for better client-side performance - Documentation: https://doc.babylonjs.com/ - Need to define the states of the game - Boilerplate FPS-style room: https://arweave.net/9xnGnLTCgBnxJBFesCYx2z4e6TlueyszNs4Z_Py5mFU ## The Tavern - The first experience should use DungeonMaster, and be focused around tavern-like interactions - There should be 4 ways of interacting with DungeonMaster, depending on how much processing power you are willing to use: - Web App - 2D MMORPG - 3D MMORPG - XR MMORPG - [DungeonMaster API Docs](https://dungeon-master-api.herokuapp.com/api-docs/) - [Version 1 of DungeonMaster UI](https://dev-dungeon-master-v1.vercel.app/) - Mechanics: - Allow players to view the tavern without wallet (roaming camera) - Allow players to play in tavern once wallet is connected - Logged in players can view randam artwork, chat with people, and view the consultation queue - If you are a Raid Member, you can interact with the queue as a member ## Brainstorming Designs https://www.figma.com/file/B5MgbaGkatcCqacNF4rQ3q/Raid-Guild-RPG?node-id=1%3A195 - RaidGuild Notion: notion.so/Raid-Web3-RPG-7390244ffb1b4fcab2adeab6878828af