GameDev

Anything related to game development (design, techniques, middlewares, libs, etc)

Sorry, didn't find a better title 😛

It's starting to gett difficult for me to track all the real-time 3d technologies market. The things in the real-time 3d market is evolving faster and faster … I suddenly see products I haven't seen before etc … but about this maybe more at another time.

Torque from GarageGames is well known. It initially started with the Tribes Engine and Tools for indies. In recent years more products came up like the 2D engine and editor called TGB (Torque Game Builder). A further developed version of the TGE (Torque Game Engine) is called TGEA (Torque Game Engine Advanced).

On their blog they announced that they are focusing on bringing TGEA to a new level with:

  • improved art pipeline
  • new editors and tools
  • web publishing
  • improved scripting
  • new "starter kits" i.e. for Racing or FPS games
  • etc

Sounds interesting, doesn't it? They will name the new version "Torque 3D". The 2D product will be renamed to "Torque 2D". The current TGEA 1.8 beta adds OpenGL support, I guess it's the first step for cross-platform web publishing. If web publishing is going to be free, is not clear yet … maybe not. You can read about it here.

They also announced that the price for Torque 3D will be higher but it's not yet set too:

So what price makes sense? What's commensurate with the value Torque provides? Again, I don't know the answer to this yet. It's not $150 / seat and it's not $295 / seat. Perhaps it's $1000. Perhaps it's more. I look at products like Flash ($699) or 3ds Max ($3495) / Maya ($4995) and compare them with Torque.

TGE never attracted me seriously. But maybe with their next generation of tools, it might become an interesting alternative too.

8)

For a couple of years now, I am "misusing" Characters for a lot more than "just characters". For those that don't use Virtools, a Character Entity is a 3D entity that has "bodyparts" entities. A bodypart can be a bone, a dummy or a an entity with a (skinned) mesh. You can also add all kind of non bodyparts to the hierarchy.

The interesting aspect is that the whole combination can be treated as one. In the 3D layout window, you usually pick the character entity and thus you translate the complete set. Moreover there is a character parameter type, thus you can search, store, hide etc the whole complex as one.

Office chairs, where you want to be able to change the height or rotate the seat, are a simple example.

Last year I had a combo of particles systems that I wanted to treat as one unit. Easier as asset and easier to create, duplicates etc. Thus I wanted them to be part of a Character.

(Edit: the following passage is not entirely correct, see notice in bold that follows)

The first thing you may notice is you can't easily create any characters or bodyparts inside the Virtools authoring system. Even via the scripting language (VSL) one is not able to create such objects.

Missing VSL bindings is still a problem in Virtools (although things got better). We have a custom DLL where we do our own bindings in these cases, but I wish I would not have to waste my time on this. After I was able to create Characters and bodyparts via VSL I saw that the Level Manager didn't update it's character content. I don't know yet what kind of notification it requires but saving and reloading the file (or asset) fixes the problem.

( EDIT:  as pointed out by Julien in the comments, you actually can create characters and bodyparts using bc.CreateObject – just like in the SDK. There's are only no shortcut bindings like bc.CreateEntity3D )

On my first iteration I simply added the particles system dummies to the character hierarchy, but they also were listed separately when loading them at runtime. Unfortunately you can't attach the particle system components (building blocks) onto bodyparts but only onto so called "3D frames" which are the 3d dummies (/gizmos) of Virtools.

"Hey wait!" came into my mind – 3d dummies in Virtools are 3d entities with an additional flag and bodyparts are special 3d entities. So I did the hack: added the flag to my bodyparts and suddenly they accepted the particle system buildings blocks!

I wrote me a little action script that creates a "particle character" from a set of distinct particles systems. I have no idea how solid this is, but so far no complains from the customer! Hehehe …

😉

It makes it much easier to move, load, store particle-system combos (only textures need to be selected manually in some cases).

Aw, this was getting another draft starting to remain forever a draft. So certainly no news for many of you, but for the rest, here we go:

More and more people are involved into interactive real-time 3D. Actually not so few articles of mine (like this one here) are dealing with this aspect, so I am kinda repeating myself … I hope you don't mind too much, hehe

😉 8)

Interactive real-time 3D is getting easier to use and even produce – games are driving the hardware and software industry intensively. Like other technologies that are initially only affordable for few, over years things may become part of the everyday life of many people.

Besides products and platforms of big companies, solutions like Torque and Unity3D from smaller companies are playing an interesting role in all this … 

Gamasutra reported early this month that Criterion Co-Founder Lau-Kee joined the Unity3D team as adviser. He says:

The last several years has brought a plethora of entrants into the video game tools & middleware sector, but Unity is the only company I have found that has the technology, the people and the strategy to be truly transformational

Moreover

Mark my words, the democratization of the games industry has begun

For additional information you can read this interview or David's blog, where he also states

[…] our userbase tripled, there’s probably more than 10 times more games out with Unity now than in 2007 […] we could afford to more than double the team […]

There is another interesting interview at developmag, entitled 3D ehr One-For-All.

😉

I like this passage:

[…] they absolutely understand that they are answerable to the community of Unity users. You just need to take a look at the Unity forums – what you see there is a true community, vibrant, thriving and creative. […]

[…] in this sense Unity is more like using, say, Photoshop than a game engine […]

This is also visible in Unity3D IRC user channel as it peaks now at 50 people! Compare this to #virtoolsdev's peak which was around 16!

On Virtools forum someone once said, that real-time 3d tech is not like i.e. photoshop. But if you consider where Autodesk is aiming for, we will probably have more real-time 3d applications that will be like i.e. photshop! In Silverlight/Blend 3D is one type of asset like any other. Real-time 3D slowly becomes a standard media asset like video or photos!

Harrison from Atari said last year:

[…] from an Atari perspective… I think we would want to work with creators of all types, and that's why I'm so interested in Unity, because it does democratize development

He also says:

Managing the funnel of recruitment, training, educating, and getting the skills shortage, skills gap closed, is kind of an industry-wide problem…

This is interesting, because I had the same idea for a while about Virtools as I thought that Virtools once was in the position to do the same. Although I intentionally started  to post less suggestions, feedbacks, bug-reports etc. – due my frustrations of how one-sided this all turned out to be – I still suggested Dassault Systemes on their board last summer to use Virtools to get people in the boat, for that there is a recruitment pool for 3DVia mp!
You know, just the idea of democratizing 3D via mass and not premium markets – basically what the user-base actually understood under 3D-For-All!

The GarageGame guys share the vision:

In 1999, myself and my partners started GarageGames with the goal of democratizing development, and brought a low cost game engine to market. We started calling shareware authors Indies, and changed the landscape of Indie and low end development.

I already mentioned InstantAction, the web3D game portal. It's something that once would have been possible with Virtools too – in theory – but the vision lacked and pricing model was not permitting 3rd party teams to do so. Now InstantAction has

[…] managed to cross the 1 million members mark only 9 months after we covered their launch […]

[…] 2009 will be a big year for this service. IA will increasingly become a great place for Indies to make money

This posting could be considered to be a response to this comment of RS. He mentions esperient Creator and Maya Real-Time SDK and asks for opinions… here we go:

Maya's Real-Time SDK

I remember the news about Maya's Real-Time SDK but I never had a look at it in order to see what actually it is, at that time. After so many years (6 – 8?) it doesn't seem to have had any impact or long-term visibility. I guess it's ok to say, that today it's not a real option. A good documentation and a good online community helps a lot during production, thus these are things to consider. So let's have loot at the other product mentioned …

esperient Creator – intro

esperient Creator actually was once Cosmos Creator by Radish Works ( in 2003?). I remember that I once downloaded a trial and had a look at it. I felt more comfortable with Virtools therefore I never dived deeper into it. Already at that time it had plenty of toolbars! Here's a screenshot from it that I found on the old Radish Works site. Compared to the actual version, it looks nearly the same:

cosmos creator

Later it became acquired my Righthemisphere in 2004 and renamed to Deep Creator. I think they raised the prices, too. GameDev.com has a little review about it: Deep Creator 2.2 

In 2007 rights were transfered back to the original author(s) and they released in 2008 esperient Creator 3.0. Recently they released 3.5. So this thing is under active development.

Here, a part of the little story behind the name (taken from their blog):

The name is based on the Latin, Spero, meaning ‘I hope’ that has come into present day French as ‘Espere’ (vb) and Italian as ‘Speranza’ (n). So, in addition to meaning that we provide hope to our customers that we can solve their content and publishing problems, it also has the similarity to the word ‘Experience’ which is a great reflection of the team!

Now let's go into product details, we start with the …

Impressions from the online marketing material

Interesting aspects extracted from the available online material

  • cheap seat prices (currently around 500 US $)
  • free runtime viewer (no additional publishing fees): PC and webplayer (IE only)
  • C-like scripting
    • looks like it has break points (p.s. I was wrong, it's macro recording)
    • syntax highlighting
  • powerwall support
  • built-in physics (Newton engine)
  • upcoming feature: procedural image creation ( with CUDA support?)
  • built-in primitives
  • real time reflections, SSAO, advanced render to texture, object grips on 2D and 3D objects
  • HLSL Shaders
  • Animation Timeline Editor

Ok so far for the theory and the promotion material. Let's have a hands-on their demo!

Editor Window Management

The GUI has a standard windows look. It uses a couple of toolbars, that are rearrangeable. Very nice is that it uses docking panes, so you can arrange your layout like in Visual Studio and other modern application. Right-click on the title region of a pane allows to convert it to a register tab, a floating pane or a docked pane. Making there the pane to tab, puts it into the main, central position as tab. But you can also manually drag a pane into a center of another pane in order to add it there as tab. Tearing off docked panes requires a long drag off, which is a bit less intuitive.

On the left side you have a docked toolbar that allows to show/hide specific panes like script editor, scene materials etc.

esperient creator UI docking

The modified layout is automatically saved and used on the next startup. Moreover you can save and load UI layouts to/from files. In addition to that you can use different MS Office themes. I guess it's using a 3rd party MFC extension that brings all this functionality. Unfortunately none of the themes is really appealing to me. The grey of the default theme is not dark enough (I guess especially here under vista). The "Office 2007  Obsidian" style is dark but the toolbars are using a brighter background colour and therefore pop into your eyes – distracting. I guess adding a couple of variations around this theme might be very satisfying. 

dark themed GUI

Viewport Navigation

The viewport navigation is pretty easy:

MMB = Pan
Alt+MMB = Rotate
RMB = Zoom

I like it. In addition to these there navigation icons are on the right top corner of the 3D window. You hold LMB on such an icon in order to do the viewport translation. Similar to Lightwave and maybe also Cinema4d (?).

To change the view to another perspective you can use 3ds max like shortcuts like (P)erspective and (F)ront. The viewport can be switched to a 4-view mode using the space key. Dragging the middle of the 4 views allows to resize the views on the fly. You can also easily drag them to a border and get 2 views this way – works better than in 3ds max, hehehe 😉

several 3d views

I haven't found a "rotate around selection" mode. There is a "focus/zoom on selection" command but it's not bound to any key. You can define it via the settings, though you don't have total liberty of what key (-combo) to use. But CTRL+F, as example, works.

Selections

There are several selection modes like single-object, rectangle, cycle, polygon etc. Using the 'q' keyboard key, you can toggle between the currently active transformation tool and the selection mode, but you can also select while using the transformation too.

Area selection tools seem a bit hard to use because if they hit an object right on the first click, they select that one and ignore the dragged area. If you are in transformation mode you actually start i.e. moving the object under the mouse. Thus it makes area selections not that solid.

Selections can also be done in the "Secene Objects" window. Selections in the Viewport and the "Scene Objects" window are in sync.

Transformations inside the Viewport

The editor has 3d gizmos for doing in place transformation like scale, rotate and translate. The gizmo itself acts a bit like a "universal gizmo" – arrow-heads
do translations, dragging the white connectors enables the rotation mode and using the center does a uniform scaling. Something very good is, that they have handles for 2-axis manipulation, too. I think it's save to say that it's more like "3ds max" than Maya.

There is also something called "grippers" and which are similar to 3ds max's "manipulators". They are gizmos that allow to modify object properties inside the viewport. For example the angle of a sliced sphere or it's resolution/tessellation.

Transformation gizmo and grippers

Several snapping modes are available: grid, face, edge, vertex, pivot, angle etc. When snapping to a face or edge, it's not always clear what's going on – some visual cues would help.

Changing between different modes otherwise is not always intuitive. Sometimes I got into the pivot-move mode although it was not intended.

There are two coordinate-systems: world and local. Local transformations via the gizmo seem not always to work properly.

Material Editor

The material editor allows you to edit and create new materials. On the left side there is the list of materials and on the right side are the properties of the selected material. Unfortunately is the right side not scrollable, so if you dock that window at the bottom with not much height, you won't be able to access all the properties.

Nice is that you have a quick access to the textures via a texture-browse. Unfortunately it seems a bit slow and there is no mechanism to classify your texture content (which could speed up loading times, too). It combines all texture directories, i guess. Using the asset browser you have a better overview and control.

A material consists of several "stages" which can be added at will (up to 8). This is nice because if gives probably more flexibility and control than i.e. the old Virtools Texture-Effect approach.

Material Editor and colour picker

Something that I do not understand is why they use biiig buttons for the colours. There is a coloured, filled rectangle showing the actual colour, why not use that as button and have this big thingy taking screen space? Also, choosing a colour inside the colour-picker dialog does not change the colour of the material immediately, one has to close the dialog with OK. Interactive colour tweaking is thus not possible and makes adjustments more time-consuming.

Final words on the editor

The editor has some strong points: transformations gizmos, layout and theme customisation etc. Although they have a pop-up slider widget for interactive number adjustings, colour adjusting is not interactive. Moreover some areas require a minimum space which reduces the editor layout flexibility artificially. Funnily, there is no "recent files" list. On the other hand there light-setups presets! Thus "not perfect, but the overall impression of the editor GUI is good!".

Number slider

Ok, that was a lot of talk about the GUI editor itself. But this is how I approach such products. If you are under time pressure, you need solid tools and workflows. Best is, if you can "re-use" some of your knowledge from other tools. In this case being 3ds-max-like or Maya-like, in some areas, helps

Scripting

I am kinda sorry, but this section is going to be very short.

There is an interesting looking script editor. I think it uses the free source code editing widget called Scintilla. Thus it's probably going to be a smooth editing experience. Scripting can be done in Lisp or CScript. If you look at the image below, you can see in the top left corner a list of callbacks. On the top right, there are global variables. For example you can reset your variables inside the the "SceneBegin" callback.

script editor

I was looking for a way to add "custom scripts" to objects but it seems that there is no such concept like attachable scripts or components. Besides using the callbacks, you can add something called "animations". Here, animations are not only keyed transformation data, but also "behaviour" code. For each scene object, there is an "animation" register tab. You can add new 'animation behaviours' from a list of pre-made behaviours.

animation behaviours

I am not sure, but it seems that you cannot script custom 'animation behaviours'. Thus you need to combine callback scripts with the pre-made animation scripts. In addition to that you can add "separators" to divide the list into sections, but not do any real grouping to create re-usable components.

If you look at the scripts you may notice that there is a lot of state checking going on. This clearly shows the problem of not having a higher level logic-management, or not being able to attach custom behaviours that can be enabled or disabled from a 3rd, a 'managing', component.

Non-programmers probably can create some basic interaction without the need of programming knowledge as the 'animation behaviour' parameters allow to select events and targets. But I guess at some moment things can get a bit messy. For scripters, the environment looks a bit inflexible, restricted. You can add custom c++ plugins, but I don't know how much this helps.

Please note, that all these are personal impression – I might be wrong OR the way it works is just fine for you,

Resume

I am not sure for what kind of target audience this is aiming for. It's a bit of everything: a bit of 3D DCC (Digital Content Creation) like 3ds max and a bit of interactivity authoring. It certainly a couple of times cheaper than Quest3D or Unity3D and plenty times cheaper than Virtools. Thus it might be a solution for little projects that only need basic interactions.

If I made mistakes, please correct me. If you are producing with this product, please feel free to tell us about your experiences. For all the others, I hope was an interesting read and helps.

Autodesk released a new SDK which allows you to customize the DCC FBX exporters and importers for 3ds max and Maya.

On the Autodesk website it says:

Autodesk FBX 2009.3 technology now includes published source code for the FBX and COLLADA readers and writers, enabling developers to extend and adapt the code for use in custom pipelines.

[…] and thus protect their investment in their FBX plug-ins.

And the docs specify:

  • Extend the FBX and/or Collada file format to support additional kinds of data.
  • Extend the functionality of the FBX plugins for 3ds Max/Maya to support the reading and writing of files that use your file format.
  • Use FBX SDK directly to read and write files that use your file format, without passing through 3ds Max or Maya.

You can download this SDK which is entitled as "FBX Extensions Software Development Kit". The size of the download is 298 MB. 

Today I was on a local IDGA event and this news was mentioned. Initially I thought that the FBX format itself has become open but this seems not to be the case, unfortunately

😐

Still, it's good that now one can extend the file format and those plugins. 8)

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).

Little bugfixing update:

  • fixed: crashes with "Animation Slider" dialog under Virtools 4.1
  • fixed: Canceling the "Add Group" dialog for the "Fast Cam Switcher" crashed Virtools

Thanks for Patrick (aka Hightree) and Antoine (aka Feranti) for reporting them!

I replaced the old file on the server with the new one. The readme and the directory should say "beta 2". Otherwise try a refreshing click on the download-link ( shift+click (?) in firefox ).

Dom's Interface Extensions for Virtools

Let me know if you have any troubbles with the download or the plugin itself. Btw. did you know that you can use the arrow keys in the "Fast Cam Switcher" to move up and down in the cam-list so you can switch between the listed cams really fast?

Autodesk seems to follow a strategy to go deeper into the "real-time, interactive 3D authoring tools" market.

The acquisition of Softimage was completed before yesterday (18th Nov.). In a public FAQ it says the following (emphasis added):

[..] It is hoped that this acquisition will promote Autodesk’s growth in the fastgrowing games market, and accelerate its strategy to deliver real-time, interactive 3D authoring tools for games, film and television. As well, it is hoped that the acquisition will broaden the appeal of Autodesk products into the hobbyist/game ‘modder’ segment. […]

[…] it is hoped that the acquisition will accelerate Autodesk’s effort to build the next-generation of real-time, interactive 3D authoring tools.[…]

 One of the key competitors is Dassault Systemes. But also the overall evolution is that interactive 3D becomes part of other products – as seen in Photoshop or Microsofts XAML/WPF. Autodesk clearly mention this in that FAQ too:

[…] The 3D competitive landscape is fast evolving. Relatively new competitors, from Google to Adobe, are entering the 3D market, and others such as Dassault Systèmes are reinforcing their position. The production pipeline is rapidly expanding beyond simple digital content creation (DCC) tools. […]

A bit strange is this statement:

The Softimage product line will benefit from Autodesk’s scale and research and development (R&D) investment capabilities, providing new opportunities for innovation and interoperability

It is said that XSI 7 with it's new ICE technology, was a nice release. Do they really need the R&D teams of 3ds max and Maya? They probably wanted to say that they can now do a big remix with the hope of heavy synergies.

So we have some big key players going into interactive 3D, but what about the smaller ones? Gamebryo expands to the casual game market … and tiny Unity3D expands to the MMO market. CryEngine2 goes into architecture and public viewing. Interesting times, everybody expands to other market-segments.

Friday I was composing some object shaders and integrated them into the project. At some point we realized that under-water objects where reflected as they were above the water although I was using clipping panes. I thought I screwed up something but an idea made me check everything without the shaders and I found the trouble maker: the default shader of virtools is setting ClipPlaneEnable to zero! 

🙁

After the initial shock, I thought: interesting, can it entirely be setup and used inside the HLSL technique definitions? Soon I dropped that idea, because I would have to do technique-switching and that requires manual bookkeeping as Virtools offers no help with that. So how could I get back my correct reflections?

I thought about an old workaround I did somewhen in end 2006 or early 2007 but for this scenario it wouldn't work. This time I really would need some kind of "texkill" instruction that I did not found back then. And you know what? The HLSL counterpart is

Clip(x)

Probably you all already know about that, but for me it's my new best "HLSL  friend"! 🙂

All fine now 8)

(Btw. in regards to the default shader, it might be a better idea to omit that state overwrite. Don't know how this is helpful in the way it is right now. )