268 Commits

Author SHA1 Message Date
daniel156161 f14d780f29 feat: add live replays and PostgreSQL maintenance tools
Build and Push Docker Container / build-and-push (push) Successful in 7m53s
- Stream compact live replay updates across local and clustered dashboards.
- Render responsive snake bodies as SVG paths with aligned custom icons.
- Add cache-busted assets, replay fallback routes, and live-follow playback.
- Support PostgreSQL benchmark sampling and idempotent SQLite migration.
- Add dry-run cleanup for old low-quality PostgreSQL replay payloads.
- Reward safe perimeter lanes and bump Prism to version 1.5.0.
- Add backend, migration, dashboard, and perimeter regression coverage.
2026-08-02 00:50:46 +02:00
daniel156161 9b99b526e4 perf(snake): cache survival rollout state
Build and Push Docker Container / build-and-push (push) Successful in 6m1s
- Cache occupancy bitboards for repeated multiplayer rollout positions.
- Memoize position evaluations to avoid duplicate flood-fill calculations.
- Reuse shared values while ranking simultaneous enemy responses.
- Include evaluation hits in Prism rollout telemetry.
- Document the optimization and bump Prism to version 1.4.0.
2026-08-01 20:39:56 +02:00
daniel156161 3a9af3f54d feat(snake): modularize engine and add tournament tools
- Split active strategies, reusable engine code, core classes, and legacy snakes.
- Replace implicit snake imports with explicit module registrations.
- Extract Prism duel, spatial, and survival behavior into focused mixins.
- Improve duel scoring with food races, pressure, caches, and depth metrics.
- Add deterministic arena scenarios and paired seeded engine tournaments.
- Expand benchmark telemetry and bump Prism to version 1.3.0.
- Update documentation and tests for the new package layout and tooling.
2026-08-01 20:25:07 +02:00
daniel156161 cb6c8d4dc8 feat(snake): add adaptive adversarial search
- Share duel search contexts and transpositions across candidate moves.
- Add aspiration windows, principal variation ordering, and body caches.
- Model simultaneous multiplayer responses with a compact beam rollout.
- Adapt search depth and response breadth to the remaining deadline.
- Add a deterministic arena benchmark with optional JSON reporting.
- Expose search metrics, document benchmarking, and bump Prism to 1.2.0.
2026-08-01 19:26:19 +02:00
daniel156161 6643eb35af fix: resolve duel roots and recover legacy snake data
- Resolve selected moves and enemy replies on the same simulated turn.
- Add an Apex candidate hook and bump the Prism snake to version 1.1.0.
- Rebuild benchmark states from normalized turn data when snapshots are empty.
- Synthesize missing game snake identities during legacy database migration.
- Add regression coverage for duel timing and partial legacy schemas.
2026-08-01 19:11:32 +02:00
daniel156161 c646392b84 fix: preserve gameplay data and correct duel evaluation
- Preserve snake customizations across database migrations and merges.
- Lazily load optional storage backends for SQLite maintenance scripts.
- Match Apex territory and nearest-food tie-breaking semantics.
- Resolve duel occupancy after simultaneous movement and food growth.
- Recompute simulated head-to-head danger after body growth.
- Add regression coverage and declare the aiofiles dependency.
2026-08-01 18:16:04 +02:00
daniel156161 4f022d3d01 feat(snake): optimize duels and persist customizations
Build and Push Docker Container / build-and-push (push) Successful in 7m29s
- Add deadline-aware iterative duel search with bitboards and tuple bodies.

- Reuse transposition bounds and move-order hints across search depths.

- Persist snake colors, heads, and tails in SQLite and PostgreSQL.

- Restore customization metadata when hydrating dashboard replays.

- Cover duel deadlines, cache reuse, schema storage, and replay output.
2026-08-01 17:19:35 +02:00
daniel156161 65c97b219b fix(deps): add httpx, remove unused gel dependency
Build and Push Docker Container / build-and-push (push) Successful in 8m20s
- Add httpx>=0.28.0 (required by quart_common.web.wide_event)

- Remove gel>=3.1.0 (only lazy-imported in EdgeDB.py with try/except)

- Update uv.lock with resolved dependency changes
2026-08-01 16:33:37 +02:00
daniel156161 c704fbc742 feat: add Prism snake and gameplay database lifecycle
Build and Push Docker Container / build-and-push (push) Successful in 8m3s
- Add bitboard-accelerated Prism and versioned Supreme snake implementations.
- Add database-backed move benchmarks and focused strategy tests.
- Normalize gameplay storage while preserving replay compatibility.
- Add deterministic game quality scoring and replay retention tiers.
- Add backup-first SQLite cleanup, verification, and replacement tooling.
- Add safe compact-plus-delta database merging with conflict detection.
- Extend SQLite and PostgreSQL schemas for replay and quality metadata.
- Add PostgreSQL development service and pytest import configuration.
- Update gameplay documentation and the quart_common submodule revision.
2026-08-01 16:21:02 +02:00
daniel156161 9a7f4de586 remove console.log into buildSnakesRows
Build and Push Docker Container / build-and-push (push) Successful in 5m2s
2026-08-01 11:58:57 +02:00
daniel156161 ce3f9f1d82 rework that the sqlite and postgresql backend uses the same code to build the data for the dashboard 2026-08-01 11:58:49 +02:00
Daniel Dolezal 60fe19c61c fix: rewrite SSH submodule URLs to HTTPS in CI
Build and Push Docker Container / build-and-push (push) Successful in 7m35s
2026-05-02 09:39:15 +02:00
daniel156161 79c6b00ace install python-dotenv and asyncpg for postgres
Build and Push Docker Container / build-and-push (push) Successful in 4m30s
2026-04-08 15:03:55 +02:00
daniel156161 3614625c56 remove tail and head of snakes-section 2026-04-08 15:03:04 +02:00
daniel156161 341bb27278 change that GameplayDatabase can have different backends, sqlite and postgresql with a Template example backend 2026-04-08 14:28:39 +02:00
daniel156161 a62501cf22 remove stroing of the Game Board State into Redis or Memory 2026-04-08 08:36:54 +02:00
daniel156161 f6e19e18e6 speed up loading and saving to redis that the move request are getting a answer when switching workers, strip data that neats to get recomuted every turn
Build and Push Docker Container / build-and-push (push) Successful in 4m49s
2026-04-07 12:13:11 +02:00
daniel156161 f479541c04 remove : space between function args 2026-04-07 12:02:50 +02:00
daniel156161 f0d62a6049 add new Snake with the Name ApexBattleSnake
Build and Push Docker Container / build-and-push (push) Successful in 4m41s
2026-04-07 10:46:45 +02:00
daniel156161 d2e1f2560e change metrics endpoint to return json by default and when the useragent contains prometheus to return the output as prometheus string format
Build and Push Docker Container / build-and-push (push) Successful in 4m53s
2026-04-07 07:57:52 +02:00
daniel156161 739c0520f9 move dashboard script block content into own files with new classes to update, render to have a better code overview
Build and Push Docker Container / build-and-push (push) Successful in 3m55s
2026-04-07 03:25:10 +02:00
daniel156161 03968fecdf removed reloading of full gameboard when pushing new game 2026-04-07 02:58:12 +02:00
daniel156161 f4c0ad193e only allow access to start, move, end endpoint with the user agent BattlesnakeEngine
Build and Push Docker Container / build-and-push (push) Successful in 4m8s
2026-04-07 02:34:31 +02:00
daniel156161 898f8106ed only allow metrics endpoint from localhost and wireguard and prometheus metrics neat to have the prometheus user agent as a extra 2026-04-07 02:34:19 +02:00
daniel156161 dfa658e4ce only allow access to metrics from prometheus or local adresses and wireguard vpn connection
Build and Push Docker Container / build-and-push (push) Successful in 4m45s
2026-04-07 01:42:25 +02:00
daniel156161 abed259129 cleanup server extra variables that are only getting used into server.py 2026-04-07 00:23:23 +02:00
daniel156161 8c4f83fb4b move css styleing into own files and allow to open the game with a url on the battlesnake side 2026-04-06 23:47:31 +02:00
daniel156161 1b8fa67059 use snake class name and version from GameBoard and remove snake type and version from GameplayTrackingService init 2026-04-06 23:24:37 +02:00
daniel156161 a2a79b7efb allow to connect the snake head and tail with the body 2026-04-06 22:05:13 +02:00
daniel156161 59d01428a9 move side templates and static files into root folder structure to not have it in the code folder
Build and Push Docker Container / build-and-push (push) Failing after 14m3s
2026-04-06 19:35:53 +02:00
daniel156161 3da10189b7 move snake config read functions into battlesnake template and use TemplateSnake as default Version of Snakes
Build and Push Docker Container / build-and-push (push) Failing after 13m9s
2026-04-06 19:24:45 +02:00
daniel156161 a8eb6a4447 remove depricated version tag and use .env for container mount path
Build and Push Docker Container / build-and-push (push) Failing after 10m8s
2026-04-06 19:02:39 +02:00
daniel156161 5c1875be60 move imports that longst is ontop 2026-04-06 19:02:04 +02:00
daniel156161 7c990f98fc disable GameplayDatabase compression by default
Build and Push Docker Container / build-and-push (push) Successful in 4m19s
2026-04-06 18:30:11 +02:00
daniel156161 dd3547678c add 2.5x speed selector
Build and Push Docker Container / build-and-push (push) Successful in 5m52s
2026-04-06 17:59:32 +02:00
daniel156161 0af5f58688 fix loading of storage and not crash the request 2026-04-06 17:59:10 +02:00
daniel156161 fdc22af4cf fix building of sqlite-zstd with current version to not have a version missmatch error
Build and Push Docker Container / build-and-push (push) Successful in 5m21s
2026-04-06 17:42:53 +02:00
daniel156161 ed41c32ad8 don't crash server when sqlite-zstd extension can't be loaded
Build and Push Docker Container / build-and-push (push) Successful in 3m58s
2026-04-06 17:22:27 +02:00
daniel156161 6c34df103e build sqlite-zstd from source to not have a version missmatch of sqlite3
Build and Push Docker Container / build-and-push (push) Successful in 4m14s
2026-04-06 16:49:00 +02:00
daniel156161 af7df92f4d cleanup codebase to use the .testing as local folder with test content 2026-04-06 16:48:09 +02:00
daniel156161 fbc7a50f34 install qlite_zstd into docker container to compress gameplay database
Build and Push Docker Container / build-and-push (push) Successful in 1m56s
2026-04-06 16:35:59 +02:00
daniel156161 1a1bcd8ec3 move ensure auto vacuum full when init database or change to full when already exists 2026-04-06 16:35:05 +02:00
daniel156161 fe999c11f4 add compression to GameplayDatabase and test if compression works with the sqlite_zstd extension 2026-04-06 16:34:15 +02:00
daniel156161 01343472df move all Databases into the database folder to not have storeage and Database when they are all Databases 2026-04-06 16:24:28 +02:00
daniel156161 c4238d19e8 remove lines between snakes body parts
Build and Push Docker Container / build-and-push (push) Successful in 1m9s
2026-04-06 06:05:20 +02:00
daniel156161 afaf6c7c63 add curves to body when snake moves and show boarder color correctly in the background 2026-04-06 06:04:05 +02:00
daniel156161 1cd0f1ed1d fix svg loading to remove garbage icons 2026-04-06 05:46:32 +02:00
daniel156161 8f6a2ef674 add Backend Env to use as default for all then spesicich down to memory 2026-04-06 05:28:10 +02:00
daniel156161 5328252cf1 move snake builder into game_runtime.py to not pass it around very where 2026-04-06 05:27:37 +02:00
daniel156161 41f117e3a8 render Observed At time into user local time and move Snake Status and Thinking Boxes around to look more better
Build and Push Docker Container / build-and-push (push) Successful in 1m12s
2026-04-06 04:44:34 +02:00