Log in

A developer's perspective on the Virtual World Web project

by Aaron 27. June 2013 10:47

Hello there folks. I’m Aaron Burch, Chief Technology Officer at The Virtual World Web Inc. and lead software developer on the project to which this blog is dedicated. We’ve had a steady stream of questions come in over the last while, especially during our Curio tech preview recently. We decided I should write a few articles for you guys over the next while to answer some of these in plain language. I’d like to start by sharing a little history and a bit of my perspective on the work we’re doing here. The scope of this project is grander than many of you may realize, and it’s my hope that I can help you see why I’m so stoked to be a part of this amazing team working on realizing an exciting vision.

There is some confusion amongst our existing users about what we’re building here. Most of it stems from the view that Curio and the Virtual World Web are simply Utherverse or Red Light Center 2.0. It’s not. It’s so much more.

To understand, it helps to know a little more about the vision of our CEO Brian Shuster.  His goal, conceived as far back as 2003, is to create a network of interconnected virtual worlds that change the way people interact, share, play, and do business online. Early prototypes were not without their troubles as many of you who’ve been around a while may remember, but steady progress brought about a network and client software capable enough to allow millions of people all over the world a place to chat, interact with other adults, create new kinds of online businesses, and live out their myriad fantasies.

I joined Brian’s team in 2007, and have worked with a small group of talented developers to evolve our software. We’ve rebuilt the server back-end three times. We added player housing (Zabys), which evolved into a simple form of the Virtual World Web, allowing users to build entire worlds from leased properties and artful decoration work. A world currency (Rays), useful revenue tools and access control systems were built, paving the way for our world owners to become business owners. Clothing customization was added, allowing new kinds of artistic expression, and an entire economy sprung up around this.

Alongside our in-house development work, we began partnering with like-minded companies based elsewhere in the world to build parallel networks much like our own, but targeting the local culture and interests. We’ve learned a great deal from our partners who reach as far as Brazil, Russia, various parts of Europe and the Middle East, and now serve over 17 million accounts.

All of this is great, but in recent years we’ve begun to run up against various limitations in the design (or lack thereof) of the current system. Quite simply, the original client software was based on a decade-old graphics engine with a very hard-coded design style. It’s had so many features shoehorned into it that it’s bursting at the seams. Partner networks are operating in silos, completely disconnected, requiring a separate account to log in to each. The server software is trying to be intelligent, but so much game logic is running on the client, that it ends up acting as little more than a glorified packet router with a few security and sanity checks thrown in to protect our users from malicious tampering with the protocols.

We aim to fix these problems of course, but we’ve also been given an amazing opportunity to start from scratch and design the system we’ve always wanted; bringing to bear our experience and hard lessons learned over 10 years of growth and struggle.

There are a few main drivers behind our new design. The first has to be flexibility. I use this word so much in design conversations the team makes fun of me for it. Rather than purpose-built, we want the system to be a general purpose platform for building and presenting engaging virtual experiences. The World Wide Web wasn’t purpose built to do online banking or social networking, but rather as a protocol to deliver linked content to users. We hope to provide the means, not the end.

Second is extensibility. We aim to make nearly every aspect of the system extensible. This means a componentized design (like plugins) on the server back-end so features can be added and removed from a system without impacting existing functionality; scripting, both of the 3D world and the UI, so that engaging content can be created after design time; and a powerful content creation pipeline that allows for user customization of almost anything.

Third is interoperability. We want to be a platform, and an open one in the long run. This means building our system on well documented, widely used frameworks so when we open up parts of our network for 3rd party development, the learning curve will be forgiving, and the technologies familiar. Everything on the back end is built on technologies you Web 2.0 guys will recognize like Web Services (WCF), the .NET framework (MONO compatible in most places), JavaScript, and OAuth.

Finally there’s scalability. The network must be less rigid, more forgiving of network trouble, and more secure, while providing orders of magnitude more capacity, functionality, and nice features like cross-system communication and single sign-on.

There are some mind-bending challenges in undertaking a project like this. First off, we have two parallel goals, and they don’t always play nice together.  We want to build something open-ended and flexible, but we also want to make a familiar new home for our existing properties (like RLC, Utherverse, and our partner networks). We want to show you guys what we’re working on, because we’re excited and we know you are too, but when we do, you see something that doesn’t look like… anything… yet. To understand why, it helps to understand our development strategy a little better.

Generally speaking, modern software companies aim for what is called Agile Development. The idea is to work on software in an iterative way. You write a simple prototype; show it off to people who care; check that it’s on track; choose some more stuff to do; Lather, rinse, repeat. This way, you can tell if you’re off track and correct course. In our case this has been a little difficult early on, at least as far as showing off our progress in a visual way. This is because we’re building a platform, and an infrastructure, as well as a product. It helps to show you this visually:

 

 

Think of this like a pyramid. We build the foundation – an infrastructure – on top of which we layer components that define the “features” of the system, and then on top of those features, we build engaging experiences for you, or we invite partners to build them with us. From the perspective of this team, Utherverse and RLC are trusted partners who will soon be moving their properties onto this new platform.

Until recently the vast majority of our work was happening down in Layer 1. The problem with infrastructure is that it’s hard to test in a visual way, until it’s mostly complete, or at least roughed in. To use an analogy, you can’t plug your TV directly into the Hoover Dam when it’s half built. You need generators, transformers, an electrical grid, meters and monitoring, and home wiring before you get to see if it works. Of course we have ways of testing our plumbing (to use another infrastructure reference), but it’s not pretty.

Over the last six months, we’ve been finalizing various parts of the infrastructure and hammering out the skeletons of the first few Layer 2 components. This is why you’ve seen 3 technology previews, one around Christmas, one in March and one more recently. We’re excited to show off what’s working, and this is the first few opportunities we’ve had to do that. Since the infrastructure is like the hidden bulk of the iceberg (invisible), we had to build enough of Layer 2, for you to appreciate some of what has gone on underneath. It’s important to remember that what you’ve been seeing is not a Beta test. A Beta is the last phase of software development and testing before you enter a live environment. These previews are a test of lower layers of our system and a teaser for things to come. Don’t worry though, like a pyramid, the lower layers are the largest and those are coming together.

So, we’re on to the fun part now. Every day brings a new cool feature, bit of UI, or working part of a component you will eventually see as a seamless part of the Utherverse. Our main focus this next development cycle is our user content pipeline. In my next babble, I’ll explain what that is, why it’s cool, and how it will make the new world so much more customizable.

If you have questions, comments, or feedback, we’re always listening and considering opinions and constructive criticism. Please be sure to send these comments to the right place, namely the VWW Developers Mailbox, curio@virtualworldweb.com. We wish we had the time to pour over the forums and weed out relevant suggestions from your conversations but we’re really far too busy building you a great new world.

 

Until next time folks!

Tags: , ,

Articles

User Generated Content

by Dallas 14. June 2012 10:11

So we’ve been asked to provide some details on what types of things will be able to be user generated in the new platform. I’ll outline here a few of the things that we’re planning; however, keep in mind that at this point nothing is final and things may change during development. We make no guarantees that what we mention here will remain done in exactly this way, this is just our current wishlist and what we have planned.

 

Textures:

 

Of course we will keep supporting uploading of textures. Users will be familiar with this from the re-texturing options from the current client. We do however hope to include a lot more tools that allow users to do some texture editing INSIDE the client. We’ve been experimenting with things such as changing the hue and brightness of textures, layering multiple textures on top of each other, and allowing projection of decals onto surfaces all inside the client. We’ll also be using more advanced shaders; users will have access to specular, bumped, parallax and more advanced shaders. For those looking to gain some advanced knowledge on these new advancements to texturing, the Wikipedia pages on them can tell you more about what we’re talking about:

 

http://en.wikipedia.org/wiki/Normal_mapping

 

http://en.wikipedia.org/wiki/Specularity

 

We’d also recommend checking out game development forums and tutorials for more information on how create spec and normal maps for your future texturing!

 

Objects:

 

This is the first of the brand new options we’ll have in the new system for user created content: we’re planning on supporting uploading of your own props and meshes. This is considerably more difficult then just retexturing an existing mesh, but we’re confident that many of our users will have the talent and dedication required to learn the skills.

 

The simplest type of mesh that users will be able to upload will be one for a prop. If you want a new couch and none of the currently available couches in the client look exactly the way you want then you can use a 3D creation software of your choice to create one to your exact specifications and then texture it as mentioned above and upload it to the system. The engine that we’re using currently supports OBJ and FBX file formats, which are two of the most common formats exported by 3D software, so you should be able to choose which creation suite to use. The VWW Art team prefers to use Maya, but we also recommend Blender as a cheap (free in fact!) alternative. The downside to using blender is it does not support FBX file formats and only OBJ.  

 

A much more complicated type of mesh that can be uploaded are character meshes themselves. We don’t want to go into detail about this too much yet because it’s still in development, but we plan on letting people upload their own clothing meshes as well, therefore greatly increasing the capabilities of clothing designers. If you wish to start working on your skills in this department, we recommend checking out some tutorials online for Character Modeling and Skinning (which is the process of attaching the mesh to the bones used in animation).

 

Recommended website:

 

3dbuzz.com

 

Animation:

 

Finally we also hope to support uploading animation files to be played on your character. Now we have a special treat for you all here... we're releasing a few files for you to play around with! By clicking the download link below, you can download a zip file which will contain the working Male and Female skeleton files, along with a short video explaining how they're going to be used. We won't be providing animation tutorials of our own (at least not right now anyway), but you can use these skeleton files to practice your own animating talents for when the system is released! Currently the team uses 3DS Max, Maya and Motion Builder to do animations. Unfortunately our new system uses FBX file format therefore Blender is not recommended. Until further notice there is no other alternative.

 

Download link!

www.utherverse.net/downloads/Utherverse_Animation_Example_Package.zip

 

 

Recommended website:

 

3dbuzz.com

 

Regions and Scenes:

 

We will not talk too much about this at the moment until we have further knowledge of how this will work. But this has been brought up in our discussions and when we have more information we will share it with everyone.

Tags:

Articles

Textures and Decals: Giving the users more visual creativity. Part II

by 0xDEADCODE 6. December 2011 09:29

Back in October I posted a blog about the work I was doing on implementing a system to paint and apply decals to surfaces. At the time I had not included any images as I felt that the project was not yet at a point where I wanted to show anything. This is no longer the case! Below I have whipped together a few images of a little demo application I put together to show some of the more basic features of the framework. You will have to forgive my programmer art! Please also note that some of the decal images are simply images I pulled off of Google for testing purposes. 

Tags: ,

Articles

Some early screens and plans for Avatars

by James 8. November 2011 09:37

Note from Brian:  I have reviewed this post and before you read it, I want to clarify some things; namely: this post contains materials that are being worked on or planned to be worked on.  Although we do intend to release these features at some point, many of the features will NOT be released with the launch of the new system, and in fact, some features discussed in this post many not be released until the new system has gone through several major updates over the course of months or even years.  We may even choose not to complete or release some of these features at all if we find that it will impact our plans to create and enforce protections of intellectual property rights of designers.

With that disclaimer, here are some of the cool features that the art team has in store!!!

Hey folks!

 So I've been working hard testing out all of the features that we'd like to have in the new closet and Avatar Customization system. And there's a LOT of very cool things that we've been working on.

 Before I go into what's coming, let me assure everyone that we're planning on transferring over ALL of your old outfits, clothing, etc, as part of a big "legacy" system, where everything from the previous client version will be available to you. However it would be silly of us not to take advantage of the superior capabilities of the new engine by re-doing the whole clothing system, and doing it RIGHT this time. We're going to take everything that we've learned through the years of building our current system, and implement it correctly from the start, along with a host of new features. So while we're keep the old system as a legacy to our new users, we hope that people will begin to migrate over to the newer, much more robust system.

 So, here are a few screenshots of some Avatars using a few of the new features that are being developed and tested:

 

You'll notice a resemblance to the "New Style" Avatars in the current client, which were used as a testing bed for a lot of what we want to include in the new system. A couple of the features that we have planned, and that can be seen being tested above are:


1. Customization of Body-shape and Facial Features

It's standard in character editors for games these days to have a large number of sliders to adjust each and every part of your character, to give it the look that you chose. We're going to be including a set of sliders to modify the body and face of your Avatar. For the body the sliders will include the avatar's weight, musculature, hip side, waist size, chest size, and more. For the face the goal is to be able to replicate ANY face using just a set of sliders. You'll be able to change the shape and size of the nose, eyes, mouth, cheeks, brow, jaw, chin and more.

 

2. Age, Musculature and More

Since our new platform contains the ability to use Normal Maps (a technique used by 3D artists to give the illusion of depth to flat surfaces in games) we'll be able to add a set of customization sliders for things such as age, muscle definition, dimples, scars, and more. By moving a slider, these normal maps will be "ramped up", allowing your Avatar to have more defined wrinkles and muscles. This way you'll be able to customize an avatar of any age and appearance.

 

3. Better Transparency in Hair and Clothing

There are many techniques widely being used in 3D engines these days that were not possible to implement in the older ones. Our new system supports MUCH greater sorting of alphas and transparencies in meshes. This means that the amount and quality of hair-styles that are possible will greatly increase.

 

4. Dynamic Clothing and Hair

The new engine allows for dynamic movement of clothing and hair. This means that as you run and move, your clothing and hair will be able to move realistically along with your avatar, bouncing and flowing. This is, however, a processing intensive feature, and so will be able to be turned on and off for those running on a variety of machines.

 

5. Customization of Clothing Colours and Textures

When the new clothing system launches, it will launch with a closet of clothing designed to take full advantage of the closet's possible features. Users will be able to select a "base mesh" for their clothing (e.g. a jacket, or a shirt, or coat, or a pair of pants), and customize the textures, colours, and designs on that piece of clothing. Want a red shirt with a blue polkadot pattern? No problem. Want to change the stripes on a shirt to a darker shade of green? Not a problem either. Have a specific design that you want emblazoned on the front of a T-Shirt? Just upload it and place it on the avatar, all in the client. The goal is to allow everyone, even those without any artistic experience, a full suite of customization tools.

 

6. Advanced tools and options for those with 3D and 2D experience

Perhaps the most exciting new feature is the planned ability for ANYONE with suitable 3D modeling experience to upload their own clothing meshes for use and sale. While the default closet will launch with a wide range of basic clothing to be customized, the most stylish and fashionable outfits will undoubtedly come from our skilled user base. While the ability to upload a custom texture onto an existing clothing mesh will of course still exist, users will now be able to upload and entire mesh itself for personal use and distribution. This won't be something that just anybody can do, but we will be providing a set of tools and scripts for use in 3D modeling programs to streamline the process of getting your custom mesh integrated with our avatar system.

 

7. Custom Animations

As well as uploading custom meshes for clothing and accessories, we will also be opening up the ability to upload your own custom animations. Don't like the style in which your character is walking? Upload a new walk cycle to override your default. Users with animation experience will be able to animate our avatars and upload their animations for use and sale in whatever way they can dream.

 

So hopefully you can all be as excited as I am to see all these new features. The goal is to allow complete user customizability, so that a user can have his or her avatar look any way that they want it to be. We want to include as much as possible for a basic user to customize his avatar using our closet, but then to allow more artistic and entrepreneuring users to custom design their avatar any way they can imagine. If you want to add giant wings, tails, elaborate gowns, extra limbs, anything can be done.

 

-James3D 

 

Tags:

Articles

Scripting? What's up with that!?

by Ian 7. November 2011 12:28

Hey there folks,

As I talked about in my previous post, one of the things we're implementing will be a JavaScript engine that will run both client-side and server-side. And we're really excited for what it's going to let us do. For those of you not really in the know of what a "scripting engine" means or why we're excited, let me take a little bit to explain what sorts of interesting things it will let you do.

Right now, any time you as a user want a new way to interact with a room (let's say a door that swings open), you need to rely on the world creator to make it available to you. Not only does that mean it might be shelved for a while, but even when finally make it has to go through a whole patch cycle (which means even more waiting time). Worse, many of the scripts don't really line up right between different users (I'm looking at you "Move Within Bounded Box").

So let's put the tools to make these scripts in the hands of the people who want to see it happen the most. Let's give you the tools to make a door that swings open, a pet that follows people around the room, a maze with moving walls, or a bot that can greet people when they come into the room. And if you want to make something complicated, you should be able to benefit from it by having it available on the marketplace for others to use - at the price you set.

But it's bigger than just moving objects in a room. Sure, those are a few nice simple ways you can make your regions more lively than they are right now. We want to give you more tools than just that. You walk into a room and the room has the ability to give you new pieces of interface to fiddle with. It might show you a listing of the DJ's library or it might show you a chess board. Scripts in rooms will be able to give the people who visit the room the interfaces they need to interact. Let's take a quick example:

As a user, you might run a matchmaking room where people can come and hook up. When someone arrives in the room, they get a small survey to fill out about their taste in other people. They complete it, click a button to send it back to the room, and now the server's script can compare their results to who else is in the room and suggest matches for them. It could even remember who else has been there today and let you know about possible missed connections. It could soon be the sexiest little hookup spot online - and it'd be all in the hands of the users to create it, maintain it, and (ahem) service it.

Share your ideas for what you think would be great ideas you'd like to see ...

Tags:

Articles

Textures and Decals: Giving the users more visual creativity

by 0xDEADCODE 28. October 2011 06:33

In many existing virtual world platforms, users are given the ability to decorate their regions to make their personal or business space that much more unique. In our legacy software we added to it the World Texture Editor, which was an exciting project for me because of the increased flexibility and creativity it gave the users as well as increasing the program's overall performance now that people would no longer have to "wallpaper" their regions through the prop editor to change the look and feel. You may be wondering why I bought up all that old stuff when this is a blog on the new system. Well here's why:

With the amount of time and effort many of you have spent on your regions, it was must  that all your hard work would be directly transferable to the new client with no additional work on your side. (This is where that converter from the earlier blog came into play.) So now you are in your Zaby and everything looks just as it did in the old client. Wouldn't it be nice though to make your region even more unique? Why does your couch have to look exactly like everybody else's couch? Why does that concrete have to be in pristine condition? These are two basic examples of the features I am currently working on; Texture layering, material manipulation and decals.

With these new features you will be able to customize your props by replacing and/or layering textures, painting, as well as changing material properties, like making the prop look smooth and shiny. Decals will allow you to add details like cracks in that oh so perfect concrete wall, or add oil stains to a road to give it a more weathered look. Decals help hide the repetitive look of the base textures on objects as well as make those objects look less like they are straight off the factory line.

Anyhow, that's my sneak peak of the things that I am working on. As these systems become more fleshed out I'll put up images of some possible uses. Until then, enjoy the blogs!

Tags: ,

Articles

Road map to THE FUTURE!

by Ian 20. October 2011 12:37

Hey Everyone,

The Client Development team has been hard at work planning and working on a whole ton of new technology and ideas that we're going to use to make our virtual worlds more interesting and interactive. The biggest change is going to be putting the power of building in your hands in ways we've never done before. Driving all of it will be a scripting engine known the world over as being reliable, fast, and a game-changer when it comes to what you'll be able to do with the whole experience, from game world to your screen. We're using Google's JavaScript V8 engine to give everyone the tools to change the world in new and interesting ways.

JavaScript was an obvious choice for us because it is proven technology and a well-known language used by millions of developers worldwide. Rather than forcing everyone to use the same user interface and the same scripts on props, users will be able to customize rooms, props and the tools they use to access the world in ways that we never would have been able to do before. Scripters will have access to a wide range of functionality through easy-to-use functions that will let them develop AIs for bots, game systems that spawn one or more rooms, and custom user interface that could show anything from a scoreboard to a map of their game world.

Oh, and please forgive the developer art.

Tags:

Articles