GameDev

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

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

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

Sometimes I get shader compiler errors that don't really help me to spot the problem fast. Sometimes I don't write shaders for months, so it takes me always some time to get back into groove. Moreover I "ain't no" Shader-Guru so Shader issues are not always obvious to me.

So today it was time to rig up a new one, so I started with a basic structure. I have a couple of shaders from past projects that I use as reference but they don't use a common terminology or structure. Something I like to change. Therefore I set up those two structs for the VS/PS input streams and, as I had no real pixel shader code ready, I thought that I'll simply output the vertex position as dummy data until things are more detailed.

Bad decision. Compiler error says "invalid input semantic 'POSITION'". I was like "what the …". I mean if you don't have it as part of the struct/stream, it complains that it needs POSITION to be filled. Moreover I have plenty of shaders where POSITION is part of the struct and therefore part of the Input …. well the last part of the sentence is a bit wrong.

You can't access POSITION from within the Pixel Shader and that's what generates this compiler error. It's OK to have it in the struct so it can be filled by the Vertex Shader but don't use that field in the Pixel Shader. If you have to, you need to write the value inside the Vertex Shader into another register that can be used by the Pixel Shader.

Pretty obvious now … still the compiler error message could be more clear… 😉

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.

Havok is now available for evaluation or non-commercial use. Interestingly if you sell your product for less than 10 US $ to the end-user, you are granted a Havok license free of charge too.

Extract from the "Havok™ Physics / Havok™ Animation Limited No-Charge PC Game License Agreement"

(…)

  1. publicly demonstrate, and publicly distribute a Havok-enabled non-commercial end-user compiled, binary executable software application or game for the Windows PC Platform, in which the Software is compiled and distributed within the software application or game in an integral, non-separable way, for no direct or indirect commercial value;
  2. publicly demonstrate, and publicly sell a Havok-enabled commercial PC Game only for the Windows PC Platform for a retail value of less than or equal to ten US Dollars (US$10.00) (or equivalent amount in other currencies based on prevailing exchange rates at the time of game launch), and in which the Software is compiled and distributed within the binary executable game in an integral, non-separable way only;
  3. publicly demonstrate a Havok-enabled commercial PC Game for the Windows PC Platform, intended for commercial sale above a retail value of ten US Dollars (US$10.00), subject to (aa) in Havok's sole discretion, Havok's prior written approval; and (bb) execution of a separate no-charge PC Game distribution license which must be secured from Havok at www.havok.com/PCgamedistribution; and
  4. develop compatibility between the Havok SDK and PC Game tools, PC Game middleware, and PC Game engines, subject to no components of the Software being redistributed in any manner.
  5. publicly distribute Havok-compatible commercial and non-commercial demo code and academic research subject to no components of the Software being redistributed in any manner.

(…)

Some time ago I played the demo of Sins of a Solar Empire. It's a space RTS game from Stardocks. It's quite complex and it take a couple of hours until one get enough familiar with everything to be able to play.

To help you, there's a a context info/help panel on the bottom right, that pops-up when the mouse is over an item. On the left side, starting at the top – there is an icon-list of all your assets. At the beginning I was quite often searching for a particular ship (like the 'builder' unit) in the icon-list on the top left while having the ship info, from the icon under my mouse, in the panel on the bottom right.

Now, the thing is, I've a 22" widescreen display and I noticed that it's quite a distance for the eyes to move. Doctors probably will love that as it's like eye-training … hehehehe 

Wink

Not the best tooltip position in this case

… but doing this often feels annoying. Actually one might even move the head too. Thus when searching for an item it's: move mouse to an icon, move eyes, read text, move eyes back, move mouse to the next item, move eyes back to the info panel … repeat until desired item was found.

In addition to that, typically in RTs games, you have the "build" menu section, usually at the bottom, and the amount of resources in your procession, usually at the top. It's not always like that but quite often and it's the same with 'Sins of a Solar Empire'. And the distance on my screen from bottom to top is also quite large. It's of course less the the diagonal but still significant. Thus when you want to check if you have enough resources to order/build the desired unit/component, you may wind up in the same procedure like described above for the info panel. Fortunately this has been solved quite well in this game. The info panel is right beside the build menu and not only it gives information about the unit but also the numbers of required resources will be displayed in red when the player has not enough of them.

All info in proximity

So this is an interesting topic. Today application designers not only need to consider dual-screen setups but also the variety of sizes and aspect ratios.

Maybe you already saw the plenty of ads everywhere about GarageGame's new gaming portal called InstantAction. I think it's very well done. Most of the site is HTML – only some areas do require flash and of course the games are using an extra plugin. Installation of that plugin in firefox was very smooth – very nice with pictures for each step. The website design is trendy and makes it already stand apart, but also the fact that you can quickly play multiplayer 3d games in your browser – after registration and installation of the plug-in.

On the negative side I found, that after downloading a new game, the process does often hang. Leaving and rejoining the game fixes it. I also had to give internet-connection rights to each game separately. In addition to that, in the lobby you don't see ping times thus lag or disconnection might occur often in some matches. If you want to try it yourself, I'll suggest "Marble Blast" or "Think Thanks". The others are less interesting. A Tribes-Like title is announced called: Fallen Empire Legions.

Lobby area of Marble Blast Marble Blast Online Think Tanks

The announced title Fallen Empire Legions

As we are talking of GarageGames, there is maybe something else interesting especially in regards to the topic of one of my recent postings. They have a 2D-Game Authoring environment called TorqueX Builder. It's layered upon their for their new XNA based engine called TorqueX. They now announced that they added 3D support on the engine level – the editor will be 3D enabled in the future. TorqueX allows deployment on Windows and Xbox360.

TorqueX Builder for 2D XNA games 3D with TorqueX