Created a White Paper detailing how to cretae a destructible object in Unity using PlayMaker. Also used in the creation of the destructible asset were Maya, Ninja Fracture, and the Shuriken Particle System (Unity). The White Paper can be downloaded here.
0 Comments
PlayMaker is a visual scripting plugin for the Unity3D game engine, that allows individuals to make games, and game prototypes without having any knowledge of coding/scripting.
I spent the last few days learning the basics of PlayMaker, which basically involved learning how to create a finite state machine (FSM), of which programs are made up of. Games are often made up of multiple scripts/programs, and therefore, multiple FSMs. An FSM can be described as a clearly defined group of states that an object can occupy, (http://unitygems.com/fsm1/). PlayMaker FSMs are made up of:
To learn PlayMaker, I went through the tutorial videos created by Christopher Orth, which can be found at: http://www.hutonggames.com/tutorials_game_design_with_playmaker.php As well as the third party plugins mentioned in the previous post, Maya also has it's own "Create Shatter" tool, (found in the Dynamics menu set, under the Effects menu), which can also be used to create pre-fractured assets. However, it is only part of the solution, as other tools will need to be used to simulate the destruction of the asset. As mentioned in an earlier post, there are a number of tools/plugins/scripts available for the creation of destructible objects using Maya. These tools allow for the creation of fractured assets, and to simulate their destruction, which can then be utilised in a game engine. Some of these tools include:
There are a number of fracture tools available through the Unity Asset Store, which can be used for the creation of destructible objects within the Unity game engine. Some of these tools dynamically fracture assets within the engine, using complex algorithms, (which can sometimes be quite expensive in game). Other tools pre-fracture assets, as is currently still the norm with creating destructibles for a game. Some of these tools include:
Havok, (noo... not the X-men guy), is a company who has produced its own vfx software solution, which can be integrated into any film or game development pipeline. Havok Destruction is a toolset in this suite that allows for the creation, and simulation, of destructible objects for games. You can read more about Havok Destruction here. The APEX (scalable dynamics) framework is part of the PhysX SDK (software development kit), developed by NVIDIA.
APEX Destruction (APEX D) is a module of APEX, which is used to create destructible assets for the game environment. The APEX framework is available for multiple platforms, and is readily integrated into the UnrealEngine. It is free to download, provided one signs up for the NVIDIA Registered Developer Program (RDP). You can read more about APEX, and APEX D, by clicking on the links below: It can be rather expensive, (resource intensive), to create dynamic destruction from scratch within a game, i.e. breaking a single mesh into multiple meshes in real-time, within the game engine, while in the same instance, applying physics to those multiple meshes. Hence, many game developers, (past and present), utilise pre-fractured meshes/objects for their destructible objects in game. This method of implementing destruction within a game is a lot less expensive, and allows games to run on low spec platforms, as well as high-end machines. There are many tools on the market to enable developers to create pre-fractured destructible objects for their games. Some of these tools are stand-alone software packages, such as Havok's suite of physics solutions, which include Havok Destruction. These packages can be integrated into just about any pipeline, and used with multiple game engines/platforms. Other destruction tools take the form of plug-ins/add-ons, (or scripts), that can be used within a modeling package, (e.g. Maya, 3DS Max, Blender), or a game engine, (Unity, CryEngine, UDK). Some of these plug-ins/tools are readily available with the parent software, such as the APEX fracture tool in UDK, or the shatter tool available in Maya. Other add-ons have been created by third party companies/individuals, and must be purchased for commercial use. For example, Unity has a number of destruction plug-ins/scripts that can be bought through the Unity Asset Store, like the Ultimate Fracturing & Destruction editor extension for Unity 3D. Maya also has plug-ins/scripts, which can be purchased from third parties. One example is Ninja Fracture, part of the Ninja Dojo suite of tools. These priced applications usually have additional features, and can allow developers to do more with their destructible assets than just simple fragmentation of meshes.
Found some valuable info on the UDN page that covers how to create a fractured asset from a static mesh, for use in a game being made in UDK/UE2/UE3. To go to the link, click here.
There are many game titles, throughout the years, that have included environments that are destructible to variable degrees. Some games, such as Red Faction, have fully destructible environs, in which everything can be destroyed, (buildings too!), thus adding a greater fun-factor for some players, although it can be a little hyper-realistic! While other games, like Diablo 3, have only partially destructible environs, allowing players to only destroy particular areas/assets in the game that allow them to, either find loot, or proceed through a level. Giant Bomb has an awesome listing of games with destructible environs, which they keep up-to-date. To see the list, click here.
Below is the result of a first pass for the destruction effect of the enemy robot for Natz'n'Boltz. I used the default Unity construction worker as a place holder for the enemy robot. Dave Sparrow asked me to look into replacing the 2D image (billboard) in the particle system with a mesh. This was so that a destruction effect for enemies could be created in our major game project Natz'n'Boltz. I started off by looking into mesh particle emitters, as this is the first thing that came up through Google. I soon realised though, that it was not the emitter component that I need worry about, but in fact the renderer component. It is a simple matter of changing the render mode of the particle renderer component from billboard to mesh. This however, is not an option included in the Legacy particle system in Unity, although a third party script has been created, (and generously distributed), to enable this option. The explantion for this script can be found here, and the download here. Changing the render mode is an option in the Shuriken particle system, and can be found in the renderer channel in the inspector. NB: Do not confuse the particle renderer component with the particle emitter component. The emitter component determines the area from which the particles originate, while the renderer component determines what the particles look like. Thus, it is the renderer component that is required to change a 2D image (default) into a 3D mesh.
Spent some time looking into creating particle effects in Unity. Found some tutorials on how to get started. A bunch of good video tutorials can be found on Youtube. Here's a start.
There are two ways of creating a particle system within Unity. Firstly, by using the old Legacy particle system, and secondly, by using Unity's newer Shuriken particle system. The Legacy particle system is made up of components that have been used to create particle effects prior to the release of Unity 3.5. The components that make up the Legacy particle system include:
The Shuriken particle system conveniently combines the three aforementioned components into a single components, with all the necessary channels to modify the emission, animation, and rendering of particles. You can find out more about the Shuriken particle system here. And yet another good guide can be found at 3D Game Engine Programming, here. Another good video tute on the basics of using the fracture tool in UDK:
http://www.youtube.com/watch?v=v8HN-OvhDFo&NR=1&feature=endscreen I have been going through the tutorials on WoLD, covering the basics of level design in UDK. The tutorials can be found here. Below is a screenshot of what I've got so far... basic floor and building, with lighting: Going to follow the rest of these tutorials, and learn about importing meshes and textures, as well as more stuff on lighting. Going through these tutorials is great, because I'm picking up things like the shortcuts that I didn't really get time to learn during the 3D environment project created in UDK last year.
Was looking at some youtube tutorials on creating destructible objects using UDK's built-in fracture system. A good, easy to follow tutorial is: http://youtu.be/ryjoJOB6Rio
I soon realised, though, that I had forgotten the basics of UDK, and felt rather unprepared and uncomfortable with proceeding with attempting to create any destructible objects without first going through some tutorials on basic level creation in UDK. Hence, I am currently following some tutorials on World of Level Design (WoLD) regarding the basics of setting up a level in UDK, which will inevitably give me more confidence in creating stuff in UDK, and eventually destructible ones too. I've started with a refresher on UDK basics, which can be found by following this link: http://www.worldofleveldesign.com/categories/udk/udk-basics-part1.php I will then follow the next few tutorials on basic level creation to help get me started with building a level. The level design tutorials, and more, on WoLD, can be found here. I will be undertaking some independent research within the field of video games, as part of my course in game development at AIE Sydney. This research will involve looking into destructible objects/environments within games, as well as the vfx used to simulate explosions, fire, and debris and dust.
The main objective of the research is to learn the methods used in creating destructible objects for games, and to implement these methods myself to create a destructible environment within a game engine. I would also like to tackle vfx for destructible objects, and what particle effects could be added to enhance the destruction of the objects. I will be looking at how destructible objects, (and particle effects), can be created within two engines, Unity and UDK, (using in-engine tools). But I will also try looking into CryEngine, and hopefully Source Engine too. I will also look into how a destructible object would be created in Maya first, then exported to an engine. The culmination of this research project is intended to be a playable destructible environment level, and possibly written tutorials on how to create destructible objects within Maya, and the different game engines. |