Conversation
Phase 1 of the Sequence board game live-coding project: - gameplay.das: 10x10 board layout, ChipColor enum, jack helpers, card validation - main.das: rotated card grid rendering with auto-scaling, dasCards integration - test_gameplay.das: 13 tests covering board layout, corners, card counts, jacks Full reload now resets @LiVe variables to code defaults: - dasLiveHost: add live_host_clear_live_vars() - selectively clears __live_vars_* entries from persistent store, preserving infrastructure keys (__glfw_window, etc.) - daslang-live: check dll_full_reload() flag and call clearing before [after_reload] Also documents -compile-only CLI flag in CLAUDE.md and install/CLAUDE.md. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…CLAUDE.md Remove 90-degree rotation - upright cards fit better, leave room for player hands in corners. Add require live/live_vars for @LiVe persistence. Update CLAUDE.md with player hand display plan and live coding notes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add chip state to gameplay module (place/get/clear/cycle), mouse hit-testing and hover tint in main, live commands for debug chip placement. 21 tests passing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Draw chips as filled circles with black outlines on top of cards using a dedicated GL shader and triangle-fan mesh. Cards with chips get a 15% color tint for better readability. Chip alpha raised to 0.9. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add full game logic to gameplay.das: GameState, double deck, shuffling, dealing (7/6/5 cards for 2/3/4 players), legal_moves, apply_move, jack rules (black=remove, red=wild), dead card detection, hand sorting. Add hand display in main.das: suit-grouped rows for human (bottom-left), cheat/stack modes for bots, card selection with 50% darkening of unselected cards, green/red board hover tint for legal/illegal moves. Add live commands: cmd_new_game, cmd_game_status, cmd_toggle_cheat, cmd_set_hand, cmd_debug_hands. Fix click detection order (mouse_clicked flag shared between handle_mouse and draw_hand_by_suit). 40 tests pass. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Each @LiVe variable is now stored independently under its own key with a hash of its initialization expression. On deserialization, if the hash mismatches (init value changed in code), the stored value is discarded and the new code default is used -- no full reload needed. Previously all @LiVe vars shared one blob and changing a default required live_reload(full=true) to pick up the new value. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move board_chips into GameState struct and make all gameplay functions take GameState as their first argument. This enables bots to clone state for move simulation without touching the real game. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add sequence detection scanning 4 directions (horizontal, vertical, diagonal, anti-diagonal) with FREE corners as wild cells. Sequences can share at most one cell. Win condition: 2 sequences for 2-player, 1 for 3-4 player. Chips in completed sequences pulse with brightness animation and white outline. Game over overlay shows large pulsing winner-colored chip in center. Black jack protection prevents removing chips from completed sequences. New live commands: cmd_force_move, cmd_set_phase, cmd_set_player, cmd_reset_board, cmd_check_sequences for debug/testing. 55 tests (11 new Phase 4 tests), all passing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add [lint_macro] LiveVarsLint that reports a compilation error when @LiVe is used on let (constant) variables, since they can never change. Improve sequence highlighting: stronger card tint (35% blend with chip color vs 15% for non-sequence), gentler chip pulse animation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add bot_random module (uniformly random legal move picker), integrate into main.das with timer-based auto-play for non-human players, and add cmd_bot_move live command. 14 bot tests cover legal moves, jack handling, stress test, and full game simulation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add animation queue system with chip bounce (overshoot 0->1.2->1.0) and removal flash+shrink. Both human and bot moves go through the queue, with deferred apply_move on completion. Game state is now @LiVe for persistence across live reloads. Fix daslib/archive to support 2D-6D fixed arrays (serialize overloads). Add 7 archive tests for multi-dim arrays and 17 animation curve tests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Chain card_fly -> chip_place/chip_remove in animation queue. Human cards fly from their suit-row position, bot cards from their stack corner. Add ease-out curve tests (22 total animation tests). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add card_fly (hand->board), card_draw (draw pile->hand), and card_discard (hand->discard pile) animations with ease-out curves. Render draw pile (face-down stack, right of board) and discard pile (top card face-up, below draw pile). All card animations use @LiVe anim_card_duration (0.3s). Human dead cards auto-discard with animation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
opengl_live.das: add GlStats struct, gl_stats_reset(), gl_stats_draw(), and gl_stats live command for per-frame render statistics. main.das: wire up gl_stats_reset + card_stats at frame boundaries, instrument chip renderer with gl_stats_draw, add cmd_card_stats command. Update dasCards module (daspkg update) with earcut optimization that reduces draw calls 55% by using earcut for 2-contour SVG paths instead of GPU stencil. Sequence game: 12K to 1K draw calls, 35 to 121 FPS. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7 sounds: card_play, chip_place, chip_remove, card_draw, sequence_complete, game_win, turn_chime. Sine sweeps + noise bursts + arpeggios. Sounds wired to animation events with proper sequencing (turn chime after card draw). @LiVe sfx_volume, cmd_play_sound live command. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Scores placements by sequence completion (+10K), partial extension, opponent blocking, adjacency, and center preference. Black jack removal prioritizes disrupting opponent near-sequences. Ties broken randomly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace all string-based card representation with a Card enum (53 values) for O(1) suit/rank extraction and zero-allocation comparisons. Add configurable GreedyWeights to bot_greedy for tournament weight comparison. Add elo.das standalone headless tournament app with round-robin ELO rating. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Detect patterns like XX_XX and X_X_X where chips have gaps in a 5-cell window. New weights: gap_4, gap_3 (offensive), block_gap_4 (defensive), all default 0 so existing configs unchanged. Gap-aware "gap-boy" config beats previous best "defensive" 53.4% over 1000 games (ELO 1771 vs 1633). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add TTF text rendering (DejaVuSerif from dasCards). HUD on right side shows player chips (active one bigger) with sequence counters. Keyboard shortcuts: N=new game, C=cheat toggle, 2/3/4=player count. Starting player randomized from seed. Controls hint on left side of board. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Declares das-cards as a dependency so `daspkg install` resolves it from the package index automatically. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The serialize overloads for 2D-6D fixed arrays work correctly on x86 but cause SIGSEGV in AOT codegen on ARM (darwin arm64, linux arm64). Keep the overloads (needed for @LiVe GameState serialization) but remove the tests pending an ARM AOT fix. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Sequence board game (
examples/daslive/sequence/) — full implementation as a live-coded daslang application, exercising and stress-testing the live coding infrastructure.das_packagewithdas-cardsdependency)Live host improvements (
utils/daslang-live/,modules/dasLiveHost/)@livevar system redesign: per-variable keys with init-expression hash detectionlive_host_clear_live_vars()for full reload resettools/live.das) for AI-assisted live codingopengl/opengl_live.dashelper moduleCore additions
get_module_file_name()builtin for module-relative path resolutionsystem()builtin in fio moduledaslib/archive.dasdasStbTrueType)-Welaborated-enum-basefor GLFW)Test plan
test_gameplay.das— 55 tests: board layout, chips, game state, moves, win detectiontest_bots.das— 14 tests: random bot legality, jack handling, stress test, full game simtest_anim.das— 17 tests: chip place/remove scale curves, alpha fadetests/archive/test_archive.das— 7 tests: multi-dim fixed array serializationtests/live_host/test_live_vars.das— live var persistence tests