While libraries such as Away3D and PaperVision3D and the work of pioneers like Ralph Hauwert go a long way pushing Flash 3D rendering forward, established hardware-accelerated game technology is still aeons ahead in terms of real, raw, realtime rendering horsepower. Recent developments have made two very attractive platforms freely available to the public, and it’s worth investigating these platforms further if your work tangents realtime 3d visualiziation or game development.
Unreal Development Kit free to the non-profit public
Fairly mindblowing stuff this. Games industry leader UnrealEngine3, used to power AAA PC, Xbox360 and PlayStation3 titles such as Gears of War, Bioshock, Borderlands and many, many others, is now “free” to use by the public for noncommercial ventures. Previously hampered by prohibitively expensive licensing, the entire toolkit and source has been published as a unified package by Epic games under the name UDK, or Unreal Development Kit. UnrealEngine3 is famed for its high performance, cross platform compatibility and stunning quality of its results.
Historically, buying an Unreal-powered game on the PC platform would net you the editor used to create the game’s worlds and behaviors, letting the community play around with the game media, create their own stories, or conceivably produce a game sequel of their own. A big reason for the success story UnrealEngine has become over the years has been this accessibility, ensuring a steady flow of new developers accustomed to the platform. Now, the threshold has been lowered even further; UDK is a stunningly complete package.
Why should you care?
For Flash developers, this is of particular notice as the scripting language used to craft game events, logic and behaviors is very close to ActionScript 3, being a Java-styled offshoot. Given the assets that ship with the UDK, there’s no reason not to download, play around and get involved. The visual fidelity offered by UnrealEngine3 is lightyears beyond the output Flash is capable of, and easily that of its primary 3D competitors such as Silverlight, Processing, Unity3D and, realistically, OpenFrameworks. For your art and visualization projects, this is as hard core a runtime solution as you’re viable to find.
The downside is that UDK is based on a PC-specific platform, and can put significant demands on the end-user’s graphics hardware. UnrealEngine is a gaming platform’s gaming platform. Worst of all, to use the UDK for commercial projects the licensing fee is a real mouthful.
Which brings me to the next glorious bit of news
Unity3D: Free for all
I’m a huge fan of Unity3D. The upstart web gaming platform has gone from a garage venture to kicking ass and taking names, stealing developers en masse from the Flash platform. With a visually oriented workflow designed around rapid prototyping, deploying to a lightweight cross-platform browser plugin, Unity’s modest hardware requirements and easy learning curve has made it a public darling of both existing game developers and beginners alike. While not up to the absurd heavy lifting UnrealEngine is designed for, Unity is easily capable of the sort of fidelity common to PlayStation2 or Wii games, running efficiently in your browser.
Unity3D ships with 2 licensing plans, indie and pro, the latter primarily offering poweruser features for rendering. Previously indie cost you money. Now it does not. That’s right. You’re free to download the tool and start making games ready for deployment, and you don’t have to leave a penny at the register.
It certainly helps that Unity can publish to iPhone, Wii, Windows and Mac executables, in addition to the lightweight web browser plugin.
Why should you care?
For Flash developers, this is a Big Deal, and a Good Thing. Unity3D is even closer to the Flash world, with a scripting language that practically mirrors AS2, and C# (which is close to AS3) as an alternative language. With an instance-driven component-style workflow much akin to working with MovieClips in the Flash IDE, if you’re familiar with a 3D modelling package such as Maya or 3DS MAX, the learning curve is practically flat. Integrated hardware accelerated rendering, physics and 3D audio, as well as hardware-level access to shaders and textures if you need it. Unity3D is an amazing way to really boost your browser game development, and let you throw off some of the nastier shackles of the Flash platforms.
Flash is an amazing platform in its brevity, but sometimes you need precisely the right tool for the job. AS3 has elevated Flash developers to the point where ActionScript techniques and knowledge is applicable to a vast range of other languages, and the two platforms now made available to us with no price of admission take 3D rendering, visualization and user interaction to far extremes.
A quick example
As a concrete example, in the point-cloud post i mentioned the Flash developer contest to produce the biggest number of 3D particles onscreen at a time. For all submitted implementations, drawing these particles was limited to a per-pixel procedure, significantly limiting your rendering options. I took a C# Silverlight example submitted by Joa Ebert, and lightly modified it to run in Unity3D, and was faced with the same amount of particles, but by gently lowering the particle count i had the added option to render a texture to every single one, as well as apply game world physics and lighting. It does all culling, depthsorting, everything for you for free. It feels a bit crazy to be able to do this kind of thing.
I heartily recommend taking the time to download and investigate these two platforms.