C will be used for the main loop and creating two menus: one for starting/continuing a game, loading, saving, adjusting settings, etc. Another for managing games during gameplay. We can use Lua to script the options that are displayed on these menus.
Implement autosaving functionality in C, saving the state at specific intervals and/or when certain events occur. Possibly add user-defined intervals. Use Lua to define what data should be saved and how it is structured.
This feature requires maintaining a history of game states. We can use a stack-based approach, where each time the game state changes it is pushed onto the stack. To rollback we simply pop from the stack until reaching the desired state.
Use background threads or asynchronous loading techniques to load images in the background while the main game loop continues executing. Lua can be used to determine which images need loading based on the current game state and display.
Create a unified input system in C that supports mouse, keyboard, and gamepads/controllers. Use Lua to define how inputs are processed within specific games or storylines.
Implement options where users can select between fullscreen, windowed, borderless. Lua can be used for dynamic adjustments based on player input.
Use Lua to script the text displays in game and create functions that allow skipping, hiding, or auto-advancing through the text depending on certain conditions or key presses
Separate music, sfx, and voice controls into independent systems. Players should be able to adjust these settings through an audio configuration menu. C handles the lower-level details of playback and management, while Lua could control when and how audio assets are played.
Use Lua to define the different styles of text presentation - ADV and NVL. We can create functions that handle the display logic for each mode, which can be called by C main loop when appropriate.
Implement a system in C where style attributes (fonts, colors, sizes) can be set or modified dynamically through Lua scripts. The interface should allow creators to easily adjust text and button styles via a UI, storing the changes in an accesible format, i.e. configuration files or embedded data structures.
Design a screen management system in C that utilizes Lua for defining layout and behavior. We could use a combination of tables and functions in Lua to represent the different elements (buttons, text blocks, etc.) on each screen and how they should be arranged visually.
For games that want to change interface dynamically based on player actions or story progression we could create an event-driven system in C in which Lua scripts emit events triggering changes to the UI. The C code will handle these events by adjusting the screen layout and component appearance accordingly.
The C code will manage the underlying engine functionality (text display, user input handling, etc.) while Lua scripting is used for defining dialogue presentation styles, customizing visual elements, and controlling dynamic UI layouts and behavior. This will give us a flexible, interactive interface that can be customized by non-programmers.
Images: JPEG, PNG, WEBP (ew), BMP, GIF,
Audio: OPUS, OGG Vorbis, FLAC, WAV, MP3, MP2
Movies: WEBM, OGG Theora, VP9, VP8, MPEG 4, MPEG 2, MPEG 1
Scalable Fonts: TrueType
Image-based Fonts: SFont, BMFont, MudgeFont