https://github.com/phmatray/lenia
A high-performance, real-time implementation of Lenia - a fascinating continuous cellular automaton that creates complex, lifelike patterns. Built with Blazor WebAssembly and MudBlazor for a modern, interactive web experience.
https://github.com/phmatray/lenia
Last synced: 6 months ago
JSON representation
A high-performance, real-time implementation of Lenia - a fascinating continuous cellular automaton that creates complex, lifelike patterns. Built with Blazor WebAssembly and MudBlazor for a modern, interactive web experience.
- Host: GitHub
- URL: https://github.com/phmatray/lenia
- Owner: phmatray
- License: mit
- Created: 2025-05-28T21:03:20.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-05-28T22:32:01.000Z (8 months ago)
- Last Synced: 2025-06-06T10:46:44.728Z (7 months ago)
- Language: C#
- Size: 10.7 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# ๐งฌ Lenia - Artificial Life Simulation
[](https://dotnet.microsoft.com/download/dotnet/9.0)
[](https://blazor.net/)
[](https://mudblazor.com/)
[](LICENSE)
A high-performance, real-time implementation of **Lenia** - a fascinating continuous cellular automaton that creates complex, lifelike patterns. Built with Blazor WebAssembly and MudBlazor for a modern, interactive web experience.

## โจ Features
### ๐ High-Performance Engine
- **60 FPS Target**: Optimized for smooth real-time simulation
- **Adaptive Quality**: Automatically adjusts processing quality to maintain performance
- **Multi-threaded Processing**: Utilizes all CPU cores for maximum speed
- **Scalable Grid**: Dynamic grid sizing from 24ร24 to 128ร128
- **Memory Optimized**: Efficient algorithms with minimal allocations
### ๐จ Modern UI
- **Dark Theme**: Professional dark interface with custom purple accent
- **Real-time Metrics**: Live FPS, update time, and render time monitoring
- **Responsive Design**: Works beautifully on desktop and mobile
- **Material Design**: Clean, intuitive interface using MudBlazor components
- **Interactive Controls**: Sliders, buttons, and toggles for all parameters
### ๐งช Scientific Accuracy
- **Authentic Lenia Mathematics**: Implements the original Lenia formulas
- **Configurable Physics**: Adjust radius (R), time step (ฮt), growth parameters (ฮผ, ฯ)
- **Pattern Presets**: Pre-configured Orbium and Geminium patterns
- **Custom Initialization**: Circle patterns and random seeding
## ๐ฎ Demo
Try the live demo: **[Lenia Simulation](https://phmatray.github.io/Lenia/)**
## ๐ ๏ธ Technologies
- **[.NET 9.0](https://dotnet.microsoft.com/)** - Modern, cross-platform framework
- **[Blazor WebAssembly](https://blazor.net/)** - Client-side web UI with C#
- **[MudBlazor](https://mudblazor.com/)** - Material Design component library
- **[JavaScript Interop](https://docs.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability)** - High-performance canvas rendering
## ๐ Getting Started
### Prerequisites
- [.NET 9.0 SDK](https://dotnet.microsoft.com/download/dotnet/9.0)
- A modern web browser (Chrome, Firefox, Safari, Edge)
### Installation
1. **Clone the repository**
```bash
git clone https://github.com/phmatray/lenia.git
cd lenia
```
2. **Restore dependencies**
```bash
dotnet restore
```
3. **Run the application**
```bash
cd Lenia/Lenia
dotnet run
```
4. **Open your browser**
Navigate to `https://localhost:5001` or `http://localhost:5000`
## ๐ฏ Usage
### Basic Controls
- **Play/Pause**: Click the play button in the top bar or main controls
- **Reset**: Clear the grid and start fresh
- **Patterns**: Choose from Circle, Orbium, or Geminium presets
### Physics Parameters
- **Radius (R)**: Neighborhood size for cell interactions (2.0 - 10.0)
- **Time Step (ฮt)**: Simulation speed multiplier (0.01 - 0.5)
- **Growth ฮผ**: Peak of the growth function (0.0 - 0.5)
- **Growth ฯ**: Width of the growth function (0.001 - 0.1)
### Performance Settings
- **Grid Size**: Adjust from 24ร24 to 128ร128 cells
- **Target FPS**: Set desired frame rate (10-120 FPS)
- **Adaptive Quality**: Auto-adjust processing quality for consistent performance
## ๐ฌ About Lenia
Lenia is a continuous cellular automaton discovered by Bert Wang-Chak Chan. Unlike traditional cellular automata (like Conway's Game of Life), Lenia uses:
- **Continuous values** instead of binary states
- **Smooth kernels** for neighborhood calculations
- **Differential equations** for state updates
- **Real-valued time** for fluid evolution
This creates remarkably lifelike behaviors including:
- Self-organization and emergence
- Glider-like moving patterns
- Complex interactions and collisions
- Adaptive and evolutionary dynamics
### Mathematical Foundation
```
Update Rule: A^(t+ฮt)(x) = clip(A^t(x) + ฮt ร G(U^t(x)), 0, 1)
Where:
- A^t(x): Cell state at time t and position x
- U^t(x): Local neighborhood potential
- G(u): Growth function G(u; ฮผ, ฯ) = 2รexp(-((u-ฮผ)/ฯ)ยฒ/2) - 1
- ฮt: Time step size
```
For more details, see the [original paper](https://arxiv.org/abs/1812.05433).
## ๐๏ธ Architecture
```
โโโ Lenia/ # Server-side Blazor Web App
โ โโโ Components/
โ โ โโโ App.razor # Main application shell
โ โโโ Program.cs # Server configuration
โ โโโ Lenia.csproj # Server project file
โ
โโโ Lenia.Client/ # Client-side Blazor WebAssembly
โ โโโ Components/
โ โ โโโ LeniaCanvas.razor # Canvas rendering component
โ โโโ Pages/
โ โ โโโ Home.razor # Main simulation page
โ โโโ Layout/
โ โ โโโ MainLayout.razor # App layout with dark theme
โ โโโ wwwroot/
โ โ โโโ leniaCanvas.js # High-performance canvas rendering
โ โโโ LeniaScalable.cs # Optimized simulation engine
โ โโโ Program.cs # Client configuration
โ โโโ Lenia.Client.csproj # Client project file
โ
โโโ README.md # This file
```
## โก Performance Optimizations
### Simulation Engine
- **Float Precision**: Uses `float` instead of `double` for 2ร memory bandwidth
- **Pre-computed Kernels**: Kernel weights calculated once and cached
- **Parallel Processing**: Multi-threaded updates using `Parallel.For`
- **Chunked Processing**: Large grids processed across multiple frames
- **Adaptive Quality**: Dynamic reduction of processed cells when needed
### Rendering
- **JavaScript Interop**: Direct canvas manipulation for maximum speed
- **ImageData Optimization**: Efficient pixel buffer updates
- **Hardware Scaling**: GPU-accelerated canvas scaling
- **Minimal Allocations**: Reused buffers and optimized memory access
## ๐ค Contributing
Contributions are welcome! Here's how to get started:
1. **Fork the repository**
2. **Create a feature branch**: `git checkout -b feature/amazing-feature`
3. **Make your changes**: Follow the existing code style
4. **Add tests**: Ensure your changes don't break existing functionality
5. **Commit your changes**: `git commit -m 'Add amazing feature'`
6. **Push to the branch**: `git push origin feature/amazing-feature`
7. **Open a Pull Request**: Describe your changes and why they're awesome
### Development Guidelines
- Follow C# coding conventions
- Use MudBlazor components for UI consistency
- Maintain 60 FPS performance target
- Add XML documentation for public APIs
- Include unit tests for new features
## ๐ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## ๐ Acknowledgments
- **Bert Wang-Chak Chan** - Original Lenia research and discovery
- **MudBlazor Team** - Excellent Blazor component library
- **Microsoft** - .NET and Blazor frameworks
- **Blazor Community** - Inspiration and best practices
## ๐ References
- [Lenia - Biology of Artificial Life](https://arxiv.org/abs/1812.05433) - Original paper
- [Lenia and Expanded Universe](https://arxiv.org/abs/2005.03742) - Extended research
- [Bert Chan's YouTube Channel](https://www.youtube.com/c/BertChakovsky) - Lenia demonstrations
- [MudBlazor Documentation](https://mudblazor.com/) - UI component reference
## ๐ Issues & Support
- **Bug Reports**: [GitHub Issues](https://github.com/phmatray/lenia/issues)
- **Feature Requests**: [GitHub Discussions](https://github.com/phmatray/lenia/discussions)
- **Documentation**: [Wiki](https://github.com/phmatray/lenia/wiki)
---
**[โญ Star this repository](https://github.com/phmatray/lenia/stargazers)** if you find it interesting!
Made with โค๏ธ and lots of โ by [Philippe Matray](https://github.com/phmatray)