I like C#

In January I started a little fun project to continue learning C#. Using MOGRE (Managed Ogre3D) and WinForms I started a little editor. It's really at a very, very early state and currently I am too busy to continue working on it, but I have to say, I enjoyed working on it so far.

C# and WinForms make things really a lot easier (I don't like MFC!). And I have touched only the top of the Iceberg so far. C++ is powerful and gives a lot of freedom. Lots of freedom = lots of choices = not always easy to make a choice. I enjoy having some "standard solutions" in C#, like delegates. Built-In Introspection/Reflection/RTTI is also really, really, really cool! 

As everything is also of type "object, I believe that node-based editors/programming should be much easier/faster to realize using Dot.Net/C#. Sure, if you need to be portable and if you have to squeeze out the most of the hardware, C++ is the choice. If you do some PC-only Sims or Viz and you don't mind wasting some CPU power, why not? There are not yet many 3D render engines available, but they start to appear (i.e. XNA based).

At work, I decided to implement a (non 3d) project in C#. There are a bunch of asynchonic ways of doing things, and for me it's not so transparent yet (what happens in what thread, what is threadsafe especially when things get layered). But I guess it's a matter of learning and understanding the framework.

Most of the time I am using Visual Studio 2008 Express and for a free tool it's impressive. It does now do lots of things too that previously was only possible using 3rd party Add-Ons like VisualAssist. Something I am missing is to be able to filter the intellisense drop-down list by type (Property/Event/Method). VisualAssist has some filtering buttons at the bottom and it's useful.


Maybe you remember the Multicore-Demo from INTEL using OGRE3D which used 8 hardware threads ( 4 hyperthreaded cores). The "threaded task" framework for doing the distribution etc is called SMOKE and there's now an article about it on Gamasutra entitled:  "Performance Scaling With Cores: Introducing The SMOKE Framework". On the last page there is a link to the downloads of the demo binaries and the framework sourcecodes.

Here is a screenshot from the demo running on my Intel Quad Core Q9450 @ 2.67 Mhz under Vista

Smoke demo on my quad core

25 FPS with 4 threads – one per core. With one thread I have 7 FPS and with two threads 16 FPS (using the same perspective).

Something that was missing in Unity3D was the possibility to extend it's editor with new GUIs. There were wizards but that's more like "Actions" in Virtools. The 2.1 release changed the situation – you can now create new editor-windows using the C# and Unity's scripted GUI engine.

As results, creating custom editor stuff is probably much easier than in Virtools, where you need to use MFC (which I really don't enjoy using). Unity3D's GUI engine is really nice. You don't have a MVC (Model-View-Controller) style but logic and view are in the same place. I already read prior to Unity about such an approach which, I think, is called Immediate-Mode. (Oh, I think I just found that source again – it's a video about immediate GUIs). At first I was skeptical after having watched this a couple of years ago but when I did some tests, at the beginning of this year, with Unity3D, it really made me grin happily!

You quickly implement dynamic, complex and adapting GUIs. I tried something similar to what I did in Unity with CrazyEddie's GUI for OGRE3D which uses the classic retained mode. It comes with an editor and compared to Virtools it's really nice…  but  … I was slower in implementing a less functional version of my Unity3D prototype GUI. Interesting!

CEGUI test in Ogre CEGUI Editor

So let's get back to topic. There are two Editor-Extension projects for Unity3D where a visual front end for connecting logic are developed:

GraphEditor from Forest Johnson for i.e. creating procedural textures

GraphEditor for Unity3D

AngryAnt::Behave to compose behaviour trees

Visual Tree Editor for Unity3D

Another interesting topic … AngryAnt refers to aigamedev.com, a site I am reading frequently since it's early days, too. It's very interesting place and I often try to think how some of the presented stuff can be done inside Virtools. Of course, with a graph you can create a behaviour tree – but the interesting part is to dynamically manage (extend) such a tree. It can be done by manually managing Virtools scripts, as you can pause and resume them easily, but some high-level editors/-logic to do this or other FSM-like implementations, is something I am missing for years now.

Well, to resume: immediate GUIs are really interesting, so are Behaviour Trees or Graphs. I think C# makes it easier to develop such editors/frameworks …

Some random 3d related things:

a low cost 3D paint package is 3D-Coat. It's a bit like an indie version of Z-Brush oder Mudbox. Some people on CGTalk were very sceptic but after giving it a test-drive many of them like it. Some even love it's retopology feature and use 3D-Coat complementary to Z-Brush.

painting in 3D Coat drawing a new topology

This procedurally animated 3D spider in flash is very nice! I guess in the next years there will be more and more 3D in flash.

3d spider in flash

The results of the Ogre3D user survey 2008 has been released. Here is one quote of it

Just over 63% of the respondents were using OGRE either for their own enjoyment or as part of their studies, with just over 50% of that group intending to go commercial with their products later. 29% of respondents were using OGRE for commercial products, with 83% of that group producing closed source products. The remaining 8% of OGRE users were mostly dominated by Academic / Scientific users, with a small handful of government users.

Zign Track is a low-cost facial tracking software. It exports to BVH. No idea how well it works but for that price it might worth an evaluation. The following picture is from a demo video:

Zign Track demo video

Unity Technologies has released extensive statistics from user's hardware where the Unity3D webplayer installation was successfull. They say that it's based on 3 millions data entries. The target audience is the 'casual gamer. It has already been said that this group has older, low-end hardware and usually do not update their system (like drivers etc). Aras (the main guy behind this) resume is:

Casual machines: capabilities quite okay, performance low, low, low. That’s life.

Something that surprised me is, that Mac is still a tiny market share (~ 2.6%). In Berlin's Bars and Cafés I mainly see people with Macbooks – it really increased a lot in the past years. On the other hand, in July, at the Paris airport I mainly saw PC-based notebooks. Their owners were mostly business men.

Blade3D is a XNA based authoring tool. I had a look at – i think over a year ago. It seems to do nice progress and they are currently working on a webplayer. In addition to that it also has a visual scripting system which you can use i.e. to define particle-behaviours. Besides this there are some nice feature like: PSSM shadows, spline-based roads and rivers, terrain engine, foliage rendering and physics.

blade3d image collage

Very interesting is their pricing model – it's a monthly fee per seat – without any up-front fee. I wonder if you can pause payment for a couple of months – i.e. between two Blade3D projects – and resume later when required.

There is another tool that is XNA based, but last time I checked I really didn't like the usability: Visual3D.Net. Something interesting though might be it's globe-like terrain engine.

As previously mentioned, INTEL is trying to bring GFX calculations back to the CPU system. Their argumentation for this is

(…) that Intel processors offered “more bang for the buck” and that it was more economical to go from single to multiple core processors versus popping multiple graphics cards into a machine.  “The fact of the matter is that you’re going to have one graphics card, you may have a dual graphics card, but you’re not going to have a four graphics card or eight graphics card system,” said Fosner.


This quote comes from this tgdaily article about an interview they had with INTEL on the Intel Developer Forum in Shanghai. The real-time demo shows 8 hardware thread on 4 cores in action. It's based on a game-engine framework called "Smoke Framework" and currently it's using OGRE3D for rendering.

Nehalem demo shown at the Intel Developer Forum

INTEL is considering to release the sourcecode to the developer community as stated on the OGRE3D forum. As the OGRE3D community is currently working on DX10 support, the Smoke Framework probably will continue using OGRE.

There are two videos available about the demo and the interview – one is the article mentioned above but I'll list them both here again:

Somehow related to the topic:

Steve Streeting, the founder and main maintainer of OGRE3D, has revealed on what he was working since he left his job for doing full-time Ogre-related work. It’s a real-time cloud rendering system and it looks …. wow !

Screenshot of Nimble (tm)

Here the product page of Nimble (Tm), and here more screenshots and a short video. It seems that it has been licensed for a game already: ‘Alliance‘.

Btw. in this context I also revisited the terragen site after a longer while. We have licensed version 1 and now I am looking on some example images of version 2 and sometimes there is no way I can distinct if from real photos!