Treender
A genetic algorithm visualization tool with interactive evolution simulation.
Overview
Treender is a C++ application that simulates genetic algorithms through an interactive visual interface. Users can observe and influence the evolution of digital organisms represented as visual patterns.
Features
- Interactive Evolution: Like/dislike organisms to guide evolution
- Genetic Algorithm: DNA-based reproduction with mutation
- Visual Representation: Organisms displayed as colorful patterns
- Client-Server Architecture: Separate app and server components
- Cross-Platform: Supports Web, Android, and Desktop platforms
Architecture
Treender
├── app/ # Main application (Raylib + Dear ImGui)
├── server/ # TCP server for data management
├── shared/ # Shared code (DNA logic, networking)
├── external/ # Third-party libraries
└── data.db # SQLite database
Components
Application
- Main Entry:
app/src/main.cpp - Core Class:
Appclass handles rendering, input, and evolution logic - Visualization: Uses Raylib for graphics and Dear ImGui for UI
Server
- TCP Server: Handles client connections and data persistence
- Database: SQLite for storing organism data and user preferences
- Block Management: Tracks warnings and blocked organisms
Shared Library
- DNA System: Genetic algorithm implementation (
Dna.cpp) - Networking: TCP socket communication
- Data Structures: Shared between app and server
Building
Prerequisites
- CMake 3.10+
- C++17 compiler
- Raylib
- Dear ImGui
- SQLite3
Build Instructions
mkdir build
cd build
cmake ..
make
Running
- Start the server:
./build/server
- Run the application:
./build/app
Usage
- Like/Disike: Click on organisms to influence evolution
- Rotation: Drag to rotate the view
- Statistics: View similarity scores and generation information
Database
The application uses SQLite database (data.db) to store:
- Organism DNA data
- User preferences
- Blocked/warned organisms
Screenshots
Description
Languages
C++
84.7%
C
14.2%
CMake
1.1%

