【Fyrox】Rustのゲームライブラリを使ってみた【Part1 起動するまで】

updated 2022-5-2

前提

まだお試し段階なので、Rustについては省きます
インストールなどは調べてください

Froxy EngineはRG3Dから改名されたようで、動画とかRG3Dで検索するとちょっと出てきました
サイトのURL見ると同じなのは確実
シーンエディターらしい

2021年版に対応してるそうなので、アップデート

rustup default nightly && rustup update

環境

MacOS Big Sur 11.4
cargo 1.62.0-nightly
Fyrox

インストール

エディター付きということでかなりワクワクしながらインストールしています

sudo cargo install fyroxed

ちょっと時間かかるのでお茶でも飲んで待ちます

環境構築

プロジェクトを作りたい親フォルダで以下のコマンドを実行してフォルダを作成します

cargo new fyrox

newの後に書いた部分がフォルダ(プロジェクト)名になります

Cargo.tomlファイルを編集

...
[dependencies]
fyrox = "^0.24"

エディター起動

ターミナルからエディターを起動

fyroxed

すごい重い

プロジェクトのフォルダを探すのが大変だけど一度選択するとまた選べるので大丈夫

シーンの作成

先ほど作ったプロジェクトの下にscenesフォルダを作ったので、シーンを追加します  FileボタンからNew Sceneを選択してフォルダを選びます
箱が一つ置かれた状態に

ゲームの構築

公式に書かれている通りにsrc/main.rsを編集

extern crate fyrox;

use fyrox::{
    engine::Engine,
    engine::framework::prelude::*,
};

struct Game { }

impl GameState for Game {
    fn init(_engine: &mut Engine) -> Self where Self: Sized {
        Self { }
    }
}

fn main() {
    Framework::<Game>::new()
        .unwrap()
        .title("Simple")
        .run();
}

起動

デフォルトだとsudoつけないとbuildrunできなくて散々時間を費やした...

cargo run

Simpleってタイトルの何も表示されないアプリが完成()

背景色をいじる

ControlFlowColorHsvのライブラリをuseして、背景色を時間で変更していくソース
公式のページに載ってるものに足りないソースも足した

extern crate fyrox;

use fyrox::{
    engine::Engine,
    engine::framework::prelude::*,
    event_loop::ControlFlow,
    core::{
        color::Color,
        color::Hsv,
    }
};

struct Game {
    hue: f32,
}

impl GameState for Game {
    fn init(_engine: &mut Engine) -> Self where Self: Sized {
        Self {
            hue: 0.0
        }
    }

    fn on_tick(&mut self, engine: &mut Engine, dt: f32, _: &mut ControlFlow) {
        self.hue += 24.0 * dt;

        engine
            .renderer
            .set_backbuffer_clear_color(Color::from(Hsv::new(self.hue % 360.0, 100.0, 100.0)))
    }
}

fn main() {
    Framework::<Game>::new()
        .unwrap()
        .title("Simple")
        .run();
}

再度起動

cargo run

色が変わっていく...!()

まとめ

公式のソースは大体端折っているところがあるので、最初が難しいですがそれを抜ければ...!
起動までこんなにすんなりいけるライブラリは久しぶりです
Rustがしっかりしているからなのか、Fyroxのおかげなのか...!

参考

Hello, Cargo!
Fyrox Engine Getting Started
Fyroxゲームエンジンを起動する方法は? #272
Rust Dependencies
fyrox-book/fyrox-book.github.io
RPG Tutorial Part 1 - Character Controller