- Add html_docs/ directory with Python-based documentation generator - Include custom CSS styling for modern, clean documentation layout - Update README.md with improved formatting and documentation links - Enhance markdown documentation across all docs/ files: - Improve API documentation with better code examples - Refactor DOCUMENTATION_INDEX.md for clearer navigation - Update EMBEDDING.md, CUSTOMIZATION.md, and other guides - Standardize formatting and improve readability throughout - Fix inconsistent line endings and formatting issues The HTML documentation generator creates a styled, browsable version of the project documentation for easier reading and navigation.
6.6 KiB
Embedding main.lua into Executable
When you're ready to ship your game, you can embed all Lua files and asset files directly into the executable.
Development vs Release Workflow
Development Build (Fast Iteration)
During development, use external files for quick iteration.
Setup:
GameFolder/
├── ReiLua.exe
├── main.lua
├── player.lua
└── assets/
├── player.png
└── music.wav
Build:
cd build
cmake ..
cmake --build .
Benefits:
- Edit Lua files and re-run immediately
- Edit assets and reload
- Fast development cycle
- Debug with
--logflag
Release Build (Single Executable)
For distribution, embed everything into one file.
Setup:
cd build
# Copy Lua files to build directory
copy ..\main.lua .
copy ..\player.lua .
# Create assets folder and copy files
mkdir assets
copy ..\player.png assets\
copy ..\music.wav assets\
Build:
# Configure with embedding
cmake .. -DEMBED_MAIN=ON -DEMBED_ASSETS=ON
# Build release
cmake --build . --config Release
Result:
Distribution/
└── YourGame.exe (Everything embedded!)
Benefits:
- Single executable file
- No external dependencies
- Users can't modify game files
- Smaller download (no separate files)
Quick Start
Embedding Lua Files
-
Copy your Lua files to the build directory:
copy main.lua build\main.lua copy player.lua build\player.lua -
Build with EMBED_MAIN option:
cd build cmake .. -DEMBED_MAIN=ON cmake --build . --config Release
Command Line Options
ReiLua supports several command-line options:
ReiLua [Options] [Directory to main.lua or main]
Options:
-h, --help Show help message
-v, --version Show ReiLua version
-i, --interpret Interpret mode [File name]
--log Show console window for logging (Windows only)
Console/Logging
By default, ReiLua runs without a console window for a clean user experience. To enable console output for debugging:
# Run with console for debugging
ReiLua.exe --log
# You can also combine with other options
ReiLua.exe --log path/to/game
# Or with interpret mode
ReiLua.exe --log -i script.lua
This is useful during development to see:
- TraceLog output
- Print statements
- Lua errors
- Debug information
Complete Release Workflow
Here's a complete step-by-step guide to prepare your game for release:
Step 1: Organize Your Project
Ensure your project has this structure:
MyGame/
├── main.lua
├── player.lua
├── enemy.lua
├── player.png
├── enemy.png
├── music.wav
└── icon.ico (optional)
Step 2: Customize Branding (Optional)
Change executable icon:
# Replace ReiLua's icon with yours
copy MyGame\icon.ico ReiLua\icon.ico
Edit executable properties:
Open ReiLua\resources.rc and modify:
VALUE "CompanyName", "Your Studio Name"
VALUE "FileDescription", "Your Game Description"
VALUE "ProductName", "Your Game Name"
VALUE "LegalCopyright", "Copyright (C) Your Name, 2025"
Change executable name:
Edit ReiLua\CMakeLists.txt:
project( YourGameName ) # Change from "ReiLua"
See CUSTOMIZATION.md for full details.
Important: Asset Paths
Keep your paths consistent! The embedding system now preserves the assets/ prefix, so use the same paths in both development and release:
-- Correct - works in both dev and release
playerImage = RL.LoadTexture("assets/player.png")
backgroundImg = RL.LoadTexture("assets/background.png")
musicSound = RL.LoadSound("assets/music.wav")
Your Lua code doesn't need to change between development and release builds!
Step 3: Prepare Build Directory
cd ReiLua\build
# Copy all Lua files
copy ..\MyGame\*.lua .
# Create assets folder
mkdir assets
# Copy all asset files (images, sounds, etc.)
copy ..\MyGame\*.png assets\
copy ..\MyGame\*.wav assets\
copy ..\MyGame\*.ogg assets\
# Or copy entire folders
xcopy /E /I ..\MyGame\images assets\images
xcopy /E /I ..\MyGame\sounds assets\sounds
Step 4: Build Release
# Configure with embedding enabled
cmake .. -DEMBED_MAIN=ON -DEMBED_ASSETS=ON
# Build in release mode
cmake --build . --config Release
Step 5: Test Release Build
# Test with console to verify everything loaded
YourGameName.exe --log
# Test production mode (no console)
YourGameName.exe
Check console output for:
- "ReiLua x.x.x" version info
- No file loading errors
- Game runs correctly
Step 6: Package for Distribution
# Create distribution folder
mkdir ..\Distribution
copy YourGameName.exe ..\Distribution\
# Optional: Add README, LICENSE, etc.
copy ..\README.txt ..\Distribution\
Your game is now ready to distribute as a single executable!
Workflow Summary
| Stage | Build Command | Files Needed | Result |
|---|---|---|---|
| Development | cmake .. && cmake --build . |
Lua + assets external | Fast iteration |
| Testing | cmake .. -DEMBED_MAIN=ON && cmake --build . |
Lua in build/ | Test embedding |
| Release | cmake .. -DEMBED_MAIN=ON -DEMBED_ASSETS=ON && cmake --build . --config Release |
Lua + assets in build/ | Single .exe |
Troubleshooting
Problem: "No .lua files found in build directory"
# Solution: Copy Lua files to build directory
copy ..\*.lua .
Problem: "No files found in assets folder"
# Solution: Create assets folder and copy files
mkdir assets
copy ..\*.png assets\
Problem: Game crashes on startup
# Solution: Run with --log to see error messages
YourGameName.exe --log
Problem: Assets not loading
- Verify assets are in
build/assets/before building - Check asset filenames match in your Lua code
- Use
--logto see loading errors
Notes
.luafiles in the build directory root are embedded when usingEMBED_MAIN=ON- Asset files in build/assets/ folder (and subfolders) are embedded when using
EMBED_ASSETS=ON main.luamust exist and is always the entry point- Asset embedding works with subdirectories:
assets/images/player.png→ Load withLoadImage("player.png") - Both Lua and asset embedding can be used independently or together
- The system falls back to file system if embedded file is not found
- No code changes needed - all raylib functions work automatically with embedded assets
Customizing Your Executable
Want to add your own icon and version info to the executable? See CUSTOMIZATION.md for details on:
- Adding a custom icon
- Setting exe properties (company name, version, description)
- Renaming the executable