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
20 changes: 20 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Contributing to RC-Flight-Sim

Thank you for your interest in contributing!

Please read the full contribution guide in [docs/contributing.md](../docs/contributing.md).

## Quick Links

- [Bug Reports](.github/ISSUE_TEMPLATE/bug_report.md)
- [Feature Requests](.github/ISSUE_TEMPLATE/feature_request.md)
- [Aircraft Creation Guide](../docs/aircraft_creation.md)
- [Scenery Creation Guide](../docs/scenery_creation.md)
- [Build Instructions](../docs/build_instructions.md)

## Summary

1. Fork the repo and create a feature branch.
2. Follow the coding standards in `docs/contributing.md`.
3. Open a pull request against `main` with a clear description.
4. All contributions are licensed under MIT (code) or CC0/CC-BY-SA (art assets).
45 changes: 45 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
name: "🐛 Bug Report"
about: "Report a problem or unexpected behaviour"
title: "[BUG] "
labels: ["bug", "needs-triage"]
assignees: []
---

## Summary

<!-- One-line description of the bug -->

## Environment

| Field | Value |
|-------|-------|
| OS | Windows / Linux / macOS / Android / Web |
| Godot Version | e.g. 4.2.2 |
| RC-Flight-Sim Version | e.g. 0.1.0 or commit hash |
| Controller | e.g. Flysky FS-i6 USB dongle / Xbox controller / Keyboard |
| Rendering Backend | GL Compatibility / Forward+ / Mobile |

## Steps to Reproduce

1.
2.
3.

## Expected Behaviour

<!-- What should happen -->

## Actual Behaviour

<!-- What actually happens – include error messages, screenshots, video if possible -->

## Console Output / Log

```
Paste Godot console output here
```

## Additional Context

<!-- Any other context that may help diagnose the issue -->
34 changes: 34 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
name: "✨ Feature Request"
about: "Suggest a new feature or improvement"
title: "[FEATURE] "
labels: ["enhancement"]
assignees: []
---

## Problem / Motivation

<!-- Describe the problem this feature would solve or the opportunity it addresses -->

## Proposed Solution

<!-- Describe what you'd like to happen. Be as specific as possible. -->

## Alternatives Considered

<!-- Have you considered other approaches? Why is your proposed solution better? -->

## Design Pillars Alignment

Check all that apply:

- [ ] Accessible & Lightweight
- [ ] Physics Realism
- [ ] Universal Controller Support
- [ ] Diverse Flying Environments
- [ ] Multiple Viewpoints
- [ ] Modular & Extensible

## Additional Context

<!-- Screenshots, mockups, references to other simulators, papers, etc. -->
178 changes: 178 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
name: Build & Export RC-Flight-Sim

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:

env:
GODOT_VERSION: "4.2.2"
EXPORT_NAME: "RC-Flight-Sim"
PROJECT_PATH: "godot_project"

jobs:
# ---------------------------------------------------------------------------
# Build the JSBSim GDExtension (stub / kinematic mode, no JSBSim deps)
# ---------------------------------------------------------------------------
build-extension:
name: Build GDExtension (${{ matrix.os }})
permissions:
contents: read
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
lib_suffix: .so
cmake_extra: ""
- os: windows-2022
lib_suffix: .dll
cmake_extra: ""
- os: macos-13
lib_suffix: .dylib
cmake_extra: "-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64"

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Fetch godot-cpp (matching Godot ${{ env.GODOT_VERSION }})
run: |
if [ ! -f godot-cpp/CMakeLists.txt ]; then
rm -rf godot-cpp
git clone --depth 1 --branch godot-4.2 https://github.com/godotengine/godot-cpp godot-cpp
fi
shell: bash

- name: Cache CMake build
uses: actions/cache@v4
with:
path: godot_project/addons/jsbsim_gdextension/build
key: ${{ runner.os }}-cmake-${{ hashFiles('godot_project/addons/jsbsim_gdextension/**') }}

- name: Configure CMake (stub – no JSBSim)
run: |
cmake -B godot_project/addons/jsbsim_gdextension/build \
-DCMAKE_BUILD_TYPE=Release \
-DJSBSIM_ENABLED=OFF \
-DGODOT_CPP_DIR=${{ github.workspace }}/godot-cpp \
${{ matrix.cmake_extra }} \
godot_project/addons/jsbsim_gdextension
shell: bash

- name: Build
run: cmake --build godot_project/addons/jsbsim_gdextension/build --config Release -j4
shell: bash

- name: Upload extension binary
uses: actions/upload-artifact@v4
with:
name: extension-${{ runner.os }}
path: godot_project/bin/jsbsim_gdextension${{ matrix.lib_suffix }}
if-no-files-found: warn

# ---------------------------------------------------------------------------
# Export Godot project for all platforms
# ---------------------------------------------------------------------------
export:
name: Export (${{ matrix.platform }})
permissions:
contents: read
runs-on: ubuntu-22.04
needs: build-extension
strategy:
fail-fast: false
matrix:
platform:
- name: Windows
export_preset: "Windows Desktop"
output_dir: "build/windows"
output_file: "RC-Flight-Sim.exe"
- name: Linux
export_preset: "Linux/X11"
output_dir: "build/linux"
output_file: "RC-Flight-Sim.x86_64"
- name: macOS
export_preset: "macOS"
output_dir: "build/macos"
output_file: "RC-Flight-Sim.zip"
- name: Android
export_preset: "Android"
output_dir: "build/android"
output_file: "RC-Flight-Sim.apk"
- name: Web
export_preset: "Web"
output_dir: "build/web"
output_file: "RC-Flight-Sim.html"

steps:
- uses: actions/checkout@v4

- name: Download extension binaries
uses: actions/download-artifact@v4
with:
pattern: extension-*
path: godot_project/bin/
merge-multiple: true

- name: Setup Godot ${{ env.GODOT_VERSION }}
uses: chickensoft-games/setup-godot@v2
with:
version: ${{ env.GODOT_VERSION }}
use-dotnet: false
include-templates: true

- name: Create output directory
run: mkdir -p ${{ matrix.platform.output_dir }}

- name: Export (${{ matrix.platform.name }})
run: |
godot --headless \
--path ${{ env.PROJECT_PATH }} \
--export-release "${{ matrix.platform.export_preset }}" \
"${{ github.workspace }}/${{ matrix.platform.output_dir }}/${{ matrix.platform.output_file }}"

- name: Upload ${{ matrix.platform.name }} build
uses: actions/upload-artifact@v4
with:
name: ${{ env.EXPORT_NAME }}-${{ matrix.platform.name }}
path: ${{ matrix.platform.output_dir }}/

# ---------------------------------------------------------------------------
# Create a GitHub Release on version tags
# ---------------------------------------------------------------------------
release:
name: Create Release
permissions:
contents: write
runs-on: ubuntu-22.04
needs: export
if: startsWith(github.ref, 'refs/tags/v')

steps:
- uses: actions/checkout@v4

- name: Download all build artifacts
uses: actions/download-artifact@v4
with:
pattern: ${{ env.EXPORT_NAME }}-*
path: release/

- name: Zip each platform build
run: |
cd release
for dir in */; do
zip -r "${dir%/}.zip" "$dir"
done

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: release/*.zip
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
38 changes: 38 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Godot-specific
.godot/
*.uid
*.import

# Build artifacts
bin/*.dll
bin/*.so
bin/*.dylib
godot_project/addons/jsbsim_gdextension/build/

# OS-specific
.DS_Store
Thumbs.db
desktop.ini

# IDE
.vscode/
.idea/
*.suo
*.user

# Exports
build/
dist/
*.exe.meta

# Python bytecode (scons)
__pycache__/
*.pyc
*.pyo

# CMake
CMakeFiles/
CMakeCache.txt
cmake_install.cmake
Makefile
*.cmake.user
12 changes: 12 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[submodule "godot_project/addons/terrain_3d"]
path = godot_project/addons/terrain_3d
url = https://github.com/TokisanGames/Terrain3D

[submodule "godot-cpp"]
path = godot-cpp
url = https://github.com/godotengine/godot-cpp
branch = godot-4.2

[submodule "jsbsim"]
path = jsbsim
url = https://github.com/JSBSim-Team/jsbsim
Loading
Loading