{"id":28466501,"url":"https://github.com/bthomas2622/love2d-starter-kit","last_synced_at":"2026-05-03T07:37:23.858Z","repository":{"id":296898188,"uuid":"985481514","full_name":"bthomas2622/love2d-starter-kit","owner":"bthomas2622","description":"Love2D starter kit for creating a game with Love2D. Contains a main menu with base features implemented like input handling, player settings, audio, and localization.","archived":false,"fork":false,"pushed_at":"2025-07-17T20:42:45.000Z","size":11890,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-17T22:08:05.181Z","etag":null,"topics":["love-2d","love2d","love2d-engine","love2d-framework","love2d-tutorial"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bthomas2622.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-05-17T21:18:05.000Z","updated_at":"2025-07-17T20:42:49.000Z","dependencies_parsed_at":"2025-07-17T23:14:43.604Z","dependency_job_id":null,"html_url":"https://github.com/bthomas2622/love2d-starter-kit","commit_stats":null,"previous_names":["bthomas2622/love2d-starter-kit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bthomas2622/love2d-starter-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bthomas2622%2Flove2d-starter-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bthomas2622%2Flove2d-starter-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bthomas2622%2Flove2d-starter-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bthomas2622%2Flove2d-starter-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bthomas2622","download_url":"https://codeload.github.com/bthomas2622/love2d-starter-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bthomas2622%2Flove2d-starter-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32562118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["love-2d","love2d","love2d-engine","love2d-framework","love2d-tutorial"],"created_at":"2025-06-07T07:00:44.663Z","updated_at":"2026-05-03T07:37:23.818Z","avatar_url":"https://github.com/bthomas2622.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Love2D Starter Kit with Complete Menu System\n\nThis is a fully functional Love2D Starter Kit with a complete menu system and game framework including:\n- Main Menu\n- Settings Menu  \n- Controls Menu\n- Playable Snake Game\n\n## Features\n\n### Menu System\n- Main menu with \"Play\", \"Settings\", and \"Quit\" buttons\n- Settings menu with:\n  - Music volume control\n  - Effects volume control\n  - Screen size options\n  - Language selection (13 supported languages)\n- Controls menu with full input customization:\n  - Keyboard and gamepad support\n  - Customizable key bindings for all actions\n  - Reset to defaults option\n- Persistent settings using Love2D's save/load system\n- State management system\n- Reusable UI components (buttons, sliders, dropdowns)\n\n### Sample Snake Game\n- Classic Snake gameplay with modern enhancements\n- Dynamic grid-based movement system\n- Collision detection (walls and self-collision)\n- Progressive difficulty - game speeds up as you score\n- Visual sprite-based graphics for snake segments and fruit\n- Sound effects for fruit eating and menu interactions\n- Score tracking with real-time display\n- Game over detection and restart functionality\n\n## How to Run\n\n1. Install Love2D from https://love2d.org/\n2. Navigate to this project folder in your terminal/command prompt\n3. Run the command: `love .`\n\n## Project Structure\n\n- `main.lua` - Entry point for the Love2D application\n- `conf.lua` - Configuration settings for the Love2D application\n- `src/` - Source code directory\n  - `states/` - Contains all game state implementations\n    - `gameState.lua` - Manages game settings and localization\n    - `menuState.lua` - Main menu implementation\n    - `settingsState.lua` - Settings menu implementation\n    - `controlsState.lua` - Controls/input settings menu\n    - `playState.lua` - Complete Snake game implementation\n  - `ui/` - Contains reusable UI components\n    - `button.lua` - Reusable button component\n    - `slider.lua` - Reusable slider component for volume controls\n    - `dropdown.lua` - Reusable dropdown component for selections\n  - `utils/` - Utility functions and helpers\n    - `fontManager.lua` - Font loading and management\n    - `localization.lua` - Multi-language localization system\n    - `soundManager.lua` - Audio management and playback\n    - `inputManager.lua` - Input handling (keyboard/gamepad)\n    - `json.lua` - JSON parsing utilities\n  - `entities/` - Game entities and objects (available for expansion)\n  - `systems/` - Game systems like physics, audio, etc. (available for expansion)\n  - `constants/` - Game constants and configuration\n    - `gameConfig.lua` - Centralized game configuration constants\n- `assets/` - Contains game assets\n  - `fonts/` - Font files (including multi-language support)\n  - `sounds/` - Audio files (menu sounds)\n  - `music/` - Background music files\n  - `images/` - Game sprites (snake segments, fruit)\n  - `shaders/` - GLSL shader files (empty - for future use)\n  - `maps/` - Level and map data (empty - for future use)\n\n## Localization System\n\nThe game includes a comprehensive multi-language localization system with support for 13 languages:\n\n### Supported Languages\n- **English** (`en`) - Default language\n- **中文 Chinese** (`zh`) - Simplified Chinese\n- **हिन्दी Hindi** (`hi`) - Hindi\n- **Español Spanish** (`es`) - Spanish\n- **Français French** (`fr`) - French  \n- **العربية Arabic** (`ar`) - Arabic (RTL support)\n- **বাংলা Bengali** (`bn`) - Bengali\n- **Português Portuguese** (`pt`) - Portuguese\n- **Русский Russian** (`ru`) - Russian\n- **日本語 Japanese** (`ja`) - Japanese\n- **한국어 Korean** (`ko`) - Korean\n- **Deutsch German** (`de`) - German\n- **Polski Polish** (`pl`) - Polish\n\n### Localization Features\n- **Complete translations** - All UI text is translated for every supported language\n- **RTL support** - Right-to-left text rendering for Arabic\n- **Dynamic language switching** - Change language in settings without restart\n- **Fallback system** - Falls back to English if a translation is missing\n- **Validation system** - Built-in validation to ensure translation completeness\n\n### Usage\n```lua\n-- Get localized text (uses current language setting)\nlocal playText = gameState.getText(\"play\")\n\n-- Direct access to localization module\nlocal localization = require(\"src.utils.localization\")\nlocal playText = localization.getText(\"play\", \"es\") -- Spanish\n```\n\n### Adding New Languages\n1. Add the language code and translations to `src/utils/localization.lua`\n2. Add the language to the `getAvailableLanguages()` function\n3. Use `localization.validateTranslations()` to check completeness\n\n## Input System\n\nThe game includes a comprehensive input management system with full customization support:\n\n### Supported Input Methods\n- **Keyboard** - Full QWERTY support with customizable bindings\n- **Gamepad** - Xbox/PlayStation controller support with analog and button inputs\n- **Hybrid Support** - Use keyboard and gamepad simultaneously\n\n### Input Features\n- **Action-based system** - Map multiple keys/buttons to single actions\n- **Real-time remapping** - Change controls without restarting\n- **Conflict prevention** - Prevents duplicate key assignments\n- **Input validation** - Ensures all controls remain functional\n- **Default restoration** - Reset to default bindings option\n\n### Available Actions\n- **Movement**: Up, Down, Left, Right (for game and menu navigation)\n- **Menu**: Select, Back (for menu interactions)\n- **Game**: All movement actions work in-game for Snake control\n\n### Usage\n```lua\n-- Check for action input (handles both keyboard and gamepad)\nif inputManager.isActionJustPressed(\"select\") then\n    -- Handle select action\nend\n\n-- Access input manager for custom controls\nlocal inputManager = require(\"src.utils.inputManager\")\n```\n\n## Audio System\n\nThe game includes a complete audio management system:\n\n### Features\n- **Music Management** - Background music with volume control\n- **Sound Effects** - Menu sounds and game audio feedback  \n- **Volume Control** - Separate music and effects volume sliders\n- **Dynamic Audio** - Context-aware music and sound triggering\n\n### Audio Assets\n- Menu background music\n- Menu navigation sounds (move, select, back)\n- Game sound effects (fruit eating)\n\n## Game Configuration\n\nAll game settings are centralized in `src/constants/gameConfig.lua`:\n\n### Configuration Categories\n- **Screen/Scaling** - Virtual canvas and window settings\n- **Snake Game** - Grid size, speed, difficulty progression\n- **Input** - Timing and threshold settings\n- **Audio** - File paths and audio configuration\n- **Fonts** - Font definitions and sizing\n- **UI** - Interface layout and behavior settings\n\n## Extending the Game\n\nThis is now a complete Snake game rather than just a template. To build upon it:\n\n### Game Enhancements\n1. **Add more game modes** - Time attack, multiplayer, obstacles\n2. **Power-ups** - Special fruits with different effects\n3. **Levels/Maps** - Different arena layouts and challenges\n4. **Visual effects** - Particles, animations, screen shake\n5. **Advanced scoring** - Combo systems, high score tables\n\n### Framework Extensions  \n1. **Add more states** - Pause menu, high scores, credits\n2. **Create game entities** - Use `src/entities/` for game objects\n3. **Implement game systems** - Use `src/systems/` for physics, particles, etc.\n4. **Expand UI components** - Add more reusable interface elements\n5. **Add more assets** - Sprites, sounds, music, shaders\n6. **Enhance settings** - More graphics options, accessibility features\n\n### Technical Improvements\n1. **Save system** - Game progress, high scores, achievements\n2. **Networking** - Multiplayer support, leaderboards  \n3. **Performance** - Optimize rendering, add object pooling\n4. **Platform support** - Mobile controls, different screen sizes\n5. **Modding support** - External content loading, scripting\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbthomas2622%2Flove2d-starter-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbthomas2622%2Flove2d-starter-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbthomas2622%2Flove2d-starter-kit/lists"}