{"id":30193596,"url":"https://github.com/plinkr/bolt-love","last_synced_at":"2025-10-13T04:32:14.533Z","repository":{"id":308950880,"uuid":"951632430","full_name":"plinkr/bolt-love","owner":"plinkr","description":"A retro-style arcade game demo built with the LÖVE 2D framework, featuring procedural lightning, real-time audio generation, and matrix-based pixel sprites","archived":false,"fork":false,"pushed_at":"2025-08-30T06:32:48.000Z","size":2181,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-12T01:07:19.979Z","etag":null,"topics":["arcade-game","game","love2d","lua","matrix-sprites","pixel-art","procedural-audio","procedural-generation","retro"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/plinkr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"flexiondotorg"}},"created_at":"2025-03-20T01:53:52.000Z","updated_at":"2025-08-30T04:56:40.000Z","dependencies_parsed_at":"2025-09-12T00:19:01.312Z","dependency_job_id":"beab9e2d-a42f-49ce-ad4c-4710ffd319a6","html_url":"https://github.com/plinkr/bolt-love","commit_stats":null,"previous_names":["plinkr/bolt-love"],"tags_count":1,"template":false,"template_full_name":"Oval-Tutu/bootstrap-love2d-project","purl":"pkg:github/plinkr/bolt-love","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plinkr%2Fbolt-love","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plinkr%2Fbolt-love/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plinkr%2Fbolt-love/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plinkr%2Fbolt-love/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/plinkr","download_url":"https://codeload.github.com/plinkr/bolt-love/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plinkr%2Fbolt-love/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279013685,"owners_count":26085390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arcade-game","game","love2d","lua","matrix-sprites","pixel-art","procedural-audio","procedural-generation","retro"],"created_at":"2025-08-13T02:00:46.290Z","updated_at":"2025-10-13T04:32:14.520Z","avatar_url":"https://github.com/plinkr.png","language":"Lua","funding_links":["https://github.com/sponsors/flexiondotorg"],"categories":[],"sub_categories":[],"readme":"# BOLT-LOVE, a demo game using LOVE2D\n\nThis project is a simple demo game created to learn and demonstrate the capabilities of the [LÖVE](https://love2d.org/) framework. The game, **BOLT-LOVE**, is a small arcade game where the player has to dodge procedurally generated lightning bolts.\n\n## Technical Features\n\nThis demo is an idea that can serve as the basis for a learning project, showcasing some techniques:\n\n### Procedural Generation\n\n- **Procedural Lightning**: The main threat in the game, the lightning bolts, are not pre-rendered sprites. They are generated procedurally using algorithms that create segmented lines with random bifurcations. This creates a unique and unpredictable pattern every time. The lightning also has an electrical effect created by adding random noise to the line segments.\n\n- **Procedural Audio**: The sound effects in the game are generated in real-time. Instead of using pre-recorded audio files, functions like `generateSound` create sounds like \"laser\", \"explosion\", \"coin\", and \"hit\" by generating waveform data on the fly. This is achieved by manipulating parameters like frequency and duration to produce unique sound effects directly from code.\n\n### Matrix-based Sprites\n\n- **Player and Animations**: The player character is not an image file. Its appearance and animations are defined by 16x16 matrices of 1s and 0s directly in the code (see `playerSprites` in `game/main.lua`). A custom function `drawSprite` reads these matrices and draws the character pixel by pixel on the screen. This is a classic technique reminiscent of early video games and is a great way to handle simple graphics without external assets.\n\n## How to Play\n\n- **Objective**: Dodge the yellow lightning bolts and collect the falling stars for points.\n- **Controls**: Press `Space`, `Enter`, or the `arrow keys` (left/right) to change the player's direction. Mouse clicks also work.\n\n## Screenshots\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp style=\"max-width:900px; margin:0 auto;\"\u003eA few screenshots, click a thumbnail to open the full image.\u003c/p\u003e\n  \u003cdiv style=\"margin-top:12px; overflow-x:auto; white-space:nowrap; padding:8px 4px; -webkit-overflow-scrolling:touch;\"\u003e\n    \u003ca href=\"https://github.com/user-attachments/assets/f0b43911-fcff-4223-84e4-d92f06ffe275\" target=\"_blank\" rel=\"noopener\"\u003e\n      \u003cimg src=\"https://github.com/user-attachments/assets/f0b43911-fcff-4223-84e4-d92f06ffe275\" width=\"280\" style=\"display:inline-block; margin-right:8px; border-radius:8px; box-shadow:0 6px 18px rgba(0,0,0,0.12);\" alt=\"screen1\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/user-attachments/assets/3c0d0a9b-80ff-41ac-b848-d18f29e9b48b\" target=\"_blank\" rel=\"noopener\"\u003e\n      \u003cimg src=\"https://github.com/user-attachments/assets/3c0d0a9b-80ff-41ac-b848-d18f29e9b48b\" width=\"280\" style=\"display:inline-block; margin-right:8px; border-radius:8px; box-shadow:0 6px 18px rgba(0,0,0,0.12);\" alt=\"screen2\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/user-attachments/assets/621312d1-6436-4d6f-9b5e-732e376d7c27\" target=\"_blank\" rel=\"noopener\"\u003e\n      \u003cimg src=\"https://github.com/user-attachments/assets/621312d1-6436-4d6f-9b5e-732e376d7c27\" width=\"280\" style=\"display:inline-block; margin-right:8px; border-radius:8px; box-shadow:0 6px 18px rgba(0,0,0,0.12);\" alt=\"screen3\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/user-attachments/assets/ef578ec9-5ac1-4b59-a575-8f4f285e551c\" target=\"_blank\" rel=\"noopener\"\u003e\n      \u003cimg src=\"https://github.com/user-attachments/assets/ef578ec9-5ac1-4b59-a575-8f4f285e551c\" width=\"280\" style=\"display:inline-block; margin-right:8px; border-radius:8px; box-shadow:0 6px 18px rgba(0,0,0,0.12);\" alt=\"screen4\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/user-attachments/assets/ec48ab4a-0e21-472e-8a21-95f60e82dd1b\" target=\"_blank\" rel=\"noopener\"\u003e\n      \u003cimg src=\"https://github.com/user-attachments/assets/ec48ab4a-0e21-472e-8a21-95f60e82dd1b\" width=\"280\" style=\"display:inline-block; margin-right:8px; border-radius:8px; box-shadow:0 6px 18px rgba(0,0,0,0.12);\" alt=\"screen5\" /\u003e\n    \u003c/a\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplinkr%2Fbolt-love","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplinkr%2Fbolt-love","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplinkr%2Fbolt-love/lists"}