No announcement yet.

MNSI - Adding Sound To Physics - V1.0

  • Filter
  • Time
  • Show
Clear All
new posts

  • started a topic [RELEASED] MNSI - Adding Sound To Physics - V1.0

    MNSI - Adding Sound To Physics - V1.0

    Feast your eyes!
    On this!

    MNSI is a system that allows for an easy and user friendly way to add sounds to physical interactions. Think how Half Life 2's physics had sounds.
    It has been a long pet peeve of mine that there was no way to make my box play a sound when it hits a stone floor, and a different sound when it hits a piece of metal.
    So I set out to create one.

    MNSI offers all the good things one can expect from a general audio solution.
    • Light and heavy Impact sound events based on material.
    • Roll and friction sounds based on material.
    • Relative correction. A box placed on a moving elevator won't play friction sounds despite moving in world space.
    • Support for Skeletal meshes.
    • Roll Vs Slide correction. A car wheel spinning in place can play a screech sound, and that sound can change to a normal tire on asphalt roll sound when it starts moving the car.
    • Multi-Component support. A single prop can be made of multiple materials.
    • A sound node like sound library for better organization.
    • Sound interaction libraries that are external to the blueprint.
    • Various performance optimizations and the ability to create Sound detail levels. Some props can be made to have less detailed and less often updated math, while other props can be made to make more checks and update faster. For example. Debris don't need speedy updates, but a fast car would need more updates per second to play proper physics sounds.
    • Many workarounds to fix various freakouts of the Unreal physics engine.
    • Dynamic Parameters passed to sound cues allow for even greater detail and control over the sounds being played.
    • And most importantly. Documentation.

    For reference. This is a video of a game that was made using the MNSI system. ((Disclaimer. This demo is not available for download and is not part of the MNSI market place package. It is merely an example of what Can be achieved when MNSI is used in a game.))

    The Market place offering comes loaded with the core math and blueprint component, as well as a basic sound library of 260 high quality sounds I recorded myself from 14 object types including bullet shells for the FPS game devs out there.

    This is a video showing every sound object type.

    It also has smooth jazz playing. Which I consider a bonus.

    So, with that said, weather you're making the next Half-Life2 game or the next stealth Metal Gear solid and need your thrown bottles to play sounds distract guards, head on over to the market place and get your copy of MNSI at the low low price of just seventeen thousand silver pieces. ... I mean 70 bucks.

    All projects that use MNSI can get their special place in the MNSI hall of fame.

    If you're making an awesome game with MNSI, and want it featured in the hall of fame, drop me a line. I can't wait to see what people achieve using this plugin.

    Note: As this is the first release of MNSI. It can be expected that some issues may have prevailed mine and the Marketplace's heavy quality assurance tests. For any bug reports and issues, check the documentation page - Or send me an email with your grievances.
    Last edited by MischievousM; 07-13-2019, 12:58 PM.

  • replied
    Congrats on the release!

    Leave a comment:

  • replied
    It's out, go wild!

    Leave a comment:

  • replied
    FANTASTIC - can't wait....
    How Much would be the Price?
    Kind regards,

    Leave a comment:

  • replied
    Guys. It's done. A year after I started working on this...Pending marketplace release any day now.

    @halobungie Send you a PM.

    Leave a comment:

  • replied
    Hello MischievousM, I have no success. Can you please show me your settings from your barrels?

    Leave a comment:

  • replied
    Hey Halobungie, try adjusting the friction coefficient of your physical materials And weight. Tell me if that works.

    Also, in MNSI news, the documentation's nearly complete.

    Behold, the official Wiki.

    I've started to try and push this to the Marketplace. Will make an official release post as soon as it gets though.

    Leave a comment:

  • replied
    Hello MischievousM,
    How did you do that with the payload on the wagon? If I try to do the same with myself, the payload slips backwards each time and falls off the wagon. But with you, the payload stays on the wagon? How did you do it?
    Kind regards!

    Leave a comment:

  • replied
    TheFlow3k Heh, I do actually do that. I have an automated testing world and script that I run every time I do changes to calculate how they affect the performance cost of the plugin. Generally speaking I've got it running Okay with 200 objects all colliding at the same time with Rolling and Friction sounds. Disabiling the Rolling sounds for the objects, IE, the "Cheap" option for objects too insignificant to have rolling sounds, virtually renders this plugin free.. The less groups of intercoliding objects you have, the cheaper it gets too, you can have 100k physics props in your level but the way the plugin's designed, they won't add any performance overhead unless you start piling them all up in a big pile. Which isn't likely. P:

    Also halobungie, I have no plans not do I plan to have a plan about releasing the train demo. That's a completely personal project. With all the sloppiness that entrails~
    Last edited by MischievousM; 05-25-2019, 05:06 PM.

    Leave a comment:

  • replied
    i Love this Plugin and the Train Demo!!!
    Is it possible to download this Train-Demo (exe) so that i can play with this Train too?
    Kind regards!

    Leave a comment:

  • replied
    Thanks for the answers to my post.

    A global solution would be nice, because if not, we have to add a component to every physically movable mesh in the game, which often are simple static meshes. Of course it is simple for BPs, where you can add the component to the BP and every BP in the game get the update. But on simple (physical movable) static meshes you have to add it to every mesh. So a global solution would be nice.

    When you use BP instead of code, it is also Ok. As you said, the advantage is that it is easier to understand as BP.
    But would be nice, when the performance is also great as BP solution.

    Perhaps it would be nice to make the performance need for your solution measurable. Perhaps you can make a Video where you measures the "FPS Average" with a scene with a lot (but realistically, not too much) objects shaking and falling? One time with your impact sound solution and sometimes without? So we (and you) can see the performance impact of this solution. I think it it will be good to know.

    Thanks a lot.

    Leave a comment:

  • replied
    The Last Video with the Train is absolutely Crazy good!!! I hope your plugin came soon to the Marketplace...

    Leave a comment:

  • replied

    I present to you, the result of the MNSI beta. Using this plugin in a "production" environment to make some basic "game" , really helped discover some flaws and bugs in the math and optimization.

    @CaptainFalcon I am one step closer to releasing this on the Marketplace now. I will actually send it to the marketplace QA soon while I finish up the documentation.

    Leave a comment:

  • replied
    This looks absolutely awesome, really hoping this is coming to the marketplace or or whatever soon because I would love to use this!

    Leave a comment:

  • replied
    Hey TheFlow3k, thanks for the comment ((And thanks to everyone else also patiently waiting!)) I saw that video, but currently, I don't have enough knowledge to make this as a 100% C++ plugin. Once I release this plugin, and address all the issues people'll find with it, I plan eventually start making MNSI-2 as a C++ plugin. But that's for years ahead.

    I also thought about going the "Global Actor" route, but in the end I went with the "local" mode, IE, you have to add this component plugin to every prop you want to have sounds. Honestly, it just suited my own workflow better, it allows for faster and easier optimization, at the expense of some manual work by the project authors.

    Looking at your post, here's what I already have;

    "no sound on very very small impacts (no sound on very tiny forces)" I handle that in several ways. Since every prop is different ((Different mass, size)) you can specify the minimum impulse needed for a light impact sound, and the minimum impulse for a heavy impact sound. I have also created a "Workaround" for Unreal's tendency to apply really high impulse forces between props with really high mass differences despite them being static. IE: A heavy box that's placed over a light box, will constantly apply huge impulses to the light box. I handle that by using both the impulse force and linear and rotational velocity of the objects.

    "different sounds for sliding & rolling, not same as impact when sliding/rolling" Happy to say that's done. And optimized. One of the reasons this plugin is taking me so long is that I retreated the Rolling Vs Sliding math 3 times from scratch. It will never be perfect, but I've got it in a really good place, optimization wise.
    This comes with two sub-'features' one done, the latter still in development.
    When an object is rolling but is not moving, I treat that as if it's sliding. Imagine a car wheel spinning in place, vs a car wheel spinning and moving. The sound is different in both cases.
    And Gimbal locking, believe it or not actually happens when you try to figure out horizontal movement. Imagine an object spinning in its X axis, that means it could be going in the Y axis, or Z axis. An object spinning in its Y axis, could be going in the X axis, BUT ALSO IN THE Z axis. That sort of local plane correction where I essentially transform a 3 dimensional translation problem and encapsulate it as a 2d local plane is taking me some time to do.

    "impacts which higher force have to make louder impact sounds" Done, also with its own myriad of "Fixes"

    - impacts which have small force have to have quiet impact sound, so impact sound volume need an algorithm related to impact force (which is related to object mass/weight and speed) Also done.

    - what's about debris, Also done in the form of you can toggle an even lower cost math switch to apply this plugin to many small non-important props.

    What I have not yet addressed from your post is the following;

    - Not too much sounds in parallel,
    - only the most important sounds when there are too much sounds in parallel, only the one with highest force

    Sound Priority, I thought about it, I am still solving it. I am not sure if the first release of the plugin will have the Sound Priority optimization though!

    As for the documentation remark, I actually can't agree there. Why spend 2 hours digging though sub-functions in a blueprint, when you can look at a documentation page for 5 minutes? Also let's not forget people who aren't yet fluent in Blueprint, ((Or worse, if I make this as a C++ plugin someday, how many people can honestly reverse engineer a C++ plugin?))

    That's why I will not release this before I complete the comprehensive and expansive compendium documentation. Plus. Already bought a web domain P: Gotta use it for something.

    Anyhow, all the features I talked about and more, I will showcase in an upcoming video demonstration, + a short video about thus plugin being used to actually make a "Game"

    EDIT: Speaking of features.
    I've created a very rudimentary "Node" representation to allow someone to organize their sound libraries in node form.

    It looks like this. You can treat each library as a whole library, or treat each library as a single material, really, that's up to how people use this in their projects. But in the end, all you do is drag your library in this special graph, and combine it with the other libraries in use.
    Click image for larger version  Name:	Nodes.JPG Views:	1 Size:	235.5 KB ID:	1615217
    Also, this is how the plugin settings look like. You can pretty much see it all here. ((All these will be explained in the documentation)) This is for the StaticMesh version. The SkeletalMesh version has the added benefit of allowing you to pick which bone it will operate on.

    Click image for larger version  Name:	Settings.JPG Views:	1 Size:	109.0 KB ID:	1615223
    Last edited by MischievousM; 05-03-2019, 08:54 PM.

    Leave a comment: