As the Oculus Rift finally gears up for consumer release in early 2016, the Facebook-owned company’s most prominent developer and technologist is experimenting with new ways to improve VR development.
Oculus CTO John Carmack, the lead programmer for classic games such as Doom, Quake and Wolfenstein 3D who joined the VR company in 2013, took to the Google+ group of Racket, the Lisp/Scheme-family programming language, to detail his plans for a virtual-reality scripting language and environment based on Scheme.
This first general preview of the language, according to Carmack, is designed to improve the native app development experience in VR GUIs by supporting VR application development in “Web-like,” “app-like” and “remote development” modes.
“Doing VR GUI development in the native apps is unpleasant—you can gut it out in C++ with our current interfaces, but the iteration times and code structure don’t make it a lot of fun,” wrote Carmack. “I started out with a pure-functional scripting interface, but it very rapidly became imperative, and it is in heavy flux.”
Carmack is designing the scripting language to enhance in-editor prototyping and on-device testing cycle times as compared to developing in Unity, while improving code share ability with other developers and communities. The three modes of VR scripting development include:
- “Web like”: A script is downloaded for each execution and run by a single signed app, fully specified by an app-scheme uniform resource identifier, allowing direct launches of VR experiences from Web pages or Facebook App Links.
- “App like”: A script is bundled into a conventional Android application package to be distributed through an app store, with the scripting used as a more effective development environment for some classes of applications.
- “Remote development”: A script is executed in an IDE on a PC, communicating over a TCP connection allowing sub-second code changes and debugging to VR change iteration cycles.
Carmack’s reference application links panoramic photos with text and audio annotations to demonstrate basic VR scripting using the language, and he plans to integrate an ExoPlayer social interface to add static models for panoramic videos such as those shot on a GoPro camera. He also wants users to be able to link between videos and build basic (or what he called “trivial”) activities, including board or card games.
The Scheme implementation, Carmack explained, is more of a steppingstone to eventual C# and JavaScript versions, based for now on his own PC development using Racket. He detailed ideas on functional programming implementations in other languages in a subsequent post.
“It’s past time I at least get this on everyone’s radar,” said Carmack, and he encourages experimentation with the language and environment. He is also still working on its standard library, with plans for cross-platform support further down the line. He posted a variety of sample scripts as well.
The Scheme VR scripting language is already generating fervent debate within the group, so in his latest post, Carmack provided some bigger-picture perspective on his goals for the project.
“While I got tagged as a ‘technical idealist’ for a long time, in reality I am deeply pragmatic,” he wrote. “I fantasize about building a ‘crystalline pyramid of comprehensible mutually interlocking concepts,’ but I know the folly of it. I have a not-so-large number of hours that I can possibly devote to this before it needs to stand on its own and provide real value to other developers, which means that it needs to be built on, and leverage, existing systems, warts and all.
“I’m only three weeks into this project. Give me a little more time to change the world. :-)”