Showing posts with label 3d chats. Show all posts
Showing posts with label 3d chats. Show all posts

Tuesday, March 18, 2008

Wereld Natuur Fonds uses TheoAvatar SDK to create its online world - RangerClub.nl

Half a year ago Wereld Natuur Fonds (Netherlands) purchased a copy of Theo SDK & TheoAvatar SDK bundle. They used it to build their own virtual world called Ranger Club.

Using our isometric engine to "jump start" their project, they built new features on top of it like extended avatar customization, custom rooms, virtual store and more. WNF Ranger Club looks pretty impressive with original maps and graphics - a great way to visit cold places without experiencing the low temperatures.

Thanks to Margaret Massop for the information on this project.


Ever wanted to build your own online world? Try our TheoAvatar SDK - a tool that helps you build multi-user 3D chats like TheoAvatar in Flash. It comes with Map Editor, source code and documentation. It runs on both ElectroServer and SmartFoxServer. Purchase it today and start digging into the exiting world of Massively Multiplayer Online games (MMO)!

Saturday, August 25, 2007

ElectroServer 4 announced! A groundbreaking release.

Yesterday Jobe Makar (Electrotank) told me that they just announced ElectoServer 4 - the newest update of their popular socket server. The release is scheduled for September 2007. You can check the details here: http://www.electro-server.com/es4.aspx.

For those who don't know, ElectroServer is a multiuser server geared toward Massively Multiplayer Online games (MMO) made in Flash.

It's been a while since the release of ES3, and their main competitor - SmartFoxServer - looks to be ahead of he game. But the guys from Electrotank didn't just sit on their hands: the new release is the result of a year of hard work.

The announcement page features a multiplayer tank battle game with bots and real users playing in real time. It looks very good, especially taking in consideration that Jobe put it together in ten hours, just a day before this announcement.

The list of new features is impressive. Video and audio streaming is something completely new. Check their homepage - http://www.electro-server.com/ - for an example of video streaming. ES4 is claimed to be tested on 200,000 concurrent players.

I contacted Mike Grundvig - one of the owners and the engineers behind the ES, who works remotely from Kansas City (Electrotank is based in North Carolina). He took his time and answered my question. Below is a compilation of this interview:

Dis: This "200000 gamers" test, can you tell me more about it?
Mike: That was a huge amount of work. We actually had to create a rather sophisticated set of load generating tools that we could run on multiple machines. ES4 supports two modes currently, a "stand-alone" mode and a "distributed" mode. Standalone is just like ES3 or our competitors. The server runs in a single VM on a single machine. Distributed mode uses multiple servers broken down into two types: a registry and many gateways. The registry manages and maintains state, while the gateways handle user connections. This is a LITTLE bit like the origin-edge approach Flash Media Server supports but not quite.

Dis: So how did you simulate the "200,000 gamers" test?
Mike: We used 10 gateways and 1 registry for the server-side of things. We are so confident in our performance results, we are giving away the source to the load generators and directions on how to use it to test in your own environment when you install the server. The load generation required something like 7 machines in the end. The tests were VERY accurate and realistic. When the server is released, we will release some charts showing the stats. The gateways were dual core blade servers. The registry was a quad-processor, dual core server. Everything running Linux.

Dis: Tell me more about new server API.
Mike: The server API for developing games is similar to the ES3 model, but very different in
implementation. For instance, I'm sure you are familiar with the problem of Flash recieving too many messages inbound per second. This can cause wierd lag-like behavior in the client. To combat this, developers usually have to write code that aggregates and queues messages
dynamically. In ES4, we have a very simple way that your plugin can automatically specify an outbound message to be queued for delivery and the server aggregates for you. The plugin can even specify the queue drain speed and the rest. If a message is named, then the server will only send a single instance of it. In ES4, we have a very simple way that your plugin can automatically specify an outbound message to be queued for delivery and the server aggregates for you. The plugin can even specify the queue drain speed and the rest. We always keep the message size as small as possible. The speed at which the queue drains is up to the game developer but can be changed on the fly and it is plugin specific. ES4 supports two basic protocols to keep message size down. A highly condensed text-based protocol and a tiny binary protocol for AS3 clients. Of course, we also have enough RTMP support in there for audio/video too.

Another cool feature you might be interested in, is the fact that we support strongly-typed objects spanning languages now. So clients written in java can send native data to an actonscipt plugin and vise-versa. We have this ability interspersed all throughout the server so that public/private messages, room/user variables, etc. can contain a payload of typed data. The data is sent over the wire in a neutral format but we convert it to the appropriate data type
on the recipient side. So a "long" sent from a java plugin becomes a "number" on the AS2 client.

Also, we built the server intending to support multiple languages easily and now we just need to add some.

There are lots of other kick-$$$ abilities in the server too ;). For instance, we are now a fully web-based administration. It's rock solid and supports everything. Like we support the ability to upload extensions (groups of plugins/event handlers) via the web. So you create an extension, zip it up and you can upload it to the server from the admin and deploy it. Also extensions support hot reloading. We will have a big article on the exact behavior of reloading. I think people will understand what we are talking about when they see it.

Another huge plus: we now have multiple language filters/flooding filters and they can be
specified uniquely per room, and users can be in many rooms/zones at once. For instance, you have a MMO game where people need to be able to check with each other while running around the world.

There is a lot more under the covers and we are documenting it as fast as we can.


Mike also revealed that they will be launching a new redesigned website, so it looks like ElectroServer is up for some big breakthrough.

In light of this announcement it makes sense to mention their competitors - SmartFoxServer. Interestingly, the SFS is behind the major hit Club Penguin, while ES is powering Webkinz. Those two major MMO are going head to head, and the later one may even have the lead, according to compete.com - read our last blog port about it. This makes this competition even more interesting.

I contacted Marco Lapi from SFS team, asking about their latest plans, and got this reply:

"The next release will concentrate on firewall proxies, we're releasing a new SFS module that will extend connectivity to all those clients who can't establish a direct socket connection. This is probably the request that has been asked more frequently, so it was about time to focus on the issue. We have evaluated various "canonical" solutions but none of them offered a good-enough performance when compared to a speedy socket connection. Finally we seem to have solved the problem.

We're currently in beta and results are really promising. A public beta should follow during September."


So, with both major players announcing new releases in September, it looks like it's going to be a busy month for MMO developers!




Ever wanted to build your own online world? Try our TheoAvatar SDK - a tool that helps you build multi-user 3D chats like TheoAvatar in Flash. It comes with Map Editor, source code and documentation. It runs on both ElectroServer and SmartFoxServer. Purchase it today and start digging into the exiting world of Massively Multiplayer Online games (MMO)!

Tuesday, May 22, 2007

Creating avatar chat characters


Our artists at TheoWorlds.com just finished creating a new set of characters for TheoAvatar chat - they can walk, sit and even dance. Each character's animation is made from 32 frames with multiple matching layers of clothes. It took about 400 images to assemble each character.

In case you are planning to create your own The Office Space game or the next Habbo-like online community, here are some tips from our animators on drawing avatar characters in isometric view:


  • If you are trying to draw realistic human avatars with high level of details, you'll need to use references. There are two options here: 3D and photography. If you choose 3D, the easiest way is to use characters libraries from Poser. If you are more comfortable with photography, you can just capture your co-workers on the camera. Just make sure they know about it. We used the latest approach as it was more fun. Doing it in 3D would, probably, be faster.
    After you resize down these reference pictures, you can draw on top of them, adjusting the details on the pixel level.

  • Use minimum number of frames to represent each animation. Try to keep your total files size small and also reduce the amount of work. To keep it as smooth as possible, make the differences between frames smaller. For example, if you draw the walking animation - try smaller steps and less arm swing.

  • Animate the characters in Flash early. Don't rely on animated GIFs. Moving the characters around in Flash will help you test the animation early on. You can do corrections while it's not too late. It also helps you find the optimal animation speed.

  • Draw symmetrical characters so you can "mirror" their animations of opposite directions. For example, our characters are moving in 8 directions, 3 of them being just "mirrored".

  • Less is more. If you are using multiple layers of clothes (for customizing the look) you will have to animate each of them to match the character's animation. So more character animations you have - more clothes animation to create. It grows almost exponentially, so stand the temptation of creating a lot of "cool moves".
For inspiration, check devianART gallery on pixel art isometric characters:
http://browse.deviantart.com/digitalart/pixelart/characters/iso/?order=9&alltime=yes


Monday, March 05, 2007

How fast is our Flash isometric engine

A lot of questions on our Flash isometric engine (http://www.theoworlds.com/tie.html) are about performance. The most common one is: how many characters can we have on one map, without a significant slowdown. We did put together a simple performance demo:

http://www.theoworlds.com/avatar/performance/performance_demo.html

It's a large map with 20 characters moving simultaneously and using collision detection. As you can see, it runs just fine.

This test doesn't do any network synchronization (which is used in mutiplayer games and chats). It just tests the Flash rendering/calculation speed. In out TheoAvatar chat we limit the number of users per room to 10. It's not because of synchronization issues, but because having overcrowded chat rooms makes it very difficult to communicate. It's better to have multiple smaller rooms.

If you want to create your own Flash games and chats using our engine, check the information on TheoSDK and TheoAvatar SDK pages.

Wednesday, January 31, 2007

Nickelodeon launches Nicktropolis. A quick look "under the hood".

A couple of hours ago Nickelodeon Online launched the Nicktropolis website – an online 3d chat community for kids. I tested it as soon as it became available.

My interest is easy to explain: 3D worlds, in particular online chats, are one of the things we do well at Theoworlds. We even developed our own isometric engine.

What drove my interest even father is the fact that back in November 2004 Nickelodeon actually purchased the bundle of TheoSDK/TheoAvatar SDK products from us. Both products are based on our own isometric engine. The first one is for building games like “Office Space”. And TheoAvatar SDK is for building 3D chats like TheoAvatar.

Basically, TheoAvatar SDK is a fully functional 3D flash chat with basic features. It comes with a map editor, all the sources, and the documentation. It’s a kit that can help you create your own 3D chat without building it from scratch. A jump-starter, if you will.

Sure, after the sale, I was looking forward to see how Nickelodeon would use it (if at all), but nothing happened after that – I didn’t see any 3d chats created by Nickolodeon Online.

But here we are, about two years later, in 2007 and Nicktropolis comes out, so my natural question was: Did they use any ideas from our engine or may be they just built something totally new. I went to their site, registered, entered my “parent’s email address” (well, those things are made for thirteen years old, what do you expect?) and before I knew it - I was in.

I can’t speculate about how much of TheoAvatar SDK code/ideas are used there (sure I can, that’s what blogs are for), so I’ll just share my observations.

First thing I looked at was the 3D engine itself. Well, it’s actually an isometric engine – Flash doesn’t do any real 3D (unlike Shockwave). I’m talking about the main functionality – the engine that builds the map/rooms, places objects on it and allows characters to move in pseudo-3D space. You would think they all look the same - “well, it’s all similar code, but the graphics are different from one chat to another”. But trust me, when you build your own, you start to notice all the differences. For example, there are tile-based engines, and coordinate-based ones (no, it’s not an official classification, I just invented it). There are engines that support big maps with scrolling visible area and ones with the maps that fit inside the main screen… And so on…

Nicktropolis uses a tile-based engine, with characters moving in 4-directions (that’s why they move weirdly in a zig-zag manner, when going in non-diagonal directions)…

Nicktropolis:

TheoAvatar:

There are a lot of similarities, down to the details. Same character customization options (“hair/shirt/pants/shoes”), same navigation and even tile size. Sure, those can all be coincidences. Or may be they got some of the ideas from the same sources we did – there are so many implementations out there. I don’t remember even who we “cloned” initially (all right, we all started by trying to replicate Habbo Hotel).

Below are some details for the technical guys. All the other normal people please feel free to skip it (just jump to “WHATEVER”).

There are some details that are more difficult to spot, unless you coded them. For example, the synchronization algorithm. The one that compensates the internet latency, and makes sure that all the users see about the same on their screens. I remember I implemented the Dead Reckoning algorithm in TheoAvatar. It requires less data to be exchanged between clients and, generally, is pretty simple to implement. I also kept the collision-detection between characters (can be turned off) – some chats just prefer to let the characters walk on top of each other.

Dead Reckoning works pretty well, as you can see. Sure, the higher the internet lag - the bigger the synchronization issues. You end up with a character in one corner of the screen, while in reality, he is in another one already – the information about his movement came way too late. TheoAvatar comes with latency emulation mode, that, when turned on, can delay the packages between the clients and the server by a given amount of time. It comes in pretty handy when you need to test it locally.

Anyway, in cases when data on the client side is “out of sync” – you see a character in a totally different position than it really should be – there are a couple of ways to fix it. The usual, “brutal” way, is to just instantly reset the data, and place the character into the right location (you will see a character just “snapping” instantly to another position). But in TheoAvatar we also support another way – we modify the speed of the characters in order for them to “catch up” with their real position. Instead of “snapping” characters around the map, we just accelerate them temporarily without breaking the movement flow. It’s just a nice simple trick.

Then there is the path-finding algorithm – you can’t build a 3D world without it. Ours is pretty simple. Nothing like A* or anything like that. But it’s blazingly fast and works fine on simple maps. It uses some simple human-like logic – it will try one direction, and if failed, tries another (well, I meant normal human logic). So there is some typical behavior that is easy to spot when you know where to look.


Well, “WHATEVER”, using the teenage jargon…

So all those things seem to work similar in Nicktropolis. Can’t say I’m surprised. Why reinvent the wheel? The whole idea of TheoAvatar SDK is to serve as pre-built wheels for your new car model.

Instead of that, Nickelodeon significantly extended their 3D chat functionality. In fact, it’s a full online community.

Naturally, there is the usual registration, customization, buddy list and all that. Plus, the pretty much standard, shopping layer – users can buy objects and use them to decorate their own rooms. A nice way to teach a teenager the value of the virtual buck, while training their consumer reflexes. Besides that, Nickelodeon added various mini games you can play with your characters, themed areas (visit “Nicktoons Boulevard”) and just a lot of other features. You just can go ahead and explore. It’s actually, pretty funny.


There are some small visual bugs. And I’m not a fan of their graphics (especially the characters). But, generally, it works smoothly. Plus, hey, it’s still a beta!

Sure, building something huge like
Nicktropolis is not an easy task. I bet they had a big team brainstorming on this one (and, maybe, it took two years). But it doesn’t mean you can’t start something like that on your own. Starting small and then just adding new features is a way to go.

And if you don’t feel like reinventing the wheel, and want to jump straight to the “cooler” features outside walk/talk – TheoAvatar SDK could be a solution for you. At least Nickelodeon never complained about their purchase (no, we didn’t move our legal address).

Feel free to email our team at info@theoworls.com .

P.S. Nickelodeon, Flash, Shockwave, etc. – you know who’s trademark are those and who they are registered by.

-Sergei