Showing posts with label technology. Show all posts
Showing posts with label technology. Show all posts

OVW Transparent Browser Bounty About to be Claimed

Brent Fulgham is currently working on the transparency feature for WebKit. Brent is the developer of the WebKit-Cairo port. It looks like the bounty will be claimed soon. Here are first impressions of the test.

What does this mean for the project? We will soon be able to start working on the GUI. The GUI is the last missing part of the new OVW avatar client. Thanks to Brent, the GUI will be purely HTML based. That's the future folks: Web technologies, CSS, HTML, SVG, Canvas, WebGL.

Later we might also incorporate the multi-process rendering and WebGL developments of WebKit. This means, that rendering will be even faster in the future and we can support real 3D avatars.

Also, thanks to Lupus Labs for sponsoring this open source bounty.

OVW Transparent Browser Bounty

The OVW project needs a transparent browser as GUI platform. Transparent browser means, that if I set CSS transparency of the HTML-body to 0.5, then I want to see the desktop partially. All graphics and dialogs of the OVW client will be displayed by this browser. There will be no other native windows or GUI components. There are so many other things to do in the OVW project. We would like to outsource this task to people who have browser library know how. We would like to sponsor your open source work, and work on other OVW parts in the meantime.

The transparent browser will be used by a OVW client plugin module. We will wrap the OVW specific module around the transparent browser library. What we need is a transparent browser DLL, which our GUI module DLL can use. To be able to integrate the transparent browser into our project, we need a MS VisualStudio project which compiles all required components, links them into one or more DLLs and has a driver program which teaches us how to use the transparent browser. We would like to add features later, hence the need for a compileable project, not just a release DLL. Yes, we know that we can build WebKit from SVN, but it's not simple and there is so much else to do.

Key properties of the project:
  • transparent browser, no default window background
  • in other words: window alpha channel controlled by CSS only
  • only libraries which can be distributed with a BSD like license
  • Cairo or Skia does not matter, but not CoreGraphics
  • Synchronous calls into and out of the browser's Javascript
  • normal performance, meaning no bad hacks, which make transparency, but harm performance
  • Keyboard input and mouse move, click, scroll
  • IFRAME-Support
  • max. 20 MB for everything needed before compression
  • better no app installation required, no registry prep, just plain DLLs
  • preferably as MS Visual Studio 2005 Project, 2008 possible
  • Release + Debug builds
  • Unicode and CJK-script support, right-to-left script is nice to have
  • BSD license
Chromium comes to mind as a base technology because this is where the buzz currently is. There are also Chromium derivatives like Awesomium and Berkelium which could be a starting point. Pure WebKit is also an option. We might migrate to speedy Javascript, out-of-process rendering, and WebGL later. Gecko is also possible.

The bounty is max. 4.000 € in 4 steps:
  • 1 k € for a DLL which paints a web page on a transparent window incl. a sample driver program (which has a URL input). We can compile it.
  • 1 k € for keyboard/mouse input, IFRAME support, and max 20 MB.
  • 1 k € for synchronous calls with arguments between the driver program and the Javascript engine. Int and String type arguments should be enough, Dictionary arguments would be cool. BeforeNavigate, DocumentComplete notifications similar to the MSIE component.
  • 1 k € for additional cool stuff to be defined later, e.g. MSVC 2005 because it lets us omit recent C runtime libs making the package smaller, helping us actively to use the thing, shrinking to 10 MB including all support DLLs (beware of the ICU data DLL), WebGL support, DOM API support, helping us to channel HTTP over the OVW client's HTTP component, etc.
More about the Open Virtual World project: http://www.OpenVirtualWorld.com

Animating Avatars

We are still building the avatar display. The most important part of the avatar display are the avatars. There are also chat balloons, nicknames, menus and more GUI stuff, but avatars are the most important part. And we want ths avatars to be animated.

What do we need for animated avatars?
  1. a renderer which puts pixels on the screen
  2. an animated avatar in whatever format
  3. a decoder, that decodes the avatar data
In the previous posting I discussed cairo as the renderer of choice. That's point 1. We now have to decide on point 2, the animation format and choose (or make) a decoder for that format. Of course, the decoder is strongly related to the animation format.

What is an animation format? An avatar can perform multiple actions. It can stand, walk, wave, etc. Therefore, we need not just one, but a set of animations for a single avatar. An animator component will then decode one animation sequence of the set and display frame after frame. If the avatar is supposed to wave, then the decoder will play the "wave" animation. Usually it will just play the "stand" animation. And when the avatar moves, then it should play a "walk" animation. So, the avatar format must provide multiple animations.

Lets review our options for an animation format
This list is very incomplete. Proposals are welcome.

Real 3D models would be cool, but I am not really a 3D expert. So, we will start by investigating the "config.xml" option.

This means: we need an XML parser (already in the Apollo framework) and a GIF decoder, which is capable of animations. Typical graphics libraries are candidates for the job. We are currently checking which library is capable of loading animated GIFs from memory and from file and be integrated into the project. Getting to know a code library takes some time. So, this will take a while. We are checking:
  1. OpenCV (no GIF?)
  2. CImg (no GIF?)
  3. GraphicsMagick (very complex, GIF loader not found)
  4. DevIL (GIF only from file, but we need decoding also from memory)
  5. GIL (GIL from Adobe does not support GIF)
  6. CxImage (GIF works)
  7. Imlib2 (could not find a Windows MSVC build)
  8. ...others?
The high profile image libraries seem to ignore GIF. This sounds weird, but is logical. GIF has only indexed color with max. 256 colors. It is not suited for real image processing applications.

Only CxImage survived the test. This is not an optimal solution, because CxImage is Windows based. It must be replaced for a Mac/Linux port. Replacing CxImage should not be too difficult, because there are only few lines of code in the application code. Basically loading an image file and iterating through the frames.

We do not want to spend too much time on this. So, we will now continue with the latest CxImage version.

Database Technology for the new Web Site

In the next months, the OVW web site will grow. When we add items, it will be an item trading platform. Later it will grow into a serious social network web site with all the "Send message", friends, feed, etc. We do not know yet how far we program our own stuff or if we use external services. After all, there are already enough social networks. Anyway there will be much traffic on the Web site.

From weblin we learned, that there will be millions of users. Weblin had up to 27.000 concurrent connections with more than 10.000 of them browsing the web, chatting and trading at the same time. We must make sure, that the web site works for 10.000s of concurrent users, because the weblin numbers are surely not the end.

Parallel to the client we already work on a the server/backend code. It will be just the necessary stuff to let the client run for you without much registration. But it is the foundation for all parts of the web site which will be added later.

I just posted an article on my blog about the database design for the upcoming OVW web site and item platform.

Get Ready for the First Release

We are working hard to finish the first version of our "chat browser" but there is something you can do while you are waiting:

Please download Adobe AIR and install it. AIR will be necessary to run our software. It is widely used and perhaps you already have it installed, so do not worry that it might harm your beloved computer.

I added an AIR download link to the sidebar. Just follow that link and you will get more information about AIR in your preferred language.

Avatar Display Showcase 2: Heads Up Display

We did a new showcase example of the avatar display! It's more complex than the last one, but it shows some new features you might be interested in.

This time it's mainly about how you interact with the interface; how to chat and how to launch other actions. You might notice that there are some differences in the way we are doing it to weblin and/or rocketon.

Have fun playing with the showcase.



New Features demonstrated above:
  • 3D Avatars (MD2, Collada will follow)
  • Vector Avatars (the teddy-bears)
  • Scaling Control (lower left right corner)
  • Chat Console (we call it doormat)
  • Chat Bubbles (with different text sizes, depending on text length)
  • Folding Radial Menu (it's draggable)
  • Avatar animation (jump & wave implemented)


The trickiest part might be the new radial menu. Our version is based on the atom interface. If you follow the link, you can read about the advantages a radial menu has.

As always: This is not the final interface and it may be buggy. We are trying to publish every single bit of development to let you be part of the process. So give us your feedback because it matters...

Weblin

Like most of you, we got the news, that weblin is about to go down. This is sad news for us. Weblin is a great system which once had millions of users and it has a very good and strong community.

Actually, we are weblin users and have been for a long time. We like the concept of meeting people on web pages. So, we decided to create an open source version. We are planning to use the same open protocol to make our client compatible with Weblin. All users of different clients should be able to chat and connect. The user should have the choice of clients and competition will make clients better for the benefit of the all users.


Now it appears, that weblin drops the ball.
We will pick it up.

We are sad, that users of our client will not be able to meet weblin users. Anyhow, people will meet and chat and play on web pages. The time will come when there will be other clients in the biggest of all virtual worlds: the Web.

Avatar Display Showcase1: Movement

Have a look at our first little demo. What you see down there is the way we think the avatar display should work with avatar movement.

The user experience is not the final one but all basic issues should be matched.
We worked on how you move your avatar, how the display behaves when you scale the scene, what the display shows when you resize the underlying browser. To try it, download the flash file and open it in a browser.

Other fun issues (like the HeadUpDisplay, avatar interaction and lots more) will follow. But for the time being, just play around with this:

Check out the flash file

To say it one more time: this is neither the final display, nor the polished version of the avatar movement / stage behaviour. We need more time and your input to get things done.

Pre-FAQ:
  • No, there won't be wallpaper on every page you visit, it's just to show the movement.

  • No, we don't want to do pixel-art avatars as default.

  • The wallpaper was made by squidfingers.

Platforms

Our Open Virtual World client will be available for Windows and Mac.

The client will be programmed in a platform independent way. It can be ported to other platforms as well. The client will also be available for Linux. But we may need your help to do this as quickly as possible.

Beyond that, the architecture will be documented and libraries will be available, so that anyone can create a similar and compatible program in any programming language.

Protocol

We decided to use existing chat protocols for the Open Virtual World. People who meet on Web pages will actually meet in chat rooms hosted by chat servers.

We will start with XMPP, because it is extensible, modern, and because it gains more and more speed. XMPP is THE open instant messaging and chat protocol.

Later we will add other protocols. We are building an open architecture, that can use different protocols. XMPP ist the first. But IRC and others will follow. It is not really important which protocol people use to meet. The important point is, that they meet on the Web.

Why don't we create our own protocol? We have very much experience with chat and communication systems. We know that features of chat systems map nicely on the Open Virtual World. There are already well known protocols with all the features we need. There are client and server coponents. Even more important, there are people with know how. People, who already run chat servers. People, who know how to program additional components.

We need these people. We need YOU to make the Open Virtual World as rich as the Web.