Unity3D has a great workflow that includes this where you can update your .blend file and then it updates in the Unity IDE, this work by Tim creates a similar workflow for Flash (recompile would be needed to show if embedded).
Typically exporters are made from the 3d IDE SDKs such as Blender using Python to export to COLLADA or other formats. But here Tim is parsing the source file directly. This also opens up the possibility to make other exporters from more simplified Flash AS3 code rather than learning a new IDE SDK just for an exporter.
I am not sure how much people want to embed .blend files with their applications as there is more information in the .blend file for the Blender app and it will add to the download. But what this might do it inspire others to create simplified exporters from Tim’s work for Blender to COLLADA, 3ds and more that work well with papervision and flash 3d engines, directly in Flash. So instead of learning each IDE to build an exporter that is the same, this solution could act as a proxy or middle man to simplify exporter creation, pretty much any Flash coder that understands 3d could build one from .blend files at a minimum. If it was made as a higher level abstraction so the 3d software source could be swapped out it may open up simplified exporter tools a bit. Since it is really just reading the binary data in the file, in theory other formats could do the same (3dsmax, Maya, Milkshape, etc).
There is a whole host of opportunities with this new tool! It is definitely nice to have this as I use Blender for Flash 3D and Unity 3D most often. It will be interesting to see how this evolves.
Note from Tim on the tool:
I created a library to read Blender files (.blend) directly. So no
more headaches with broken exporters!
ASBlender is simply a library which reads *everything* in a .blend file. So in theory you could grab materials, animations, armatures, the works… But its up to *you* to grab the relevant bits, since *all* the data is accessible.
This is an interesting direction. There are most likely many things that do not work about this approach for existing content. But it is also a neat way to create new content that might be simple enough to play on desktop and a mobile version.
Google is pushing Web Sockets into Chrome based on the Web Socket standards being developed at all major engineering standards groups. Web Socket is an interesting direction but it is great to couple that with O3G or WebGL for some multiplayer 3d game development with just a browser.
Starting in the Google Chrome developer channel release 4.0.249.0, Web Sockets are available and enabled by default. Web Sockets are “TCP for the Web,” a next-generation bidirectional communication technology for web applications being standardized in part of Web Applications 1.0. We’ve implemented this feature as described in our design docs for WebKit and Chromium.
Sample Code
if("WebSocket"in window){var ws =new WebSocket("ws://example.com/service");
ws.onopen=function(){// Web Socket is connected. You can send data by send() method.
ws.send("message to send"); ....
};
ws.onmessage=function(evt){var received_msg = evt.data; ... };
ws.onclose=function(){// websocket is closed. };}else{// the browser doesn't support WebSocket.}
Socket Advantage
Flash has long been the answer for sockets for web applications and once sockets were added to Flash it instantly became a better interactive and gaming platform for multi-user applications and multiplayer games. They started with XmlSocket then recently added Socket for raw binary data in as3. Silverlight and Java also have this feature but having this in script is pretty significant because many applications could really use a browser supported bi-directional communication link.
What is Missing
The biggie missing from Flash, Silverlight, etc and Web Sockets is UDP and preferably RUDP or Reliable UDP which allows UDP datagrams to be sent back and forth either verified delivery or broadcast. Unity does support UDP. The best socket layers are reliable UDP based because mixing TCP and UDP can lead to queuing and not all messages are critical so having just UDP isn’t enough, having TCP is too much. Reliable UDP is the way to go but so far no web layers are doing it well except Unity on that one (you still have to make your own RUDP implementation – libraries like Raknet or enet in C/C++ give you this but you can’t use that in Unity client only on the server). (Edit: Flash does have RTMFP which is based on UDP and uses FMS for nat for p2p but it is still not a true low level UDP socket just yet as it supports more features. A low-level UDP socket would also be nice in flash.)
Web Communication Evolving
I am a big Flash fan and have been developing it since 1999 among other platforms, I have recently watched other technologies nearly match the features and some go beyond it. The interesting thing about Web Sockets is that it does go after a core feature of flash; Canvas and WebGL or O3D also do. Flash still has the webcam, mic, sound mixers/tranform, and for now sockets which put it at an advantage in gaming and interactive. Flash used to be the sole greatest video player but Silverlight is doing a pretty good job of that as well so that is still an advantage but others are entering including possibly browser support in html5. I still think it is the best video but they would need to keep innovating.
Another interesting point about this is XMLHttpRequest objects. Originally “AJAX” was created by Microsoft for IE, pushing new features and innovating back when IE was a good browser and ahead in IE4. Mozilla and others adopted this feature (as well as editable text areas for html) because they were great features for web applications to evolve to. now Google is pushing with Chrome and Web Sockets is the next step that should be in web browsers even if it is only TCP based for now. This will add great capabilities and will probably be preferred over AJAX/XMLHttpRequest for really interactive and real-time tools/games should it take hold. Ian Hickson is running the table on the standards with this effort and it is a good one to get behind.
Flash is still the leader in web interactives and even marketing interactive 3d, Unity largely replaced Director and tools like it and high-end hardware rendered required interactives and games. This interactive by HelloEnjoy has loads of polygons, unity physics system, lighting, environment mapping, showroom cameras, reflection, skid decals, highly detailed mesh and more. Just take a peek inside the vehicle and at the rims for the detail that is impossible with the 2000 poly limit of Flash 3D software rendered engines.
Web interactives this heavy aren’t doable in a non hardware rendered player like Flash. Unity is looking to pretty much own this level of quality in a browser. I don’t think I have seen another interactive looking this good with Unity 3D.
Unity still is lacking many features that Flash has in support of making interactives for the web such as webcam support, mic support, better video support, better gui system, html support (although flash barely) and a larger install base but Unity could easily take the high-end advertising market in addition to owning highly immersive games that need hardware rendering which it is already doing for web gaming. It is 2010 soon, most computers have a decent video card. Put them to use!
The book is written in a simple yet rapid pace but starts out from beginner level 3d introductions and really explores all areas needed to give someone the handrails to start tinkering on their own in the dark of their labs with Unity. The book explores an introduction to 3d (the biggest hurdle for most in moving to unity although it also does 2d), terrrains (terrains aren’t supported in iphone yet keep this in mind if those are your aims), moving players and cameras, collision detection with colliders and rays, working with prefabs, creating HUDs, creating menu screens and working with the the GUI system in Unity (which can be strange for people coming from flash with event based user interfaces), loading/instantiating objects in the 3d world, particle systems, physics and lots of examples and minigames showing off these areas.
The book is alot like Unity itself in that it gets up and running quickly, gives the tools to do some damage and then opens the door to developing with Unity. After you develop longer in a platform you learn how to dig deeper into all these areas including scripting to do lots of what the Unity Editor can do for you but there is so much to take in that a good starting point to catch onto is needed. Unity Game Development Essentials, the first Unity book, fills that role easily.
I have been using Unity as a hobbyist then at work at a game company starting in 2007 since it started to invade and take over from Director in 2007 ish then infiltrating the Papervision 3D and flash 3D developers, even with that experience this book still did a great job of exploring the tools and is approachable for almost anyone with some basic scripting skills and a desire to make some creative stuff.
Even if you have been doing Unity for a while a book is always good to see techniques and support authors and community members that give back to help others learn. Pick it up! (Amazon) (Packt Publishing)
Unity 3D Indie is now free for all developers and just called Unity now. The Unity 3D Pro license is still $1500 and worth every penny. But this news is great for indies and moreso the pro users that want the Unity Web Player to have more penetration and installs in the market.
Companies like EA,Cartoon Network and Lego are using Unity 3D and just about every game developer I know including myself has been excited about the possibility of an engine that allows creation of hardware rendered web based games and desktop games, which are multi-platform and paths into the mobile market (iPhone/Touch) and console like Wii and XBOX in development (for additional licenses).
When Unity 3D released support for Windows as a development environment in addition to Mac it literally blew up as predicted this year. Also, Unity 2.6 is out which is big because it finally supports third party source control such as Subversion and Perforce. Many of the barriers that were keeping it from integration into gaming pipelines are gone: the price, the single platform and the source code integration issues. Unity 3D has addressed all those issues.
Well good news for Flash developers, Flash CS5 will finally compile to native iPhone and Touch Applications. This is great news for many developers out there who have stuck with the Flash platform. I am sure there will still be limitations to what you can do with Flash on the iPhone and it will probably be mostly 2D games and apps but this is a great start to getting the Flash platform truly mobile and up to the rest of the industry.
Flash Professional CS5 will enable you to build applications for iPhone and iPod touch using ActionScript 3. These applications can be delivered to iPhone and iPod touch users through the Apple App Store.*
A public beta of Flash Professional CS5 with prerelease support for building applications for iPhone is planned for later this year. Sign up to be notified when the beta starts.
I have been questioning why they have not moved to this model beforewhen others are doing so such as haXe, Unity3D and MonoTouch. Getting Flash on the web browsers on a mobile is hard because Flash is pretty CPU intensive on embedded devices which is really where computers were in the late 90’s and close to 400-600 MHz processors. Today these machines wouldn’t be able to run Flash very well and that is the same effect you get on a mobile phone. But cross-compiling to native, similar to how Unity 3D does it or other solutions like MonoTouch and XNATouch, this is the best solution until mobile/embedded devices have 1GHz processors and more than 500MB of memory. Adobe is using LLVM, much like the Alchemy model, to achieve getting AS3 content onto an iPhone/Touch with AOT or Ahead of Time compilation rather than JIT compilation.
So how do you build an application for the iPhone? It’s simple, really. The forthcoming beta of Adobe Flash Professional CS5 incorporates the ability to create an iPhone application. You have access to nearly all the AIR 2.0 and Flash Player 10.1 APIs. For example, you can use APIs such as RTMP, Remote Shared Objects, and AMF as well as AIR APIs like SQLite and filesystem access. For more information see the developer FAQ on Adobe Labs.
I am glad to see Adobe finally moving on mobile platforms beyond Flashlite. Flashlite is a poor solution in most cases on embedded devices because they really need native apps to perform, again due to the hardware limitations and it is a whole new platform to learn. Adobe is doing the hard work to make it easy to get developers content on the new embedded devices that are storming the world such as the iPhone and Touch.
The pipeline is not yet as streamlined as as Unity 3D as Torque has many legacy formats and components such as DTS models, DIF interiors and DSQ animation files that are specific to the Torque Engine. But they have added support for COLLADA models and the community is strong for Torque 3D. Also, since Torque 3D is built on an older engine but updated for modern uses, the file formats and loading is streamlined for low poly and web based games that need small asset sizes but still have quality.
Like Unity 3D there are many paths to truly get your game published and available to many platforms from desktop on Windows and Mac to web players in all major browsers (and iPhone, Wii and XBox with more $$$). This is an amazing time in game development.
When I initially got into heavier game development in early 2003 after moving from Half-life to Unreal and then the affordable Torque, there were two major things missing, a web player export and a good editor with intellisense. Torque 3D provides the web player export and Torsion is a great IDE for TorqueScript beyond using Visual Studio or XCode for C++ source editing.
Some really nice tools include the River Editor and Road and Path editor that complement the great terrain editor and scene and asset editors that make production fairly quick in the Torque tool chain.
The good news is there is now two quality toolsets in Unity 3D and Torque that for about $1500 you can get a good pipeline and engine that will enable you to create great immersive games for many platforms and the web. If you got the skills the platforms are there to get your game out to the world whichever platform you choose. Similarly to the Flash vs Silverlight vs Canvas progress, with competition in this area it will keep both platforms innovating and supporting developers needs first.
For more immersive games that require hardware rendering beyond Flash capabilities Unity 3D and Torque 3D are now here for your creations.
Electronic Arts is using Unity 3D to develop Tiger Woods Online. The game is currently in beta. It was announced that they were using the engine in June on their blog but only on the reposted version here not the original post where the engine was just deemed “new technology”.
This is a major shift in the game industry and how it is being expanded into online properties that rival or better the console and desktop versions through online communities. Quake Live from id software uses their own system that wraps existing games (originally developed by Gaim Theory then bought by id Software) and instant action technology from garage games that runs instant action. All these systems have provided us browser based triple AAA style gaming fun. It looks like that movement will continue as more and more game companies and publishers see the valid capabilities of Unity 3D to deliver when you need really deeply immersive 3d experiences in the browser. Also other systems like Torque 3D, Quake Live technology and more will be seeing this trend continue when it comes to games online. It is also becoming a choice for online web based 3d MMOs such as Fusion Fall and Marvel Super Hero Squad.
The output of this tool gives the raw machine code/assembly like procedural output that is very similar to other rendering engines. It actually makes me think of OpenGL a bit in the output switch based, procedural flow except this if for vector drawing rather than raster.
It is always good to know what is going on in lower levels to better code for projects that perform well. Another great post on this is the Elastic Racetrack of the AS3 and AVM2 virtual machine which describes how the AVM2 handles drawing those low level shape calls in addition to handling script.