<<Previous Archive | Next Archive>>

Animation Editor Preview

The next version of CopperCube will include character animation, but because most skeletal animated 3d files you find on the web include only one single animation track which includes all kinds of animations, I implemented a very simple animation editor (the panel on the right):

animation editor in coppercube

The zombie model has been created by Psionic3d.

With that editor, it is possible to cut animations into smaller, named animations and also set an animation playback speed for each animation. So for example for human like game characters, it would be useful to define the animations 'walk', 'run', 'attack' or 'die' in there. After doing that, you'll have access to these animations in all actions and of course from the scripting interface, be it ActionScript or Squirrel.
I'm not sure if the interface of the animation editor is very intuitive, but I like it for now.

Note: You can download CopperCube right now. If you would like to get a mail once a new version of Coppercube is released, subscribe to the Ambiera Newsletter:

Your email adress:
(will open the ambiera.com website for confirmation)

Language Selection Symbols

When you are on a website, in front of an ATM or starting a game, sometimes you have to select your language. Usually, the buttons you have to click in order to pick your language are the flags of the 'main' country of your language:

For English, this is usually the flag of the USA, for German, the German flag and for Spanish, the Spain flag. The problem is that this is a bit problematic, it may feel a bit strange for somebody living in Mexico having to select the flag of Spain, for an Englishman to select the USA and for an Austrian to select the German flag.

I wonder why there are no symbols or icons for languages at all. Would be really useful.
Maybe this is because most people don't think about languages that much. Good example: Did you ever try to change the language of Google because it preselected a wrong language for you? Good luck:

The language names are written in the language which is currently active. If google selected 'chinese' for me here, I would have had no chance to switch it to English or German at all.

CopperCube Tutorial: First Person Shooter Controls in Actionscript 3

JQuindlen from Weishaupt Games just published a nice tutorial for CopperCube which shows how to implement your own First Person Shooter camera controller using Actionscript 3.
CopperCube already includes a feature like that which you can use without the need to write code, but the weishaupt-games approach adds a lot more features to it.

Spaghetti Character Animation

Everytime I start writing a 3D rendering framework from scratch using OpenGL or Direct3D, I can guarantee that in the beginning I'll end up with a black, empty screen, wondering for hours why it is black and not showing the 3d geometry it's supposed to render. (Usually it's a wrong matrix, missing shader or simply the light turned off).
Same for Character Animation: Every time I start writing a character animation system, I end up with something like this:

Looks like some weight or joint matrix went wrong somewhere. I know I'll find the problem, but it's impressive that I'm always getting the same errors. :)


After I blogged about my first steps with HTML 5's canvas, I tried out the code on various browsers installed on my PC, and was surprised that it ran very slowly on Firefox (I'm using Opera as main browser). That's why I updated the post with 'Wow, this is quite slow on FireFox. Opera rules. :)'. But some users begged to differ, claiming FireFox would render my nice JavaScript Fractal in a fraction of the time Opera needed to do so.

It looked like I still had some quite old Firefox version installed, and since about Firefox 3.1, that browser is now using JIT compilation for JavaScript, based on the open source library Nanojit, giving it a huge performance boost. And in point of fact, my canvas experiment really runs incredibly fast on Firefox 3.5. Impressive. It appears Firefox is even faster than the hyped Chrome V8 JavaScript engine, interesting.

Maybe we - as game developers - should keep that Nanojit library in mind, could be useful in a future project. But as long as sentenses like "Figuring out how to compile it is left as an exercise for the reader" appear on the website of the Nanojit library, maybe we could wait still a bit. ;)

The Most Important Part When Creating a 3D Game

From time to time, people send me mails, asking me if they can create a World of Warcraft, Oblivion or Quake like game when using Irrlicht as Game Engine. Well, in short: Yes, of course you can. No one will stop you.

But a longer answer would be: First, let me tell you that Irrlicht is a 3D engine. It draws nice graphics. And doesn't do a lot more. Irrlicht is NOT a game engine. Let me draw you a simple UML diagram, illustrating what you usually find in a typical game:

game engine uml diagram

Diagram created using UModel

As you might notice, a very basic game consists usually of a graphics engine (examples for these are Irrlicht, Ogre or maybe even a DirectDraw based one), a sound engine (for example using fmod or irrKlang) and today, in most cases even a physics engine (like ODE or Bullet). And last but not least, there has to be the game logic somewhere. This is the most important part which no one will create for you, which is the core of your game. The component that is the fun part, the one that basically is your game.

All this together is forming a so called game engine.
The gray rectangles on the bottom on this diagram are exchangeable components. Instead of using Irrlicht, you could use DirectDraw and instead of using irrKlang you can use fmod, but the game you are creating will still be the same. The important part is the gray rectangle with the text 'Game Logic' on it. Concentrate on this, that's what the most essential part is.

So yes, you can create the next Oblivion using Irrlicht, if you like. But have you ever thought of making it fun first, and using for example simple 2d graphics? Before trying to generate a huge 3d world on your own which usually takes teams of up to 100 people, many years and several million euros of money? Games are not there for the graphics. They are there for the fun. For entertaining people. Just a thought.

(Disclaimer: This blog post has been created so I can link it for all the following mails I get, asking me if they can use Irrlicht as game engine for their next MMORPG.)

3D Skeletal Animation in Flash / Actionscript

For one of the new features of CopperCube, I now implemented skeletal animation into its flash player. It's still unfinished, has bugs and is slow as hell. But try it out here:

Controls: cursor keys to move, mouse to Look. The model has been created by Psionic3d.

I hope to make this a bit faster until the final release, but this could take some time.

You can download CopperCube right now. If you would like to get a mail once the new version of CopperCube is released, subscribe to the Ambiera Newsletter:

Your email adress:
(will open the ambiera.com website for confirmation)

Flex VerifyError: Error #1102

Today the flash .swf I was working on simply stopped working, and I had no idea what was wrong. Fortunately, when using the debug Flash VM, it wrote "VerifyError: Error #1102: Illegal default value for type" or "VerifyError: Error #1102: Unzulässiger Standardwert für Typ" in my case (having the german version).

It took me a bit to find the code causing the problem, but finally I did, and it wasn't that obvious. Take this code for example, looks quite ok, doesn't it?

private function foo(a:SomeType=0):void
// implementation here

Unfortnately, it's wrong and will cause this 'VerfiyError' when running the SWF. The correct version would be

private function foo(a:SomeType=null):void
// implementation here

As it turns out, the ActionScript 3 compiler of Flex has a strange 'feature': You obviously can set default values for parameters as you like.

The problem: When the Flash VM comes to this function and the types don't match, it will simply stop or throw an exception. Setting '0' instead of 'null' is common for C and C++ programmers, but for Actionscript 3, '0' is an int or a Number, and null is the null reference.

The strange part is that the flex compiler doesn't write an error or at least a warning for this and produces a SWF file with corrupt AS3 bytecode.


Just upgraded to Outlook 2007. It doesn't display animated gifs anymore. That's what I call an 'upgrade'. :)

Playing around with HTML 5's Canvas

Just played around with HTML 5's Canvas a bit. Won't work with IE (click one of the buttons to start):

Too bad JavaScript isn't a bit faster :/
Update: Wow, this is quite slow on FireFox. Opera rules. :)

Kontrust - Bomba

Kontrust is a pretty unknown Austrian Newcomer Band. They just released a new music video for their second single named 'Bomba', and decided to do it in a more traditional Austrian style, but see for yourself:

Nice idea :)

Everything is ok - Run two wars, win Nobel Peace Prize

When I wondered how a man who is currently running two huge illegal wars and even just increased the amount of deployed troops in one of them can receive a Nobel Peace Prize (I mean, really, wtf?), I remembered this nice, not really related video:

We need somebody doing this in Austria in Germany as well :)

Korea Games Wire now public

Korea Games Wire is a news distribution website, focusing on delivering Korean games industry news in English. It's now online and public. If you are interested in news from the number one country in computer games, you should take a look. You'll have to register for reading the news, but it's entirely free.

(Note that I've been involved a bit in creating that site, but I think it's pretty useful ;) )

Chinese Irrlicht Developer Community

Laxy, a developer from China let me know about the new Chinese Irrlicht Developer Community at www.irrlicht3d.cn. It's a great place to exchange yourself about Irrlicht if you are from China.

Added 3D room prototyping to CopperCube

What would you think, how long did it take me to model that 3D room here?

Being a programmer with close-to-not-existing 3d modeling skills, I think it would take me about 30 minutes to an hour in any 3d modeling software to create this. But I only needed 1 minute to create that 3d mesh. So how did I do it?

For creating quick prototypes, I implemented a simple 3D room generator into CopperCube. You can simply paint a 2D block map, click on a button and CopperCube will generate the 3D mesh for you:

It also allows you to select multiple textures, the type of ceiling (flat / none / arched, the one in this example), and more. The lightmapping is also done by CopperCube's integrated lightmap generator. It's already implemented in CopperCube 1.0.6c and ready for download.

More Details of Irrlicht 1.6

Bitplane blogged a detailed list of the changes in Irrlicht 1.6, with pictures. It has been released yesterday, so download it now. :)