/convolvr

WebVR framework and authoring tool for infinite multi-user spaces.

Primary LanguageTypeScriptMIT LicenseMIT

infinite procedural spaces

Overview

  • Component Entity System Framework built on Three.js
  • Multiplayer telemetry, chat, action & asset persistence provided by server using Nexus
  • Tools to build entities by composing pre-made components and customizing attributes.
  • Tools to build components from attributes (geometry, material, text, factory, file/network io, button/input, etc)
  • Embedded scripting language for complex component behaviour
  • Support for keyboard/mouse, touch screen, gyro, tracked controllers
  • Supports infinite, configurable, procedural environments
  • Mesh based VR UI; Multiline text rendering

Installation

  git clone https://github.com/convolvr/convolvr
  go get github.com/Convolvr/core
  go get github.com/Convolvr/server
  go get github.com/Convolvr/generate
  cd convolvr/client && npm install && gulp build &
  cd ../cmd && go build # && ./cmd # to start server

Development

  cd convolvr/client && gulp # watchify
  cd convolvr/cmd && go build # && ./cmd # to start server

Wiki

Initialization Example

(https://github.com/Convolvr/convolvr/blob/dev/client/src/main.ts)

Entity / System Mapping

See core/attribute.ts

{
  id: -4,
  name: "chat-screen",
  components: [
    {
      attrs: {
          geometry: {
              shape: "box",
              size: [ 3, 3, 0.25 ]
          },
              material: {
              color: 0x808080,
              name: "plastic"
          },
          chat: {
              userId: "all",
              displayMessages: true
          },
          text: {
              lines: [ 
                  "Welcome To Convolvr", 
              ],
              color: "#ffffff",
              background: "#000000"
          }
      },
      quaternion: [ 0, 0, 0, 1 ],
      position: [ 0, 0, 0 ]
    }
  ]
}

Server Examples