John Carmack is something of a legend in the programming world with a history that’s intertwined with the early gaming industry. Now at Oculus as Chief Technical Officer, Carmack may be poised to leave a similar mark on the world of VR. A made-for-VR scripting environment of his design will be demonstrated at Oculus Connect.
Since joining Oculus in 2013, Carmack has been closely involved with the company’s mobile initiatives. Samsung’s Gear VR was revealed last year to be ‘Powered by Oculus’; the headset had been crafted in partnership with the two companies. Carmack, as we learned from his talk at last year’s Connect developer conference, has been working up and down the render pipeline to optimize virtual reality on Gear VR.
As if that wasn’t keeping him busy enough, he’s also been developing his own scripting environment built on Scheme, called (simply enough) VrScript, specifically for VR application development. In a 60 minute presentation on the last day of Oculus Connect, Carmack will be the centerpiece of a ‘Live Coding Session’ where he’ll show VrScript in action. The session synopsis reads:
John Carmack will demonstrate the process of developing a simple VR application using a new development environment for rapid development and open deployment on Gear VR. You’ll also learn more about media processing, remote development, deployment, and multi-user setup.
Sharing an internal overview of his work a few months back, Carmack gave some indication of the motivations behind the VrScript environment in a message board for the Racket programming language:
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.
In-editor prototyping is nice in Unity, but actual on-device testing cycle times are terrible, and you wind up with all the bulk of Unity and poor access to the native VR features like TimeWarp layers.
With app signing, we have no way for developers to casually share work with each other or limited communities.
He continues listing several ways in which the scripting environment will function:
Web Like: where the script is downloaded from the net for each execution and run by a single signed app that we provide (NetHMD). Fully specified by an app-scheme URI, this allows VR experiences to be launched directly from web pages or app-links on Facebook, which I think is VERY powerful – read about how great something is while browsing on your phone, then just click the link and get the “insert into HMD” dialog and jump right there. VR scripts can link to other VR scripts without leaving VR. There is no direct monetization here, but IAP can eventually be supported.
App Like: where the script is bundled into a conventional apk to be distributed through the store, and the scripting is simply used as a more effective development environment for some classes of applications.
Remote development: where the script is actually executed in an IDE on a PC, communicating with NetHMD over a TCP connection. This allows sub-second code-change to VR change iteration cycles, and the use of a debugger. There might also be a use for a related mode where a central server directly drives one or more clients.
From Carmack’s early descriptions, enabling rapid iteration is an important part of VrScript. But social is also important as well. He wants VrScript to make it easy for people to create networked “activities” in VR, like board games and card games.
For now VrScript seems quite focused on mobile VR development for Android, but it’s possible that some of the lessons learned (if not the environment itself) will eventually be useful for desktop VR development as well.