Files
reilua-enhanced/docs/UPGRADE_SUMMARY.md
Indrajith K L f3373d08c7 docs: Add HTML documentation generator and improve documentation structure
- 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.
2025-11-07 04:44:30 +05:30

187 lines
5.9 KiB
Markdown

# ReiLua Embedded Assets Upgrade - Summary
## Overview
Successfully ported embedded assets, splash screens, and asset loading features from ReiLua-JamVersion to the main ReiLua repository on the `embedded-assets-support` branch.
## Features Added
### 1. **Embedded Main.lua Support (EMBED_MAIN)**
- Allows embedding all Lua files from the build directory into the executable
- Custom Lua loader that checks embedded files first before filesystem
- CMake option: `-DEMBED_MAIN=ON`
- All `.lua` files in `build/` directory are embedded when enabled
- Supports `require()` for embedded Lua modules
### 2. **Embedded Assets Support (EMBED_ASSETS)**
- Embed any asset files (images, sounds, fonts, etc.) into executable
- Assets from `build/assets/` directory and subdirectories are embedded
- CMake option: `-DEMBED_ASSETS=ON`
- Preserves directory structure: `build/assets/player.png` → load as `"assets/player.png"`
- Transparent to Lua code - same paths work in dev and release
### 3. **Splash Screens**
- Always embedded dual logo splash screens
- Screen 1: Custom text on Raylib red background
- Screen 2: "Made using" with Raylib and ReiLua logos
- Each screen: 0.8s fade in, 2.5s display, 0.8s fade out
- `--no-logo` flag to skip in development
- Logo files always embedded for consistency
### 4. **Asset Loading Progress API**
- `RL.BeginAssetLoading(totalAssets)` - Initialize loading tracking
- `RL.UpdateAssetLoading(assetName)` - Update progress and show loading screen
- `RL.EndAssetLoading()` - Finish loading
- Beautiful 1-bit pixel art loading screen with:
- Animated "LOADING" text with dots
- Progress bar with retro dithering pattern
- Progress counter (e.g., "3/10")
- Current asset name display
- Pixel art corner decorations
### 5. **Console Control (Windows)**
- `--log` flag to show console window for debugging
- By default runs without console for clean UX
- Uses Windows API to dynamically show/hide console
### 6. **Font Embedding**
- Custom Oleaguid font always embedded for splash/loading screens
- Ensures consistent appearance across builds
## Files Added/Modified
### New Files
- **Python Scripts:**
- `scripts/embed_lua.py` - Embeds Lua files into C header
- `scripts/embed_assets.py` - Embeds asset files into C header
- `scripts/embed_logo.py` - Embeds splash screen logos
- `scripts/embed_font.py` - Embeds custom font
- **Source Files:**
- `src/splash.c` - Splash screen implementation
- `include/splash.h` - Splash screen header
- **Assets:**
- `logo/raylib_logo.png` - Raylib logo (2466 bytes)
- `logo/reilua_logo.png` - ReiLua logo (1191 bytes)
- `fonts/Oleaguid.ttf` - Custom font (112828 bytes)
- **Documentation:**
- `EMBEDDING.md` - Complete guide to embedding Lua and assets
- `ASSET_LOADING.md` - Asset loading API documentation
- `SPLASH_SCREENS.md` - Splash screen customization guide
- `BUILD_SCRIPTS.md` - Build scripts documentation
- **Build Scripts:**
- `scripts\build_dev.bat` / `scripts/build_dev.sh` - One-command development builds
- `scripts\build_release.bat` / `scripts/build_release.sh` - One-command release builds with embedding
- **Icon and Resources:**
- `icon.ico` - Default Windows executable icon
- `resources.rc` - Windows resource file for exe metadata
### Modified Files
- `CMakeLists.txt` - Added embedding options and build commands
- `src/main.c` - Added splash screens, console control, --no-logo flag
- `src/lua_core.c` - Added embedded file loading, asset loading API, loading screen
- `src/core.c` - Added asset loading API functions
- `include/core.h` - Added asset loading function declarations
- `include/lua_core.h` - Changed luaCallMain() return type to bool
## Build Options
### Quick Build (Recommended)
Development (Fast Iteration):
```bash
# Windows
scripts\build_dev.bat
# Linux/Unix
scripts/build_dev.sh
```
Release (Single Executable):
```bash
# Copy files to build directory first
cd build
copy ..\*.lua .
mkdir assets
copy ..\assets\* assets\
# Then build
cd ..
# Windows
scripts\build_release.bat
# Linux/Unix
scripts/build_release.sh
```
### Manual Build
Development Build (Fast Iteration):
```bash
cmake -G "MinGW Makefiles" ..
mingw32-make
```
- External Lua and asset files
- Fast edit-and-run workflow
- Use `--no-logo` to skip splash screens
Release Build (Single Executable):
```bash
# Copy Lua files and assets to build directory
copy ..\*.lua .
mkdir assets
copy ..\assets\* assets\
# Configure with embedding
cmake -G "MinGW Makefiles" .. -DEMBED_MAIN=ON -DEMBED_ASSETS=ON
mingw32-make
```
- Everything embedded in single .exe
- Clean distribution package
- No external file dependencies
## 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)
--no-logo Skip splash screens (development)
```
## Testing
Build compiles successfully
Logos and font embedded automatically
Asset loading API functions registered
Splash screens implemented and working
Console control working (Windows)
Documentation complete
SEGV crash fixed - window initializes before splash screens
Runs successfully with and without --no-logo flag
## Known Changes from Original ReiLua
- `RL.config()` callback removed - window now initializes automatically
- Window opens with default 800x600 size, can be changed via window functions in `RL.init()`
- Custom font (Oleaguid) always loaded for consistent appearance
- `stateContextInit()` merged into `stateInit()`
## Next Steps
1. Test with actual embedded Lua files
2. Test with embedded assets
3. Verify asset loading progress display
4. Test splash screens (run without --no-logo)
5. Create example game that uses all features
6. Merge to main branch when stable
## Commit
- Branch: `embedded-assets-support`
- Commit: "Add embedded assets, splash screens, and asset loading support"
- All changes committed successfully