Development Tools
Here we aim to document little known features that developers add to help themselves in the development process, wheather that be debugging, profiling, or what else
Contents
Debug
Build debug
./bootstrap -DCMAKE_BUILD_TYPE=Debug
To record video from gameplay (e.g. to document unexpected behavior):
To record video directly from Pioneer you will need to add the line RecordVideo=1 somewhere within your config.ini file. Then once ingame you can press Ctrl+ScrLk to start or stop recording.
Debug from in-game
Ctrl+I = debug window
Ctrl+F10 open planet viewer, to view selected nav target
Ctrl+F11 reload shaders while running game
Ctrl+Del reload pigui element, allows for live coding. Limited support: Only reloads the active view and then only if the active view has manually enabled it (add `debugReload = function() package.reimport() end` to the view's definition next to the draw and refresh functions)
Debug savegame files
./build/savegamedump savefiles/<mysavename>
and look in your savefile folder (e.g. ~/.pioneer/savefiles on linux) at <mysavename>.json file, put JSON e.g. into http://jsonviewer.stack.hu/
Misc.
Pioneer can dump galaxy information, to make sure the galaxy hasn't changed, or to gather statistics, described here: https://github.com/pioneerspacesim/pioneer/pull/2811
The quit confirmation box can be supressed by putting ConfirmQuit=0 in the pioneer configuration file
Profiling
For Profiling, one needs some tools installed?
Now new profiling functions merged: Add zone-based profiling support #5168
Build with profiling support
ToDo edit this to improve and make sense and be correct
Profiling: to build with the profiler enabled, simply run ./bootstrap -DPROFILER_ENABLED=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo and compile as normal. The latter flag is not strictly needed, but building with a BUILD_TYPE
To-do: extract wisdome from this conversation, https://github.com/pioneerspacesim/pioneer/pull/4764 and document here
<fluffyfreak> Gliese852, if you're on Windows then I use https://github.com/VerySleepy/verysleepy a lot of the time [17:37:07] <Gliese852> fluffyfreak: thanks, I meant the built-in profiler, it seems that if you do nothing, it creates a report on the launch of the program, and the launch of a new game [17:54:21] <fluffyfreak> If you're running the profile build then you can press Ctrl+p to take a profile at any time [17:58:50] <fluffyfreak> hmm, been a while since I used it. There's two modes [17:59:37] <fluffyfreak> Ctrl+shift+p = is capture one frame, otherwise Ctrl+p toggles capturing whenever the framerate is "slow" [18:00:12]
Using profiler
to do
clang format check
Yes, for your use you'd likely want to invoke `FORMAT_BASE=master ./autoformat` or `FORMAT_BASE=HEAD~1 ./autoformat` - there's little difference between the `autoformat` script and the `scripts/clang-format.sh` script other than the latter prompts you to automatically apply the issues in your files.
Editor integration
There is support for sending Lua code from IDE into running pioneer session via TCP: https://github.com/pioneerspacesim/pioneer/pull/3768 https://github.com/pioneerspacesim/pioneer/pull/4799