GameMaker Studio 2

Fluid Dynamics - GM Studio 2


Contact Publisher


This is the GM Studio 2 version of Fluid Dynamics. Click here for the GM Studio 1 version.

The video and screenshots are from the GM Studio 1 version of this asset. The GM Studio 2 version's fluid has a slightly different behavior. You can download and run the demo below to see the fluid behavior of the GM Studio 2 version.

Click here to download a demo

Forum thread

This asset provides you with realistic fluid simulation and visualization for your games. It includes a guide, a well-commented example, and documentation for each script making it easy to implement it into your game. The physics and visualization are done with shaders, making the fluid simulation very fast. The asset is highly customizable, letting you tweak the fluids extensively. It can be used to simulate fire, smoke, gas, dye, dust, wind, water droplets, cloud formation, and much more. Development and testing has only been done with the windows VM target and the windows YYC target, you might run into problems if you use this asset with other targets.


  • Can simulate fire, smoke, gas, dye, dust, wind, water droplets, cloud formation, and much more.
  • Using new mathematics from 2014 making fluid simulation faster than ever before.
  • Instances can be pushed around by the velocity field of the simulation.
  • Custom collision masks from sprites and surfaces.
  • Can be tweaked to imitate versions of explosions and tornadoes.
  • 9 different example implementations of fluids.
  • Can be used in small, large and infinite game worlds.
  • Everything is highly customizable, built on top of a fundamental fluid simulation.
  • Custom shaders.
  • A guide for implementation.
  • Commented and organized code.
  • Fast and optimized, made with efficiency in mind.
  • Custom time step.
  • Customizable acceleration equation.
  • Optional dissipation of fluid velocity and material.
  • All in GML and GLSL ES.

End User Licence Agreement (EULA).

Changes in 1.0.4

Fixed a bug in the internal fd_x and fd_y scripts.

Version 1.0.4. Published February 9, 2018

Age Rating: 4+

Average Rating

Your review

You can only review assets you've bought.


Samuel S 28 January 2018

Really Great

Works a little like the GM Particle system but for fluid dynamics. It's a little more complicated, so you'll have to spend some time working with it to understand how everything fits together, but overall pretty amazing.

I wish the GMS 2 port had been a little better documented and especially that they had modified the scripts to support GMS 2 notation (e.g. @description and @param instead) but this is a minor complaint. Trial and error and a little extra work solves all of the problems I have had so far.

This review was left for a previous version of this asset.


Spencer Y 13 October 2017

This review was left for a previous version of this asset.


Anonymous 03 October 2017

This review was left for a previous version of this asset.


Jon H 09 September 2017

This review was left for a previous version of this asset.


Anonymous 07 September 2017

This review was left for a previous version of this asset.


sean m 25 August 2017

This review was left for a previous version of this asset.


Indie L 19 August 2017

This review was left for a previous version of this asset.

Package contents

Total size 154 KB

assetpackage.yy 45.1 KB extensions fonts objects rooms scripts
@draw_background_stretched @draw_enable_alphablend @draw_set_blend_mode @draw_set_blend_mode_ext @instance_create @object_get_depth @texture_set_interpolation @texture_set_repeat @__background_get @__background_get_element @__background_get_internal @__background_set_element @__global_object_depths @__init_background @__init_global @__init_view @__view_get fd_draw_self_to_collision_mask_surface fd_draw_sprite_to_collision_mask_surface fd_draw_surface_to_collision_mask_surface fd_GUIDE fd_README fd_rectangle_add_material fd_rectangle_add_velocity fd_rectangle_assure_surfaces_exist fd_rectangle_clear fd_rectangle_create fd_rectangle_create_view fd_rectangle_destroy fd_rectangle_draw fd_rectangle_draw_part fd_rectangle_draw_stretched fd_rectangle_draw_view fd_rectangle_enums fd_rectangle_get_acceleration_a fd_rectangle_get_acceleration_b fd_rectangle_get_acceleration_x fd_rectangle_get_acceleration_y fd_rectangle_get_collision_mask_sprite fd_rectangle_get_collision_mask_sprite_image fd_rectangle_get_collision_mask_surface fd_rectangle_get_initial_value_pressure fd_rectangle_get_material_dissipation_type fd_rectangle_get_material_dissipation_value fd_rectangle_get_material_height fd_rectangle_get_material_maccormack_weight fd_rectangle_get_material_surface fd_rectangle_get_material_time_step fd_rectangle_get_material_type fd_rectangle_get_material_width fd_rectangle_get_pressure_height fd_rectangle_get_pressure_iteration_type fd_rectangle_get_pressure_width fd_rectangle_get_repeat fd_rectangle_get_velocity_dissipation_type fd_rectangle_get_velocity_dissipation_value fd_rectangle_get_velocity_height fd_rectangle_get_velocity_maccormack_weight fd_rectangle_get_velocity_surface fd_rectangle_get_velocity_time_step fd_rectangle_get_velocity_width fd_rectangle_get_visualization_shader fd_rectangle_inherit_velocity fd_rectangle_material_surface_was_created fd_rectangle_replace_material fd_rectangle_replace_material_advanced fd_rectangle_replace_velocity fd_rectangle_reset_target fd_rectangle_set_acceleration fd_rectangle_set_collision_mask_sprite fd_rectangle_set_collision_mask_surface fd_rectangle_set_initial_value_pressure fd_rectangle_set_material_dissipation_type fd_rectangle_set_material_dissipation_value fd_rectangle_set_material_maccormack_weight fd_rectangle_set_material_size fd_rectangle_set_material_time_step fd_rectangle_set_material_type fd_rectangle_set_pressure_iteration_type fd_rectangle_set_pressure_size fd_rectangle_set_repeat fd_rectangle_set_target fd_rectangle_set_velocity_dissipation_type fd_rectangle_set_velocity_dissipation_value fd_rectangle_set_velocity_maccormack_weight fd_rectangle_set_velocity_size fd_rectangle_set_velocity_time_step fd_rectangle_set_visualization_shader fd_rectangle_shift_content fd_rectangle_update fd_rectangle_update_material fd_rectangle_update_velocity fd_rectangle_update_view fd_x fd_y
sh_fd_add_velocity_glsl sh_fd_advect_material_a_16_glsl sh_fd_advect_material_a_8_glsl sh_fd_advect_material_rgba_16_glsl sh_fd_advect_material_rgba_8_glsl sh_fd_advect_velocity_0_glsl sh_fd_advect_velocity_1_glsl sh_fd_calculate_pressure_jacobi_glsl sh_fd_calculate_pressure_srj_glsl sh_fd_calculate_velocity_divergence_glsl sh_fd_example_create_acceleration_field sh_fd_replace_material_advanced_glsl sh_fd_subtract_pressure_gradient_glsl sh_fd_visualize_colorize_glsl sh_fd_visualize_pixel_art_fiery_smoke_glsl sh_fd_visualize_pixel_art_fire_glsl sh_fd_visualize_pressure_glsl sh_fd_visualize_thick_smoke_glsl sh_fd_visualize_velocity_divergence_glsl sh_fd_visualize_velocity_glsl
bg_fd_example_gui_background bg_fd_example_world_background_0 bg_fd_example_world_background_1 bg_fd_example_world_background_2 bg_fd_example_world_background_3 bg_fd_example_world_foreground_0 bg_fd_example_world_foreground_1 bg_fd_example_world_foreground_2 spr_fd_example_button_change_room spr_fd_example_button_dissipation_type spr_fd_example_circle_gradient spr_fd_example_circle_gradient_large spr_fd_example_circle_gradient_small spr_fd_example_dropdown spr_fd_example_fluid_collision_mask_big spr_fd_example_fluid_collision_mask_normal spr_fd_example_initial_material spr_fd_example_leaf spr_fd_example_slider spr_fd_example_text spr_fd_example_toggle_box

What is the issue?

Back to Top