[ Englisch | Deutsch | Español | Français | 日本語 ]
Goku ist eine 2D-Spieleentwicklungsanwendung für Rust (zukünftig mit Integration von 3D-Spielen). Komplett in Rust geschrieben.
Es ist verfügbar für macOS, Windows und Linux.
Basierend auf SDL2 (derzeit).
Goku ist fokussiert, leichtgewichtig und hat nur wenige Abhängigkeiten (hauptsächlich SDL2). Es bietet:
-
Ein Fenster und eine Hauptschleife
-
2D-Grafik und Text
-
Geräusche und Musik
-
Tastatur-, Maus- und Gamepad-Eingabe
-
GUI-Oberfläche für die Entwicklung
-
Pixel-Charaktergenerator mit KI
Drittanbieter-Bibliotheken, die derzeit Goku verwenden:
-
SDL2
-
nalgebra
-
imgui
-
serde
-
rfd
-
glow
-
webbrowser
WICHTIG!!!
- Eine kurze Übersicht befindet sich hier -> Goku Engine
- Die Dokumentation befindet sich hier -> Gitbook
- Ein Entwicklungsblog, der unseren Fortschritt, Pläne und neue Funktionen abdeckt, befindet sich hier -> News
- Alle Beispiele befinden sich hier -> Offizielle Beispiele
Installieren Sie diese über Ihr bevorzugtes Paketverwaltungstool oder über http://www.libsdl.org/
Ubuntu-Beispiel:
sudo apt-get install libsdl2-dev
Fedora-Beispiel:
sudo dnf install SDL2-devel
Arch-Beispiel: (Arch hat keine separaten regulären und Entwicklungs-Pakete, alles geht zusammen.)
sudo pacman -S sdl2
Sie benötigen möglicherweise auch einen C-Compiler (gcc
).
Sie können wählen, SDL2 statisch anstatt dynamisch mit dem Feature static-link
zu verlinken.
Unter Linux müssen Sie zusätzlich eine der folgenden Aktionen ausführen:
- das Feature
bundled
verwenden - das Feature
use-pkgconfig
verwenden, damit rustc weiß, wo es nach Ihren SDL2-Bibliotheken und deren Abhängigkeiten für die statische Verlinkung suchen soll. Dies ist erforderlich, da es keine integrierte Möglichkeit gibt, die benötigten Ressourcen zu finden, um SDL2 statisch von Ihrem System zu verlinken - Entwicklungsbibliotheken mit [vcpkg][vcpkg] installieren. Anweisungen zur Erstellung einer statischen Binärdatei unter Linux und anderen Betriebssystemen mit vcpkg finden Sie [hier][cargo-vcpkg-usage]
Auf macOS ist es eine gute Idee, diese über [homebrew][homebrew] zu installieren.
brew install sdl2
In neueren Versionen von Homebrew werden die installierten Bibliotheken normalerweise in $(brew --prefix)/lib
verlinkt.
Wenn Sie eine ältere Version verwenden, befindet sich der Symlink für SDL möglicherweise in /usr/local/lib
.
Um das Verlinken von Bibliotheken, die von Homebrew installiert wurden, zu erleichtern, führen Sie die folgenden Schritte für Ihre jeweilige Shell aus.
Fügen Sie diese Zeile Ihrer ~/.zshenv
oder ~/.bash_profile
hinzu, je nachdem, ob Sie ZSH oder Bash verwenden.
export LIBRARY_PATH="$LIBRARY_PATH:$(brew --prefix)/lib"
-
Laden Sie die MSVC-Entwicklungsbibliotheken von http://www.libsdl.org/ herunter (SDL2-devel-2.0.x-VC.zip).
-
Entpacken Sie SDL2-devel-2.0.x-VC.zip in einen Ordner Ihrer Wahl (Sie können ihn danach löschen).
-
Kopieren Sie alle lib-Dateien von
SDL2-devel-2.0.x-VC\SDL2-2.0.x\lib\x64\
nach (für Rust 1.6 und höher)
C:\Program Files\Rust\lib\rustlib\x86_64-pc-windows-msvc\lib
oder nach (für Rust-Versionen 1.5 und niedriger)
C:\Program Files\Rust\bin\rustlib\x86_64-pc-windows-msvc\lib
oder in Ihren Bibliotheksordner Ihrer Wahl, und stellen Sie sicher, dass Sie eine Systemumgebungsvariable haben
LIB = C:\your\rust\library\folder
Für Rustup-Benutzer wird dieser Ordner sich in
C:\Users\{Your Username}\.rustup\toolchains\{current toolchain}\lib\rustlib\{current toolchain}\lib
befinden, wobei die aktuelle Toolchain wahrscheinlich
stable-x86_64-pc-windows-msvc
ist. -
Kopieren Sie SDL2.dll von
SDL2-devel-2.0.x-VC\SDL2-2.0.x\lib\x64\
in Ihr Cargo-Projekt, direkt neben Ihre Cargo.toml.
-
Wenn Sie Ihr Spiel versenden, stellen Sie sicher, dass Sie SDL2.dll in dasselbe Verzeichnis kopieren, in dem sich Ihre kompilierte exe befindet, sonst wird das Spiel nicht starten.
Die von http://libsdl.org/ bereitgestellten MSVC-Entwicklungsbibliotheken enthalten keine statische Bibliothek. Das bedeutet, wenn Sie das Feature static-link
mit der windows-msvc-Toolchain verwenden möchten, müssen Sie eine der folgenden Aktionen ausführen:
- Eine statische SDL2-Bibliothek selbst erstellen und in das
lib
-Verzeichnis Ihrer Toolchain kopieren; oder - Auch das Feature
bundled
aktivieren, das für Sie eine statische Bibliothek erstellt; oder - eine statische SDL2-Bibliothek von vcpkg verwenden, wie unten beschrieben.
-
Grafik:
-
ein Fenster und eine Hauptschleife
-
2D-Grafiken und Text
- Button
- Schieberegler
- Kontrollkästchen
- Textfeld
- Schriftarten (nur ttf-Format)
- Partikelsystem (Funken)
- Parallax-Hintergrund
-
GUI-Schnittstelle für die Entwicklung
- integrierter Texteditor
- Debug-Konsole
-
Mehrere Bildformate: JPG und PNG
-
Beleuchtung:
- Punktlicht
- Spotlicht
- Umgebungslichtfilter
-
-
Audio
- Abspielen
- Schleife
- Pause
- Fortsetzen
- Mehrere Audioformate: OGG, MP3, FLAC, MOD
-
Eingabehandler:
- Tastatur-, Maus- und Gamepad-E
ingabe
-
Mathematische Typen:
- Vektor2, Vektor3, Vektor4
- Matrix33, Matrix34, Matrix43, Matrix44
-
Physik:
- Kollisionen
- Starrkörper (derzeit haben wir keinen kinematischen Starrkörper)
-
Szene:
- Flexibles JSON-Dateiformat: Kann entweder eine ganze Szene oder einzelne Meshes beschreiben.
-
Animation
-
KI-System:
- Verhaltensbaum
-
Timer
-
Dialogsystem
-
Profiler
-
Unterstützung für VSCode
-
Unterstützt mehrere Sprachen:
- Deutsch
- Spanisch
- Japanisch
- Französisch
-
Unterstützte Plattformen:
git clone https://github.com/ladroid/goku.git
- Alles extrahieren
- Befehl zum Ausführen:
cargo run
Wichtig!!! Derzeit befindet sich die GUI noch in der Entwicklung, ich versuche, imgui und sdl2 zusammenzubringen, benötige aber einige Zeit, um sie vollständig kompatibel zu machen. Wenn also jemand es verwenden möchte, ist es möglich, die Komponente Scene
hinzuzufügen und dort ein Skript zu schreiben. Wenn Sie wissen, wie man sie kombiniert, wäre das wirklich großartig!
- Werkzeuge drücken
- Bauen drücken und Web auswählen
Um den Viewport zu aktivieren, gehen Sie zu Einstellungen -> Allgemein -> Canvas aktivieren, das gleiche gilt für den Gitteransichtsmodus
-
endlich eine separate .rs-Datei erstellen statt einer großen -
einen Viewport erstellen statt der aktuellen Lösung mit Canvas (wahrscheinlich ein separates Fenster in der App mit Kombination aus sdl2 und OpenGL) -
mit wgpu kombinieren (Beispiel aus der sdl2-Bibliothek und imgui-Renderer für wgpu-rs)
-
Physik verbessern
-
UI-System hinzufügen/verbessern (Bild für Schaltflächen hinzufügen)
-
Lichter und Schatten verbessern -
einfache Formen zeichnen (Kreis, Rechteck, Dreieck usw.)
-
Tabs -
Profiler verbessern -
Partikelsystem hinzufügen/verbessern -
GUI der Engine sowie Texteditor verbessern (wahrscheinlich statt eingebautem Texteditor Integration mit VSCode oder anderem IDE) -
Blueprints hinzufügen (wahrscheinlich imgui-Node-Graph https://github.com/benmkw/imnodes-rs)
-
Spiele für Mobilgeräte (iOS, Android) bauen
-
Spiele für Konsolen (PS4-5), Xbox, Nintendo Switch) bauen
-
Physikmaterial
-
Integration mit C++ (wahrscheinlich etwas wie ein Bindgen)
Ein Beispiel für den Bau eines Tetris-Spiels finden Sie hier
Ein Beispiel für den Bau eines Roguelike-Prototyps finden Sie hier -> https://github.com/ladroid
- Funken -> verwenden Sie die Funktion
spawn_particles_sparks
von hier - Feuer -> verwenden Sie die Funktion
spawn_particles_fires
von hier - Regen -> verwenden Sie die Funktion
spawn_particles_rain
von hier
Ein Beispiel für den Bau eines seitlich scrollenden Prototyps finden Sie hier
Beispiel für den Bau eines Side-Scrolling-Prototyps finden Sie hier
Ein Beispiel für den Bau eines Platformer-Prototyps finden Sie hier
Die japanische Version finden Sie hier
Die französische Version finden Sie hier
Die deutsche Version finden Sie hier
Die spanische Version finden Sie hier
Verwenden Sie den Issue Tracker, um Fehlerberichte und Anfragen für Funktionen/Verbesserungen einzureichen. Stellen Sie vor der Einreichung eines neuen Issues sicher, dass es kein ähnliches offenes Issue gibt.
Jeder, der den Code manuell testet und Fehler meldet oder Vorschläge für Verbesserungen im Issue Tracker macht, ist sehr willkommen!
Patches/Fixes werden in Form von Pull-Anfragen (PRs) akzeptiert. Stellen Sie sicher, dass das Problem, das die Pull-Anfrage behandelt, im Issue Tracker offen ist.
Die eingereichte Pull-Anfrage wird als Zustimmung zur Veröffentlichung unter der Apache 2.0-Lizenz betrachtet.
Goku ist unter der Apache-Lizenz Version 2.0 lizenziert. Siehe LIZENZ Datei.