Il sistema idrico di Starbound è in realtà automi cellulari basati su piastrelle 2D. Ogni piastrella sullo schermo che non contiene uno strato di piastrella frontale, è in grado di trattenere l'acqua. La quantità di acqua viene calcolata tramite automi cellulari.
Maggiori informazioni su questa tecnica qui:
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/
Per quanto riguarda le gocce di pioggia, quelle sono particelle. Servono principalmente a fingere che in realtà ci sia acqua che cade dal cielo. L'acqua si accumula solo perché il gioco sa che sta piovendo. Le singole gocce non hanno nulla a che fare con l'effettiva formazione delle pozze d'acqua.
Il modo in cui riescono ad accumularsi, è determinando dove ci sono buchi nello strato superiore del terreno. Se esiste un'area che può accumulare acqua, le celle in quell'area aumentano di conseguenza i loro livelli d'acqua.
Starbound si occupa anche della pressione dell'acqua e la loro tecnica di rendering è piuttosto sorprendente. Hanno la migliore implementazione 2D della fisica delle simulazioni dell'acqua usando automi cellulari che io abbia mai visto.
Ecco una visione primitiva di un motore fisico liquido, che utilizza la tecnica degli automi cellulari sopra menzionata. La porzione di rendering diventa un po 'più complessa, poiché l'acqua è rappresentata da un valore numerico.
http://www.jgallant.com/images/pressuretest.gif
In questo esempio, un miglioramento molto semplice sarebbe quello di nascondere le celle d'acqua che hanno meno di 1 unità piena d'acqua nella sua tessera se non ci sono tessere solide sotto di essa. Ma poi stai nascondendo il flusso d'acqua. Invece di nasconderlo, dovresti determinare come scorre l'acqua, quindi disegnare lo sprite d'acqua appropriato al suo posto.