#+title: Notes * Digital rain ** DONE Slowly increasing amount of "worms" ** DONE Add speed optimization for release version ** DONE try color gradient ** DONE better gradient (from shades of green) ** DONE somehow need to slower rotation of worms characters ** DONE different first character rotation for worms ** DONE calculate average fps, print it after execution ** DONE raname Matrix to DigitalRain ** DONE rename charworm into raindrops ** DONE remove ndarray from digital rain ** DONE rain drop should return list of characters with colors ** DONE even better gradient (2 steps from white to dark gray) ** DONE move "map" (with position of worms with worm_id) into separate module, map completely removed ** DONE builder pattern for rain drops ** DONE store options as MatrixOptions ** DONE keep fps stable and above some value - 20, 30, 60? ** DONE inconsistency between buffer.rs coordinates and crossterm screen started from 1, 1 ** TODO zbuffer for different worm positions ** TODO general interface to run screen-savers ** TODO make drops sometimes fade away ** TODO match gradient calculation with body length ** TODO update screen size (h/w) during execution (currently doesn't track it) ** TODO still something strange with coordinates, looks like there are no drops when y = 0 ** DONE fix digital rain benchmarks ** DONE derive_builder for DigitalRainOptions * Convay's Life ** basic implementation - [X] data structure - [X] rules - [X] initial state * https://en.wikipedia.org/wiki/Schelling%27s_model_of_segregation * Optimizations ** DONE fx in RainDrop could be u16 or usize ** DONE clamp coordinates to make sure they fit the screen ** DONE update crossterm ** DONE SPEED_RANGE as interval type ** DONE implement buffer to keep only differences ** DONE need to minimize amount of clean cells commands on next frame not all cell should be cleaned