Getting Started With And Liquids
I keep coming back to this one because honestly, most tutorials get it wrong on step three. I've spent enough cycles debugging fluid simulations to know where people trip up, so here's how I approach it now. And Liquids is a library/framework for simulating fluid behavior in interactive applications. It's not the same as a full CFD solver, and trying to use it for engineering-grade accuracy will cause nothing but headaches. Think of it as a visual effects tool, not a physics one. I learned this the hard way when I tried to use it for a hydrodynamics project last year. The viscosity models are baked approximations, not Navier-Stokes solutions. Ended up switching to OpenFOAM for anything where numbers actually matter.
Installation and Setup
The installation path depends on your stack. For web-based projects, you grab the npm package. For Unity, it's a direct asset store import. I mostly work in three.js environments, so that's my setup. That gets you the core. You'll also want the post-processing addon if you're doing real-time rendering. Without it, the output looks flat and you'll spend hours tweaking shaders to compensate. That addon alone saved me probably four hours of work on my last project. Here's the minimum viable setup. Don't overthink the first run. You'll adjust parameters after you see the baseline behavior.
Initialize the renderer with antialiasing turned off during prototyping. Yes, it looks worse, but the frame rate difference between 30fps and 60fps during iteration is the difference between fixing a problem in five minutes or spending an hour wondering why it runs badly. Create the fluid domain. This is where most people make mistakes. The domain size needs to match your scene scale. I worked on a project once where the team used unity units but the domain was configured in meters. The fluid behaved like honey in a swimming pool. Took me two days to notice because everything else in the scene looked fine.
Get the Full Details

Core Configuration
The three parameters that matter most are resolution, viscosity, and surface tension. Everything else is tuning. Resolution is the biggest bottleneck. Going from 128 to 256 grid cells roughly quadruples memory usage. If you're targeting mobile or lower-end GPUs, stay at 128 and accept the visual tradeoff. Viscosity values below 0.01 tend to look unstable unless you increase the time step counter. And Liquids uses a semi-Lagrangian advection scheme, which means higher viscosity at low resolutions can actually look better than low viscosity, counterintuitively. The numerical damping smooths out artifacts that would otherwise show as noise.
Common Pitfall: Boundary Conditions
No-slip boundaries are the default, and they work for containers. But if you're simulating something like a river or an open stream, those boundaries create weird recirculation zones at the edges. I solved this by implementing a custom outflow boundary. It's not built into the standard API, but the source code exposes the boundary handler as overridable. The workaround took about an afternoon. You extend the base FluidDomain class, override the boundary method, and return zero velocity instead of no-slip at the outlet faces. The library doesn't document this well, which is why I'm mentioning it here.
Performance Tuning
Here's what I've found after running these simulations for months. The solver is GPU-bound at high resolutions and CPU-bound at low ones. There's a crossover point around 192x192 grid size on most modern hardware. Below that, the CPU overhead of data transfer between device and host becomes noticeable. Above that, the GPU saturates and you drop frames. Use the profiler that ships with the library. It's basic but it tells you which stage is bottlenecking. Most people skip this and just crank up resolution hoping for better visuals. That just makes it slower without actually improving anything perceptible. Another thing nobody mentions: lighting and shading happen after the fluid solver runs. If your scene has complex lighting, the post-process pass can take longer than the actual simulation. Simple ambient occlusion or baked lighting maps can cut render time by thirty percent without noticeable quality loss.

Realistic Use Cases
This works well for: interactive installations, game VFX, architectural visualization, and prototyping. It falls apart for: anything requiring mass conservation accuracy, multiphase flows with significant density differences, or high Reynolds number turbulence modeling. If you need turbulence at scale, pair And Liquids with a precomputed texture lookup or a separate particle system. I use a hybrid approach where the fluid solver handles the bulk motion and a secondary particle system adds surface detail. The result looks significantly better and runs at the same frame rate because the particles don't feed back into the solver. The official documentation covers the basics adequately. What it doesn't cover is what happens when things go wrong. The community is small but responsive on GitHub. I'd recommend reading the closed issues before opening a new one. Most common problems have been discussed, even if the solutions aren't prominently linked.