Files
coffee-crisis/CHANGELOG.md
T

5.4 KiB
Raw Blame History

Changelog

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 F1F12 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.