| Crates.io | musi_lili |
| lib.rs | musi_lili |
| version | 0.3.0 |
| created_at | 2024-12-22 18:21:18.244677+00 |
| updated_at | 2025-05-13 10:41:21.156091+00 |
| description | musi_lili is a retro game engine for GB styled games written in Rust. Inspired by pico8. |
| homepage | |
| repository | https://codeberg.org/vivi-ui/lili |
| max_upload_size | |
| id | 1492183 |
| size | 226,719 |
musi lili is a retro game engine for GB styled games written in Rust. Inspired by pico8.
musi lili is a retro game engine not a complete Fantasy ConsoleA: (A on keyboard)B: (S on keyboard)Select: (Space on keyboard)Start: (Enter on keyboard)Mouse: (Mouse left or right)Left: (Left arrow key on keyboard)Right: (Right arrow key on keyboard)Up: (Up arrow key on keyboard)Down: (Down arrow key on keyboard)CTRL-P: switch color paletteCTRL-R: restart gameCTRL-B: pause the gameEscape: switch between game and editor (debug build only)CTRL-S: saves sprite-map and tile-map (debug build only)CTRL-Z: undo on sprite editor and map editor (debug build only)CTRL-Y: redo on sprite editor and map editor (debug build only)| Example Game | Sprite Editor | Map Editor |
|---|---|---|
![]() |
![]() |
| Confetti | Drawing | Map |
|---|---|---|
![]() |
![]() |
![]() |
More examples in the examples folder.
use musi_lili::{Game, Lili};
struct MyGame;
impl Game for MyGame {
fn init(_lili: &Lili) -> Self {
Self
}
fn update(&mut self, _lili: &Lili) {
// the code to update your game
}
fn draw(&mut self, lili: &Lili) {
// draw your game
lili.clear(0);
lili.txt("toki", 5, 5, 3);
}
}
fn main() {
musi_lili::run::<MyGame>(musi_lili::load!("my-game"));
}
games are drawn to a virtual display
the editor uses the same features and api as a musi_lili::Game
std: use rust std (default).gamepad: activate gamepad support (needs libudev to be installed).slint-femtovg: use winit with femtovg renderer as slint backend (default).slint-software: use winit with software renderer as slint backend.experimental: enable this feature to try out experimental features that are not yet ready for production.| Library | License | Used for |
|---|---|---|
| Slint | GNU GPlv3, Royalty-free or Paid | Window, framebuffer and event handling |
| embedded-graphics | Apache 2.0 or MIT | Pixel art drawing |
| dirs-next | Apache 2.0 or MIT |
Get user settings path |
| serde | Apache 2.0 or MIT | Serialize / Deserialize game data |
| serde-json | Apache 2.0 or MIT | Serialize / Deserialize game data |
| gilrs | Apache 2.0 or MIT | Support for game controllers |
| web-time | Apache 2.0 or MIT | Use Instant::now() on the web |
| web-sys | Apache 2.0 or MIT | Used for web save game management |
| rodio | Apache 2.0 or MIT | Used for audio support |
The source code of lili available under the terms of LGPL-3.0-only license. (See LICENSE-LGPL-3.0-only for details.). The source code of the examples if available under the terms of MIT license (See LICENSE-MIT for details.)
If you are interested to contribute to the project, feel free to check the Contributing guide please.