El sistema de agua de Starbound es en realidad autómatas celulares basados en mosaicos 2D. Cada mosaico en la pantalla que no contiene una capa de mosaico frontal, es capaz de retener agua. La cantidad de agua se calcula mediante autómatas celulares.
Más información sobre esta técnica aquí:
http://www.gamasutra.com/view/feature/134736/an_intro_to_cellular_automation.php
http://www.jgallant.com/2d-liquid-simulator-with-cellular-automaton-in-unity/
En cuanto a las gotas de lluvia, esas son partículas. Sirven principalmente para fingir que en realidad hay agua que cae del cielo. El agua se acumula solo porque el juego sabe que actualmente está lloviendo. Las gotas individuales no tienen nada que ver con la formación real de las piscinas de agua.
La forma en que se acumulan es determinando dónde hay agujeros en la capa superior del suelo. Si hay un área que puede acumular agua, las células en esa área incrementan sus niveles de agua en consecuencia.
Starbound también se ocupa de la presión del agua, y su técnica de renderizado es bastante sorprendente. Tienen la mejor implementación 2D de la física de simulaciones de agua usando autómatas celulares que he visto.
Aquí hay una vista primitiva de un motor de física de líquidos, utilizando la técnica de autómatas celulares mencionada anteriormente. La parte de representación se vuelve un poco más compleja, ya que su agua está representada por un valor numérico.
http://www.jgallant.com/images/pressuretest.gif
En este ejemplo, una mejora muy simple sería ocultar las celdas de agua que tienen menos de 1 unidad completa de agua en su mosaico si no hay un mosaico sólido debajo. Pero entonces, estás ocultando el flujo de agua. En lugar de ocultarlo, tendrías que determinar cómo fluye el agua y luego dibujar el sprite de agua apropiado en su lugar.