Skip to content

ci: clone godot-cpp directly so GDExtension build can find it#1

Merged
DaScient merged 3 commits into
mainfrom
copilot/initial-project-files
May 29, 2026
Merged

ci: clone godot-cpp directly so GDExtension build can find it#1
DaScient merged 3 commits into
mainfrom
copilot/initial-project-files

Conversation

Copilot AI commented May 29, 2026

Copy link
Copy Markdown
Contributor

The build-extension job failed at the CMake configure step with godot-cpp not found at .../godot-cpp. Although .gitmodules lists godot-cpp, it was never registered as a gitlink in the repo's index, so actions/checkout's submodules: recursive silently skipped it and the follow-up git submodule update --init -- godot-cpp || true was a no-op (its failure swallowed by || true).

Changes

  • .github/workflows/build.yml: Replace the broken submodule step with a shallow git clone of the godot-4.2 branch (matching GODOT_VERSION: 4.2.2) into ${{ github.workspace }}/godot-cpp — the path already passed via -DGODOT_CPP_DIR. The step is idempotent: it skips cloning if godot-cpp/CMakeLists.txt is already present (e.g. from a future submodule fix).
- 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

Notes / follow-ups

  • JSBSim is unaffected; the workflow builds the stub via -DJSBSIM_ENABLED=OFF.
  • The underlying .gitmodules entries for godot-cpp and jsbsim are orphaned (no corresponding gitlink). Worth cleaning up in a separate change — either properly registering them as submodules or removing the stale entries.
Original prompt

You are an expert open-source game developer and a senior Godot 4 engineer.
You will act as the lead architect of "RC-Flight-Sim", a free, community-driven, open-source R/C flight simulator.
Use the following comprehensive blueprint to generate all initial project files, code, documentation, and CI/CD configuration.

==============================================================================
PROJECT: RC-Flight-Sim
REPOSITORY: https://github.com/DaScient/RC-Flight-Sim
LICENSE: MIT for code, CC0/CC-BY-SA for art assets
OWNER: DASCIENT, INC. | 2026

  1. CORE DESIGN PILLARS
  • Accessible & Lightweight: Runs on Intel HD 4000 integrated graphics (GLES3 backend), scaling up to high-end GPUs with Vulkan, dynamic shadows, post-processing.
  • Physics Realism: Full 6‑DOF aerodynamics via JSBSim (stall, spin, knife‑edge, torque‑roll, P‑factor, ground effect). Support for foam parkflyers, 3D aerobats, turbine jets.
  • Universal Controller Support: Automatically recognizes any USB RC dongle (HID joystick), gamepads (Xbox, PlayStation), keyboard, and touch. Calibration wizard with endpoint/direction/deadzone/curve settings.
  • Diverse Flying Environments: Photorealistic outdoor airfields, indoor arenas, dynamic time‑of‑day, weather (wind affects FDM).
  • Multiple Viewpoints: Cockpit (FPV), chase (3rd person with configurable spring arm), stationary tripod (pilot box), tower, free orbit.
  • Modular & Extensible: Aircraft, sceneries, and physics are data‑driven (XML/JSON). Hot‑loading of addons. Community can create content without touching engine code.
  1. TECHNOLOGY STACK (100% free & open source)
  • Game Engine: Godot 4.x (MIT) – lightweight, excellent 3D, easy scripting, cross‑platform (Windows, Linux, macOS, Android, Web)
  • Flight Dynamics: JSBSim (LGPL) integrated as a GDExtension (C++ library). Aircraft defined via XML files.
  • Terrain: Terrain3D addon for Godot (high‑performance GPU terrain, heightmaps, satellite textures)
  • Input: Godot’s built-in Input system (SDL backend), no special drivers needed
  • Networking (future): Godot ENet or WebRTC
  • Audio: Godot AudioServer + free sound libraries (Freesound) for prop, EDF, turbine sounds, doppler
  • UI: Godot Control nodes, fully themable, localization ready
  • Starter Assets: CC0 models from Kenney.nl, OpenGameArt; we will provide basic aircraft: high‑wing trainer, 3D aerobat, scale jet.
  1. REPOSITORY STRUCTURE (initial commit)
    Create the following exact folder tree in a Godot 4 project. Include all necessary files (even if empty stubs) and fill them according to the sections below.
RC-Flight-Sim/
├── godot_project/
│   ├── assets/
│   │   ├── aircraft/
│   │   │   ├── trainer/
│   │   │   ├── aerobat/
│   │   │   └── jet/
│   │   ├── sceneries/
│   │   │   └── default_airfield/
│   │   └── ui/
│   │       ├── fonts/
│   │       ├── icons/
│   │       └── themes/
│   ├── scripts/
│   │   ├── autoload/
│   │   │   ├── input_manager.gd
│   │   │   ├── settings_manager.gd
│   │   │   └── scene_manager.gd
│   │   ├── flight_sim/
│   │   │   ├── fdm_interface.gd
│   │   │   ├── aircraft_node.gd
│   │   │   └── atmosphere.gd
│   │   ├── camera/
│   │   │   ├── camera_manager.gd
│   │   │   ├── fpv_camera.gd
│   │   │   ├── chase_camera.gd
│   │   │   ├── stationary_camera.gd
│   │   │   ├── tower_camera.gd
│   │   │   └── free_orbit_camera.gd
│   │   ├── controller/
│   │   │   └── calibration_wizard.gd
│   │   └── ui/
│   │       ├── main_menu.gd
│   │       ├── settings_menu.gd
│   │       └── hud.gd
│   ├── addons/
│   │   ├── terrain_3d/      (git submodule or copy)
│   │   └── jsbsim_gdextension/
│   │       ├── src/
│   │       │   └── jsbsim_extension.cpp
│   │       ├── CMakeLists.txt
│   │       └── jsbsim_extension.gdextension
│   ├── scenes/
│   │   ├── main.tscn
│   │   ├── aircraft/
│   │   ├── sceneries/
│   │   └── ui/
│   ├── project.godot
│   └── README.md
├── docs/
│   ├── aircraft_creation.md
│   ├── scenery_creation.md
│   ├── contributing.md
│   └── build_instructions.md
├── bin/
│   └── (precompiled JSBSim extension binaries per platform, initially empty)
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── workflows/
│   │   └── build.yml
│   └── CONTRIBUTING.md
├── LICENSE
└── build-prompt.txt   (this file)
  1. TECHNICAL MODULE IMPLEMENTATION DETAILS

A. Controller Integration (scripts/controller/)

  • On startup, input_manager.gd (autoload) enumerates all joysticks using Input.get_connected_joypads().
  • It loads a controller_profiles.cfg file (INI format) keyed by GUID. Default mapping: axes 0‑3 → Aileron, Elevator, Throttle, Rudder.
  • Provide a calibration wizard (calibration_wizard.gd) that guides the user to move sticks to endpoints, set center trims, reverse axes, set deadzones.
  • Allow per‑model expo/dual‑rates stored in aircraft config. Input actions are defined in project.godot (e.g., rc_aileron,...

- Godot 4 project with GLES3/GL Compatibility fallback
- Input system: joystick auto-detection, calibration wizard, keyboard fallback
- Flight physics: JSBSim GDExtension stub + kinematic fallback model
- Camera system: FPV, Chase, Stationary, Tower, Free Orbit
- Aircraft configs: trainer (JSON + JSBSim XML), aerobat, jet
- Scenery: default airfield scenario JSON
- UI: main menu, settings menu, HUD
- CI/CD: GitHub Actions build + export for Win/Linux/macOS/Android/Web
- Documentation: aircraft/scenery creation guides, build instructions, contributing guide
- GitHub issue templates, CONTRIBUTING.md, .gitignore, .gitmodules
Copilot AI changed the title [WIP] Generate initial project files and configuration for RC-Flight-Sim feat: initial project scaffold for RC-Flight-Sim May 29, 2026
Copilot AI requested a review from DaScient May 29, 2026 00:48
The .gitmodules entry for godot-cpp isn't registered as a gitlink, so
actions/checkout's `submodules: recursive` silently skipped it and the
subsequent `git submodule update` was a no-op (suppressed with `|| true`).
CMake then aborted with "godot-cpp not found".

Replace the submodule step with a shallow `git clone` of the godot-4.2
branch (matching GODOT_VERSION 4.2.2) into ${{ github.workspace }}/godot-cpp,
which is the path already passed via -DGODOT_CPP_DIR.
Copilot AI changed the title feat: initial project scaffold for RC-Flight-Sim ci: clone godot-cpp directly so GDExtension build can find it May 29, 2026
@DaScient
DaScient marked this pull request as ready for review May 29, 2026 01:40
Copilot AI review requested due to automatic review settings May 29, 2026 01:40
@DaScient
DaScient merged commit 7ced0c8 into main May 29, 2026
0 of 3 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants