{"id":3012,"date":"2020-07-25T11:06:01","date_gmt":"2020-07-25T02:06:01","guid":{"rendered":"https:\/\/blog.criware.com\/?p=3012"},"modified":"2020-07-25T11:15:50","modified_gmt":"2020-07-25T02:15:50","slug":"time-dilation-in-ue4-using-criware-atom-craft-part-1","status":"publish","type":"post","link":"https:\/\/blog.criware.com\/index.php\/2020\/07\/25\/time-dilation-in-ue4-using-criware-atom-craft-part-1\/","title":{"rendered":"Time Dilation in UE4 using CRIWARE \u2013 Atom Craft: Part 1"},"content":{"rendered":"<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Introduction<\/h2>\n<p>The ability to change the flow of time is a popular mechanic in games. Being able to slow down time gives the player time to analyze and react to a given situation. This effect is often emphasized by making changes to the audio, usually by way of adjusting the pitch. Sometimes sounds are even swapped out entirely if simple pitch shifting does not produce desirable results.<\/p>\n<p>In this month\u2019s two-part blog, we will investigate some straight-forward approaches for creating audio systems that adapt to a \u201ctime dilation effect\u201d. In this first part, we will create the framework for our audio system in Atom Craft. <a href=\"https:\/\/blog.criware.com\/index.php\/2020\/07\/25\/time-dilation-in-ue4-using-criware-ue4-part-2\/\">In the second part<\/a>, we will continue with implementation and fine-tuning in an FPS-style game in UE4.<\/p>\n<div style=\"width: 800px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-3012-1\" width=\"800\" height=\"450\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/TimeDilation-1.mp4?_=1\" \/><a href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/TimeDilation-1.mp4\">https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/TimeDilation-1.mp4<\/a><\/video><\/div>\n<p><\/p>\n<div style=\"max-width: 800px; margin: 0 auto; margin-bottom: 20px; text-align:center;\"><a style=\"display: inline-block; border: 1px solid #ccc; padding: 20px;\" href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/2020_07_TimeDilation-audio-files-only-1.zip\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1813\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2018\/06\/zip.png\" alt=\"zip\" width=\"80\" height=\"78\" style=\"\n    display: block;\n    margin: 0 auto;\n\">2020_07_TimeDilation (audio files only).zip<\/a><\/div>\n<div style=\"max-width: 800px; margin: 0 auto; margin-bottom: 20px; text-align:center;\"><a style=\"display: inline-block; border: 1px solid #ccc; padding: 20px;\" href=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/2020_07_TimeDilation_AtomCraftProject-1.zip\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1813\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2018\/06\/zip.png\" alt=\"zip\" width=\"80\" height=\"78\" style=\"\n    display: block;\n    margin: 0 auto;\n\">2020_07_TimeDilation_AtomCraftProject.zip<\/a><\/div>\n<p><em>Created with CRI Atom Craft V3.43.09<\/em><\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Sound Design<\/h2>\n<p>For our system, we are going to need the following audio (you can find these attached above):<\/p>\n<ul>\n<li>Footsteps<\/li>\n<li>Ambience\n<ul>\n<li>Regular<\/li>\n<li>Time-slowed<\/li>\n<\/ul>\n<\/li>\n<li>Time Control SFX\n<ul>\n<li>Slow-down<\/li>\n<li>Speed-up<\/li>\n<\/ul>\n<\/li>\n<li>Gunshot\n<ul>\n<li>Regular<\/li>\n<li>Time-slowed<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>It is worth spending time listening to the effect that down-pitching in Atom Craft will have on various sounds, to determine whether it is necessary to re-design anything. Certain sounds with sharp transients (such as gunshots), often lose impact when they are stretched out, so it can be worth re-designing these in a DAW.<\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Footsteps<\/h2>\n<p>Our footsteps will be pitched down in UE4, so they don\u2019t need any special treatment. To get them up, we can:<\/p>\n<ul>\n<li>Create a <strong>Random No Repeat Cue <\/strong>\n<ul>\n<li>Name it \u201cFootsteps\u201d<\/li>\n<\/ul>\n<\/li>\n<li>Load appropriate footstep Materials into the Cue<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/2020-07-22-12_22_00-CRI-Atom-Craft-Ver.3.43.09-built-on-Mar-24-2020.png\" alt=\"2020-07-22 12_22_00-CRI Atom Craft Ver.3.43.09 (built on Mar 24 2020)\" width=\"671\" height=\"227\" class=\"alignnone size-full wp-image-3019\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/2020-07-22-12_22_00-CRI-Atom-Craft-Ver.3.43.09-built-on-Mar-24-2020.png 671w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/2020-07-22-12_22_00-CRI-Atom-Craft-Ver.3.43.09-built-on-Mar-24-2020-300x101.png 300w\" sizes=\"auto, (max-width: 671px) 100vw, 671px\" \/><\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Time Control SFX<\/h2>\n<p>Our slow-down and speed-up SFX are also going to use simple playback. Let\u2019s:<\/p>\n<ul>\n<li>Create two <strong>Random No Repeat Cues<\/strong>\n<ul>\n<li>Name them \u201cTime_SlowDown\u201d and \u201cTime_SpeedUp\u201d<\/li>\n<\/ul>\n<\/li>\n<li>Load appropriate Materials onto each Cue<\/li>\n<\/ul>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Ambience<\/h2>\n<p>To switch between our two states, we will mostly be using AISAC curves over transition periods. Let\u2019s rename AisacControl_00 to \u201cTimeDilation\u201d and use this for all of our AISACs. Since we only have a single audio loop for each ambience state, we can:<\/p>\n<ul>\n<li>Create <strong>Polyphonic Cue <\/strong>\n<ul>\n<li>Name it \u201cAmbience\u201d<\/li>\n<\/ul>\n<\/li>\n<li>Load appropriate Ambiences onto separate Tracks<\/li>\n<li>Create an AISAC for each Track with the following\n<ul>\n<li>AISAC Name \u2013 \u201cnaturalamb\u201d and \u201ctimeslowamb\u201d as relevant<\/li>\n<li>AISAC Control \u2013 TimeDilation<\/li>\n<li>AISAC Graph Type \u2013 Volume<\/li>\n<\/ul>\n<\/li>\n<li>Create linear curves for each, laid out as below (ensuring the natural ambience has a Destination Value of 1 when AISAC Value is 0)<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/2020-07-22-12_30_18-CRI-Atom-Craft-Ver.3.43.09-built-on-Mar-24-2020.png\" alt=\"2020-07-22 12_30_18-CRI Atom Craft Ver.3.43.09 (built on Mar 24 2020)\" width=\"812\" height=\"472\" class=\"alignnone size-full wp-image-3020\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/2020-07-22-12_30_18-CRI-Atom-Craft-Ver.3.43.09-built-on-Mar-24-2020.png 812w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/2020-07-22-12_30_18-CRI-Atom-Craft-Ver.3.43.09-built-on-Mar-24-2020-300x174.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/2020-07-22-12_30_18-CRI-Atom-Craft-Ver.3.43.09-built-on-Mar-24-2020-768x446.png 768w\" sizes=\"auto, (max-width: 812px) 100vw, 812px\" \/><\/p>\n<p>The above will offer us an easy method for fading between ambience states. A<strong> Track Transition by Selector Cue <\/strong>would also work well for this but would require a little extra work on the implementation side.<\/p>\n<h2 style=\"font-size: 150%; font-weight: bold; margin-top: 40px;\">Gunshots<\/h2>\n<p>Our gunshots setup will be much the same as for our ambience, but first we need to:<\/p>\n<ul>\n<li>Create two<strong> Random No Repeat Cues<\/strong>\n<ul>\n<li>Name them \u201cGunshot_Normal\u201d and \u201cGunshot_Slow\u201d<\/li>\n<\/ul>\n<\/li>\n<li>Load appropriate Materials onto each Cue<\/li>\n<\/ul>\n<p>Then we continue with setting up our main Cue which will be used for playback:<\/p>\n<ul>\n<li>Create <strong>Polyphonic Cue<\/strong>\n<ul>\n<li>Name it \u201cGunshot\u201d<\/li>\n<\/ul>\n<\/li>\n<li>Link Gunshot_Normal and Gunshot_Slow Cues onto separate Tracks in Gunshot Cue<\/li>\n<li>Create an AISAC for each Track with the following\n<ul>\n<li>AISAC Name \u2013 \u201cgunshotnormal\u201d and \u201cgunshotslow\u201d as relevant<\/li>\n<li>AISAC Control \u2013 TimeDilation<\/li>\n<li>AISAC Graph Type \u2013 Volume<\/li>\n<\/ul>\n<\/li>\n<li>Create linear curves for each, laid out as below (ensuring the Gunshot_Normal linked Cue has a Destination Value of 1 when AISAC Value is 0)<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/2020-07-22-12_29_24-CRI-Atom-Craft-Ver.3.43.09-built-on-Mar-24-2020.png\" alt=\"2020-07-22 12_29_24-CRI Atom Craft Ver.3.43.09 (built on Mar 24 2020)\" width=\"812\" height=\"472\" class=\"alignnone size-full wp-image-3021\" srcset=\"https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/2020-07-22-12_29_24-CRI-Atom-Craft-Ver.3.43.09-built-on-Mar-24-2020.png 812w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/2020-07-22-12_29_24-CRI-Atom-Craft-Ver.3.43.09-built-on-Mar-24-2020-300x174.png 300w, https:\/\/blog.criware.com\/wp-content\/uploads\/2020\/07\/2020-07-22-12_29_24-CRI-Atom-Craft-Ver.3.43.09-built-on-Mar-24-2020-768x446.png 768w\" sizes=\"auto, (max-width: 812px) 100vw, 812px\" \/><\/p>\n<p>This whole system can be further tweaked and modified to taste. AISAC curves could control some DSP effects, curve shapes could be finessed and shapes to sound more natural, and pitch shifting could be used in combination in addition to crossfading audio layers. But for now, these settings should give us a solid starting point to work from.<\/p>\n<p>Finally, we can build our CueSheet Binary, ready for importing into our <a href=\"https:\/\/blog.criware.com\/index.php\/2020\/07\/25\/time-dilation-in-ue4-using-criware-ue4-part-2\/\">UE4 project in Part 2<\/u>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction The ability to change the flow of time is a popular mechanic in games. Being able to slow down<\/p>\n","protected":false},"author":2,"featured_media":3008,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[5,7],"tags":[],"class_list":["post-3012","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-adx","category-tutorials"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/3012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/comments?post=3012"}],"version-history":[{"count":12,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/3012\/revisions"}],"predecessor-version":[{"id":3030,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/posts\/3012\/revisions\/3030"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media\/3008"}],"wp:attachment":[{"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/media?parent=3012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/categories?post=3012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.criware.com\/index.php\/wp-json\/wp\/v2\/tags?post=3012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}