Hey guys and gals,
We at Heavy Diesel Softworks are pleased to announce the Beta release of Bloody Mess!
Coming in Version 0.3
New CharacterSetup.cs that allows for Mesh Renderers
Bug fixes
Demos
Big Beta Web Demo
Tutorials
Bloody Mess Initial Setup
Basic Character Setup
Advanced Character Setup (Dismemberment)
Scripts Overview
Damage Events Tutorial
Healing Events Overview
RFPS Integration
UFPS Integration
Easy Weapons Setup
Shooter AI Integration
Easy Save 2 Integration (Saving and Loading)
Non-Humanoid Character Overview
Upcoming Features
3rd Party System Integration
Easy Weapons
RFPS
Shooter AI
UFPS
Easy Save 2
Pool Boss (coming soon)
Fun Stuff
Having some easy fun with Easy Weapons!
What is Bloody Mess: Positional Data and Dismemberment?
Bloody Mess is a position damage (think headshot, armshot, etc), event, and character dismemberment system that is designed to replace your enemy or player damage handler with a highly extendable, robust and realistic one.
Why Bloody Mess?
In addition to being an advanced positional damage handler Bloody Mess also comes with an integrated event and performance friendly dismemberment system. All three of these things work together to give you a powerful, and fully extendable, way to carry out whatever action you want on whatever body part you want. Including integration into 3rd party assets to increase their uses! The Full Release version of Bloody Mess (which beta buyers get to upgrade to for free) will include some advanced game frameworks to integrate immediately into your project. One of these frameworks will be a Turned Based or Action Point Based system that will function similar to VATS in the fallout game series.
The Positional Damage System gives separate heath to different body parts with their own damage modifiers that effect the total health of the enemy or player. No longer will foot shots cause as much damage as head shots!!! When a body part’s heath runs out it can be automatically dismembered and then effected by your owns scripts via the Event System. Since all damage calculation is done by Bloody Mess all you have to make a small (generally cut and paste) edit to your gun or melee script and you are ready to go.
The Damage Event System allows you to call functions and pass positional data from Bloody Mess into your own scripts. This will allow you to do things like update Achievements, use custom or 3rd party effects on hit limbs or dismembered limbs, send data to the animator for advanced animation states, add positional forces to hit limbs or dismembered limbs, and much more! Right now Bloody Mess allows you to call four functions in your own scripts:
OnLimbDeath(int limbID, GameObject spawnedLimb) : This is for applying effects or otherwise modifying spawned dismembered limbs.
OnLimbHit(int limbID) : This is for applying effects or other modifications to body part positions based on a raycast hit by whatever gun asset or raycaster you are using.
OnDeath(Transform ragdoll) : This is for applying effects or other modifications to the ragdoll upon character death.
Examples of things you can use the system for are setting up a hit based achievement system, headshot combo system, using ik and collision data to make an enemy react appropriately to where they are shot, exploding an enemies head after removing all its health, exploding a character after it hits a land mine, allowing enemies to change animation states based on positional hit data (zombies lose legs and crawl, headshots stun, etc) and whatever else you can think of.
The Healing Event System is designed to let you link any type of healing mechanism into Bloody Mess. This includes things like heal guns, health pickups, GUI Inventory Healing and more. Furthermore you will be able to heal Total Health, All Limbs, or Individuals Limbs separately. This makes Bloody Mess a one stop shop for both enemy and player character damage handeling/healing.
The Dismemberment System comes in two varieties, full body or head only. Furthermore you can turn off dismemberment entirely and just use the positional damage and event systems. While in use the dismemberment system will hide portions of the body (and any related triggers) and spawn a clone in the exact same place as the original. This effect fools the player into thinking they have actually cut or shot off a limb and, combined with the event system and 3rd party effects, can have dramatic results (exploding limbs with Exploder anyone?)
For examples of all of these systems see the below video!
The below video shows the beta Web Demo.
Don’t have a cut up mesh for dismemberment? Do it yourself using your favorite Unity Asset store models and a little 3d modeling work!
Bloody Mess is currently in Beta.
Current Beta Features (price: $15):
- positional damage (and damage modifiers) for individual body parts
- body part dismemberment based on a pre cut mesh system
- ragdolls that retain the body dismemberment settings of their parents
- Mecanim ready demo character designed specifically for dismemberment in our system
- Clear instructions on how to integrate into RFPS (UFPS and Easy Weapons coming soon)
- Clean and clear documentation
- Use with event system to trigger 3rd party effects
- Free upgrade to full release version.
Full Release Features (price: $30)
- All features from beta
- High quality, Mecanim ready, zombie character designed for excellent dismemberment
- Full tutorial series on how to set up custom character models with the Bloody Mess system
- High quality blood FX and Sound FX for included zombie character
- Example mecanim graph for having zombies go from walking to crawling with leg removal
- Walk, crawl and attack animations for the zombie
- Blood FX that spawn at the point of dismemberment
- Examples of how to use with the event system to integrate other fracturing or disfigurement assets
- Turn Based Damage Framework (think VATS from the fallout series)
Future Plans
- Instructions on the integration into more shooting systems
- high precision melee dismemberment
- PBR Next Gen Male and Female zombies
- attack both arms, attack missing arm, attack missing both arms animations and example mecanim graph for implementing them
- blood splatters for walls and ground
- more gameplay frameworks
Bloody Mess is written in, clear, c# code which should be dead simple to modify or extend. Out of the box Bloody Mess will support head, right hand, left hand, right leg, left leg, right forearm, left forearm, right upper arm, left upper arm, upper body, lower body, critical, extra 1, extra 2, extra 3 and extra 4 damage zones (total of 17).
Boody Mess: Positional Data and Dismemberment System is a product of Heavy Diesel Softworks, LLC.
Quick tut on how to integrate Bloody Mess with shooting assets:
(this is a generic solution and may not work out of the box, see specific tutorials for better instructions)
Go to the assets weapon script and add this variable to the scripts variables.
public int weaponType = 0;
weaponType is how you tell the Bloody Mess system wether or not a weapon is able to dismember (In case you don’t want certain weapons to dismember). Even if you are not using dismemberment you still need to pass the weaponType so still add it (you can keep it at 0 in that case).
Next you need to find where the asset sends damage and add.
//call the ApplyDamage() function on the enenmy CharacterSetup script
if (hit.collider.gameObject.layer == LayerMask.NameToLayer("Limb")){
Vector3 direction = hit.collider.transform.position - transform.position;
if(hit.collider.gameObject.GetComponent<Limb>()){
GameObject parent = hit.collider.gameObject.GetComponent<Limb>().parent;
CharacterSetup character = parent.GetComponent<CharacterSetup>();
character.ApplyDamage(damage, hit.collider.gameObject, weaponType, direction, camera.main.transform.position);
}
}
If your asset calculates its own attack direction then remove the Vector3 direction = hit.collider.transform.position - transform.position; line.
Now change the character.ApplyDamage(); call to this.
character.ApplyDamage(“Weapon Damage Float”, hit.collider.gameObject, weaponType, “Asset Direction Calculation”, Camera.main.transform.position);
After that make sure that Limb is added to any hit layer mask and enemy isnt.