Files
Tahgibu/README.md
T
2026-09-29 23:35:03 -03:00

3.2 KiB

Tahgibu 2.0.0

Editor de animación 2D ligero y nativo para Linux. C++ · C · Lua · raylib · CMake. Sin Python.

Estado actual: Etapa 1 (base)

Hecho y verificado:

  • Sistema de compilación con CMake (C, C++, raylib; Lua solo se detecta).
  • Núcleo sin dependencias gráficas (source/core): Frame, Project, límite de 60 FPS, duración real por frame. Con pruebas automáticas.
  • Ventana de raylib con el reparto de zonas: menús, herramientas, canvas, propiedades, timeline.
  • Registro de herramientas (source/editor/Tool.hpp): la barra sale de una tabla.

Todavía no hace nada más que eso:

  • Los menús se dibujan pero no abren nada.
  • Las herramientas se pueden seleccionar (queda resaltada), pero no editan nada.
  • La timeline es un esqueleto vacío (etapa 3).

Dependencias

Necesarias hoy: compilador C++17, CMake >= 3.16 y raylib >= 4.0.

Distro raylib
Arch sudo pacman -S raylib
Fedora sudo dnf install raylib-devel
Debian/Ubuntu libraylib-dev si tu versión lo trae

Si tu distro no la trae, dos opciones:

  1. Compilarla desde https://github.com/raysan5/raylib (en Debian/Ubuntu necesita libasound2-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libxcursor-dev libxinerama-dev libwayland-dev libxkbcommon-dev).
  2. Dejar que CMake la descargue y compile: cmake -S . -B build -DTAHGIBU_FETCH_RAYLIB=ON (requiere red y git).

Lua (liblua5.4-dev en Debian/Ubuntu, lua en Arch, lua-devel en Fedora) no hace falta hasta la etapa 10.

Compilar y ejecutar

cmake -S . -B build
cmake --build build
./build/tahgibu

Solo núcleo + pruebas, sin raylib:

cmake -S . -B build -DTAHGIBU_BUILD_APP=OFF
cmake --build build
ctest --test-dir build --output-on-failure

Estructura

source/
├── main.cpp
├── core/      modelo de datos (sin raylib): Frame, Project, constantes
├── editor/    estado del editor y registro de herramientas
└── ui/        ventana, layout y dibujo con raylib
tests/         pruebas del núcleo

Los .hpp viven junto a su .cpp; source/ es la raíz de includes (#include "core/Project.hpp"). Las carpetas canvas/, timeline/, animation/, project/, media/, export/ y lua/ se crean cuando llega su etapa.

Decisiones de diseño

  • FPS por frame = override opcional. Un frame usa el FPS base del proyecto salvo que tenga FPS propios. Cambiar el FPS base afecta a los frames sin override.
  • Límite 60 FPS aplicado en un único punto (Frame::clampFps) para el base y para cada frame.
  • Mínimo 0.1 FPS (un frame puede durar hasta 10 s) para hacer pausas largas sin duplicar frames. Se cambia en core/Constants.hpp.
  • El FPS de la interfaz (60) es independiente del FPS de la animación.

Limitaciones conocidas

  • El texto usa la fuente por defecto de raylib. Si las tildes salen como ?, hará falta cargar una fuente propia.
  • Esc no cierra la ventana (a propósito, para no perder trabajo); se cierra con el botón de la ventana.

Hoja de ruta

1 Base · 2 Editor · 3 Frames · 4 Sprites · 5 Fondos · 6 FPS · 7 Audio · 8 Vértices · 9 Proyecto · 10 Lua · 11 Exportación