Engine Initialization
Rusty Engine has a prelude which you should import in main.rs:
use rusty_engine::prelude::*;
You must define a GameState struct (which we'll go over in the game state section). This will be a struct that you store your game-specific data. Things like high score, player name, health left, etc. You must put the line #[derive(Resource)] above your struct definition.
use rusty_engine::prelude::*;
#[derive(Resource)]
struct GameState {
    health_left: i32,
}
fn main() {
    // ...
}
Create a new Game struct in your main function and assign it to a mutable variable, usually called game.
fn main() {
    let mut game = Game::new();
    // ...
Use your Game instance to set up your game and register logic functions to run each frame.
At the end of main you will run your game with Game::run(). The run method takes an initial game state, so provide an instance of your GameState struct:
fn main() {
    // ...
    game.run(GameState { health_left: 42 });
}
If you didn't define any fields for your GameState struct (like above, we had a health_left field), the syntax looks like this:
fn main() {
    // ...
    game.run(GameState {});
}
Example
If you put it all together, it looks like this. This example will run and create an empty window, but won't do anything, yet.
use rusty_engine::prelude::*;
#[derive(Resource)]
struct GameState {
    health_left: i32,
}
fn main() {
    let mut game = Game::new();
    // get your game stuff ready here
    game.run(GameState { health_left: 42 });
}