Posts mit dem Label Avatar werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Avatar werden angezeigt. Alle Posts anzeigen

7. Juni 2011

More OVW Progress

Another week of evenings and weekend worth of progress on the next weblin generation (OVW). I am now working on browser tracking, support for multiple tabs and the multiple views for the same scene.


1. Firefox Add-on

Unfortunately, the rather simple weblin way of tracking browsers is not sufficient anymore. We want tabs (more about tabs and windows at the OVW blog).

Reliable information about visible tabs is only available inside the browser. So I need real browser addons. I started with Firefox some time ago. The addon keeps track of all tabs, when they open/close, become visible and when they navigate. It sends all the information over a local TCP connection to the client (using a simple remote procedure call protocol). This sounds complicated and it is, because the socket implementation in Firefox has its quirks. I could tell stories. But the beauty of a TCP connection is, that if the browser crashes or disappears, then the client will notice when the TCP connection goes down. It will then leave all rooms automatically, even if the browser addon does not say goodbye.

2. Tracking Browser Coordinates

Unfortunately, I don't get a real window handle (HWND) inside the browser. I need a native component to get a HWND for the tab. Why HWND? because I want to track the coordinates of the tab: resize and move events. I could add a native DLL to the addon, but then the addon is not cross-platform. Since I have a native part anyway (the client), I rather make the platform dependent processing in the client.

I implemented a BrowserInfo-module which finds the tab's HWND in the window list and does GetWindowRect() to get coordinates. The module also arranges the window stacking order with SetWindowPos() so that the avatar display is always directly on top of it's browser. That's good old Win32 coding. While most of the code is cross-platform, this part must be adapted to other operating systems, i.e. MacOS.

3. Model View Controller

I am very happy with the Model-View-Controller architecture. The "view" is only responsible for showing avatars. It can be closed and opened and re-creates everything from the model. The view uses the WebKit and JavaScript heavily.

The virtual presence module manages entering and leaving chat rooms, participants and chat lines. This is the "model". The view gets events from the model when participants enter/leave/chat. The view can always query the model. The model has only data structures. The view creates visible avatars.

And best of all: there can be multiple views for the same model. This means, that 2 browser windows can show the same scene.

_happy_modeling()

1. Juni 2011

Open Virtual World Progress

The Open Virtual World project makes significant progress. I am now using WebKit for all user interface components. WebKit is the HTML rendering engine that drives Google Chrome, Safari, and many mobile browsers, because it is easy to integrate and has a good open source license. WebKit is a C++ library and it has a brand new transparency feature. WebKit with transparency is perfect to paint avatars over browser windows.


I can use all the cool Web technologies: CSS, jQuery, canvas. I could even make make my user interface with Flash, SVG, 3D CSS Transforms, WebGL/3D. A CSS style on a text element is much faster to implement than with old graphics libraries. And it is portable to other platforms. Development almost feels like rapid prototyping. The way we are used to program Web frontends. It is a Web frontend, but for a native application. A true cross platform GUI.

This is a comparison of OVW avatars (left) and weblin avatars (right). Weblin avatars are painted to the screen by old school InvalidateRect, WM_PAINT, BitBlt techniques. OVW avatars are rendered by HTML and JavaScript.


Javascript means, that I can use jQuery, which makes effects very easy. Say, I move an avatar with the mouse and let it go. The Weblin avatar slowly slides down to the browser border. In weblin this was animated with a WM_TIMER, and painting the avatar at different positions until it reached the bottom. Then stop the timer. Now, with jQuery I just write one line of JavaScript like:
$(this).animate( { bottom: '0px' }, 800 );
Voilà, the avatar slides down.

There is more at the Open Virtual World blog:
I use Webkit also for windows and dialogs. There are no native windows. Everything is a transparent Win32 window without window border, but with a WebKit inside. All you see is programmed in HTML. Need a semi transparent shadow around your window? Just make a
and use a CSS "box-shadow".


WebKit rox.

Code is at code.google.com.

_happy_sliding()

19. Oktober 2010

3. März 2010

Welcome Neptun

In my spare time I am currently implementing a virtual items management system for the OVW project. During October/November 2009, I programmed a rudimentary item inventory as a Web portal in C#. I am developing on Windows/.NET and run the production server with Linux/mono. (BTW: mono is really great).

Since I had no item server, I implemented a quick web service, which simulated an item server to populate my inventory with dummy items from a dummy web service. This is a view of the inventory as a web page.

The simulator worked directly on the database with lots of SELECTs each time you accessed the inventory page, which shows all items. As we all know, caching helps to take load off the database, but in the case of virtual items, caching is not enough. Virtual items are active. They live. They have timers. They interact, and they change over time. Every single activity invalidates the cache. What virtual items need is an active cache.

That's what I programmed in the last 3 weeks: a specialized cache only for virtual items which can be accessed like a web service via HTTP. The protocol could be SOAP (too heavy) or REST (too unstructured). As you might have guessed, the protocol actually is SRPC.

So, now I have an item server that

  • populates the inventory and
  • serves as an active cache for the database, and
  • has a web service interface.
The thing is called "Neptun". (Yep, I just noticed, that it should be "neptune")

The inventory web page above is for users. Developers can also see items in the item server, but they are much more bare bone there. Neptun has a web user interface. There is a list of item numbers and item properties. Not much for the user, but informative for developers.

Neptun has been developed with lots of unit tests and integration tests (as usual). And here is another proof, that unit-testing is king: when I replaced my dummy item service with the real item server by exchanging just one web service URL, the thing just worked.

_happy_orbiting()

Thanks to Ingo for consulting at the Silpion party.

29. März 2009

IETF MMOX live in XMPP and Weblin

The MMOX BOF has been cast into Second Life and and Forterra. There was also a XMPP chat room: mmox@jabber.ietf.org. Since weblin is pure XMPP I could also participate with a weblin client.

This is the BOF from the weblin perspective.

There are many people on the page and in the room. All except me with the default avatar. Of course, there was no weblin user present. People joined with one of many available Jabber clients. vCard avatars would represent people, but amazingly none of the participants has a vCard avatar. This is a far cry from the Jabber developer room where more than 50% have a vCard with avatar.

BTW: the MMOX BOF in german end user language.

_happy_chatting()

21. Oktober 2008

Standardising Virtual Worlds: Do Not Hold Your Breath

We know it all: there will be one 3D Web in the future. All virtual worlds will be unified into a single system. A single 3D world player will interface to many virtual worlds (VW) and there will be multiple compatible players. We know it, we talk about it, some of us even work on it. The term "walled gardens" expresses our dream to overcome the current fragmentation. But it is a dream, rather than an expectation. Because most of us in the VW domain do not really know how to achieve such standardization. We know it will happen, but we do not know how. The standardization question is wide open. Of course, some people can answer it already.

Multiverse and Metaplace develop protocols with standardization in mind. They also create showcases. But the real driving force is to provide infrastructure, that others can use to create content. Their infrastructure comprises protocols, formats, and mechanisms wrapped into sample implementations. Their answer is: "use our protocol. It's been designed exactly to be used by everyone". That is probably true. But for the rest of us the question remains: which of them? Would any of the new "created as a standard for all of us"-systems drop their protocol and use another one? Probably not.

Second Life and There.com also have answers. The Second Life community just says: OGP. Others say OGP is the least common denominator. That's neither fair nor true. See how much value has been created with HTTP as common denominator. A chat protocol would be the least common denominator for VWs. A chat protocol just mediates messages. OGP is much more. OGP is feature rich. But still There.com surely finds deficiencies and has no incentive to make a transition. There.com and many other mature VWs have a well running system. Would they join OGP? Probably not.

Then come World of Warcraft and other systems, which have 10 Mio. monthly paying power users. Their answer to the standardization question is: "why?". Maybe as good as "let's see".

There are newcomers striving to create standards, there are mature VWs which move to create standards based on their 10% market share and completely uninterested behemoths. The current situation ist very unlike the Web where competitors dropped out quickly when HTTP arrived. It is much more like the Instant Message and Presence (IM/P) situation 10 years ago. Uninterested behemoths (e.g. ICQ, AIM), established players tweaking their protocols (SIP, XMPP), and newcomers determined to create a standard from scratch.

If this is true, then there is no hope for a unified VW protocol. Extrapolating from the IM/P experience, we can expect multi-protocol VW clients with protocol plugins for individual systems. We are now running Miranda, Trillian and others and have our buddies on a unified roster. A typical protocol plugin has less than a MB of code. A SL/Metaverse/There client weights in the order of 20 MB. Applying a conservative Moore's law, the 500 kB of 1996 is the 20 MB of 2008. We are now talking about standardization. We go to conferences, which remind me of lively IETF meetings about IM/P standards. Some are implementing "the future standard". Some hurry to make small changes to their existing protocol to propose it as "the standard". Some just wait and see.

We can expect multi-protocol clients in a few years and it will be long time until there is a common standard. Maybe 20 years from now. The IM/P domain did not get there after 10 years. But there is progress. IM/P has only been partially integrated. The roster is unified, i.e. only one client with one window on the desktop. But account-wise IM/P is not integrated. There are some big players connecting their account spaces. But it is not yet common. You need an account in every network. We can expect the same in VWs for a long time.

Even with incompatible protocols we would hope for avatar unification. But it will probably turn out as in the IM/P space. Different world, different account, each one with an avatar. Primarily because of different policies. There are VWs with user created content. How would you use these avatars in WoW or a controlled There.com. If you buy something in one world and you get it for free in another, some content creators might be very upset. That's a pity for worlds which rely on user generated content. And there are technical limits. How shall engineers handle scripted clothing from SL in a world which does not support it.

What we can hope for is partial integration where a world manages an avatar and other worlds can at least show it. Maybe not all features, maybe just the basics. The goal for the near future is to display avatars from other worlds. That also fits to the business model of VWs. Users remain full members of their primary world. They customize the avatar with all features offered by the world, from a user driven clothing industry to quest rewards. But they can visit other worlds with this avatar.

21. Februar 2008

CCP's Chance

CCP is working on a secret project. It is assumed that they work on a new MMOG based on the World of Darkness IP. But maybe they will surprise us. The EVE ambulation project may be their way to get experience with avatar/first person technologies. CCP claims that they want to provide for more socializing but that there are no plans for more. I agree that avatars will give more socializing and might even attract gamers with other mindsets (read: women) but I doubt, that CCP has no plans beyond walking on stations.

Here comes what I wish they had in mind:

The new MMOG could be a science fiction life simulation with strong role play and melee combat elements. A kind of future Sims with RPG. If you want to reach the mainstream, then you need more socializing. People must be able to meet in person and not just as small squares on the black space background. In other words: you need avatars which people can style and a home where people can visit each other, maybe even player housing. Call it World of EVE.

The normal game life would happen in a hyper developed privileged world, surrounded by technology and lifestyle with current western and asian street trends. Starting in this futuristic environment players would adventure in the "upper world", uncover conspiracies and safe the world (see The Longest Journey). They could easily switch to cyberspace (Otherland) for parts of the quests. And where there is light, there is also shadow. The underworld of the distant future is big, dark and old. It is a perfect environment for a World of Darkness where technology meets arcane arts and monsters. Vampires? no problem: a product of criminal bio engineering or uncontrolled nanotech. Or they just developed over thousands of years in kilometres deep dungeons of a planetary megalopolis.

Of course adventures in both worlds will have combat with the full range of skills, guns, quests, shooting, nano/bio weapons, field effect, casting, regeneration, healing, vicious enemies, robots, cyberspace hacking, monsters, all you need for Anarchy Online on speed. And here we meet the old dream of EVE-Online players: melee combat in stations, not just walking (ambulation), but also fighting in hallways, conquering stations, using ground troops to throw pilots out of their (not so safe anymore) bunks, capturing command centres and infrastructure and solving quests in abandoned parts of old stations to safe the world (station). And ... what EVE-Online players do not dare to dream: landing on planets to enter a hyper developed living and adventure world.

This would be the perfect combination for CCP: a triplet of socializing/lifestyle with melee combat and seamless integration with EVE-Online. It would make EVE-Online more attractive for the mainstream and create a new world which might even sweep away SecondLife, but still leave enough room for a dark side.