Unity3D

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.

I wanted to post less "news only" stuff but this merits it!

By accident I just saw the news RSS feed for the 2.1 release announcement. It comes with some very useful new features and looks like it's a free upgrade for 2.0 users. If I think how much people had to pay for the Virtools 4.0 to 4.1 upgrade …

They added a complete scriptable assets import-pipeline. This is hyper useful and important !!!!! What I did to improve our Virtools pipeline a couple of years ago, was a bit similar. We script our assets imports too, so our "BogBuilder", which is our single-click build-process, takes i.e. one CMO, instructions from a XML file, data resources to do some processing and then spits out a publishable VMO. This, in combination with the modded 3ds max exporter, boosted our iteration cycle excessively. So, scriptable assets imports … wow, cool addition! I mean most people doing projects will look for something like this, strangely Virtools never added it as feature.

Something I was missing in Unity was to load assets at runtime. Previously you had to create your own i.e mesh serializer etc. Now they have 'assets bundles' – so a weak point fixed. Also the scriptable Editor GUIs is cool. Virtools also has an Editor API but it's MFC and not the easiest stuff to use. Btw. I have a couple of free Virtools Editor Plugins for download (don't know if there are any others freely available).

There is a feature in Virtools which is (was?) one of those potentially good but not usable features, that is probably overlooked by many – maybe because Marketing never promoted it. It's the "Skin Join" BuildingBlock (Component). It joins two (skinned) meshes via a patch/bridge-mesh. I used a modified version for my Thesis project (~5 years ago) where the characters where customizable. The problem with this BB is, as with many others, that it's not targetable. This means it has to be attached directly onto the mesh at authoring time. This renders it useless for at run-time customizable characters.
Unity3D allows now to combine skinned meshes too. Haven't found any details online yet, so I don't know if it will also prevent any seams as the Skin-Join BB does.

Two other new key-features: streaming terrain and real-time shadows on terrain. They say that Unity3D is now ready to be used for MMOs!
Very nice update, congratz!

Multi body character explosion

Picture: explosion view of my thesis character. Besides multiple body parts, you can see the 'patches' I used to join them during runtime without any seams. Skinning and animating this kind of setups is a bit of pain though. Had to script me extra controls to allow me to switch quickly between different combinations inside 3ds max.

When I started to experiment a bit with Unity3D, I used JavaScript. Unity3D uses Dot.Net as "scripting" environment and supports C#, boo and JavaScript. JavaScript is the one I already used in the past thus it's what I went for.

But something that really put me off after a while was how inefficient coding was without a good editor with solid syntax highlighting and Intellisense. In Visual Studio C++ I am using Visual Assist now for many years and don't want to do any  coding with out it!

There is a webdeveloper edition of Visual Studio 2008 Express which has intellisense support for JS, but if you want good performance in Unity3D you better use the strong typing language modification Unity Technologies added. Which btw. looks like this

var myFloat : float = 1.23f;

JavaScript itself is a dynamic language with dynamic typing. In the past developing with such a type of languages was a bit old school (execute and observe: "print, print, print .. ah something wrong here"), because you didn't have an environment with syntax highlighting and debugging.  So I guess that web-developer VS Express release probably gives a nice boost there. 

Dynamic languages have their strong points! I like being able to open the maxscript console (F11) in 3ds max, type in some lines, select them and press Shift+Enter. It executes the code with instant results – fantastic for prototyping. When done, you simply drag'n drop the code onto your toolbar (as example) and dang, new button that calls your code. A very fast way to extend a tool.

Microsoft seems to be aware of this as in a video with the 4.0 C# design team, they talk about use-case. Looks like C# might become a choice for embedded "scripting" language in applications.

An alternative is thus to use Visual Studio C# Express 2008 which is a great C# editor for free. And so far it seems to have very good intellisense and refactoring tools built-in. Another benefit is, that you can compile in VS as a verification step. On the G4 it took nearly up to 10 seconds until Unity3D recognized the recently saved script file and finished the recompilation. Compared to Virtools where VSL compilation is a matter of a second, it felt pretty annoying. On the other hand VSL is a less complex and complete language. VSL code tends to be in most cases short and without many dependencies (at least for me).

As my G4 macbook doesn't have Parallels, I finally rigged up a home-network with Synergy – like many people on the Unity3D forum do suggest and it's really good as now I can use the PC for coding in C#. This brings not only the benefit of using a good Editor – which is the main point – but also the benefit of using familiar Keyboard-Layout. 😉
That G4 keyboard and the unfamiliar way of selecting words or rows in one via the keyboard was a real slow.

Although now I need to learn C#, it's worth in order to use a good development environment. Moreover it might be very interesting for other tasks too. Actually I will start with some C# stuff outside Unity3D first. So Unity3D will have to wait even some more …

Recently I did a little log-analyzer tool in MFC and it really feels old. Luckily due many available resources online, it's still ok to use and especially it doesn't need the dot.Net run-time, which was my major decision point: easy deployment. Just one .exe and go. But I am interested in WinForms.

I played a little bit with WPF and XAML but it adds an additional layer, so I will stick to WinForms first.

Nicolas Gaume, CEO, Mimesis Republic was mentioned in the 3dvia mp press release:

"3DVIA MP is an outstanding development engine that has given our team a collaborative work environment including low-level access for our programmers", said Nicolas Gaume, CEO of Mimesis Republic game studio. "The designers have been able to get results in record time while maintaining triple-A visual quality."

I think he is quite famous in france as he was president of known French game company called Kallisto etc. Anyways back to topic. On the FMX site it says:

Mimesis Republic designs, develops and operates a new generation of social networks: virtual 3D immersive worlds, by leveraging multiple types of gaming experiences to create new and increasingly synchronous social dynamics.

On the site of Mimesis Republic designs it says:

black mamba :
A universe and community in real-time 3D targeted at urbane cultures (Hip Hop).
Released in summer 2008 in partnership with: Universal Music, Sony Ericsson, Orange, Skyrock.

Looks like a GTA meets Singstar in Second Life Wink

But, as Helgason recently announced, there are also several Virtual Worlds and a MMO in works using Unity3D:

– 1 x full blown MMO being made with Unity
– 5 x virtual worlds being made with Unity
– 3 x well funded game portals being made with Unity

It's no surprise, with Networking (based on Raknet) included plus a GUI engine etc. The only think that makes me wonder a bit, is that Unity3D has no real external run-time binary format for loading scenes/objects/components data into Unity at runtime. People write their own serializers but I hope they will add their own format too. Currently the webplayer streams all levels into the memory, but I think there are plenty of use-cases where only a selective loading behavior is desired.

Btw. since the Second Life hype, there are so many companies working on virtual worlds … it soon will be crowded. I think there's a bigger one beeing produced in Berlin, too.

From the press release:

(…)

As a fully supported deployment platform, developers can now use Unity to drive development of the best games to iPhone's massive mobile market and beyond.

(…)

Unity Technologies has created an iPhone beta program that will provide hands-on support to drive 3D content creation and deployment of mobile games. Game developers who are interested in joining the iPhone support program should contact Unity

It doesn't say if it will be an add-on like the Wii support or part of a future Pro/Indie standard release.

I finally started to learn Unity3D after having observed it from distance over a couple of years now. Something I've done and I am still doing for many real-time technologies like i.e. Ogre3D, Shiva3D, DxStudio, Visual3D, Blade3D, Quest3D etc. etc.

I am using an older PowerBookG4 – as I am still not motivated to buy a new Mac – which seems to be ok for my purposes. Unfortunately shortly after I got the Eval version my working days became very long and very quickly 2 weeks went by where I nearly did not had the time to look at it. I then bought the restricted Indie version to be able to continue but I won't be able to look at Windows deployment and plug-in development – which are two very important topics to me – but maybe later, when I learned the basics, I'll reask for a Pro Eval Key.

You may ask: what is the difference between the Indie and the Pro version … well … I think there is currently unfortunately no overview chart for this. Some Pro features are: Real-Time Shadows, Render-To-Texture, Windows .Exe deployment, custom plug-in using C++, OpenGL low-level access via Scripting and support for the Unity Asset Server.

I'll blog about my experiences with Unity – especially from a Virtools Users perspective – while I learn and think about it. Please keep in mind that I am a complete Unity3D newbie, therefore I might state things that are not true or I try to make things in a complicated/unusual way etc. Of course I am happy for any hint etc. I can get, so don't hesitate to comment or write me an eMail.

Unity Basics

Unity is a Mac only authoring system for real-time 3D content. It has a webplayer for Mac OS-X and PC Windows. You can also export to standalone applications on both platforms thought windows deployment needs the Pro version. A PC version of the authoring system is planed but probably nothing that will be released soon.

Unity's architecture is using the GameObject (GO) and Component approach. GameObject are containers without much functionality. You add Components to your GOs to define its functionality. If you want to learn more about Component-Architectures I suggest you to search for presentations about Engines like Dungeon-Siege, Thief, Spellforce etc. They all use component based systems.

From a Virtools perspective a GameObject would be something like a BeObject (Behavioural Object) and a Component a mix of an Attribute and a BuildingBlock. Of course you could also compare a behavior graph with components but in Unity you cannot compose Components via other components or Buildingblocks.

A custom component (a script) is implemented via Scripting which is based on .Net/Mono. The available languages are JavaScript, C# and Boo. JavaScript performance can be improved by defining the types of variables. There are several callbacks that can be implemented – the most important one is the Update function. More on this later.

The GUI

Resize-able Window Panes 

The GUI is quite nice!

Basically the main window is composed by smaller, embedded window panes. Each pane can be resized or maximized by hitting the SPACE key while having the mouse over it. The content of a pane is not fixed – a drop down control allows you to use that place for any kind of content you want (3D Views, inspectors etc).

Something very nice is the possibility to split or join windows (like in blender) vertically or horizontally. This allows to setup window layouts in a flexible and easy way. You can also save your layout and recall it anytime you want or use one of the predefined layouts via the drop down-menu in the top-right corner.

Detaching windows (i.e. for multi monitor setups) seems not to be supported, but I don't know. I have no idea how a Mac supports Multi-Monitor setups and maybe Unity has none either.

3D Views

First of all you can have as many 3D views as desired which is a big plus over Virtools. There are 2 versions of the 3D view: Game View and Scene View. You can select and manipulate the 3d content only via the Scene View. The Game View is simply the view from the player's/user's perspective. This is sometimes confusing as I often try to select something in the Game View which of course fails.

One can nicely navigate inside the scene view using the 3d mouse buttons while holding the ALT key. This allows to zoom, pan and rotate the view. This is also more usable than the Virtools way in regards of how one quickly switch between each navigation mode. I haven't found a Fly-Through mode like the hidden one in Virtools (use the Y key) yet and it seems that there is no "rotate-around selection" mode in Unity – something I nearly use all the time in Virtools.

As in Virtools you can hold the SHIFT key to accelerate Panning. But it seems that you cannot redefine the amount of panning, zooming or rotation via the preferences in Unity. 

Although you can select multiple objects by adding one by one, you can't do Rectangle-Selections like in Virtools. Virtools does even include two modes: selected has to be inside completely or partly.

One can move objects inside the 3D Scene view interactively by using Gizmos/Handles like in 3ds max or Maya. Actually I think this is more the Maya version as I am missing the 2-axis corners that allow one to drag along a plane in the select coordinate system. As I am mentioning coordinate systems: Virtools offers a variety coordinate systems: local, world, screen, grid etc. I can't see such option in Unity. The Transformation Gizmos seem to operate in local space mainly.

Lights and Cameras are displayed inside Unity's 3D Views as 3D Sprites – Virtools uses real 3D geometry. Currently I have no preferences about this.

Something I haven't found yet in the docs is how to change the camera for a Scene View?!

… to be continued …

(p.s. will add pictures later)

Maybe you know Matthew. He was a very active Virtools user for many years and also published some casual games using it. Roughly a year ago he started to use Unity (for diverse reasons) and ported 'I hate clowns'. Now he released a new game using Unity, called Splume. It's a color-match game with a springy physics aspect.

Splume by Flashbang Studios

While  having a short look at it, I see some usability problems – it's a bit off-topic as it's partly due the Unity webplayer

  • I can't see a quick way to mute audio
  • it tracks mouse clicks outside the window or even when I am in another browser TAB
  • I can't pause the game or even better the Unity player. Thus it takes resources while I am at other web pages
  • where do I adjust fullscreen resolution and AA?

Yesterday Unity 2.0 was released!

Here's a quote from the press release

With Unity 2.0 developers can now take advantage of great new features like the Terrain Rendering Engine, DirectX 9 Renderer for Windows, Built-in Networked Multiplayer Support, Web Player Streaming and Improved Web Player Compression. Developers can also start using a new companion product, the Unity Asset Server, which allows teams of developers to easily stay in synch and provide project source control capabilities.

There's also a new section on their website presenting many of Unity's features (old and new ones ).

Download the new webplayer and walk around in Tropical Paradise:

Screenshot from the Unity 2.0 webplayer demo Tropical Paradise Unity 2.0 webplayer demo - tropical paradise - picture 2 A view towards the ocean shore

For Virtools users it's interesting to read about Unicode support, easy front generation using TrueType fonts, ability to create keyframes in the editor, PSD support, asset hot reloading, GUI system, multiple mipmap generation methods, terrain engine and editor including foliage rendering, a modern shadowmap system, streamed loading in the webplayer, custom loading bar for the webplayer, GfX card emulation, texture atlas generation, assets postprocessing, networking api and Ageia PhysiX without additional costs.

Unfortunately the authoring environment is Mac OS only and this probably for another year until the PC version is ready. I know all the posting about "buy a mac, you won't regret it". Maybe that's true, but for over 10 years people are telling me how great Macs are. I heard a couple of false stories like Mac and it's OS are made for photoshop and will outperform a PC – but from my personal experience – which was ~ 6 years ago – this was absolutely wrong!
So until Apple does not add more RAM and a better Gfx cards to their mid-range products, I am not really motivated to buy any.

UPDATE:

You can also download and play the demo FPS game that we saw in the interview videos I mentioned in older postings. Avert Fate

Nice particle shader effects The weapon overload effect also looks great Tried to get some real-time shadow effects ... but can't see any changes