Files
treender/Readme.md
2026-04-17 19:25:22 +02:00

2.2 KiB

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

mkdir build
cd build
cmake ..
make

Running

  1. Start the server:
./build/server
  1. 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

Treender Screenshot Treender Screenshot