• JailDesigner released this 2025-10-25 11:05:33 +02:00 | 0 commits to main since this release

    ViBe3 Physics - Versió 1.0.0

    Data de llançament: 2025-10-25

    Primer llançament oficial de ViBe3 Physics, un simulador experimental de sprites amb física avançada i efectes demoscene. Implementa un sistema de delta-time independent del framerate amb renderitzat optimitzat per a fins a 50.000 sprites simultanis.


    Millores visuals per al jugador

    • 15 temes visuals organitzats en 2 pàgines: 9 temes estàtics (ATARDECER, OCÉANO, NEÓN, BOSQUE, RGB, MONOCROMO, LAVANDA, CARMESÍ, ESMERALDA) + 6 temes dinàmics amb animacions en temps real (AMANECER, OLAS OCEÁNICAS, PULSO NEÓN, FUEGO, AURORA, VOLCÁN). Sistema de transicions LERP suaus de 0.5 segons entre temes.

    • 9 figures 3D interactives amb física spring-damper:

      • SPHERE: Esfera Fibonacci amb rotació dual
      • CUBE: Cub rotatiu amb distribució intel·ligent (vèrtexs, cares, grid volumètric)
      • HELIX: Espiral helicoïdal tipus ADN
      • TORUS: Toroide/donut amb rotació triple eix
      • LISSAJOUS: Corba paramètrica 3D ondulant
      • CYLINDER: Cilindre rotatiu estil columna grega
      • ICOSAHEDRON: Poliedre D20 amb proporció àurea
      • ATOM: Nucli + 3 òrbites electròniques animades
      • PNG_SHAPE: Logo 3D extruït des de PNG 1-bit (15 capes de profunditat)
    • Mode BOIDS: Comportament d'eixam emergent amb 3 regles de Reynolds (separació, alineació, cohesió). Bordes com a obstacles i física independent del framerate.

    • 4 modes d'aplicació mutuament excloents:

      • SANDBOX: Control manual complet (mode per defecte)
      • DEMO: Auto-play complet amb aleatorització de física, temes i escenaris
      • DEMO_LITE: Auto-play només física (gravetat, shapes, impuls)
      • LOGO: Easter egg amb logo 3D animat (mínim 500 pilotes)
    • Sistema de logo periòdic animat (AppLogo): Logo dual amb 4 tipus d'animació aleatòria (ZOOM_ONLY, ELASTIC_STICK, ROTATE_SPIRAL, BOUNCE_SQUASH). Apareix cada 5 segons amb fade in/out de 2 segons.

    • Gravetat multidireccional: UP/DOWN/LEFT/RIGHT amb detecció de superfície intel·ligent i impuls direccional adaptatiu.

    • Controls dinàmics en temps real:

      • V-Sync: Toggle ON/OFF amb tecla V
      • Fullscreen: Letterbox (F3) i natiu (F4) amb escalat INTEGER/LETTERBOX/STRETCH
      • Zoom de finestra: F1/F2 per reduir/augmentar zoom
      • Hot-swap de sprites: Canvi dinàmic de textura (tiny/small/normal/big) sense reiniciar física
      • 8 escenaris: Des de 10 fins a 50.000 pilotes (tecles 1-8)
    • Sistema de notificacions temporals: Notificacions superiors centrades amb animació slide + fade (2 segons de duració). Colors de fons temàtics amb transicions LERP.

    • Display de debug complet (tecla H): FPS en temps real, estat V-Sync, valors de física (gravetat, velocitat, superfície, rebots), direcció de gravetat, tema actiu i mode de simulació.

    • Zoom per profunditat 3D: Perspectiva simulada amb variació de mida segons eix Z (50%-150%) i modulació de color (fosc=fons, brillant=front). Sistema Z-sorting amb Painter's Algorithm per a oclusió correcta.

    • Escala manual de figures 3D: Control dinàmic amb Numpad +/- (30%-300%) i reset amb Numpad *.


    ⚙️ Canvis tècnics i millores internes

    • Migració completa a delta-time: Tot el motor del joc ara funciona amb temps real en lloc de frames. Conversió de unitats: velocitat ×60 (px/s), gravetat ×3600 (px/s²). Velocitat consistent entre 60Hz, 75Hz, 144Hz+ amb V-Sync independent.

    • Batch rendering amb SDL_RenderGeometry: Optimització massiva amb una sola cridada de renderitzat per frame. Rendiment aconseguit: >75 FPS amb 50.000 pilotes (millora del 750% respecte a renderitzat individual). Suport per a fins a 100.000 sprites fluids.

    • Sistema de temes unificat amb transicions LERP:

      • Classe base Theme amb interfície polimòrfica
      • StaticTheme: Paletes fixes de 8-24 colors
      • DynamicTheme: Sistema de keyframes amb interpolació temporal
      • Transicions suaus de 0.5 segons sense pèrdua d'estat (física, posicions, velocitats)
      • Fons degradats amb 2 colors interpolats verticalment
    • Arquitectura polimòrfica per a figures 3D:

      • Classe abstracta Shape amb interfície getTargetPosition()
      • 9 implementacions concretes amb algoritmes específics (Fibonacci Sphere, toroide paramètric, corba Lissajous, etc.)
      • Física compartida spring-damper (Llei de Hooke) amb amortiguació adaptativa
      • Sistema de protecció contra clipping amb límits automàtics segons resolució
    • Optimització BOIDS amb Spatial Hash Grid: Reducció de complexitat O(n²) → O(n) per a càlcul de veïns. Grid espacial amb cel·les dinàmiques que s'ajusten al nombre de boids. Sistema time-based completament independent del framerate.

    • Sistema de recursos empaquetats:

      • Eina pack_resources per crear resources.pack (format binari amb header + offset table)
      • Classe ResourceManager centralitzada per gestió de textures i fonts
      • Fallback automàtic a carpeta data/ si no existeix pack
      • Suport per a Windows (DLL), macOS (Bundle) i Linux
    • Paràmetres CLI amb validació intel·ligent:

      • -w/--width, -h/--height: Resolució personalitzada (mínim 320x240)
      • -z/--zoom: Zoom de finestra amb validació segons pantalla disponible
      • -f/--fullscreen: Fullscreen letterbox (F3)
      • -F/--real-fullscreen: Fullscreen natiu (F4)
      • -m/--mode: Mode inicial (sandbox/demo/demo-lite/logo)
    • Migració a SDL3 amb SDL_TTF:

      • Eliminat sistema dbgtxt (bitmap font)
      • Implementat TextRenderer amb SDL_TTF i TrueType fonts
      • Escalat dinàmic de fonts segons resolució física de finestra
      • Renderització a textura amb caché per a millor rendiment
    • Arquitectura component-based amb separació de responsabilitats:

      • Engine: Bucle principal (delta time, update, events, render)
      • SceneManager: Gestió de pilotes i escenaris
      • ShapeManager: Gestió de figures 3D amb polimorfisme
      • BoidManager: Comportament d'eixam amb Spatial Hash Grid
      • StateManager: Control de modes (DEMO/LOGO/SANDBOX/DEMO_LITE)
      • ThemeManager: Temes i transicions LERP
      • UIManager: HUD, FPS, debug, notificacions
      • InputHandler: Processament de teclat i esdeveniments SDL
      • AppLogo: Sistema de logo periòdic amb animacions
    • Sistema de pre-escalat de logos amb stb_image_resize2: 2 versions (base + resolució nativa) per a qualitat òptima en qualsevol resolució.

    • Smart pointers i RAII: Gestió automàtica de memòria amb unique_ptr i shared_ptr. Recursos SDL (window, renderer, textures) amb RAII complet.

    • Suport multiplataforma: Windows (MinGW + MSVC), Linux (GCC/Clang), macOS amb configuració CMake i Makefile. Icona del projecte integrada en executables Windows (.res).


    ViBe3 Physics - Projecte experimental de vibe-coding amb física avançada i efectes demoscene

    Desenvolupat per JailDesigner - 2025

    Downloads