Record Geometry Dash like you're in OBS — without ever leaving the game.
I got tired of alt-tabbing into OBS every time I wanted to record a decent clip for YouTube. Black screen, broken audio, lag — the usual. So I built GDSR Studio: a full recording studio rendered directly inside GD using Dear ImGui.
No OBS. No stream keys. No Game Capture wizard nonsense. Just hit F8 and you've got an OBS-style panel right inside the game — preview window, audio mixer, encoder settings, and a big fat record button.
- Live preview — see exactly what's being recorded, right in the studio panel
- Video recording — H.264 or MJPEG, software x264 or hardware NVENC/AMF/QSV
- Audio capture — system audio + microphone via WASAPI loopback, mixed to AAC
- Audio mixer — separate channels for desktop and mic, with gain, mute, and peak meters
- Performance presets — Potato / Low / Balanced / Quality
- Zero render-thread overhead — frame capture runs on a dedicated thread via D3D11 staging textures, so the game doesn't stutter
- Borrow FPS — when the encoder falls behind, the game itself slows down just enough so every recorded frame is a real frame (no dropped/duplicated frames). Essential on weaker machines.
- 15 languages — English, Русский, Español, Português, Deutsch, 简体中文, Français, 日本語, 한국어, Italiano, Polski, Türkçe, Tiếng Việt, Bahasa Indonesia, Українська
- Dark/light theme, dockable panels, F11 for fullscreen
- Recommended: 720p at 60 fps — the sweet spot for YouTube-ready recordings without hammering your GPU
You need Geode for Geometry Dash 2.2081 on Windows.
- Download
reviusion.gdsr-studio.geodefrom the Releases page - Drop it into
%LOCALAPPDATA%\GeometryDash\geode\mods\ - Launch GD — the mod loads automatically
Press F8 to open the studio.
- Hit F8 → the studio window opens
- Go to Settings → pick your output folder, FPS, quality, encoder
- Click Start Recording — the UI hides itself to free up resources
- Press F8 mid-recording to check the live preview
- Hit Stop Recording → file saves to
%USERPROFILE%\Videos\GDSR_timestamp.mp4
Hotkeys:
| Key | Action |
|---|---|
| F8 | Toggle studio |
| F11 | Fullscreen |
Frame capture happens entirely off GD's render thread:
Game renders a frame
→ issueCopy() — render thread: fast D3D11 CopyResource
→ mapSlot() — worker thread: Map + memcpy (heavy, but off-render)
→ submitFrame() — encoder thread: pipe to ffmpeg
"Borrow FPS from game" (on by default) — when the pipeline can't keep up, GD's render thread blocks briefly so every recorded frame stays real. On low-end hardware this is the difference between smooth recording and a slideshow.
Recommended baseline: 720p @ 60 fps — hits the YouTube sweet spot, looks clean, and runs fine on anything with a dedicated GPU from the last decade. If your machine struggles, try the presets below.
If you're on a toaster:
| Setting | Value |
|---|---|
| FPS | 30 |
| Resolution | 1280×720 |
| Encoder | x264 (CPU) |
| Quality | 28–35 |
| Preset | Low or Potato |
Requirements:
- Windows 10/11
- Visual Studio 2022 Build Tools
- CMake 3.21+
- Geode SDK (
GEODE_SDKenv variable set) - ffmpeg.exe placed in
resources/(download here)
Clone with submodules:
git clone --recurse-submodules https://github.com/Reviusion/GDSR-Studio.git
cd GDSR-StudioBuild:
cmake -B build
cmake --build build --config RelWithDebInfoThe built .geode package auto-installs into your running GD instance.
src/
├── capture/
│ ├── AngleD3D11Backend — reads ANGLE/GLES framebuffer via D3D11 staging textures
│ ├── AudioCapture — WASAPI loopback + mic → 48kHz stereo WAV
│ ├── CaptureScheduler — orchestrates the dedicated capture thread
│ ├── OpenGLBlockingBackend — fallback glReadPixels for native desktop GL
│ └── Recorder — ffmpeg pipe + video/audio mux to mp4
├── imgui_hook/
│ └── ImGuiManager — swapBuffers hook, preview texture, ImGui render loop
└── ui/
├── Localization — 15-language string table
├── StudioState — shared settings / state
└── StudioUI — ImGui panel layout
third_party/
└── imgui — Dear ImGui (docking branch, git submodule)
resources/
└── ffmpeg.exe — not included in the repo, grab it yourself
| Problem | Likely cause |
|---|---|
| Preview is black | First frame while pipeline primes — wait a second or two. If it stays black, check the Geode log for GDSR: errors |
mux: ffmpeg code 1 |
Rare, on 20+ min recordings with slow HDDs. Mux timeout scales with video length — retry usually works |
| No audio in recording | Check the mixer — desktop audio is on by default. Verify your device in Settings → Audio |
| Game stutters while recording | Expected on weak hardware. Turn on Borrow FPS, lower recFps and resolution |
Source code — personal / educational use. Don't redistribute modified versions under the same name.
ffmpeg.exe is bundled under LGPL 2.1 — not included in this repository.