Contents
Introduction
The dream of virtual worlds has fired our collective imagination for a long while. A metaverse⤴ where people can meet, learn, make things and share ideas. Recent web technologies (WebGL, Web Audio, WebSockets, WebVR) provide the foundations for immersive 3D experiences on the web. At the same time, development platforms like Unity and Unreal make it easy to build games that work on mobile, desktop, VR/AR and consoles.
But none of these technologies and platforms address the server-side needs of multiuser creative applications.
Undoiverse⤴ is an open source server-side JavaScript module. It allows hundreds of users to create, collaborate and communicate in a shared ‘free roaming’ 3D environment. Although you can build multiplayer VR games⤴ with it, Undoiverse is really intended for multiuser creative VR experiences - the features it provides will be very familiar to anyone who’s used creative applications like Photoshop, GarageBand, PowerPoint or AutoCAD:
- Copy and Paste
- Undo and Redo
- Group and Ungroup
- Lock and Unlock
- Save and Save As
- …and so on⤴
For Example
Say you want to develop a gamified learning app for young engineers, loosely based on Scrapheap Challenge / Junkyard Wars⤴. A dozen mechanics in two teams scavenge a giant pile of rusty parts, and race to assemble a working car.
First, players sign in to your app and customise their avatars. Then your app randomly generates a few thousand car parts and scatters them around the virtual junkyard. Next your app initialises a new Undoiverse instance and tells it a little about each player, avatar and car part.
The game starts, and Undoiverse tracks the locations and attributes of the car parts as players collect them, carry them, chop them up and weld them together.
Undoiverse’s main task is to keep players’ devices constantly updated with the current state of car parts and avatars in their vicinity. But you can install Plugins to extend Undoiverse’s capabilities, letting players send messages to each other, undo their mistakes, or search the scrapheap for a particular kind of steering wheel.
Just to be clear: Undoiverse only runs on the server, so it can’t help you with lighting, physics, 3D rendering or the user interface — your frontend code needs to do all that. Your frontend could be an iPhone app, a PlayStation 4 VR game or an HTML5 web page. In fact your players can all be using different frontend technologies at the same time, linked together via the same server.
Roadmap
browse()can return an ASCII box in ‘plugins/core/location’.
‘plugins/develop/log’ able to output to console and/or directly to file.
‘plugins/develop/log’ formats for raw log-lines, ASCII rendered Locations, lists of Clients and Entities, and a summary of current state.
V: 0.3.0
ETA: 20170120Stronger Undoiverse Class and Core Plugins, passing a decent set of unit tests. Unit tests now test against the output of ‘plugins/develop/log’.
Pull in work from the http://life.loop.coop project.
V: 0.4.0
ETA: 20170202Core Usage Examples begun - between them, they should thoroughly cover all Undoiverse Class and Core Plugin code.
V: 0.5.0
ETA: 20160209Undoiverse Class and Core Plugins production-ready, thoroughly tested and reasonably well optimised.
Core Usage Examples well tested on a variety of UAs/platforms.
V: 0.6.0
ETA: 20160214Command Line basically functional, passing a fairly good set of unit tests.
V: 0.7.0
ETA: 20160221Documentation tidy and correct. Complete for Undoiverse Class, Core Plugins, ‘plugins/develop/log’ and Core Usage Examples. Incomplete (with ‘@todos’) for Command Line, the remaining Standard Plugins, Community Plugins.
http://undoiverse.loop.coop/ is responsive and properly styled, with a logo.
V: 1.0.0
ETA: 20170311‘Git Archive’ history plugin production-ready.
V: 1.1.0
ETA: 20170325Other history plugins production-ready: Rewind and Playback, Undo and Redo, Fork and Merge, Historical Analysis.
V: 1.2.0
ETA: 20170408Query plugins production-ready: Search and Filter, Move and Zoom Viewpoint.
V: 1.3.0
ETA: 20170501Ownership plugins production-ready: Open and Close, Save and Save As, Credentials and Permissions, Lock and Unlock.
V: 1.4.0
ETA: 20170522Composition plugins production-ready: Group and Ungroup, Copy, Cut, Paste and Duplicate.
V: 1.5.0
ETA: 20170612Communication plugins production-ready: Broadcast and Notifications, Conference and Private Messaging.
V: 1.6.0
ETA: 20170703Polish the Command Line experience, with an excellent set of unit tests which find problems across a wide range of platforms.
V: 1.7.0
ETA: 20170717Plugin usage examples complete.
Documentation tidy and correct.
V: 2.0.0
ETA: 20170807Arrive at a conclusion whether major (breaking) API changes are needed to the Undoiverse Class and the Core and Standard Plugins. Ideally not, but if they are needed, let’s aim to complete them all by the end of 2017. After that, the only modifications to the Undoiverse Class and the Core and Standard Plugins should be refactoring for compatibility and performance.
Progress in 2018 and beyond will be made through Community Plugins, better examples, better documentation, and so on.
V: 2.1.0
ETA: 20171106
Contributing
Undoiverse is an open source project by digital tinkerers Loop.Coop⤴.
See the GitHub repo⤴ for more details.