It’s no secret that I have been fairly impressed with Unity3D. I find it extremely liberating in comparison to Second Life’s (and any other MMO) pre-packaged notion of what online 3D environments should be. I had to give a talk yesterday, so I used that talk as an excuse to taking my knowledge of Unity3D to the next level. I decided to make my presentation in Unity3D, and have the audience be part of the presentation at some point — similar to what we see in SL/OpenSim, but with the experience on the Web browser and under my complete control. Go here to see the result. Let me explain what you see there.
The whole thing starts with what looks like a vanilla 2D, yet-another-PPT-on-the-web, kind of feel. I added a few buttons to control the slide show (I love the GUI programming options!). Go ahead, “load” the presentation, and play with the buttons on the right. Also don’t miss left-click+dragging the mouse for a cool fire trail effect.
On the left there are two additional buttons: the “World” button on top, and the “Roam” button on the bottom. The “World” button takes you to another scene that feels like a traditional virtual world — landscape, trees, ocean, fire, ambient sounds, etc. You can move around with the arrow keys, page up/down, mouse scroll, and pan using left-click+drag. If you wait long enough (about 5 minutes) you’ll actually see the weather changing into fog, and then back to sunny. There’s also a few Orbs floating and producing sounds; you can click them to get information about some of my papers (ok, lame, but it was the first thing that came to mind to exercise a bunch of things at the same time: OnMouseDown action, local resources, and moving labels
Note that the World is not synchronized with anyone else who visits, so you won’t see any avatars in there. That world is a scratchpad for me to experiment with the single-user-to-system interaction capabilities in Unity3D. When you’re in the world, you need to find your way back to the presentation! (hint: find the object that’s clearly out of context) So go ahead and find your way back.
The “Roam” button reveals the true nature of the 2D presentation. It’s actually a 3D scene. It just so happens that, by default, I have a fixed camera, and no movement control. Only when you “roam” can you perceive the 3D space. Yes, it’s MY scene, and I can control the entire user interaction however I want! YEY!
Once you’re in roam mode, you can move around in the same way as in the World. But the other little thing I did is that this roam mode enables the visualization of visitor presence. Each visitor in roam mode is represented as a yellow ball head. There are no names or identifiable labels; just yellow ball heads, possibly moving around. Yes, it’s avatars controlled by other people, and you’re seeing them! But that’s pretty much the only thing you can do — see them. There’s no chat (yet). Some yellow ball heads you see may be corpses of past visitors who didn’t “Fix” their view before they left — I don’t have automatic garbage collection yet.
The presentation itself has a few slides explaining what I did in order to synchronize presence and location, if you’re interested in knowing that. It’s a hack — a couple of 20-line python scripts called under timers on the client side. Ugly. It’s just a proof-of-concept for me to start looking into the networking capabilities of Unity3D. I feel like a kid in yet another candy store…!
How is this different from building in SL/OpenSim? Well, everything you experience was scripted by me, down to the camera and movement control, the fire trail effect and the GUI elements. In the World, I used a skybox developed by someone else that adds moving clouds. For the most part, I was able to figure everything out with the right keywords on Google. Not surprisingly, the part that I had most trouble with was… creating the yellow ball head itself I still don’t know enough about 3D modeling and texturing, so something as simple as this yellow ball head doesn’t come easy to me. I used Wings3D, and after a few fails, I finally was able to create the UV map for the smiley face that I then textured in GIMP. Complicated stuff!
So, yes, the options are almost endless, but that means that whoever builds these scenes needs to learn how to exercise those options. On my part, I very much enjoyed learning all of this. Unity3D is doing a lot of things “right”. Indeed, authoring tools will be the key to the massification of 3D; their conceptual models and scripting APIs need to be simple enough for lots of people to be able to use them (like SL/OpenSim), but still powerful enough to express everything one might want to express in 3D. I have my fingers crossed that we will start seeing open source projects doing the things that Unity3D does, especially making the scene creation be powerful and easy.
Brilliant. Always wanted to do that when giving presentations about 3D collaboration / meeting software. Start zoomed in, give first few slides then zoom out to show your AV stood beside the panel and the whole 3D thing. In terms of open source scene creation etc – have you seen Kuda? http://code.google.com/p/kuda/
I am not sure what you are saying. You see Unity as a viewer into Opensimulator(or similar) or Unity as a replacement?
@Breen I’m saying at least two things: (1) the Second Life experience is primarily imposed by the LL viewer, over which OpenSimulator has no control; that experience is just a narrow niche of the possible experiences with 3D environments; and (2) I can see a path to OpenSimulator (or something like it) becoming the server-side of Unity3D-created environments.
I like it – I’m beginning to wish that Unity3D wasn’t Windows only!
+1 on the point about the statefulness of virtual environment/MMO servers being very different from the deliberate statelessness on the web. I think this is why attempts to integrate the two don’t get very far – virtual environments could fulfill a synchronous human-contact need that some social media yearns for but they won’t replace much that the web already does (no 3D web is somehow going to replace our current 2D web).
Also a very good point about the proprietary nature of a lot of MMO code out there. Just like the web, we need a vast array of open source projects that can be glued together to create the experiences that we need. For me, one of the overriding problems is how to encourage an ecosystem that can get us there.
@Justin, thanks for actually looking at the slides and commenting on them!
Unity3d is Windows and Mac. One of the devs tweeted that they’re working on a linux version, but it’s not ready. I should say that while I am excited with the approach that Unity3d takes for creating and deploying scenes, I am concerned that it’s a proprietary piece of software, and therefore we’ll hit some pay walls eventually if we want to do advanced stuff. But, as I said, I hope graphics people take notice and that someone will eventually take the same approach with an open source scene editor.
I am experimenting with Unity too using a sample I-Room to see how the scripting works for link up to external Intelligent Systems. Quick I-Room build, some GUI elements and script experiments, and using John Lester’s sample web page for embedding Twitter and Dabbleboard elements at http://www.aiai.ed.ac.uk/~ai/unity/iroom/
Just a comment on Justin’s note on VW/3D for sync and web for async aspecs of collaboratyion. The Virtual Collaboration Protocol used as a core in some experimentation for emergency responders within openVCE.net used those two aspects. IOt followed a Cognitive Work Analysis of distributed collaboration and a mapping of tools to various functional or task specific aspects. Some of this is written up for a forthcoming book chapter…
Tate, A., Potter, S., Wickler, G. and Hansberger, J.T. (2011), Virtual Collaboration Spaces and Web 2.0: Bringing Presence to Distributed Collaboration, in “Reshaping Research and Development Using Web 2.0-based Technologies” (Baker, M. (ed.)), Nova Science Publishers, 2011. [In Preparation]
Draft version of paper is at:
http://www.aiai.ed.ac.uk/project/ix/documents/2011/2011-web2-book-tate-virtual-spaces.pdf
See note on sync/async on page 10 (Experiments) and figure 2 CWA/Tool diagram on page 6.
thank you for the continued insight – you have inspired confidence in me to try Unity from a development point! thanks! =)