91 lines
2.2 KiB
Markdown
91 lines
2.2 KiB
Markdown
# 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
|
|
|
|

|
|

|