100 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
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
daniel156161 43c7720480 fix circular import errors so the server and start again 2026-04-06 04:30:02 +02:00
daniel156161 98be2fe6fe move Server code into more services and use them into blueprints or server 2026-04-06 04:20:07 +02:00
daniel156161 30eb17bb83 reuse the code from quart_common.web.env to import env_bool and env_int into all classes that are useing this functions 2026-04-06 03:33:22 +02:00
daniel156161 d89986dba9 move route code out of server into own blueprints and cleanup the codebase 2026-04-06 03:10:49 +02:00
daniel156161 0ebb04f0a2 change websocket and game publish to redis backend with pub sub
Build and Push Docker Container / build-and-push (push) Successful in 1m59s
2026-04-06 02:05:56 +02:00
daniel156161 097a7f295a update dashboards over websocket and remove database path from GameplayDatabase output
Build and Push Docker Container / build-and-push (push) Failing after 13m18s
2026-04-06 01:49:26 +02:00
daniel156161 4626a491f5 update Dashboard with new keyboard bindings fix errors with hazards, set win or loss on stale games (older) and push new games real time over the websocket connection when they are finished
Build and Push Docker Container / build-and-push (push) Failing after 12m39s
2026-04-06 00:36:06 +02:00
daniel156161 e7d0227cf9 show snake body correctly under hazards
Build and Push Docker Container / build-and-push (push) Successful in 1m34s
2026-04-05 23:08:17 +02:00
daniel156161 b7c6a0e345 fix svg color problem show dead resions when very sure and allow to highlight snakes when clicking into them store timout and calcumate Snake Win Rate Overall, fix to use full page of games-body, get win lloss or unknown 2026-04-05 23:01:27 +02:00
daniel156161 050dd1083c add snake customizations to dashboard to show head and tail correctly
Build and Push Docker Container / build-and-push (push) Successful in 3m59s
2026-04-05 19:58:20 +02:00
daniel156161 2d603a3b0b add better dashboard with full snake game board 2026-04-05 19:57:43 +02:00
daniel156161 b9b02cf273 fix UltimateBattleSnake version in snake registry 2026-04-05 16:48:45 +02:00
daniel156161 4151810f1b add GameplayDatabase database with dashboard 2026-04-05 16:48:12 +02:00
daniel156161 2601c2dcff fix ladder error because api changed values 2026-04-05 15:20:25 +02:00
daniel156161 efe15dd8e7 update UltimateBattleSnake to 4.5.0 2026-04-05 15:19:53 +02:00
daniel156161 3cb3517892 update snakes with new code
Build and Push Docker Container / build-and-push (push) Successful in 1m21s
2026-04-05 12:20:10 +02:00
daniel156161 00d55b5419 update UltimateBattleSnake to 4.2.0
Build and Push Docker Container / build-and-push (push) Successful in 1m12s
2026-04-05 03:05:46 +02:00
daniel156161 643f4b468e add snake from claude code
Build and Push Docker Container / build-and-push (push) Successful in 1m36s
2026-04-05 02:52:44 +02:00
daniel156161 332e86e3cc rework dataset function and class structure 2026-04-05 02:21:15 +02:00
daniel156161 066a93f755 move RLBootstrapDataset into a own class with its own test file 2026-04-05 00:54:15 +02:00
daniel156161 eb290dd634 rework folder structure complitly 2026-04-04 23:01:34 +02:00
daniel156161 2b8f0396e3 rename Test file and add init file for metric backend to import all at once 2026-04-04 22:26:19 +02:00
daniel156161 043d7654f9 rename Metric Classes and change Folder Structure 2026-04-04 22:14:14 +02:00
daniel156161 a38a600bdc rename ServerMetricsCollector to MetricsCollector 2026-04-04 21:29:40 +02:00
daniel156161 9d33c6fded cleanup all worker stats when starting up servers 2026-04-04 21:28:26 +02:00
daniel156161 79f23b8be6 Update Best Battle Snake Logic
Build and Push Docker Container / build-and-push (push) Successful in 1m21s
2026-04-04 20:50:01 +02:00
daniel156161 6c68f412d2 don't log move_direction_counts into metric because looking almost the same 2026-04-04 19:08:19 +02:00
daniel156161 92a700409d remove http_requests_by_endpoint into metrics 2026-04-04 19:05:59 +02:00
daniel156161 fc8e0657a0 change that oldest_active_game_age_sec not gets inflated when redis already deleted it
Build and Push Docker Container / build-and-push (push) Successful in 1m2s
2026-04-04 16:40:49 +02:00
daniel156161 f8c492f333 not count stale games as active games because they will get deletet after ttl expire into redis
Build and Push Docker Container / build-and-push (push) Successful in 56s
2026-04-04 16:02:51 +02:00
daniel156161 5997a1f6c1 only update stuck game metric when game state backend is not redis
Build and Push Docker Container / build-and-push (push) Successful in 57s
2026-04-04 15:33:07 +02:00
daniel156161 8564606f4c disable removeing cound of stale games in the backend because redis is doing it
Build and Push Docker Container / build-and-push (push) Successful in 1m1s
2026-04-04 15:28:25 +02:00
daniel156161 561527a21b correct end game active metric count
Build and Push Docker Container / build-and-push (push) Successful in 52s
2026-04-04 15:23:56 +02:00
daniel156161 47051a6068 make Metrics Collector Class and auto send to redis when change happend
Build and Push Docker Container / build-and-push (push) Successful in 1m0s
2026-04-04 14:52:21 +02:00
daniel156161 c3da096320 allow to send metrics to memory or redis
Build and Push Docker Container / build-and-push (push) Successful in 52s
2026-04-04 14:21:54 +02:00
daniel156161 eb6a054bc9 removed --websocket-ping-interval into docker startup
Build and Push Docker Container / build-and-push (push) Successful in 1m10s
2026-04-04 13:35:02 +02:00
daniel156161 4daf63d483 update uv.lock file
Build and Push Docker Container / build-and-push (push) Successful in 56s
2026-04-04 13:26:17 +02:00
daniel156161 33c8fabc4c use redis.asyncio insted of the old aioredis package
Build and Push Docker Container / build-and-push (push) Successful in 51s
2026-04-04 13:25:23 +02:00
daniel156161 00d456a412 update requirements
Build and Push Docker Container / build-and-push (push) Successful in 1m11s
2026-04-04 12:59:52 +02:00
daniel156161 65128b25c2 allow to disable self.running_games as L1 Cache into Worker when useing Redis Backend
Build and Push Docker Container / build-and-push (push) Successful in 54s
2026-04-04 12:53:31 +02:00
daniel156161 a1c4a4b68d create MemoryGameBoardStore Class and rework Building of Game Board Storage 2026-04-04 12:34:00 +02:00
daniel156161 4547e3443b add redis backend for storage of gameboards 2026-04-04 12:07:05 +02:00
daniel156161 bbdc8b288a create better future planning into BestBattleSnake 2026-04-04 12:00:02 +02:00
daniel156161 c6ebb5834b auto remove stuck games
Build and Push Docker Container / build-and-push (push) Successful in 51s
2026-04-04 10:23:12 +02:00
daniel156161 dbcf9cadaf add more metrics data
Build and Push Docker Container / build-and-push (push) Successful in 1m2s
2026-04-04 09:58:11 +02:00
daniel156161 316870ef7a add enemy cut off trap check 2026-04-04 09:55:58 +02:00
daniel156161 b0d484dbab add dataset and models folder into git ignore file and change train-ai to get the input data from the dataset
Build and Push Docker Container / build-and-push (push) Failing after 12m11s
2026-04-04 00:00:33 +02:00
daniel156161 9e826afa5f add Training for AI and AI Model and allow to collect rl data from BestBattleSnake
Build and Push Docker Container / build-and-push (push) Successful in 1m36s
2026-04-03 23:19:09 +02:00
daniel156161 d3b0488e0f update python packages
Build and Push Docker Container / build-and-push (push) Successful in 1m32s
2026-04-03 21:51:13 +02:00
daniel156161 4e9a5595bc cahange battlsnake cli to https url
Build and Push Docker Container / build-and-push (push) Successful in 1m43s
2026-04-03 21:48:27 +02:00
daniel156161 8f938ce3fe Update BestBattleSnake Version to 2.6.0
Build and Push Docker Container / build-and-push (push) Failing after 23s
2026-04-03 21:40:31 +02:00