Adds Game Jam Ready Templates & ReiLua API Updates

(Most of the code is Copilot Generated LOL)
This commit is contained in:
2025-11-05 01:50:32 +05:30
parent 2d565e5bcb
commit 10c22d3567
13 changed files with 2396 additions and 1 deletions

149
template/COMMON_ISSUES.md Normal file
View File

@@ -0,0 +1,149 @@
# Common Issues and Solutions
## ESC Key Closes the Game
### Problem
By default, RayLib sets ESC as the exit key. When you press ESC, `WindowShouldClose()` returns true and the game closes immediately, even if you want to use ESC for pause menus or other game functionality.
### Solution
Disable the default ESC exit key behavior by calling `RL.SetExitKey(0)` in your `RL.init()` function:
```lua
function RL.init()
-- Window setup
RL.SetWindowTitle("My Game")
-- Disable ESC key from closing the window
RL.SetExitKey(0) -- 0 = KEY_NULL (no exit key)
-- OR set a different exit key
-- RL.SetExitKey(RL.KEY_F12) -- Use F12 instead
-- Rest of initialization...
end
```
### Options
**Option 1: No Exit Key (Recommended for Games)**
```lua
RL.SetExitKey(0) -- Disable exit key completely
```
Now ESC (and any key) won't close the game. Handle exit through:
- Menu option (File → Exit)
- Alt+F4 (Windows default)
- Close window button (X)
**Option 2: Different Exit Key**
```lua
RL.SetExitKey(RL.KEY_F12) -- Use F12 to exit
```
Now only F12 will close the game, ESC is free for pause menus.
**Option 3: Custom Exit Handling**
```lua
-- In RL.update()
if RL.IsKeyPressed(RL.KEY_ESCAPE) then
-- Show pause menu or confirmation dialog
GameState.push(pauseMenu)
end
if RL.IsKeyPressed(RL.KEY_F10) then
-- Exit game
RL.CloseWindow()
end
```
### Technical Details
**What happens by default:**
1. RayLib sets ESC as the default exit key
2. When ESC is pressed, `WindowShouldClose()` returns true
3. Main loop in `src/main.c` checks this and exits
**After calling `RL.SetExitKey(0)`:**
1. No key triggers `WindowShouldClose()`
2. ESC is now available for your game logic
3. You control when the game exits
### Example: Pause Menu with ESC
```lua
-- In your game state:
function GameState:update(dt)
-- Pause with ESC
if RL.IsKeyPressed(RL.KEY_ESCAPE) then
if self.paused then
self.paused = false
else
self.paused = true
end
end
if not self.paused then
-- Update game logic
end
end
```
### Template Fix
The template's `main.lua` has been updated with:
```lua
RL.SetExitKey(0) -- Disable ESC exit key
```
This allows the game state to use ESC for pause functionality without closing the game.
### Related Functions
- `RL.SetExitKey(key)` - Set which key exits the game
- `RL.WindowShouldClose()` - Check if game should close
- `RL.CloseWindow()` - Manually close the window
- `RL.IsKeyPressed(key)` - Check if key was pressed this frame
### Development Tip
During development, you might want quick exit. Consider:
```lua
function RL.init()
RL.SetExitKey(0) -- Disable ESC
-- But add debug exit key
if DEBUG_MODE then
RL.SetExitKey(RL.KEY_F12)
end
end
```
Or handle it in update:
```lua
function RL.update(dt)
-- Debug: Quick exit with Shift+ESC
if RL.IsKeyDown(RL.KEY_LEFT_SHIFT) and RL.IsKeyPressed(RL.KEY_ESCAPE) then
RL.CloseWindow()
end
end
```
## Other Common Issues
### Window Closes When X Button Clicked
This is normal behavior. If you want to show a confirmation dialog:
```lua
function RL.update(dt)
if RL.WindowShouldClose() then
-- Show "Are you sure?" dialog
-- If player cancels, need to prevent close somehow
end
end
```
Note: Preventing X button close is tricky with RayLib's current API.
### Alt+F4 Closes Game
This is OS-level behavior and cannot be easily disabled. It's recommended to save game state frequently.
---
**Updated**: 2025-11-05
**Template Version**: 1.0