Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 80 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ jobs:
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libudev-dev

- name: Set up Python (for codegen)
uses: actions/setup-python@v6
Expand Down Expand Up @@ -142,7 +142,7 @@ jobs:
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libxkbcommon-x11-dev
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libudev-dev libxkbcommon-x11-dev

- name: Run clippy (Windows stable)
if: matrix.run_windows_native_clippy
Expand Down Expand Up @@ -276,7 +276,7 @@ jobs:
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libudev-dev

- name: Set up Python
uses: actions/setup-python@v6
Expand Down Expand Up @@ -340,7 +340,7 @@ jobs:
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libxkbcommon-x11-dev
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libudev-dev libxkbcommon-x11-dev

- name: Build native library
run: cargo build --release
Expand Down Expand Up @@ -389,7 +389,7 @@ jobs:
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libxkbcommon-x11-dev
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libudev-dev libxkbcommon-x11-dev

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
Expand Down Expand Up @@ -487,7 +487,7 @@ jobs:
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libudev-dev

- name: Download native release artifact
uses: actions/download-artifact@v4
Expand Down Expand Up @@ -602,7 +602,7 @@ jobs:
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libudev-dev

- name: Run full build script
run: |
Expand Down Expand Up @@ -677,7 +677,7 @@ jobs:
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libxkbcommon-x11-dev
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libudev-dev libxkbcommon-x11-dev

- name: Install npm dependencies
working-directory: sdks/typescript
Expand Down Expand Up @@ -950,7 +950,7 @@ jobs:
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y xvfb libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libxkbcommon-x11-dev
sudo apt-get install -y xvfb libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libudev-dev libxkbcommon-x11-dev

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
Expand Down Expand Up @@ -1087,6 +1087,7 @@ jobs:
name: iOS Build Pipeline
runs-on: macos-latest
needs: [preflight]
timeout-minutes: 35
steps:
- uses: actions/checkout@v6

Expand All @@ -1112,10 +1113,36 @@ jobs:
CODE_SIGNING_ALLOWED=NO \
build

- name: Build iOS Flappy Bird example for simulator
env:
GOUD_ENGINE_IOS_LIB_DIR: ${{ github.workspace }}/platform/ios/build/simulator
working-directory: examples/ios/flappy_bird
run: |
# Resolve SPM dependencies and build for iOS Simulator
xcodebuild \
-scheme FlappyBird \
-configuration Debug \
-sdk iphonesimulator \
-destination 'generic/platform=iOS Simulator' \
-derivedDataPath .build/derivedData \
CODE_SIGNING_ALLOWED=NO \
build 2>&1 || {
echo "xcodebuild failed, trying swift build as fallback..."
swift build \
--sdk "$(xcrun --sdk iphonesimulator --show-sdk-path)" \
--triple arm64-apple-ios-simulator \
-Xlinker -L"${GOUD_ENGINE_IOS_LIB_DIR}"
}

- name: Shutdown iOS Simulator
if: always()
run: xcrun simctl shutdown booted || true

android-build-pipeline:
name: Android Build Pipeline
runs-on: ubuntu-latest
needs: [preflight]
timeout-minutes: 15
steps:
- uses: actions/checkout@v6

Expand Down Expand Up @@ -1149,6 +1176,49 @@ jobs:
working-directory: platform/android/template
run: ./gradlew assembleDebug --no-daemon

- name: Copy native libraries to Flappy Bird example
run: |
mkdir -p examples/android/flappy_bird/app/src/main/jniLibs
cp -r platform/android/template/app/src/main/jniLibs/* \
examples/android/flappy_bird/app/src/main/jniLibs/

- name: Build Android Flappy Bird example
working-directory: examples/android/flappy_bird
env:
GOUD_REPO_ROOT: ${{ github.workspace }}
run: ./gradlew assembleDebug --no-daemon

- name: Enable KVM group permissions
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
| sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm

- name: Smoke test on Android emulator
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 30
arch: x86_64
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio
disable-animations: true
script: |
adb install examples/android/flappy_bird/app/build/outputs/apk/debug/app-debug.apk
adb shell am start -n com.goudengine.flappybird/.MainActivity
sleep 5
adb exec-out screencap -p > android-smoke-test.png
# Verify the app was installed and launched (may crash due to no GPU in CI)
adb shell pm list packages | grep -q "com.goudengine.flappybird"

- name: Upload Android smoke test screenshot
if: always()
uses: actions/upload-artifact@v4
with:
name: android-smoke-screenshot
path: android-smoke-test.png
retention-days: 7

# C SDK tests (CMake-based, needs native library)
c-sdk-check:
name: C SDK Tests on ${{ matrix.os }}
Expand Down Expand Up @@ -1223,7 +1293,7 @@ jobs:
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxxf86vm-dev libasound2-dev libudev-dev

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
Expand Down
3 changes: 2 additions & 1 deletion ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ The `RenderBackend` trait abstracts the GPU backend. Both 2D (SpriteBatch) and 3
| Feature | Dependencies |
|---------|-------------|
| `default` | `desktop-native` |
| `native` | `wgpu-backend`, `cc`, `bindgen`, `cbindgen`, `tiled`, `rayon`, `env_logger`, `toml`, `gltf`, `tobj`, `fbxcel`, `net-udp`, `net-tcp`, `net-ws`, `rapier2d`, `rapier3d` |
| `native` | `wgpu-backend`, `cc`, `bindgen`, `cbindgen`, `tiled`, `rayon`, `env_logger`, `toml`, `gltf`, `tobj`, `fbxcel`, `net-udp`, `net-tcp`, `net-ws`, `rapier2d`, `rapier3d`, `gilrs` |
| `desktop-native` | `native`, `interprocess`, `notify`, `rodio` |
| `jni-bridge` | `jni` |
| `legacy-glfw-opengl` | `gl`, `glfw` |
Expand All @@ -115,6 +115,7 @@ The `RenderBackend` trait abstracts the GPU backend. Both 2D (SpriteBatch) and 3
| `web` | `wgpu-backend`, `wasm-bindgen`, `wasm-bindgen-futures`, `web-sys`, `js-sys` |
| `rapier2d` | `rapier2d` |
| `rapier3d` | `rapier3d` |
| `gilrs` | `gilrs` |
| `headless` | (empty) |
| `xbox-gdk` | `wgpu-backend` |
| `sdl-window` | `wgpu-backend`, `sdl2` |
Expand Down
84 changes: 84 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading