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. 結果

hello_world.png

おわりに

あとは色々サンプルを見ながら作りたいゲームを作りましょう。

广告
将在 10 秒后关闭
bannerAds