2,736
edits
Red Leader (talk | contribs) m (→Nasal example) |
Red Leader (talk | contribs) mNo edit summary |
||
| Line 25: | Line 25: | ||
One of the long-term goals here is to provide a so called [[FlightGear Headless|headless]] mode so that certain, non-graphics related, features (=subsystems) can be better tested in isolation, e.g. in an automated fashion on the [[FlightGear Build Server]], which could help increasingly automate the build/release process, but also related regression testing. | One of the long-term goals here is to provide a so called [[FlightGear Headless|headless]] mode so that certain, non-graphics related, features (=subsystems) can be better tested in isolation, e.g. in an automated fashion on the [[FlightGear Build Server]], which could help increasingly automate the build/release process, but also related regression testing. | ||
The other goal here being to increasingly modularize FlightGear by using [[HLA]] (high-level architecture), and splitting off the simulation/rendering loops (see [[FGViewer]]), as well as [Supporting multiple renderers]] (think Rembrandt/ALS), and scenery engines (standard and osgEarth), analogous to how FlightGear already supports different FDM engines (JSBSim and YASim), but also different weather engines and rendering engines (standard/Rembrandt, ALS). HLA will make it possible for certain subsystems to be moved to dedicated cores by using separate threads or even processes, which also means that certain subsystems may even be running on a different computer, in a distributed setup. | The other goal here being to increasingly modularize FlightGear by using [[HLA]] (high-level architecture), and splitting off the simulation/rendering loops (see [[FGViewer]]), as well as [[Supporting multiple renderers]] (think Rembrandt/ALS), and scenery engines (standard and osgEarth), analogous to how FlightGear already supports different FDM engines (JSBSim and YASim), but also different weather engines and rendering engines (standard/Rembrandt, ALS). HLA will make it possible for certain subsystems to be moved to dedicated cores by using separate threads or even processes, which also means that certain subsystems may even be running on a different computer, in a distributed setup. | ||
The underlying requirement that these efforts share is that there needs to be a much better re-/initialization process, so that there are no hard-coded assumptions about running subsystems or initialization order. | The underlying requirement that these efforts share is that there needs to be a much better re-/initialization process, so that there are no hard-coded assumptions about running subsystems or initialization order. | ||
| Line 191: | Line 191: | ||
== Nasal example == | == Nasal example == | ||
{{Note|The following Nasal script can be executed via the Nasal Console or put in a separate file and executed via a menu item to easily test different aspects of reset/re-init. For the time being, you are likely to trigger segfaults/crashes or other undefined behavior (e.g., memory leaks), so it is recommended to run FlightGear in a GDB session to obtain a backtrace. If you manage to cause a bug or crash, please file a bug report: {{Tickets}} }} | {{Note|The following Nasal script can be executed via the Nasal Console or put in a separate file and executed via a menu item to easily test different aspects of reset/re-init. For the time being, you are likely to trigger segfaults/crashes or other undefined behavior (e.g., memory leaks), so it is recommended to run FlightGear in a GNU Debugger (GDB) session to obtain a backtrace. If you manage to cause a bug or crash, please file a bug report: {{Tickets}} }} | ||
<syntaxhighlight lang="nasal" enclose="div"> | <syntaxhighlight lang="nasal" enclose="div"> | ||
canvas.MessageBox.warning( | canvas.MessageBox.warning( | ||
"Developer Feature", | "Developer Feature", | ||
"This dialog is mainly intended for people familiar with FlightGear/core internals to help troubleshoot reset/re-init related bugs. You will probably want to run FlightGear inside a GDB session when using this dialog", | "This dialog is mainly intended for people familiar with FlightGear/core internals to help troubleshoot reset/re-init related bugs. You will probably want to run FlightGear inside a GNU Debugger (GDB) session when using this dialog", | ||
func(sel){ | func(sel){ | ||
if(sel != canvas.MessageBox.Ok) return; | if(sel != canvas.MessageBox.Ok) return; | ||