Skip to content

Latest commit

 

History

History
351 lines (220 loc) · 15.1 KB

README.ja.md

File metadata and controls

351 lines (220 loc) · 15.1 KB

Goku Engine

GitHub Workflow Status GitHub Repo stars Documentation Repo Size License

[ English | Deutsch | Español | Français | 日本語 ]

GokuはRust用の2Dゲーム開発アプリケーションであり(将来的には3Dゲームとの統合が計画されています)、完全にRustで書かれています。

macOSWindows、およびLinuxで利用可能です。

現在はSDL2に基づいています。

Gokuは集中的で軽量であり、依存関係が少ない(主にSDL2)です。下記の機能を提供します:

  • ウィンドウとメインループ

  • 2Dグラフィックスとテキスト

  • サウンドと音楽

  • キーボード、マウス、ゲームパッドの入力

  • 開発のためのGUIインターフェイス

  • ピクセルキャラクター生成(AI使用)

現在Gokuが使用しているサードパーティのライブラリ:

  • SDL2

  • nalgebra

  • imgui

  • serde

  • rfd

  • glow

  • webbrowser

使い方

重要!!!

  • クイック概要はこちら -> Goku Engine
  • ドキュメントはこちら -> Gitbook
  • 開発の進捗、計画、新しい機能に関するブログはこちら -> ニュース
  • すべてのサンプルはこちら -> 公式サンプル

要件

Linux

お気に入りのパッケージ管理ツールを使用してインストールするか、または 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)も必要になるかもしれません。

Linuxでの静的リンク

static-link機能を使用してSDL2を動的にリンクする代わりに静的にリンクすることを選択できます。 Linuxでは、次のいずれかを追加で行う必要があります:

  • bundled機能を使用する
  • rustcがSDL2ライブラリとその依存関係を静的リンクするためのリソースを探す場所を知るためにuse-pkgconfig機能を使用する。これは、システムから静的にSDL2をリンクするために必要なリソースを見つける構築法がないため必要です
  • [vcpkg][vcpkg]を使用して開発ライブラリをインストールする。vcpkgを使用してLinuxおよび他のオペレーティングシステムで静的バイナリを生成する方法に関する指示は[こちら][cargo-vcpkg-usage]にあります

macOS

Homebrew

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"

Windows(MSVC)

  1. http://www.libsdl.org/ からMSVC開発ライブラリをダウンロードします(SDL2-devel-2.0.x-VC.zip)。

  2. SDL2-devel-2.0.x-VC.zipをお好きなフォルダに解凍します(後で削除することができます)。

  3. 以下の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です。

  1. SDL2.dllを

    SDL2-devel-2.0.x-VC\SDL2-2.0.x\lib\x64\

    からcargoプロジェクトにコピーし、Cargo.tomlのすぐ隣に置きます。

  2. ゲームを出荷するときは、SDL2.dllをコンパイルされたexeと同じディレクトリにコピーして、ゲームが起動するようにします。

MSVCと静的リンク

http://libsdl.org/ で提供されているMSVC開発ライブラリには静的ライブラリが含まれていないため、windows-msvcツールチェーンでstatic-link機能を使用する場合、次のいずれかを行う必要があります。

  • SDL2静的ライブラリを自分でビルドし、ツールチェーンのlibディレクトリにコピーする;または
  • bundled機能も有効にし、静的ライブラリをビルドする;または
  • vcpkgから静的なSDL2ライブラリを使用する。

ピクセルキャラクター生成の設定

新しい機能であるピクセルキャラクター生成のために、Python 3およびPyTorchがインストールされていることを確認してください。現在、AIはPythonで書かれていますが、tch-rsを使用してRustで再実装する計画があります。

PyTorchのインストール方法

pip3 install torch torchvision torchaudio

詳細についてはこちらを参照してください

PyO3の設定方法

PyO3は、Pythonのバージョンを決定し、正しいリンカー引数を設定するためにビルドスクリプト(pyo3-build-configクレートによってバックアップされています)を使用します。デフォルトでは、次の順で使用しようとします:

  • アクティブなPython仮想環境
  • python実行ファイル(Python 3のインタープリタである場合)
  • python3実行ファイル

Pythonインタープリタをオーバーライドするには、環境変数PYO3_PYTHONを設定します。例:PYO3_PYTHON=python3.6PYO3_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サポート

  • 複数言語サポート:

    • ドイツ語
    • スペイン語
    • 日本語
    • フランス語
  • サポートプラットフォーム:

    • Windows / Mac / Linux
    • Web(WASMは完全に統合されていません)(追加の参照 Emscripte / SDL-WASM / Web )
    • 将来的にAndroid

実行方法

  1. git clone https://github.com/ladroid/goku.git
  2. すべてを抽出
  3. 実行コマンド:cargo run

重要!!! 現在、GUIはまだ開発中であり、imguiとsdl2を組み合わせることを試していますが、完全に互換性を持たせるには時間がかかります。したがって、それを使用することを希望する人は、コンポーネントSceneを追加し、そこにスクリプトを書くことが可能です。それらを組み合わせる方法を知っている場合は、本当に素晴らしいことになります!

Web用にビルドする方法

  1. ツールを押します
  2. ビルドを押して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のようなもの)

1. テトリス

テトリスゲームをビルドする例はこちらで見つけることができます

2. ローグライクプロトタイプ(プロトタイプ)

ローグライクプロトタイプをビルドする例はこちらで見つけることができます

3. ビジュアルエフェクト

  1. スパーク -> 関数spawn_particles_sparksを使用 こちら
  2. 火 -> 関数spawn_particles_firesを使用 こちら
  3. 雨 -> 関数spawn_particles_rainを使用 こちら

4. サイドスクロールゲーム

サイドスクロールプロトタイプをビルドする例はこちらで見つけることができます

5. プラットフォーマー

プラットフォーマープロトタイプをビルドする例はこちらで見つけることができます

6. 敵のシンプルな状態を設定する(追跡/追従)

プラットフォーマープロトタイプをビルドする例はこちらで見つけることができます

日本語版

日本語版はこちらで見つけることができます

フランス語版

フランス語版はこちらで見つけることができます

ドイツ語版

ドイツ語版はこちらで見つけることができます

スペイン語版

スペイン語版はこちらで見つけることができます

貢献する方法

問題の提出

問題トラッカーを使用してバグレポートと機能/拡張リクエストを提出します。新しい問題を提出する前に、同様のオープンな問題がないことを確認してください。

手動テスト

コードを手動でテストし、問題トラッカーでバグを報告したり、拡張の提案をしたりする人は大歓迎です!

プルリクエストの提出

パッチ/修正はプルリクエスト(PR)の形式で受け付けられます。プルリクエストの問題が問題トラッカーでオープンであることを確認してください。

提出されたプルリクエストは、Apache 2.0ライセンスの下で公開することに同意したものと見なされます。

コミュニティ

Discord

GitHub Discussion

ライセンス

GokuはApacheライセンスバージョン2.0の下でライセンスされています。LICENSEファイルを参照してください。