ff88f48fa2
Add CTest coverage reporting
...
libakgl CI Build / cmake_build (push) Failing after 19s
libakgl CI Build / mutation_test (push) Failing after 16s
Instrument libakgl in opt-in coverage builds, use CTest fixtures to reset counters and emit Cobertura XML and detailed HTML reports, and upload those reports from Gitea CI. Document the local coverage workflow for contributors.
Co-authored-by: Codex (GPT-5) <noreply@openai.com >
2026-07-30 01:25:26 -04:00
549b27d3eb
Document the libakgl API with Doxygen
...
Add file, structure, global, and function documentation across all libakgl-owned headers and sources, including parameter contracts and likely AKERR/AKGL_ERR exceptions. Add a strict Doxyfile and build the generated API documentation in Gitea CI with warnings treated as failures.
Co-authored-by: Codex (GPT-5) <noreply@openai.com >
2026-07-30 01:10:31 -04:00
a2995e81df
Add Gitea test and mutation pipeline
...
libakgl CI Build / cmake_build (push) Failing after 18s
libakgl CI Build / mutation_test (push) Failing after 16s
Build libakgl with recursive vendored dependencies, run the passing CTest suite with JUnit reporting, and publish a bounded static-string mutation gate with a 50 percent score threshold.
Co-authored-by: Codex (GPT-5) <noreply@openai.com >
2026-07-29 18:46:26 -04:00
dc1bd0a798
Add mutation testing harness
...
Port the scratch-copy mutation runner used by libakerror and libakstdlib, covering libakgl source files with sampling, thresholds, JUnit reports, and test timeouts. Add a CMake target and documentation, preserve the intentionally failing character test exclusion, and migrate the sprite test to the renderer backend so mutation baselines are green.
Co-authored-by: Codex (GPT-5) <noreply@openai.com >
2026-07-29 18:42:09 -04:00
3854b33750
Update tilemap tests for renderer backends
...
Migrate tilemap tests to pointer-based game globals and current loader signatures, initialize the renderer callback used by image comparisons, and refresh the character fixture schema. Preserve loaded tileset names by removing a duplicate heap allocation.
Co-authored-by: Codex (GPT-5) <noreply@openai.com >
2026-07-29 18:25:36 -04:00
cf9ebb206f
Repair embedded dependency build and test setup
...
Isolate vendored test registration, namespace project error codes, and update dependency revisions. Fix mutable sprite path handling, out-of-tree fixtures, and charviewer initialization while documenting the outstanding character-to-sprite refcount bug.
Co-authored-by: Codex (GPT-5) <noreply@openai.com >
2026-07-29 18:17:08 -04:00
74867ea82e
README
2026-06-20 13:19:58 -04:00
4e510dd6d6
README updates
2026-06-19 10:47:07 -04:00
dca03cb50d
Start README docs
2026-06-19 09:52:08 -04:00
652ee4cdf3
Tilemaps can now load their own physics engines from map properties. The gravity for the arcade simulation is acting a little funny when populated from the map properties.
2026-06-02 17:11:16 -04:00
9fed59c4c8
Abstract the global renderer, physics, camera and gamemap objects behind a pointer, so you can swap in and out different ones as needed
2026-06-02 13:15:26 -04:00
941eeb2493
Got the physics system applying gravity and drag correctly. (Mostly? Seems like it? Seems good.)
2026-05-26 16:45:04 -04:00
314ce5e10d
Physics simulation engine implemented, basic cases (null and 2d SideScroller) works
2026-05-26 10:36:31 -04:00
d87c5d2c20
More rendering subsystem breakout, added a physics subsystem, everything now fires from akgl_game_update() for the user
2026-05-25 21:29:18 -04:00
6314ad7f26
Start abstracting the rendering backend away to make it easier to switch to GPU rendering later
2026-05-24 21:59:29 -04:00
8f613397d6
Loading sprites and tiles both work correctly with relative paths, now using akgl_path_relative* helpers
2026-05-24 19:57:57 -04:00
980bbc56fb
Fixed loading of tilesets and images from tilemaps to correctly use relative paths.
2026-05-24 10:28:35 -04:00
e3edd5b855
Add a method that automatically opens gamepads so they will send events
2026-05-21 21:43:51 -04:00
f695a035c8
Add a low FPS callback to aid in debugging, and fix a huge memory leak in akgl_text_rendertextat
2026-05-15 11:07:31 -04:00
73b1a4cab0
Make perspective scale work more explicitly from properties
2026-05-13 23:36:49 -04:00
aad196d84e
akgl_heap_release* should not cascade into dependent objects (releasing actors should not release characters, sprites, and spritesheets)
2026-05-13 22:45:52 -04:00
9443fa8532
Fix bug in akgl_heap_release_actor preventing it from being cleared out of the registry
2026-05-13 19:28:38 -04:00
dc2e88b72f
Fix a scale bug (default should be 1.0), add tilemap release function
2026-05-13 16:56:24 -04:00
53e4f5c14f
Tilemaps can have two objects placed on it, 'p_foreground' and 'p_vanishing' whose placement form a virtual perspective plane, which causes sprites to scale as they move up and down the screen between them, creating the illusion of depth on the screen
2026-05-13 09:57:24 -04:00
b8dee456ca
Add keyboard enumeration function. Make image layers work.
2026-05-13 08:02:59 -04:00
36dfd47a06
Fixed a bug in akgl_heap_next_string, made screen width and height load from properties, not on the game object
2026-05-13 04:55:19 -04:00
23dbc7d985
Make mkcontrollers script work when building as a submodule
2026-05-12 21:40:31 -04:00
6f62e674d5
Make mkcontrollers script work when building as a submodule
2026-05-12 21:38:08 -04:00
8ae99120b5
Wrap subdirectory compilation in conditional
2026-05-12 21:06:29 -04:00
c79d93dd58
Wrap subdirectory compilation in conditional
2026-05-12 21:01:47 -04:00
ccd26494d9
Import all dependencies as submodules, make cmake do the right thing
2026-05-12 16:45:42 -04:00
5439b8004b
Move some of the sprite math out of the actor into the sprite
2026-05-12 15:21:36 -04:00
0f01126bad
More akstdlib conversion
2026-05-11 20:58:36 -04:00
d928a8af0f
Complete rename to akgl
2026-05-10 00:06:58 -04:00
4a02f0364f
Start moving away from wrapping libc stuff in akerror, and move towards akstdlib that does this for me
2026-05-10 00:03:45 -04:00
cc0916cd1f
Added a (registry object name -> registry object pointer) map to the save method so that registry reference by name can have their actor, sprite, spritesheet, and character references reset
2026-05-09 14:45:37 -04:00
4c771227f5
Encode library version and game version into savegame files and check them both
2026-05-08 23:48:35 -04:00
ff6b282112
Added basic game save function, doesn't save much yet, but implements version comparison of binary saves for compatibility
2026-05-08 23:15:11 -04:00
0bd1ae1df8
Move music tracks out of akgl_Game to make it more suitable for serialization
2026-05-08 22:16:43 -04:00
e0a59e2447
Add types.h, standardize integer types on stdint
2026-05-08 22:01:56 -04:00
5dda86d887
Add properties registry. Start bounding defines with conditionals so users can change library allocation size.
2026-05-08 10:16:33 -04:00
a0b2dda4cf
Rename library to AKGL (AKLabs Game Library)
2026-05-07 22:20:10 -04:00
359ae23414
Unify the library on an akgl_ namespace
2026-05-07 22:01:27 -04:00
f416cb5dee
Fix bad pointer reference in SDL3G_controller_default
2026-05-06 23:05:17 -04:00
ef24d7b843
Add missing text header file
2026-05-06 22:49:05 -04:00
87a5b1da21
Add ability to push controls to a control map without having to manually track controlmap index IDs
2026-05-06 12:02:36 -04:00
c3847160da
Added a font registry, a text rendering helper, and an FPS counter function
2026-05-06 11:12:42 -04:00
284ffd7b4a
Fix missing sdl3game.pc for pkg-config, change sprite speed and character movement values to long int expressed in nanoseconds for better compatibility with SDL_Time and locking against game clock, still expressed as milliseconds in json
2026-05-05 20:40:25 -04:00
90cbf41d75
Added missing error include
2026-05-04 00:02:31 -04:00
6763b5629f
Got the suite rebuilding, most tests pass, actor and sprite are failing
2026-05-03 23:57:55 -04:00