2019/4/13 追記
ggez の開発が進んでおり、SDL2 の設定は不要になりました。
当記事の内容は古いので、現時点で動く(画像表示/BGM/SE/キー入力)サンプルを置いておきます。
https://github.com/ahyaemon/ggez_template
150行程度のサンプルなので、ソースコードを読めばある程度分かるかと思います。
使用している曲は自作の超良曲です。
はじめに
昔作ったゲーム の次回作を Rust で作ろうと思い、良いゲームライブラリがないか調べたところ ggez というものがありました。
https://github.com/ggez/ggez
まだほとんど触っていませんが、hello world を出すところまでやったので書いておこうかと思います。
環境
OS: Windows 10
rustc: 1.28.0
tool-chain: stable-x86_64-pc-windows-msvc
rust は rustup-init.exe を使用してインストールしています。
https://www.rust-lang.org/ja-JP/install.html
Rust-SDL2のインストール
ggez を動かすためには Rust-SDL2 がインストールされている必要があります。
https://github.com/Rust-SDL2/rust-sdl2
1. SDL2-devel-2.0.x-VC.zip のダウンロード
下記サイトの Download ページからダウンロードします。
http://www.libsdl.org/
私がダウンロードしたときのバージョンは SDL2-devel-2.0.8-VC.zip でした。
※ toolchain に msvc を使用しているため、VC をダウンロードしています。
2. zipを解凍
一応私は C ドライブ直下に解凍しましたが、どこでもいいです。
3. .libファイルをコピー
解凍した zip の中に、
SDL2-devel-2.0.x-VC\SDL2-2.0.x\lib\x64\
というフォルダがあり、その中の .lib ファイルを必要な場所にコピーします。
※ .lib ファイルと一緒に .dll ファイルも入っていますが、後で使います
rustup-init.exe を使用して rust をインストールしている場合、
C:\Users\{ユーザー名}\.multirust\toolchains\{アクティブなtoolchain}\lib\rustlib\{アクティブなtoolchain}\lib
というフォルダがあるので、その中にコピーします。
※ rustup-init.exe 以外の方法で rust をインストールしている場合はコピー先が異なるので、Rust-SDL2のgithubを参考にしてください
cargoプロジェクトの作成・実行
1. プロジェクトを作成
cargo new my_first_ggez --bin
2. SDL2.dll をコピー
先ほど解凍した SDL2 の
SDL2-devel-2.0.x-VC\SDL2-2.0.x\lib\x64\
の中に SDL2.dll というファイルがあります。
これをプロジェクト直下に置きます。
my_first_ggez\SDL2.dll
3. Cargo.tml の編集
sdl2, ggez への依存関係を追記します。
[dependencies]
sdl2 = "0.31"
ggez = "0.4"
4. サンプルをコピー
4.1. hello_world.rs のコピー
ggez のサンプルページから、hello_world.rs を丸ごとコピーして、main.rs に貼り付けます。
https://github.com/ggez/ggez/blob/master/examples/hello_world.rs
4.2. DejaVuSerif.ttf のコピー
hello_world.rs では フォントファイル DejaVuSerif.ttf を使うので、コピーしてきて resources フォルダに置きます。
https://github.com/ggez/ggez/blob/master/resources/DejaVuSerif.ttf
my_first_ggez\resources\DejaVuSerif.ttf
5. ビルド
cargo build
※ 次の run の時にビルドされるので、build はやらなくてもいいです
6. 実行
cargo run
7. 結果
おわりに
あとは色々サンプルを見ながら作りたいゲームを作りましょう。