JailDesigner
b1ee23cd20
tweak(stage-messages): missatges level start/completed amb color ambre del PRESS START
2026-05-22 23:02:23 +02:00
JailDesigner
d86b10c14e
tweak(collision): impuls extra a l'enemic en el moment que mata la nau (factor 0.3·mass·vel)
2026-05-22 22:59:27 +02:00
JailDesigner
1ea38d4f6a
fix(ship-death): debris hereten inèrcia (captura velocitat abans del markHit) i comparteixen dispersió amb enemics
2026-05-22 22:47:02 +02:00
JailDesigner
26bd5a9efa
tweak(playfield): el grid principal es dibuixa sobre el subgrid a les interseccions
2026-05-22 22:43:32 +02:00
JailDesigner
4b0d85c010
tweak(palette): colors neon purs per als 3 enemics (cyan/roig/magenta)
2026-05-22 22:39:04 +02:00
JailDesigner
149b485a9b
Merge branch 'tweak/enemy-mix-stage1': ajustos d'enemics (mix stage 1, spawn col·lidible, ull al cuadrado)
2026-05-22 22:34:54 +02:00
JailDesigner
6b1f064cda
tweak(cuadrado): ull amb pupil·la al centre del rombe
2026-05-22 22:34:54 +02:00
JailDesigner
1cef6a2c23
tweak(enemy): durant l'spawn ja poden ser abatuts i rebotar amb la nau (sense fer dany)
2026-05-22 22:27:44 +02:00
JailDesigner
007460dc51
tweak(stages): stage 1 amb mix dels 3 tipus d'enemic (34/33/33)
2026-05-22 22:12:17 +02:00
JailDesigner
10057a82de
tweak(audio): amplifica hit.wav +6dB i puja canals simultanis a 50
2026-05-22 22:09:03 +02:00
JailDesigner
73fa5bf1d1
Merge branch 'tweak/firework-glow': halo neon per a fireworks amb color propi
2026-05-22 21:57:36 +02:00
JailDesigner
c32b564da1
feat(firework): halo neon per partícula amb color de glow propi (explosió enemic: línia blanca + halo daurat)
2026-05-22 21:57:11 +02:00
JailDesigner
7b9b5ce569
Merge branch 'tweak/pentagon-design': halo neon proporcional i pentàgon doble
2026-05-22 21:38:29 +02:00
JailDesigner
f0b3a1fbc4
feat(render): halo neon proporcional al bounding_radius de la shape (opt-out a text)
2026-05-22 21:35:01 +02:00
JailDesigner
869b4374ba
tweak(pentagon): pentàgon doble concentric (interior rotat 36°)
2026-05-22 20:11:29 +02:00
JailDesigner
ea192cd9de
tweak(debug): l'overlay arranca ocult sempre; F11 segueix alternant-lo
2026-05-22 19:53:26 +02:00
JailDesigner
5d30f6be68
Merge branch 'tweak/playfield-grid': ones d'aigua + starfield parallax al fons
2026-05-22 19:52:07 +02:00
JailDesigner
a342d79b86
feat(starfield): mou estrelles amb la mitjana de velocitats de les naus
2026-05-22 19:51:40 +02:00
JailDesigner
1db7368c9f
feat(starfield): capa parallax al fons del playfield amb tint blanc-cyan
2026-05-22 19:46:57 +02:00
JailDesigner
88b002b277
feat(playfield): ones d'aigua a la rejilla per explosions i pas de nau
2026-05-22 19:22:09 +02:00
JailDesigner
044a3a3bbf
tweak(playfield): subdivisions de 5 a 4 a la subgraella
2026-05-22 18:56:24 +02:00
JailDesigner
49070aa843
Merge branch 'fix/bullet-collision-swept': col·lisió bales swept + debris
2026-05-22 18:43:46 +02:00
JailDesigner
18e05e36e6
feat(bullet): debris en trencar-se amb so HIT mogut des d'enemy.herir()
2026-05-22 18:42:23 +02:00
JailDesigner
bf79eecca0
fix(bullet): col·lisió swept, sense grace_timer, mor al border visual
2026-05-22 18:24:54 +02:00
JailDesigner
b80216dce1
Merge branch 'feat/ship-hurt-state': estat HURT a la nau
2026-05-22 17:32:04 +02:00
JailDesigner
87138f9a1f
feat(ship): la nau entra a HURT al xocar amb un enemic, mor en un segon impacte
2026-05-22 17:30:33 +02:00
JailDesigner
c6560514d8
Merge branch 'feat/title-intro-sequence': intro coreografiada al títol
2026-05-22 14:05:57 +02:00
JailDesigner
839f73e1ef
feat(title): intro amb path Z (zoom+pivot al VP) en lloc d'offset Y
...
El logo i el footer ara entren simulant un moviment 3D des de l'usuari
cap al VP: arrenquen grans i a la posició projectada extrema (factor
d'escala SCALE_START > 1, pivot al centre de pantalla) i convergeixen
a la seva mida i posició finals. Substitueix l'offset Y lineal anterior.
2026-05-22 14:03:28 +02:00
JailDesigner
2ca2062011
feat(title): intro coreografiada amb logo, footer i naus escalonats
...
Logo cau des de dalt; quan aterra, JAILGAMES i COPYRIGHT pugen des de
baix amb stagger pam-pam; després arrenquen les naus i, en aterrar
elles, apareix PRESS START. Magic numbers a Defaults::Title::Sequence.
2026-05-22 13:51:09 +02:00
JailDesigner
03209ee23b
Merge branch 'feat/title-neon-palette': paleta neon synthwave a títol
2026-05-22 13:25:18 +02:00
JailDesigner
c61299f17f
feat(title): paleta neon synthwave per element a l'escena de títol
2026-05-22 13:04:11 +02:00
JailDesigner
880af293ef
log: primer missatge 'Game start', últim 'Bye!'
2026-05-22 12:50:53 +02:00
JailDesigner
67c59992c9
Merge branch 'feat/sdl-callbacks': migració a SDL_MAIN_USE_CALLBACKS
2026-05-22 12:48:39 +02:00
JailDesigner
be3d696f60
feat(main): activa SDL_MAIN_USE_CALLBACKS
...
main.cpp queda amb les 4 callbacks de SDL3: AppInit construeix el
Director, AppEvent enruta cada event a handleEvent(), AppIterate crida
iterate(), AppQuit reabsorbeix la propietat amb unique_ptr.
El Director::run() i el bucle while interns desapareixen; el bootstrap
de SDLManager/Audio/Context/DebugOverlay/Notifier viu ara al final del
constructor. SDL_Quit() ja no es crida explícitament — SDL ho fa
després de SDL_AppQuit.
2026-05-22 12:45:12 +02:00
JailDesigner
6b8f6a267d
refactor(director): migra la persistència ConfigYaml al Director
...
main.cpp queda només amb 'Director director(argc, argv); return director.run()'.
El Director crida ConfigYaml::* directament; l'struct ConfigPersistence
desapareix de engine_config.hpp. La separació core/game es relaxa al
Director, que és EL programa, no part del motor.
2026-05-22 12:41:05 +02:00
JailDesigner
120b8ada38
refactor(director): extreu iterate/handleEvent/advanceScene del runFrameLoop
...
run() ara delega a iterate() i handleEvent() per cada frame.
runFrameLoop desapareix; la seva lògica es divideix entre els tres
nous mètodes. La primera escena es construeix lazy via advanceScene()
dins d'iterate(). Cap canvi de comportament visible.
2026-05-22 12:38:16 +02:00
JailDesigner
8bb052981d
refactor(director): locals de run() a membres unique_ptr
...
Preparació per a SDL_MAIN_USE_CALLBACKS: SDLManager, SceneContext,
DebugOverlay i l'escena actual ja viuen com a membres del Director.
El flux de run() és idèntic; només canvia el storage.
2026-05-22 12:35:19 +02:00
JailDesigner
7fc8e48596
Merge branch 'feat/title-3d': escena del títol migrada a 3D real
2026-05-22 12:12:22 +02:00
JailDesigner
ff518195f8
fix(title): comentari trencat per la substitució sed del cleanup
2026-05-22 12:06:48 +02:00
JailDesigner
54d3e683a1
refactor(title): la 3D és l'única — elimina backup 2D i renomena als noms canònics
2026-05-22 12:04:16 +02:00
JailDesigner
a29c2b9cc2
fix(ship-3d): exit convergeix al VP sense travessar-lo (sense creuament entre naus)
2026-05-22 11:57:16 +02:00
JailDesigner
85e7e70767
feat(title-3d): horitzó ampliat (starfield Z=1500, naus exiting travessen el VP)
2026-05-22 11:50:26 +02:00
JailDesigner
3f10c61e22
tweak(ship-3d): SHIP_FLOAT_SCALE a 2.0
2026-05-22 11:40:47 +02:00
JailDesigner
5de9a5003b
tweak(ship-3d): descans més amunt i naus més grans (FLOAT_SCALE 1.5, TARGET_DIST 480)
2026-05-22 11:30:54 +02:00
JailDesigner
d3076fbdec
tweak(ship-3d): descans prop de P-PRESS / Y-PLAY, més mida, pitch +14° lift
2026-05-22 10:20:39 +02:00
JailDesigner
26c6decd74
fix(ship-3d): path únic VP→les7/les5 perquè initial, target i VP siguen col·lineals
2026-05-22 10:06:06 +02:00
JailDesigner
54702a5afe
feat(ship-3d): look-at dinàmic, naus alineades amb el path (punta+cul)
2026-05-22 09:52:14 +02:00
JailDesigner
b45390a8d1
tweak(ship-3d): tornar a extruir amb depth 1.0 (més baixa que 1.5)
2026-05-22 09:48:57 +02:00
JailDesigner
2faa3ede84
tweak(ship-3d): pitch -120° i naus planes (sense extrusió)
2026-05-22 09:39:19 +02:00
JailDesigner
85e1933a83
fix(ship-3d): oscil·lació contínua entre ENTERING i FLOATING (sense salt)
2026-05-22 09:31:28 +02:00
JailDesigner
07788ab3b6
tweak(ship-3d): pitch -108°, Z 90, X 25 (més inclinació, més lluny)
2026-05-22 09:30:39 +02:00
JailDesigner
2ed7463069
tweak(ship-3d): pitch a -100° per inclinar el cul avall i veure el dors
2026-05-22 09:24:53 +02:00
JailDesigner
e533387ce5
fix(title-3d): naus rotades cap al VP, alçada mínima, eix X de càmera corregit
2026-05-22 09:11:26 +02:00
JailDesigner
b654fd0428
feat(title-3d): TitleScene3D, SceneType::TITLE_3D i trigger ORNI_TITLE_3D
2026-05-22 08:22:36 +02:00
JailDesigner
7a3a71e1dc
feat(ship-animator3d): animador 3D de naus per al títol amb extrusió de ship.shp
2026-05-22 08:14:29 +02:00
JailDesigner
8722a46d06
feat(starfield3d): camp d'estrelles 3D amb octaedres rotants cap a càmera
2026-05-22 08:10:52 +02:00
JailDesigner
e20bdec470
feat(wireframe3d): mesh3d + drawWireframe + factories octaedre i extrusió
2026-05-22 08:07:47 +02:00
JailDesigner
86708e0ed5
feat(camera3d): afig Vec3 i Camera3D amb projecció perspectiva en CPU
2026-05-22 08:04:45 +02:00
JailDesigner
51797e0ea7
Merge branch 'feat/playfield-reactions': el playfield reacciona al pas de la nau i als fireworks
2026-05-21 23:04:25 +02:00
JailDesigner
20f5b83649
feat(playfield): reaccions orbit al pas de la nau i pulse al spawn de fireworks
2026-05-21 23:03:48 +02:00
JailDesigner
ffeff3d69d
Merge branch 'feat/border-bumps': border amb reaccions a impactes i explosions
2026-05-21 22:49:42 +02:00
JailDesigner
a44748c0c4
feat(border): bump del border per explosions properes a la paret
2026-05-21 22:48:49 +02:00
JailDesigner
e678f8d538
feat(border): refactor a Graphics::Border amb bumps i flash verd clar per impactes contra les parets
2026-05-21 22:39:08 +02:00
JailDesigner
ccda7113c1
Merge branch 'feat/playfield-grid': fons playfield amb graella animada
2026-05-21 22:06:08 +02:00
JailDesigner
5c8a583e24
tune(playfield): ona diagonal amb easing i cap brillant
2026-05-21 22:06:02 +02:00
JailDesigner
07985228b2
feat(playfield): refactor a Playfield amb animació de creació durant l'INIT_HUD
2026-05-21 20:44:17 +02:00
JailDesigner
dc389037f8
feat(grid): sub-graella amb 5 subdivisions i ajust de brillos
2026-05-21 20:21:46 +02:00
JailDesigner
f30b195778
feat(grid): graella verda fosca de fons al playfield (16x8)
2026-05-21 20:16:44 +02:00
JailDesigner
95ac4606d5
Merge branch 'enhancements': debug overlay, àudio a 48000 i typewriter ràpid
2026-05-21 20:04:43 +02:00
JailDesigner
2bc07f8e8d
tune(stage): typewriter ràpid però visible al missatge de nivell completat
2026-05-21 20:02:02 +02:00
JailDesigner
ca6f863c0f
tune(audio): efectes a 48000 Hz u8 mono i ajust de volums per defecte
2026-05-21 19:58:45 +02:00
JailDesigner
66faa07c00
tune(debug): overlay més endins del playfield i en color daurat
2026-05-21 19:50:45 +02:00
JailDesigner
72158c7c3f
Merge branch 'fix/p2-join-physics': el P2 ja pot accelerar després de fer join
2026-05-21 19:44:52 +02:00
JailDesigner
8b32a0a404
fix(join): registrar el cos físic del jugador al món quan s'uneix
2026-05-21 19:44:29 +02:00
JailDesigner
abb7b8fe8c
Merge branch 'feat/ship-trail': estela de partícules daurada/vermella darrere la nau
2026-05-21 19:40:36 +02:00
JailDesigner
51308fa25e
tune(trail): vida més llarga, offset darrere i paleta vermella per al P2
2026-05-21 19:40:15 +02:00
JailDesigner
74d855357d
feat(trail): estela daurada de partícules quan la nau accelera
2026-05-21 19:29:32 +02:00
JailDesigner
a9593a0fd9
Merge branch 'tune/gameplay': balas, velocitat, stage 1 i so hit
2026-05-21 19:05:53 +02:00
JailDesigner
dec72340de
feat(audio): so hit.wav quan l'enemic passa a ferit
2026-05-21 19:05:42 +02:00
JailDesigner
7646daef3d
tune(stages): stage 1 a 50 enemics i puja el cap de validació a 200
2026-05-21 18:58:33 +02:00
JailDesigner
1c1fd1273b
tune(ship): puja MAX_VELOCITY de 120 a 180 px/s
2026-05-21 18:55:01 +02:00
JailDesigner
e6eaf870c6
tune(bullets): puja MAX_BALES a 50 i deshardcoded el slot per jugador
2026-05-21 18:51:55 +02:00
JailDesigner
23eff1585c
chore: neteja de notes obsoletes a l'arrel
2026-05-21 18:46:55 +02:00
JailDesigner
4d51c13e46
Merge branch 'tune/glow': bloom separable + preserve-core + paleta neon + F6 toggle
2026-05-21 18:46:20 +02:00
JailDesigner
625cb19cba
feat(postfx): toggle F6 per activar/desactivar el postprocessat
2026-05-21 18:45:29 +02:00
JailDesigner
ae946b578e
feat(bloom): glow separable two-pass amb composite preserve-core i paleta neon
2026-05-21 18:39:16 +02:00
JailDesigner
8b4683b77b
Merge branch 'feat/fireworks': starburst d'explosió d'enemic
2026-05-21 17:41:52 +02:00
JailDesigner
0cc1f7623a
feat(fireworks): burst radial blanc al explotar enemic + tuning
2026-05-21 17:41:10 +02:00
JailDesigner
56ce1a3236
feat(fireworks): infraestructura (manager + pool + render, sin spawn aún)
2026-05-21 17:22:46 +02:00
JailDesigner
5aab26f2ca
Merge branch 'feat/enemy-death': muerte d'enemics amb herida prèvia + debris físic
2026-05-21 17:16:16 +02:00
JailDesigner
2869c63517
tune(debris): N=1, shrink completo y sin herencia angular en enemigos
2026-05-21 17:11:08 +02:00
JailDesigner
87b96b8226
fix(debris): bugs rotacion cuadratica y shrink exponencial (geometria autoritativa)
2026-05-21 14:05:10 +02:00
JailDesigner
7505de074c
feat(debris): rebote contra los limites del playarea (restitution 0.7)
2026-05-21 13:55:32 +02:00
JailDesigner
ae1d1397b1
revert: vuelve al modelo de efd18ff + ENEMY_LIFETIME 3.0 -> 4.5
2026-05-21 13:46:25 +02:00
JailDesigner
0c8a9b744e
tune(debris): un poco mas de rotacion + shrink mas rapido (1.4s)
2026-05-21 13:41:20 +02:00
JailDesigner
9b25e875f3
fix(debris): bug rotacion cuadratica + shrink exponencial; geometria autoritativa
2026-05-21 13:37:12 +02:00
JailDesigner
e84f555a66
fix(debris): rotación visual decae con fricción + modulada por size_factor
2026-05-21 13:23:16 +02:00
JailDesigner
048263a1d0
feat(debris): modelo INTACTO→MENGUANDO→0 (sin pop, fade-out por tamaño)
2026-05-21 12:53:01 +02:00
JailDesigner
efd18ff852
feat(debris): vida híbrida (mínima + umbral velocidad) + multiplier para enemigos
2026-05-21 12:07:50 +02:00
JailDesigner and Claude Opus 4.7
44aa4e76e2
fix(physics): salta body-body collision quan algun cos té radius=0
...
resolveBodyPair afegeix early-out per a parells on a.radius<=0 o b.radius<=0.
Honra el comentari de bullet.cpp:30 ("radius=0 → sin colisión física,
cinemática pura") que abans no s'aplicava: amb bala radius=0 + enemic
radius=ENEMY_RADIUS, SUM_R era enemic radius i el body-body disparava
si la bala (a 700 px/s) penetrava el cos l'enemic entre frames.
Símptomes corregits:
- Pentagon: la bala "rebotava espectacularment" en lloc d'impactar.
- Quadrat: rebut un impulse double del cantó de la física que es
sumava (o cancel·lava, segons l'angle) al manual, fent l'efecte
inconsistent.
Ara la gameplay collision (Physics::checkCollision amb entity radius,
que ja és més generós) és l'única que tracta el parell bala-enemic.
A més: IMPACT_MOMENTUM_FACTOR 2.0 → 3.0 per compensar la pèrdua del
rebot físic i donar més empenta:
- Pentagon (m=5) Δv = 210 px/s
- Quadrat (m=8) Δv = 131 px/s
- Molinillo (m=4) Δv = 262 px/s
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-21 11:45:59 +02:00