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