No announcement yet.

Interactive Wind (Kismet Sequence) [Download Now Available]

  • Filter
  • Time
  • Show
Clear All
new posts

    Interactive Wind (Kismet Sequence) [Download Now Available]

    I was out walking in windy Oklahoma City, and I was really paying attention to the wind for the first time. I noticed how loud the wind can be in my ears, and how easily I could hear things when I turned my head to the side. I wanted to see if I could recreate this effect using the UDK, as well as create an easy way not only to change aspects of the wind (direction, intensity, obstacles to block the wind) but to make these aspects easily modifiable. I've made some good progress I think, and maybe this could be used tactically in mods, or even as a way to further immerse the player in realism.

    The Interactive Wind Kismet system is designed to allow any sound or level designer using the Unreal Development Kit to easily input variables to change aspects of the naturally sounding wind to apply in their own mod or map creation.

    The user will input a variable in degrees for wind direction (0/360 degrees being wind out of the north, and 180 degrees out of the south, in a clockwise fashion). Then the user may input variation for the wind (negative degrees and the same degrees in the positive) to allow a variation to the wind direction. Finally, the user will create zones behind obstacles (trigger volumes) that would represent zones where one would not be affected by the wind. In these cases a relevant wind sound will be heard as it whips through the obstacle blocking the wind's path to you. These trigger volumes will be placed in the designated area in the Kismet system and linked to a switch set up for that purpose.


    The player is set up to hear a realistic wind linked to his location as well as rotation. To achieve this end, the Kismet system attaches 5 "actors" to the player from where the wind sounds will emanate. Another actor in the level will provide an ambient wind buffeting sound with a Low Pass Filter applied.

    -Two actors will always be between the player and the user-designated wind direction. As the player faces the wind direction, the actor playing the high wind sound (buffeting wind over the ears) will be closest to the player, and therefore heard by the player. As the player turns to 180 degrees from the wind, the actors will trade places linked to the player rotation and the player will only hear the sound designated for wind from behind.

    - One actor will come into hearing range when the player faces away from the wind source, and it is to simulate a low frequency buffeting sound not affected as much by the ears.

    -The other two actors will be always to the left and right of the player, linked to player rotation. As the player turns 45 degrees from the wind source, the actor on the opposite side moves in to range and back out as the player hits 90 degrees. This is to simulate wind whipping around the head and buffeting the opposite ear as you turn your head. The ear closest to the wind source will then hear a buffeting with the high frequencies cut out (Low Pass Filter) to simulate the lack of the ear resistance on that side.


    The variation math in the Kismet system moves the front two actors left and right on a circle around the player given the variation degrees supplied by the user. It is random between the negative and positive, but always returns "home" between random assignments. It moves at a varied speed between points as well, to simulate random wind patterns.

    There are three user designated wind intensities (low, moderate, high). Each of these intensity levels variates randomly between a set number of wind volumes assigned to that intensity. Gusts of wind are also implemented to come at random times.


    As the player faces the wind, the sound of all else is dampened to simulate the volume of the wind. This attaches to player rotation, and as the player enters a roughly 35-40 degree zone from the wind source, all level volumes (voices, sound effects, music) are reduced by half to simulate wind buffeting directly in the ears.


    The front two actors are attenuated (closer = louder) but are not spatialized (sounding from a certain point in the map). As the wind is all around you. The side actors are spatialized though. This is because only one ear at a time is buffeted as you turn your head from the wind, if only for a split second.


    After the user implements zones (trigger volumes) into the level, along with the necessary items required by the kismet system, the system automatically rotates these zones around obstacles depending on the direction of the wind. A simple change in the wind direction will allow the player to put the object between himself and the wind source and notice an audible change in wind interaction to simulate a real world scenario, no matter the direction of the wind.

    Here is an image of the input section for wind factors:

    This video represents what the image shows. Wind from the North, 10 degrees in variation of wind direction, highest wind intensity, and wind when the level starts:

    This video is wind from the South (180 in direction) and a wind intensity of 2. You'll notice in this intensity, the sounds are not dampened from facing the wind. As well, cover at the pillars has changed automatically to the opposite side. This will change in real time along with wind direction variation as well:

    This seems like it could be really cool if used effectively.

    Will you be posting the full sequence at some point, or do you intend to write some custom volumes and the like to make it a fully featured system?


      The idea I have for it makes it easy to put your own volumes for wind cover and interior areas. This is the section in the sequence to add dynamic volumes that follow wind direction:

      This is a plug in style, where coming up to an obstacle triggers some set variables (objects) in kismet and plugs that into the math for a wind obstacle.

      On the left are the dynamic trigger volumes that rotate around the obstacle and act as wind blocking volumes. The right side is where the triggers that correspond to the volumes go. These triggers give values to the math that figures out which side the wind needs to be blocked.

      All you would have to do is create a dynamic trigger volume (DTV) in your map behind an obstacle (pillar or wall) that would be the area where the obstacle would block wind. Link that DTV to the switch in the picture in Kismet, then you add a normal trigger (touch) to the center of the obstacle and extend its width to the end of the dynamic volume created (this ensures you trigger this DTV to activate and block the wind no matter what side you enter from). This also ensures that only one DTV is moving with the wind at a time, which makes things less complicated. After i add the trigger to the center of the obstacle, I also add a note (acts as a pivot point for the DTV and the source for the wind sound you hear when close) and link the corresponding DTV to the set variable < CurrentDynamicVolume >. Lastly, using the middle mouse button, you would measure the distance from the pivot point (the note) to the center of the DTV, and plug in that number to the float variable. This is used for the axis of the DTV to correctly block the wind from all sides.

      Here's what it looks like:

      This sequence references cues, and there are new audio groups that are referenced in set sound modes for wind intensities. So I'm not sure yet how to package this. I also have a bit of cleaning up to do if I can, since this thing is a monster. I will figure something out, and hopefully release something that is easy to set up.


        I would have written it as a custom volume that worked about the same as PP volumes, in that they 'stack' and you could assign one wind sound to the biggest of the volumes and then different sounds to successive volumes. the biggest of the volumes would draw on the wind direction and then do the sound switching accordingly.

        I think the way you're doing it is awesome and I will definitely be testing it out for myself, it just seem like you have such a grasp of the things involved that you would have jumped straight to a sort of plug and play volume or maybe even a more complex procedural system.


          I'm still pretty new to UDK. I've been at it only about a month or so, so I'm sure there are ways to make things more efficient but I just don't know all of the possibilities with the UDK yet. This wind idea has just hounded my brain so much that it kinda forced me to learn a lot of what's possible in kismet to get what I had pictured in my head. As far as volumes go, I guess it's still pretty uncharted territory since I found a way to get the results with what I've tried.

          I was lucky that another sound designer (Graham Gatheral) had made custom sine and cosine function kismet objects. It was the direction I took. It was how I got the actors to draw nearer and further from the player at any angle. I based the rest of my ideas from this. I use the same math in the rotating dynamic volumes. It also allowed me to easily create the random wind direction math.


            Quickly made a demonstration map for my wind sequence. Don't mind my newbie map abilities, but I wanted to get a feel for the sequence in a real scenario. There's still some tweaking to do for the most realism, but I like where it's going.


              I'm getting pretty close to finishing what I can with this thing. Here is what I think the final sequence will look like:

              The variables will all have to be created once the sequence is imported. Six ambient sound movables will need to be created in the level, and the corresponding soundcues linked to them, then attached to the sequence. It's got a start and stop link that can be used for simple triggers as well, just in case someone just wants to run the thing without worrying about adding all kinds of dynamic volumes.


                This is great.


                  Wow, amazing work Obsidiaguy!

                  Originally posted by Obsidiaguy View Post
                  I was out walking in windy Oklahoma City, and I was really paying attention to the wind for the first time. I noticed how loud the wind can be in my ears, and how easily I could hear things when I turned my head to the side. I wanted to see if I could recreate this effect using the UDK, as well as create an easy way not only to change aspects of the wind (direction, intensity, obstacles to block the wind) but to make these aspects easily modifiable. I've made some good progress I think, and maybe this could be used tactically in mods, or even as a way to further immerse the player in realism.
                  I've had this thought as well, many times during my daily walks, but never tried to actually do it. Glad someone did, and with great results. Keep up the great work!


                    Thanks guys!


                      Test it!

                      Okay, I have what I think as a good first release of this sequence but I need some people to try it out and see if everything works smoothly.

                      Here's the link:


                      There is a step by step readme text included that should be clear to understand and follow. Let me know if it isn't.

                      This sequence was made with the August version of UDK. I attempted to get this to work in the newest version, but when I tried to import the sequence to kismet the program just stalled and crashed. I'd like to know if anyone else can get the thing imported in a newer version than August.

                      Things you'll need to know/do:

                      Compiling scripts in UnrealFrontEnd
                      Adding ambient sound movables to a map and attaching soundcues
                      Creating and connecting variables to a kismet sequence

                      Thanks for trying it out!


                        Obsidiaguy you from Oklahoma?


                          This is absolutely fantastic! Thank you so much for releasing this to the community Obsidia.

                          Unfortunately the download link does not work for me