Archive for the ‘GAMES’ Category
cocos2d is a great objective-c engine for iOS development (and Mac development). It has it’s limitations but for small 2d based games with physics or platformers with sprites it rocks. It has made it to 1.0 and many games are made with it on the Appstore. Unity and Cocos2D make up a good portion of the games in terms of engines used on the Apple Appstore for small to midsize game studios and indies (2500+ games are made with cocos2d).
cocos2d is getting a 3d extension in cocos3d for using 3d mesh/models etc. Currently it only imports POD models but this could be good for smaller isometric 3d games or 2d using 3d models. It is early so this will take some time to mature but good news for improving engine performance needed to handle 3d.
This could easily become the most popular/used 3d engine made with objective-c as cocos2d has done with 2d… there aren’t many pure objective-c game engines. The one downfall is multi-platform even though Objective-C is fun. Unless it is solely a iOS or Mac title then going with a multi-platform engine or a custom C++ engine and using Android NDK and an Objective-C wrapper on iOS is best for port economics and performance. That can also be used as desktop and other platforms this way. But for iOS development cocos2D is great.
Some of the key features of cocos3d are highlighted in the following list:
- Seamless integration with cocos2d. Rendering of all 3D model objects occurs within a special cocos2d layer, which fits seamlessly into the cocos2d node hierarchy, allowing 2D nodes such as controls, labels, and health bars to be drawn under, over, or beside 3D model objects.
- Pluggable loading framework for 3D models exported from familiar 3D editors such as Blender, 3ds Max orCheetah3D, or through industry standard 3D object files such as Collada or PowerVR POD, or even from your own customized object file formats.
- Imported 3D models can include animation sequences.
- 3D model objects can be arranged in sophisticated structural assemblies, allowing child objects to be moved and oriented relative to their parent structure.
- 3D models, cameras, and lighting can be manipulated and animated using familiar cocos2d
CCActions, allowing you to quickly and easily control the dynamics of your 3D world, in a familiar, and easy-to-use programming paradigm.
- 3D objects can be covered with dynamic materials and textures to create rich, realistic imagery.
- Mesh data can be shared between 3D objects, thereby saving precious device memory.
- Mesh data can freely, and automatically, use OpenGL vertex buffer objects to improve performance and memory management.
- Culling of 3D objects outside of the camera frustum is automatic, based on pluggable, customizable object bounding volumes.
- Automatic ordering and grouping of 3D objects minimizes OpenGL state changes and improves rendering performance. Pluggable sorters allow easy customization of object sorting, ordering, and grouping for optimal application performance.
- Automatic OpenGL state machine shadowing means that the OpenGL functions are invoked only when a state really has changed, thereby reducing OpenGL engine calls, and increasing OpenGL throughput.
- Sophisticated math library eliminates the need to use OpenGL ES function calls for matrix mathematics.
- Fully documented API written entirely in familiar Objective-C. No need to switch to C or C++ to work with 3D artifacts.
- Extensive logging framework to trace program execution, including all OpenGL ES function calls.
- Includes demo applications and
Xcodetemplates to get you up and running quickly.
You can learn more about writing 3D iOS applications using cocos3d, by referring to:
Chromium is moving to GPU hardware accelerate rendering all types of web content as much as possibly with their latest efforts.
For some time now, there’s been a lot of work going on to overhaul Chromium’s graphics system. New APIs and markup like WebGL and 3D CSS transforms are a major motivation for this work, but it also lets Chromium begin to take advantage of the GPU to speed up its entire drawing model, including many common 2D operations such as compositing and image scaling. As a lot of that work has been landing in tip-of-tree Chromium lately, we figured it was time for a primer.
The primer they are looking at is not just rendering the content made in WebGL, CSS3 3d transformations and more but the entire final pass of the output. This leads to some very interesting years ahead in browsers. With Chromium, IE9, Firefox and Safari all now with aspects of hardware rendering and acceleration via the GPU, anyone not doing GPU acceleration is seemingly behind the curve that seemed to start in 2007ish to a culmination of today’s latest browsers.
After these layers are rendered, there’s still a crucial last step to blend them all onto a single page as quickly as possible. Performing this last step on the CPU would have erased most of the performance gains achieved by accelerating individual layers, so Chromium now composites layers on the GPU when run with the –enable-accelerated-compositing flag.
Web content will get really interesting over the next couple years. Even basic computers now have a GPU and bottom of 32MB video memory. Why aren’t we using those GPUs as much as possible for web content and web games. The time of software rendering might be coming to an end now that processors seem to have topped out and the bottom level computer is capable of handling a decent amount of video memory. It will be easier to justify useful graphics acceleration with a better user experience when we can take advantage of all the computer/device has to offer.
On the web based gaming front…
Google looks to be making a gaming site to compete with Facebook only kicking the gaming up a notch? By the comment from Mark DeLoura, head of developer advocate for Google gaming, it appears they/he also favor going 3d or native client with WebGL or Unity wrapped in the native client.
Check the comment by Mark DeLoura on the gamasutra post regarding the rumored Google Me Facebook like gaming/social site:
I think Flash will continue to be a very viable platform. The Flash toolset is pretty frickin’ amazing, and there are a ton of happy Flash developers out there, and great games galore.
I would like to see higher-fidelity 3D content on the web though. It’s been a dream of many people going back to VRML days. WebGL and Native Client are two solutions to this that will be integrated into the Chrome browser. At Google I/O we talked about Unity running inside of Native Client, which combines the hardware acceleration and security of Native Client with the fantastic toolset and runtime from Unity. It’s peanut butter and chocolate (well, for me). This is a platform I’m really excited about for 3D web games.
Indeed peanut butter and chocolate is mighty tasty.
Torque 3D is out of beta and officially released to the world. Torque was one of the first indie affordable game engines and they continue that work at Garage Games with a web enabled Torque 3D output much like the Unity 3D player.
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.
Road and Path Editor
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.
Khronos Details WebGL Initiative to Bring Hardware-Accelerated 3D Graphics to the Internet
Wide industry Support from Major Browser Vendors including Google, Mozilla and Opera; Specification will be Available Royalty-free to all Developers
I think that Google O3D and OpenGL ES success on iPhone games probably combined to get this in motion. OpenGL and very basic video cards are now standard in most machines out there. Unity3D actually published hardware statistics on casual gamers (web-based games) ever so kindly and shows that even though there are some older Intel cards out there, for the most part machines nowadays have a video card capable of supporting at least low-poly 3d and hardware supported 2d rendering in real-time for games, user interfaces and more.
This is exciting news, it appears the movement of the web gaming market is getting much more capable and is accelerating the innovation of hardware accelerating the web.
Demos of Haxe Sandy:
- Haxe Sandy
- Haxe Sandy Demos
- Haxe Sandy Tutorials by Matthew Casperson
- Haxe Sandy Download
V8-GL from the author states:
Rozengain or Dennis Ippel of AKQA updated probably one of the tools I use the most for flash 3d and that is the blender to as3 exporter. This simplifies loading in the meshes you have and lessens the bulk of the COLLADA format. COLLADA is great but flash is still client side and fairly memory intensive for 3d so loading in models directly to as3 is nice if flash is your presentation tool.
One concern you might have is statically binding the code within a main swf fileon compile and resulting file size compared to loading in the DAE dynamically. But you can just load these in as you would external DAE COLLADA files as compiled swfs and since it is just code it is very compact. This adds some duplication of code (such as tweening libraries or the 3d engine source as needed) but allows a more horizontal loading or lazy loading of meshes when needed.
This is just another option to get 3D models into the flash 3d engine of your choice in addition to COLLADA, some MD2 support and limited ASE support.
This is an awesome project that keeps getting better, thanks Rozengain.
pyamf is pretty sweet for Flash remoting with Pythonic server side, but now we have two nicely done and integrated remoting kits for python on the server side.
amfast is a new remoting library that looks to be as sweet as pyamf (where sweet == fast and useful). I am checking out amfast now but the speed boost alone might be worth it. For instance, working with real-time games, when you need static content you need to grab that quickly sometimes via a content service. The faster that link the better. It also has Twisted integration which is great for networking and SQLAlchemy integration which is in my opinion the best ORM for python (pyamf has twisted, django, pylons, sqlalchemy as well)
amfast is well documented and has some great examples. If you have the Python addiction, check it.
- AmFast is a Flash remoting framework for Python.
- AmFast can use AMF to communicate between Python and Flash, Flex, and any other system that supports AMF.
- AMF is a binary object serialization protocol used by Actionscript based applications.
- Support for NetConnection and RemoteObject RPC.
- Support for Producer/Consumer ‘push’ messaging with HTTP polling, HTTP long-polling, and real-time HTTP streaming channels.
- Support for authentication with NetConnection and RemoteObject.
- Flexible Target mapping system to map message destinations to invokable Target objects.
- Support for ChannelSets with multiple Channels to expose resources in different ways.
- Built in Channels for CherryPy, Twisted Web, and plain WSGI.
- Support for configurable Endpoints. Use AmFast’s built-in AMF encoder/decoder C-extension, or use an external AMF encoder/decoder, such as PyAmf for a pure-Python implementation.
AMF Encoder/Decoder Features
- AMF0/AMF3 encoder/decoder written in C as a Python extension for speed.
- More than 10x faster than the PyAmf encoder/decoder (even when using PyAmf’s optional C-extension).
- Map custom classes with ClassDef objects for complete control over serialization/de-serialization.
- Full support for IExternalizable objects.
- Data persistence with SqlAlchemy including remotely-loadable lazy-loaded attributes.
- Actionscript code generation from ClassDef objects.
Augmented Reality and the base of the original ARToolkit has taken the flash world by storm with the FLARToolkit and really the speed updates of the AVM2 in Flash9 and Flash10 to be able to pull off the OpenCV calculations needed on the bitmap data from each frame of a camera. It has been around quite some time but now web based engines such as Flash and now Processing can take advantage of this awesome technology.
The Simple ARToolKit Library for Processing (PC) is just a basic port of single marker AR support and it currently only runs on windows.
Den Ivanov did some cool experiments with this kit but adding the capability to do multiple markers. In his videos the processing runtime seems to process the render pretty quickly. It seems that most Flash AR is around like 5-10 frames per second for the detection.