• v2.4.0 a43c3fc5d1

    v2.4.0 Stable

    JailDesigner released this 2026-05-19 21:06:20 +02:00 | 5 commits to main since this release

    v2.4.0

    Novetats principals

    • Migració a temps real (time-based). Tot el joc ja no depèn d'una cadència fixa de 60 frames per segon: els moviments, les animacions, les fades, els temporitzadors i els comptadors es calculen a partir del temps real transcorregut entre frames (dt_s). Això corregeix l'acceleració del jugador i les animacions en monitors de 144 Hz, i prepara el joc per a qualsevol freqüència de refresc. El refactor s'ha fet entitat per entitat (Bullet, Item, Player, Balloon) i, finalment, al motor principal Game.
    • Demo multi-set. El sistema de demo s'ha portat al patró time-based de Coffee Crisis Arcade Edition: 3 fitxers de demo distints (demo1.bin, demo2.bin, demo3.bin) es trien aleatòriament en cada execució, l'índex es calcula a partir del temps acumulat i el playback és immune a salts de frames. En saltar-la amb una tecla es torna correctament al títol amb el menú visible.
    • Modes de presentació del canvas. Nou cicle de presentació de la imatge a la finestra: integer_scale (escalat enter), letterbox (manté l'aspect ratio amb barres negres), stretched (omple la finestra deformant) i overscan (omple la finestra retallant). El valor antic integer_scale del config es migra automàticament.

    Hotkeys (notificacions visibles a la part superior del canvas)

    Tecla Acció
    F1 / F2 Reduir / augmentar el zoom de la finestra
    F3 Alternar pantalla completa
    F4 Activar/desactivar post-procesat (shaders)
    F5 Alternar entre shader PostFX i CrtPi
    F6 Següent preset del shader actiu
    F7 Activar/desactivar V-Sync
    F8 Cicla el mode de presentació (integer_scale → letterbox → stretched → overscan)
    F10 Mostrar/amagar comptador de FPS (cantonada superior dreta)
    F11 Mostrar nom de l'app + versió + hash de git
    F12 Pausa
    ESC Eixir (doble pulsació per confirmar)
    BACKSPACE Cancel·lar a menús

    Les notificacions tenen ara una paleta semàntica (informació, toggle, confirmació, èxit, perill) i un color més saturat (a mig camí entre pastel i color pur).

    Millores

    • Cap tecla de funció ni ESC fa "saltar" cap secció. Logo, intro, instruccions, títol i demo només es passen amb tecles humanes (Enter, disparar, moviment, botons de gamepad) — les F1–F12 i ESC es reserven íntegrament per als hotkeys globals.
    • Notificacions en mode overscan. Quan el mode overscan retalla la franja superior del canvas segons l'aspect ratio de la finestra, les notificacions i el comptador de FPS es desplacen automàticament a la primera fila visible.
    • Versió única de l'aplicació. La cadena de versió ja només viu a source/utils/defines.hpp; CMake l'extreu via regex per al projecte i el Makefile l'usa per als noms dels release. F11 mostra Coffee Crisis v2.4.0 (<git_hash>).
    • Comptador de FPS dibuixat a la part superior dreta en verd, recalcat cada segon de temps real.
    • Confirmació d'eixida (ESC × 2) amb finestra visual de confirmació en roig.
    • Pausa amb compte enrere configurable (gameplay.pause_countdown a config.yaml).
    • Zoom màxim de la finestra detectat automàticament segons la resolució del display.
    • Paquet de recursos més robust: resources.pack localitzat via SDL_GetBasePath amb fallback al filesystem.
    • Build estandarditzada: llista explícita de fonts en lloc de GLOB_RECURSE, -Wextra -Wpedantic activats i warnings netejats.
    • pre-commit hooks per clang-format, clang-tidy i cppcheck.

    Correccions de bugs

    • Demo congelada en obrir-se per culpa d'un doble DeltaTime::tick() al títol (Game rebia dt ≈ 0).
    • Salt visual al fons diagonal del títol per posició inicial no ancorada al cicle de tile.
    • Rotació de la PowerBall perduda en passar per Game::startAllBalloons després del rellotge.
    • Pausa que es disparava amb el flanc residual de CANCEL/EXIT en entrar al menú.
    • Animació del jugador accelerada en monitors de 144 Hz (no propagava dt_s als sprites).
    • Sub-bucles aniats de pausa, game over, instruccions i demo aplanats a un únic loop SDL3.
    • WASM/Emscripten: reset en fer "exit", eliminades les opcions d'eixida, fix de fullscreen, mode integer_scale=false per defecte.
    • Windows: parsers de text amb finals de línia CRLF, headers SPV del PostFX regenerats.
    • pack_resources anava a la rel en comptes de build/.

    Canvis interns destacats

    • Pipeline SDL3 GPU + fallback SDL_Renderer: shaders PostFX i CrtPi (Vulkan/Metal/D3D12), presets persistents en YAML, scanlines analítiques sense supersampling.
    • Sistema d'opcions modern: tot a config.yaml amb fkyaml; postfx.yaml i crtpi.yaml per als presets.
    • Sistema d'àudio nou (Ja:: namespace, streaming d'OGG, tipus sense prefix JA_).
    • API SDL3 Callbacks (SDL_AppInit/Iterate/Event/Quit).
    • Migració a enum class per a Input::Action, Input::Device, Input::Repeat, Input::Disable, Fade::Type i Bullet::Kind.
    • Convencions CamelCase aplicades a tipus que encara duien _t/_e o eren niats sense format.
    • Singletons (Lang, Audio, Input, Resource) i sistema de loaders de recursos.
    • Migració d'estructura a source/core/{audio,input,locale,rendering,resources,system}/ i source/game/{entities,scenes,ui}/.
    • Generació automàtica de version.h amb el hash curt de git.
    • clang-format i clang-tidy unificats amb la resta de projectes germans.
    Downloads