# 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**: `App` class 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 ```bash mkdir build cd build cmake .. make ``` ## Running 1. Start the server: ```bash ./build/server ``` 2. Run the application: ```bash ./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 ![Treender Screenshot](pictures/treender.png) ![Treender Screenshot](pictures/capture_show_noraml.jpg)