{"id":874,"date":"2022-04-28T18:43:52","date_gmt":"2022-04-28T18:43:52","guid":{"rendered":"https:\/\/matthew.merinocreations.info\/?post_type=project&#038;p=874"},"modified":"2025-10-13T16:02:31","modified_gmt":"2025-10-13T16:02:31","slug":"innovation-project","status":"publish","type":"project","link":"https:\/\/matthew.merinocreations.info\/?project=innovation-project","title":{"rendered":"4. Innovation Project (UE4)"},"content":{"rendered":"\n[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;6px||4px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_button button_url=&#8221;https:\/\/matthew.merinocreations.info\/#personal-work&#8221; button_text=&#8221;BACK TO PERSONAL WORK&#8221; button_alignment=&#8221;center&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_size=&#8221;20px&#8221; button_text_color=&#8221;#FFFFFF&#8221; button_bg_use_color_gradient=&#8221;on&#8221; button_bg_color_gradient_direction=&#8221;98deg&#8221; button_bg_color_gradient_stops=&#8221;#0f27ff 0%|#0f6fff 100%&#8221; button_bg_color_gradient_start=&#8221;#ea9000&#8243; button_bg_color_gradient_end=&#8221;#ffbf00&#8243; button_border_color=&#8221;#000000&#8243; button_border_radius=&#8221;0px&#8221; button_font=&#8221;Josefin Sans|||||on|||&#8221; button_icon=&#8221;&#x23;||divi||400&#8243; custom_margin=&#8221;|||0px|false|false&#8221; button_text_shadow_style=&#8221;preset5&#8243; box_shadow_style=&#8221;preset1&#8243; box_shadow_blur=&#8221;17px&#8221; box_shadow_color=&#8221;#000000&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_button][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#ea9000&#8243; use_background_color_gradient=&#8221;on&#8221; background_color_gradient_type=&#8221;circular&#8221; background_color_gradient_stops=&#8221;#0004ff 54%|#0059ff 100%&#8221; background_color_gradient_start=&#8221;#ea9000&#8243; background_color_gradient_start_position=&#8221;54%&#8221; background_color_gradient_end=&#8221;#ffbf00&#8243; background_color_gradient_end_position=&#8221;99%&#8221; custom_padding=&#8221;||0px|||&#8221; top_divider_style=&#8221;slant2&#8243; top_divider_color=&#8221;#000000&#8243; top_divider_height=&#8221;60px&#8221; bottom_divider_style=&#8221;slant2&#8243; bottom_divider_color=&#8221;#000000&#8243; bottom_divider_height=&#8221;40px&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;Josefin Sans||||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;78px&#8221; text_letter_spacing=&#8221;4px&#8221; text_orientation=&#8221;center&#8221; custom_margin=&#8221;33px|||||&#8221; custom_padding=&#8221;||53px|||&#8221; text_font_size_tablet=&#8221;65px&#8221; text_font_size_phone=&#8221;50px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; text_letter_spacing_last_edited=&#8221;off|phone&#8221; text_line_height_tablet=&#8221;1.1em&#8221; text_line_height_phone=&#8221;1.1em&#8221; text_line_height_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<p>Innovation Project<\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;||1px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row column_structure=&#8221;1_2,1_2&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;6bf86192-85a4-4f7f-8c0b-4de3aaf980e8&#8243; min_height=&#8221;381px&#8221; custom_padding=&#8221;||2px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;25px&#8221; text_line_height=&#8221;1.6em&#8221; custom_margin=&#8221;||-2px|||&#8221; text_font_size_tablet=&#8221;25px&#8221; text_font_size_phone=&#8221;18px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<p>I worked on this innovation project prototype as part of my senior capstone project for the Simulation and Game Design program at William Peace University. My goal was to answer the design question, &#8220;how could I uniquely blend fast-paced first person shooter action with bullet-time and audio visualization?&#8221;. I was given 8 weeks to realize my vision as much as possible.<\/p>\n<p>Through this project, I was able to bolster my skills in level design and sound design, while also diving deeply into aspects of game development that I had been wanting to improve on: programming, audio visualization, particle systems, and AI.<\/p>\n<p>&nbsp;<\/p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/matthew.merinocreations.info\/wp-content\/uploads\/2025\/10\/InnovationThumbnail01.jpg&#8221; title_text=&#8221;InnovationThumbnail01&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; border_radii=&#8221;on|14px|14px|14px|14px&#8221; border_width_all=&#8221;9px&#8221; border_color_all=&#8221;#0C71C3&#8243; box_shadow_style=&#8221;preset1&#8243; box_shadow_color=&#8221;#000000&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_image][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;0px||2px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;6bf86192-85a4-4f7f-8c0b-4de3aaf980e8&#8243; custom_padding=&#8221;||0px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;74px&#8221; min_height=&#8221;96.4px&#8221; custom_margin=&#8221;||-11px|||&#8221; custom_padding=&#8221;||0px|||&#8221; text_font_size_tablet=&#8221;74px&#8221; text_font_size_phone=&#8221;34px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<p style=\"text-align: center;\">Innovation Project Prototype Gameplay<\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; min_height=&#8221;20px&#8221; custom_padding=&#8221;2px||0px|||&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_divider color=&#8221;#000000&#8243; divider_position=&#8221;center&#8221; divider_weight=&#8221;2px&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; module_alignment=&#8221;center&#8221; custom_margin=&#8221;-6px|||||&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; prev_background_color=&#8221;#ffffff&#8221; next_background_color=&#8221;#ffffff&#8221; _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;default&#8221; use_background_color_gradient=&#8221;on&#8221; background_color_gradient_stops=&#8221;#0e8bea 0%|#9900ff 71%&#8221; background_color_gradient_start=&#8221;#ff7200&#8243; background_color_gradient_end=&#8221;#f9d234&#8243; min_height=&#8221;598px&#8221; min_height_tablet=&#8221;598px&#8221; min_height_phone=&#8221;303px&#8221; min_height_last_edited=&#8221;on|phone&#8221; custom_padding=&#8221;3px||4px|||&#8221; top_divider_style=&#8221;ramp2&#8243; bottom_divider_style=&#8221;slant2&#8243; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; module_alignment=&#8221;center&#8221; custom_padding=&#8221;||0px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_video src=&#8221;https:\/\/www.youtube.com\/watch?v=vi7ZELJ3Xqo&#8221; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_video][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;11px|||||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; min_height=&#8221;20px&#8221; custom_padding=&#8221;2px||0px|||&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_divider color=&#8221;#000000&#8243; divider_position=&#8221;center&#8221; divider_weight=&#8221;2px&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; module_alignment=&#8221;center&#8221; custom_margin=&#8221;-3px|||||&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; prev_background_color=&#8221;#ffffff&#8221; next_background_color=&#8221;#ffffff&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; use_background_color_gradient=&#8221;on&#8221; background_color_gradient_direction=&#8221;90deg&#8221; background_color_gradient_stops=&#8221;#0f02ff 0%|rgba(0,0,0,0) 100%&#8221; background_color_gradient_start=&#8221;#0f02ff&#8221; background_color_gradient_end=&#8221;rgba(0,0,0,0)&#8221; custom_padding=&#8221;4px||4px|||&#8221; top_divider_style=&#8221;wave2&#8243; top_divider_height=&#8221;82px&#8221; bottom_divider_style=&#8221;wave2&#8243; bottom_divider_height=&#8221;37px&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;44px&#8221; min_height=&#8221;62px&#8221; global_colors_info=&#8221;{}&#8221;]<p>The Process&#8230;<\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; min_height=&#8221;156.4px&#8221; custom_padding=&#8221;1px||2px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; min_height=&#8221;141.4px&#8221; custom_margin=&#8221;|auto|-33px|auto||&#8221; custom_padding=&#8221;||0px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;74px&#8221; min_height=&#8221;96.4px&#8221; custom_margin=&#8221;||-11px|||&#8221; custom_padding=&#8221;||0px|||&#8221; text_font_size_tablet=&#8221;74px&#8221; text_font_size_phone=&#8221;46px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<p style=\"text-align: center;\">Sound Design<\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; min_height=&#8221;20px&#8221; custom_padding=&#8221;2px||0px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_divider color=&#8221;#000000&#8243; divider_position=&#8221;center&#8221; divider_weight=&#8221;2px&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; module_alignment=&#8221;center&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;0px|||||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; min_height=&#8221;537.7px&#8221; custom_margin=&#8221;|auto|-25px|auto||&#8221; custom_padding=&#8221;||5px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;25px&#8221; text_line_height=&#8221;1.6em&#8221; custom_margin=&#8221;||-2px|||&#8221; text_font_size_tablet=&#8221;25px&#8221; text_font_size_phone=&#8221;18px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<p>To begin on this project, I knew I wanted to start with crafting the sound of the music since that was going to be central to the feeling of the experience. It was also essential that I nailed down the beats per minute of the music with the pace of the gameplay since I planned on having components of the environment around the player visualize the music.<\/p>\n<p>My design philosophy behind the music in this project was to create different intensities of the same track that correspond to the intensity of the gameplay. I went about this through making three different loops of the same track, each one being a different intensity: low, medium, and high. I had to make sure each loop was seamless, and I also wanted each loop to have unique qualities to it, whether it was a unique bassline, more or less hi-hats, or the incorporation of new layered instruments. I created these loops within FL Studio, which I have a screenshot of below showcasing the high intensity loop.<\/p>\n<p>&nbsp;<\/p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/matthew.merinocreations.info\/wp-content\/uploads\/2025\/10\/FLStudio_HighIntensityLoop.jpg&#8221; title_text=&#8221;FLStudio_HighIntensityLoop&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; height=&#8221;473px&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;25px&#8221; text_line_height=&#8221;1.6em&#8221; custom_margin=&#8221;||-2px|||&#8221; text_font_size_tablet=&#8221;25px&#8221; text_font_size_phone=&#8221;18px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<p>After making the loops, I needed to figure out how to have these loops transition to each other in-game. At first I tried having one track stop and the next track play as the player entered a trigger, but this was abrupt and a bit jarring since the tracks didn&#8217;t keep time with one another. To solve this problem, I incorporated a &#8220;drum fill&#8221; that would play before the next track plays. This way, there is breathing room before the next track starts and it is a smoother transition.<\/p>\n<p>&nbsp;<\/p>[\/et_pb_text][et_pb_video src=&#8221;https:\/\/www.youtube.com\/watch?v=Mu8oqPK4hVY&#8221; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_video][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;25px&#8221; text_line_height=&#8221;1.6em&#8221; custom_margin=&#8221;||-2px|||&#8221; text_font_size_tablet=&#8221;25px&#8221; text_font_size_phone=&#8221;18px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<p>In addition to the music, I also created all the sound effects in the project. I created a dash sound, shoot sound for the enemies, enemy hit and death sounds, a health pickup sound, and a bullet time enter sound effect. I layered many sounds for each sound effect in FL Studio and would use effects such as flanging, phasing, stereo widening, compression, and EQ to bolster the sounds and give them extra dynamics.\u00a0<\/p>\n<p>&nbsp;<\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; min_height=&#8221;20px&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_divider color=&#8221;#000000&#8243; divider_position=&#8221;center&#8221; divider_weight=&#8221;2px&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; module_alignment=&#8221;center&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][et_pb_text _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;74px&#8221; min_height=&#8221;96.4px&#8221; custom_margin=&#8221;||-11px|||&#8221; custom_padding=&#8221;||0px|||&#8221; text_font_size_tablet=&#8221;74px&#8221; text_font_size_phone=&#8221;46px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<p style=\"text-align: center;\">Audio Visualization<\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; min_height=&#8221;20px&#8221; custom_padding=&#8221;2px||0px|||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_divider color=&#8221;#000000&#8243; divider_position=&#8221;center&#8221; divider_weight=&#8221;2px&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; module_alignment=&#8221;center&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; gutter_width=&#8221;2&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;25px&#8221; text_line_height=&#8221;1.6em&#8221; custom_margin=&#8221;||-2px|||&#8221; text_font_size_tablet=&#8221;25px&#8221; text_font_size_phone=&#8221;18px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<p>On this project, one of my goals was to tackle audio visualization in Unreal Engine. I looked up many online resources to figure out the inner workings of audio visualization systems in Unreal. I settled on using Niagara systems to visualize audio, since I discovered how Niagara Module Scripts could be used. I learned that in these scripts, you could drive parameters in a Niagara system with inputs received in this script. I was able to use an &#8220;audio spectrum&#8221; node, which reads the frequency of any given audio, then multiply the particles&#8217; velocity by the amplitude of the audio spectrum. This created varied motion in my Niagara systems that added a lot of visual flair to my project.\u00a0<\/p>\n<p>I also made both vertical and horizontal moving platforms that move to the beat of the music. This requires the player to get in time with the music as well as their surroundings to progress forward.<\/p>\n<p>&nbsp;<\/p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/matthew.merinocreations.info\/wp-content\/uploads\/2025\/10\/AudioVisualizationCode.jpg&#8221; title_text=&#8221;AudioVisualizationCode&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_image][et_pb_video src=&#8221;https:\/\/www.youtube.com\/watch?v=JwFBSII3PyE&#8221; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_video][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; min_height=&#8221;20px&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_divider color=&#8221;#000000&#8243; divider_position=&#8221;center&#8221; divider_weight=&#8221;2px&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; module_alignment=&#8221;center&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; min_height=&#8221;20px&#8221; custom_margin=&#8221;-28px|auto||auto||&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;74px&#8221; min_height=&#8221;96.4px&#8221; custom_margin=&#8221;||-11px|||&#8221; custom_padding=&#8221;||0px|||&#8221; text_font_size_tablet=&#8221;74px&#8221; text_font_size_phone=&#8221;46px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<p style=\"text-align: center;\">Mechanics<\/p>[\/et_pb_text][et_pb_divider color=&#8221;#000000&#8243; divider_position=&#8221;center&#8221; divider_weight=&#8221;2px&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; module_alignment=&#8221;center&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_video src=&#8221;https:\/\/www.youtube.com\/watch?v=4wfCOzgOUrw&#8221; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_video][et_pb_text _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;74px&#8221; min_height=&#8221;96.4px&#8221; custom_margin=&#8221;||-11px|||&#8221; custom_padding=&#8221;||0px|||&#8221; text_font_size_tablet=&#8221;74px&#8221; text_font_size_phone=&#8221;46px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<p style=\"text-align: center;\">Bullet Time<\/p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;25px&#8221; text_line_height=&#8221;1.6em&#8221; custom_margin=&#8221;||-2px|||&#8221; text_font_size_tablet=&#8221;25px&#8221; text_font_size_phone=&#8221;18px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<p>With the bullet time mechanic, I knew I wanted it to feel visceral and big. I started out by using a &#8220;timeline&#8221; node in Unreal and making that node drive the global time dilation. This node also drove the global audio pitch to give the bullet time that gliding downward effect. I also used a sound filter plugin to enable a lowpass filter on the master audio for when bullet time is active. On top of this, I layered my bullet time sound effect when the player enters bullet time. This gave a lot of good game feel to the mechanic. I finally added a post-processing effect that distorts the screen when the player enters bullet time. To achieve this effect, I used a normal map and projected it over the screen with a post processing material. When the player enters bullet time, the distortion map scales up from the center of the screen to the edges. After leaving bullet time it resets back to normal. Below is a screenshot of what the material blueprint looks like for this.\u00a0<\/p>\n<p>&nbsp;<\/p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/matthew.merinocreations.info\/wp-content\/uploads\/2025\/10\/BulletTime_PostProcessingMaterial.jpg&#8221; title_text=&#8221;BulletTime_PostProcessingMaterial&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_image][et_pb_divider color=&#8221;#000000&#8243; divider_position=&#8221;center&#8221; divider_weight=&#8221;2px&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; module_alignment=&#8221;center&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][et_pb_text _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;74px&#8221; min_height=&#8221;96.4px&#8221; custom_margin=&#8221;||-11px|||&#8221; custom_padding=&#8221;||0px|||&#8221; text_font_size_tablet=&#8221;74px&#8221; text_font_size_phone=&#8221;46px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<p style=\"text-align: center;\">Dash<\/p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;25px&#8221; text_line_height=&#8221;1.6em&#8221; custom_margin=&#8221;||-2px|||&#8221; text_font_size_tablet=&#8221;25px&#8221; text_font_size_phone=&#8221;18px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<p>I wanted the dash to be a mechanic that went in tandem with the bullet time mechanic well. It works as a maneuvering ability to get better positioning on enemies. The dash only works on when the player is on the ground. I learned a lot about conditional programming through making these mechanics as I had to use booleans a lot to keep track of certain conditions, such as &#8220;is dashing&#8221;. I also created UI that corresponded to the dash&#8217;s cooldown. Below is the vector art and coding for this mechanic.<\/p>\n<p>&nbsp;<\/p>[\/et_pb_text][et_pb_image src=&#8221;https:\/\/matthew.merinocreations.info\/wp-content\/uploads\/2025\/10\/Innovation_DashSymbolUI_Full01.jpg&#8221; title_text=&#8221;Innovation_DashSymbolUI_Full01&#8243; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; max_width_tablet=&#8221;&#8221; max_width_phone=&#8221;&#8221; max_width_last_edited=&#8221;on|phone&#8221; module_alignment=&#8221;center&#8221; height=&#8221;442px&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_image][et_pb_image src=&#8221;https:\/\/matthew.merinocreations.info\/wp-content\/uploads\/2022\/04\/PlayerBlueprint_DashCode02.jpg&#8221; title_text=&#8221;PlayerBlueprint_DashCode02&#8243; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;][\/et_pb_image][et_pb_divider color=&#8221;#000000&#8243; divider_position=&#8221;center&#8221; divider_weight=&#8221;2px&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; module_alignment=&#8221;center&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][et_pb_text _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;74px&#8221; min_height=&#8221;96.4px&#8221; custom_margin=&#8221;||-11px|||&#8221; custom_padding=&#8221;||0px|||&#8221; text_font_size_tablet=&#8221;74px&#8221; text_font_size_phone=&#8221;46px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;{}&#8221;]<p style=\"text-align: center;\">Level Design<\/p>[\/et_pb_text][et_pb_divider color=&#8221;#000000&#8243; divider_position=&#8221;center&#8221; divider_weight=&#8221;2px&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; width=&#8221;100%&#8221; module_alignment=&#8221;center&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_video src=&#8221;https:\/\/www.youtube.com\/watch?v=7k2IzqQxEkY&#8221; _builder_version=&#8221;4.17.3&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_video][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;a02f871b-c316-4d7d-a16b-1660fe17b8f5&#8243; text_font_size=&#8221;25px&#8221; text_line_height=&#8221;1.6em&#8221; custom_margin=&#8221;||-2px|||&#8221; text_font_size_tablet=&#8221;25px&#8221; text_font_size_phone=&#8221;18px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;]<p>The level I created has 3 combat rooms, each with an increasing amount of enemies. Each combat room also has an increasing amount of obstacles such as moving platforms and rotating fans that will kill the player upon contact. There is a door at the end of each combat room that doesn&#8217;t open until the player has killed all the enemies in the respective combat room. I made sure to give the player enough space to use their dash mechanic, but also have some close quarters areas to incentivize bullet time use. I also placed health pickups in strategic areas of the level to fall in line with where the player may naturally go. To distinguish each combat room, I put a different colored particle system in the center of the rooms. These are the audio visualized Niagara systems I discussed earlier. The music transitions to the next phase when the player goes through the volume box trigger to the next level, then does a lead out transition once the player completes the level.<\/p>\n<p>&nbsp;<\/p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]\n","protected":false},"excerpt":{"rendered":"<p>Innovation ProjectI worked on this innovation project prototype as part of my senior capstone project for the Simulation and Game Design program at William Peace University. My goal was to answer the design question, &#8220;how could I uniquely blend fast-paced first person shooter action with bullet-time and audio visualization?&#8221;. I was given 8 weeks to [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":875,"comment_status":"open","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"project_category":[33],"project_tag":[],"class_list":["post-874","project","type-project","status-publish","has-post-thumbnail","hentry","project_category-personal-work"],"_links":{"self":[{"href":"https:\/\/matthew.merinocreations.info\/index.php?rest_route=\/wp\/v2\/project\/874","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matthew.merinocreations.info\/index.php?rest_route=\/wp\/v2\/project"}],"about":[{"href":"https:\/\/matthew.merinocreations.info\/index.php?rest_route=\/wp\/v2\/types\/project"}],"author":[{"embeddable":true,"href":"https:\/\/matthew.merinocreations.info\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/matthew.merinocreations.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=874"}],"version-history":[{"count":6,"href":"https:\/\/matthew.merinocreations.info\/index.php?rest_route=\/wp\/v2\/project\/874\/revisions"}],"predecessor-version":[{"id":1827,"href":"https:\/\/matthew.merinocreations.info\/index.php?rest_route=\/wp\/v2\/project\/874\/revisions\/1827"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/matthew.merinocreations.info\/index.php?rest_route=\/wp\/v2\/media\/875"}],"wp:attachment":[{"href":"https:\/\/matthew.merinocreations.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=874"}],"wp:term":[{"taxonomy":"project_category","embeddable":true,"href":"https:\/\/matthew.merinocreations.info\/index.php?rest_route=%2Fwp%2Fv2%2Fproject_category&post=874"},{"taxonomy":"project_tag","embeddable":true,"href":"https:\/\/matthew.merinocreations.info\/index.php?rest_route=%2Fwp%2Fv2%2Fproject_tag&post=874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}