Saturday, July 31, 2010

Working Draft: SNOW-375, Snowglobe, and Multi-Headed Clients

Overview

SNOW-375 is an API to the Snowglobe code base to query reflexive information that affects Avatar, Agent, Assets, Inventory, Gestures, and other states of the client as it interacts with the virtual world. In order to enable the widest range of devices and scripts to communicate with the client, the API is language-agnostic. The flexibility of client-side scripting is a significant feature of SNOW-375.

SNOW-375 allows for a multi-headed client architecture instead of a single monolithic design. There are many possibilities to this besides client-side scripting, like augmented reality devices, gesture recognition devices, social networking, advanced heads-up displays, integrated desktop programs (desklets), joysticks, machinima tools, and many more. Multi-headed clients are also significant, yet its transport layer may be platform dependent.

Tuesday, July 27, 2010

Optimizing Simulations with basic General Relativity for Clients/Server Architecture

Let's optimize the way the 3D clients perceive cyberspace from server-side simulation. Let's also do it with ReST concepts. Do you doubt it can be done? You probably wonder how to copy the entire dataset of the scene from server to client to display it, yet that would be the mundane assumption. Let's skip that step entirely, as that doesn't follow General Relativity. We want to let clients to quickly peek into a server-side simulation and observe only a specific array of perception that relates to those clients.

Footage Of Crysis Running On The iPad
What's the trick? It's not a new idea or secret, yet an idea that just hasn't been effectively used by the graphic card industry. They haven't had any reason to use it since their market isn't about client/server architecture. That may change as people opt-in to server-side games, such as otoy and OnLive. The physics in otoy and OnLive, however, are optimized for games with static content. Otoy becomes basically a remote controller rather than a way to do optimized, concurrent simulations for client/servers technology. Let's remove the remote-controlled-stream technology here, also, from the mundane assumption.
C# based Ray-Tracer


The first mind bender to this concept is to first turn ray-tacers into physical volume detectors that return a unique object identifier for a casted ray that has optional threshold through density. Where that ray stops is where the object identity to return. That's it nothing more.


The ray would start from a given origin within a bounded topology (like typical 3D cubical simulation) and stop where it either detects an object of greater density than the threshold. Unlike your ray-tracer that continues to bend and refract rays, we only want the straightest ray possible until that threshold is triggered. If nothing is detected, then a null identity, like a zeroed UUID, can be used to mean full transparency. Don't assume zeroed means void, or general-relativity optimizations won't work.

Friday, July 23, 2010

Drag-N-Drop Animation Overrider: a kite with a string for two.

Client-Side Animation Overrider made even easier with drag-n-drop ability. You just drag animation items from your inventory over to the animation overrider and drop on to the actions you want to override.

Friday, July 16, 2010

User-Created Content: What haven't you been able to do?

Better, faster, stronger, but no, no, no... not technically harder! It's a waste of time...

There is a wall people run into often, yet they haven't figured out the pain they feel. They don't quite say "ouch" when they hit the wall. They do, eventually, say something else. They say it when they reach out and can feel the wall of frustration. Do people profit where others give up?

Skip below the Daft vid if you don't have any questions about VWs.

Before we try to make this wall obvious, lets stereotype two kind of virtual worlds. One type of virtual world lets you connect and interact with objects, which you can edit and change, and these changes you see immediately like a seamless experience in real-time. Then there are the type of virtual worlds where you have to pre-render and construct while the world is off-line fully disconnected in order to update the experience until you eventually reboot it to make more changes. Games you buy off the shelf of the store to play on your game console are typical of the rebooted worlds designed by a company, yet some come with a level editor. Do you get to interact with others and share architectual design changes live? As you try to answer this it makes it a bit more clear the difference between these two types of virtual worlds.

Is it a live band or is it Memorex Machinma?






Tuesday, July 13, 2010

Detached Chat Window: Quick Tip on How to Show Communicator

Icesphere allows you to use the Snowglobe with detached chat ("Communicator") window. This allows you to keep the main view clear of any windows or overlays. You can also use hotkeys like alt-tab to quickly switch between chat and the main view. This makes much nicer without having to manually show and hide your chat windows.

Another possibility is to is to use the Show/Hide UI toggle to remove most of the rest of the UI from the main view so you can maximize an unblock main view. This toggle only toggles the visbility of the UI the is built-in with the official viewer. It does not toggle visibility of the Icesphere's UI. This allows for futher alternatives to the default UI for those that wish to have such freedom.


Friday, July 9, 2010

REST/HTTP Security and Configuration Settings for Snowglobe-375

Snowglobe-375 has a few extra security and configuration settings that control how external scripts access the API. You can override the defaults throughs the the "Show Debug Settings" menu option availabled in the Advanced menu.


Where to get GTK for Linux, Windows, and Mac OSX

Icesphere uses GTK# to manage its user interface. Microsoft Windows and Apple Macintosh OSX users that aren't familiar with GTK may find this helpful. Linux users probably already have GTK installed and just need GTK# and dependencies.

Windows user can now use use the Icesphere installer which includes GTK#, found on the Icesphere Download page.

Tips for Linux users:

Debian: apt-get install gnome-desktop-sharp2

Gentoo: emerge dev-dotnet/gtk-sharp dev-dotnet/glade-sharp

For all others: You can select your the appropriate download at the Mono Download page, which has the GTK# run-time downloads and installer.

Please comment with any further links that you found helpful.

Wednesday, July 7, 2010

Why REST/HTTP based Client-Side Scripting for Snowglobe

Over the last few years I've written various methods to integrate or decouple parts of the snowglobe viewer to add scriptable features. C++ is good for a lower-level optimization, yet there is so much already written in C++ for the viewer that doesn't need to be in C++. There is also the need to separate tasks being done in the main loop of the viewer that doesn't need to be done in the main loop. Eventually, after several models and rewrites, the REST/HTTP based API has helped overcome many obstacles that other usual methods fail.

I'll get to the Client-Side Scripting features in later, yet we have to dig deep to understand some concerns before the desired features to understand why choose REST/HTTP.


Immersive 3D Virtual Reality on your Desktop


One feature I've kept in mind is the ability to let ourselves interact with the immerisive environment in a more intuitive fashion. Note how well fashion does in our local malls, and how people rave about new looks. The the screenshot above already shows this possibility even at this stage.

The overall theme of the windows follow what you already have installed on your desktop, so it matches! Simple concept, and I wonder why people make it so hard to match with built in skins that don't match the rest of the desktop.