[ English | Deutsch | Español | Français | 日本語 ]
GokuはRust用の2Dゲーム開発アプリケーションであり(将来的には3Dゲームとの統合が計画されています)、完全にRustで書かれています。
macOS、Windows、およびLinuxで利用可能です。
現在はSDL2に基づいています。
Gokuは集中的で軽量であり、依存関係が少ない(主にSDL2)です。下記の機能を提供します:
-
ウィンドウとメインループ
-
2Dグラフィックスとテキスト
-
サウンドと音楽
-
キーボード、マウス、ゲームパッドの入力
-
開発のためのGUIインターフェイス
-
ピクセルキャラクター生成(AI使用)
現在Gokuが使用しているサードパーティのライブラリ:
-
SDL2
-
nalgebra
-
imgui
-
serde
-
rfd
-
glow
-
webbrowser
重要!!!
- クイック概要はこちら -> Goku Engine
- ドキュメントはこちら -> Gitbook
- 開発の進捗、計画、新しい機能に関するブログはこちら -> ニュース
- すべてのサンプルはこちら -> 公式サンプル
お気に入りのパッケージ管理ツールを使用してインストールするか、または http://www.libsdl.org/ を通じてインストールします。
Ubuntuの例:
sudo apt-get install libsdl2-dev
Fedoraの例:
sudo dnf install SDL2-devel
Archの例: (Archは通常のパッケージと開発パッケージが別々になっていないので、すべて一緒になります。)
sudo pacman -S sdl2
Cコンパイラ(gcc
)も必要になるかもしれません。
static-link
機能を使用してSDL2を動的にリンクする代わりに静的にリンクすることを選択できます。
Linuxでは、次のいずれかを追加で行う必要があります:
bundled
機能を使用する- rustcがSDL2ライブラリとその依存関係を静的リンクするためのリソースを探す場所を知るために
use-pkgconfig
機能を使用する。これは、システムから静的にSDL2をリンクするために必要なリソースを見つける構築法がないため必要です - [vcpkg][vcpkg]を使用して開発ライブラリをインストールする。vcpkgを使用してLinuxおよび他のオペレーティングシステムで静的バイナリを生成する方法に関する指示は[こちら][cargo-vcpkg-usage]にあります
macOSでは、これらを [homebrew][homebrew]経由でインストールすることをお勧めします。
brew install sdl2
Homebrewの最近のバージョンでは、インストールされたライブラリは通常$(brew --prefix)/lib
にリンクされます。
古いバージョンを使用している場合、SDLのシンボリックリンクは/usr/local/lib
に存在することがあります。
Homebrewでインストールされたライブラリをリンクしやすくするために、以下を使用しているシェルに追加します。
~/.zshenv
または~/.bash_profile
に以下の行を追加します(ZSHまたはBashを使用しているかによります)。
export LIBRARY_PATH="$LIBRARY_PATH:$(brew --prefix)/lib"
-
http://www.libsdl.org/ からMSVC開発ライブラリをダウンロードします(SDL2-devel-2.0.x-VC.zip)。
-
SDL2-devel-2.0.x-VC.zipをお好きなフォルダに解凍します(後で削除することができます)。
-
以下のlibファイルをすべてコピーします
SDL2-devel-2.0.x-VC\SDL2-2.0.x\lib\x64\
Rust 1.6以降の場合は
C:\Program Files\Rust*lib*\rustlib\x86_64-pc-windows-msvc\lib
Rustバージョン1.5およびそれ以下の場合は
C:\Program Files\Rust*bin*\rustlib\x86_64-pc-windows-msvc\lib
またはお好きなライブラリフォルダにコピーし、以下のシステム環境変数が存在することを確認します
LIB = C:\your\rust\library\folder
Rustupユーザーの場合、このフォルダは
C:\Users{Your Username}.rustup\toolchains{current toolchain}\lib\rustlib{current toolchain}\lib
現在のツールチェーンはおそらくstable-x86_64-pc-windows-msvc
です。
-
SDL2.dllを
SDL2-devel-2.0.x-VC\SDL2-2.0.x\lib\x64\
からcargoプロジェクトにコピーし、Cargo.tomlのすぐ隣に置きます。
-
ゲームを出荷するときは、SDL2.dllをコンパイルされたexeと同じディレクトリにコピーして、ゲームが起動するようにします。
http://libsdl.org/ で提供されているMSVC開発ライブラリには静的ライブラリが含まれていないため、windows-msvcツールチェーンでstatic-link
機能を使用する場合、次のいずれかを行う必要があります。
- SDL2静的ライブラリを自分でビルドし、ツールチェーンの
lib
ディレクトリにコピーする;または bundled
機能も有効にし、静的ライブラリをビルドする;または- vcpkgから静的なSDL2ライブラリを使用する。
新しい機能であるピクセルキャラクター生成のために、Python 3およびPyTorchがインストールされていることを確認してください。現在、AIはPythonで書かれていますが、tch-rsを使用してRustで再実装する計画があります。
pip3 install torch torchvision torchaudio
詳細についてはこちらを参照してください
PyO3は、Pythonのバージョンを決定し、正しいリンカー引数を設定するためにビルドスクリプト(pyo3-build-configクレートによってバックアップされています)を使用します。デフォルトでは、次の順で使用しようとします:
- アクティブなPython仮想環境
python
実行ファイル(Python 3のインタープリタである場合)python3
実行ファイル
Pythonインタープリタをオーバーライドするには、環境変数PYO3_PYTHON
を設定します。例:PYO3_PYTHON=python3.6
、PYO3_PYTHON=/usr/bin/python3.9
、またはPyPyインタープリタPYO3_PYTHON=pypy3
。
PyO3がPythonライブラリのリンク時にエラーを出す場合、以下の環境変数を使用できます:
Windowsの場合:
$env:LIB += ";<python_libの場所>"
UNIXの場合:
export LIB=$LIB:/python_libの場所
-
グラフィックス:
-
ウィンドウとメインループ
-
2Dグラフィックスとテキスト
- ボタン
- スライダー
- チェックボックス
- テキストボックス
- フォント(ttf形式のみ)
- パーティクルシステム(スパーク)
- パララックス背景
-
開発用のGUIインターフェイス
- 組み込みのテキストエディタ
- デバッグコンソール
-
複数の画像ファイル形式:JPGおよびPNG
-
ライティング:
- ポイントライト
- スポットライト
- アンビエントライトフィルタ
-
-
オーディオ
- 再生
- ループ
- 一時停止
- 再開
- 複数のオーディオファイル形式:OGG、MP3、FLAC、MOD
-
入力ハンドラ:
- キーボード、マウス、およびゲームパッドの入力
-
数学型:
- Vector2、Vector3、Vector4
- Matrix33、Matrix34、Matrix43、Matrix44
-
物理:
- 衝突
- 剛体(現在、キネマティック剛体は持っていません)
-
シーン:
- 柔軟なJSONファイル形式:全体のシーンまたは個々のメッシュを記述することができます。
-
アニメーション
-
AIシステム:
- ビヘイビアツリー
-
タイマー
-
ダイアログシステム
-
プロファイラー
-
VSCodeサポート
-
複数言語サポート:
- ドイツ語
- スペイン語
- 日本語
- フランス語
-
サポートプラットフォーム:
git clone https://github.com/ladroid/goku.git
- すべてを抽出
- 実行コマンド:
cargo run
重要!!! 現在、GUIはまだ開発中であり、imguiとsdl2を組み合わせることを試していますが、完全に互換性を持たせるには時間がかかります。したがって、それを使用することを希望する人は、コンポーネント
Scene
を追加し、そこにスクリプトを書くことが可能です。それらを組み合わせる方法を知っている場合は、本当に素晴らしいことになります!
- ツールを押します
- ビルドを押してWebを選択します
ビューポートを有効にするには、[設定] -> [全般] -> [キャンバスを有効にする]で設定します。同様にグリッドビューモードも設定できます
-
最終的には1つの大きなものの代わりに別の.rsファイルを作成する -
canvasを使った現在のソリューションの代わりにビューポートを作成する(おそらくアプリ内の別のウィンドウでsdl2とOpenGLを組み合わせる必要があります) -
wgpuと統合する(sdl2ライブラリの例およびwgpu-rs用imguiレンダラー)
-
物理を改善する
-
UIシステムを追加/改善する(ボタンに画像を追加することが可能になる)
-
ライトとシャドウを改善する -
単純な形状を描画する(円、長方形、三角形など)
-
タブ -
プロファイラを改善する -
パーティクルシステムを追加/改善する -
エンジンのGUIおよびテキストエディタを改善する(おそらく組み込みのテキストエディタの代わりにVSCodeまたは他のIDEとの統合を作成する) -
ブループリントを追加する(おそらくimguiノードグラフ https://github.com/benmkw/imnodes-rs)
-
モバイルiOS、Android用のゲームをビルドする
-
コンソール用のゲームをビルドする(PS4-5、Xbox、Nintendo Switch)
-
物理マテリアル
-
C++との統合(おそらくbindgenのようなもの)
テトリスゲームをビルドする例はこちらで見つけることができます
ローグライクプロトタイプをビルドする例はこちらで見つけることができます
- スパーク -> 関数
spawn_particles_sparks
を使用 こちら - 火 -> 関数
spawn_particles_fires
を使用 こちら - 雨 -> 関数
spawn_particles_rain
を使用 こちら
サイドスクロールプロトタイプをビルドする例はこちらで見つけることができます
プラットフォーマープロトタイプをビルドする例はこちらで見つけることができます
プラットフォーマープロトタイプをビルドする例はこちらで見つけることができます
日本語版はこちらで見つけることができます
フランス語版はこちらで見つけることができます
ドイツ語版はこちらで見つけることができます
スペイン語版はこちらで見つけることができます
問題トラッカーを使用してバグレポートと機能/拡張リクエストを提出します。新しい問題を提出する前に、同様のオープンな問題がないことを確認してください。
コードを手動でテストし、問題トラッカーでバグを報告したり、拡張の提案をしたりする人は大歓迎です!
パッチ/修正はプルリクエスト(PR)の形式で受け付けられます。プルリクエストの問題が問題トラッカーでオープンであることを確認してください。
提出されたプルリクエストは、Apache 2.0ライセンスの下で公開することに同意したものと見なされます。
GokuはApacheライセンスバージョン2.0の下でライセンスされています。LICENSEファイルを参照してください。