Open-source repository of Orbiter Space Flight Simulator

Orbiter logo

Orbiter Space Flight Simulator

Orbiter is a spaceflight simulator based on Newtonian mechanics. Its playground is our solar system with many of its major bodies – the sun, planets and moons. You take control of a spacecraft – either historic, hypothetical, or purely science fiction. Orbiter is unlike most commercial computer games with a space theme – there are no predefined missions to complete (except the ones you set yourself), no aliens to destroy and no goods to trade. Instead, you will get a pretty good idea about what is involved in real space flight – how to plan an ascent into orbit, how to rendezvous with a space station, or how to fly to another planet. It is more difficult, but also more of a challenge. Some people get hooked, others get bored. Finding out for yourself is easy – simply give it a try. Orbiter is free, so you don’t need to invest more than a bit of your spare time.

License

Orbiter is now published as an Open Source project under the MIT License (see LICENSE file for details).

Installation

Get the Orbiter source repository from github

git clone [email protected]:mschweiger/orbiter.git

or

git clone https://github.com/mschweiger/orbiter.git

To configure and generate the makefiles, you need a recent CMake.

To compile Orbiter from its sources, you need Microsoft Visual Studio. Orbiter has been successfully built with VS Community 2019, but other versions should also work. Note that VS2019 comes with built-in CMake support, so you don't need a separate CMake installation.

Some configuration caveats:

  • If you are using the Ninja generator (default for the VS built-in CMake), you may also need vspkg to configure the VS toolset.
  • If you are using the VS2019 generator, you may need to set up Visual Studio to use only a single thread for the build. This is because some of the build tools (especially those for generating the Orbiter documentation) are not threadsafe, and the VS2019 generator doesn't understand the CMake JOB_POOL directive.

Orbiter is a 32-bit application. Be sure to configure vspkg and CMake accordingly.

If you want to build the documentation, you need a few additional tools:

  • a filter to convert ODT and DOC sources to PDF, such as LibreOffice.
  • a LaTeX compiler suite such as MiKTeX.
  • Doxygen for building the source-level documentation for developers.

By default, the build is configured to create both graphics flavours of the Orbiter executable (although this can be configured with the ORBITER_GRAPHICS CMake flag):

  • orbiter.exe is the standalone Orbiter application with built-in DX7 graphics.
  • orbiter_ng.exe is a launcher for ./Modules/Server/orbiter.exe which is the graphics server version of Orbiter. It requires an external graphics client plugin to be loaded via the Modules tab of the Orbiter Launchpad dialog. The reference D3D7Client is included with the build with essentially the same functionality as the built-in graphics version. Use 3rd party client implementations to make use of more modern graphics engines.

See README.compile for details on building Orbiter.

Planet textures

The Orbiter git repository does not include most of the planetary texture files required for running Orbiter. You need to install those separately. The easiest way to do so is by installing Orbiter 2016. Optionally you can also install high-resolution versions of the textures from the Orbiter website. You should keep the Orbiter 2016 installation separate from your Orbiter git repository.

To configure Orbiter to use the 2016 texture installation, set the ORBITER_PLANET_TEXTURE_INSTALL_DIR entry in CMake. For example, if Orbiter 2016 was installed in C:\Orbiter2016, the CMake option should be set to C:/Orbiter2016/Textures. Alternatively, you can configure the texture directory after building Orbiter by setting the PlanetTexDir entry in Orbiter.cfg.

Help

Help files are located in the Doc subfolder (if you built them). Orbiter.pdf is the main Orbiter user manual.

The in-game help system can be opened via the "Help" button on the Orbiter Launchpad dialog, or with Alt-F1 while running Orbiter.

Remaining questions can be posted on the Orbiter user forum at orbiter-forum.com.

Owner
Orbiter Space Flight Simulator
Orbiter Space Flight Simulator
Comments
  • Calculation of normals in Shipedit

    Calculation of normals in Shipedit

    The calculation of vertex normals in Shipedit might not be the most correct. Currently the normal of a vertex is the average of the normals of each triangle that is built with that vertex. But consider this shape: image In that calculation, the normal of the seleted vertex will be the average of 2 "up" vectors and 1 "side" vector, thus resulting in a normal 2/3 "up" and 1/3 "side", when visually it should be 50/50. So maybe a better way to calculate the vertex normals should not consider "duplicate" triangle normals in the average.

    IMO, some thought should be given to this: Is it correct? Does it result in wrong normals in other shapes? Does it affect the graphic engines?

  • New Main Loop

    New Main Loop

    Don't worry, I kept the old loop behind a #define DO_OLD_MAIN_LOOP preprocessor directive. Other than making the old loop more readable for me, I left it completely untouched. The new loop processes all of the messages at once, then user input, then ticks the simulation as many times as needed to keep the simulation running at a realtime pace. At least, that's what's supposed to happen.

  • Adding CMakePresets.json for default Visual Studio configs

    Adding CMakePresets.json for default Visual Studio configs

    Allows to switch:

    • x86/x64
    • Debug/Release

    Without restarting Visual Studio / regenerating solution. (need to open directory, rather than solution file, in VS)

  • Adding msbuild+CMake+VS2019 CI build

    Adding msbuild+CMake+VS2019 CI build

    Adds a basic CI workflow which builds the project in both x86 and x64 platforms. Example run: https://github.com/DarkWanderer/orbiter/runs/3196658204?check_suite_focus=true

  • D3d9 , D3d7client and Internal Graphics broken (deleting  and recreating meshes no longer display properly)

    D3d9 , D3d7client and Internal Graphics broken (deleting and recreating meshes no longer display properly)

    See my comment here The Dx9 client is also broken

    https://github.com/orbitersim/orbiter/commit/f49880790620d414b7ff963eeb5b30cea76f17f2?_pjax=%23js-repo-pjax-container#commitcomment-55016624

  • Vulkan renderer

    Vulkan renderer

    Vulkan is the best graphics API, when compared to DirectX and OpenGL.

    Pros:

    • Very high performance
    • Open source
    • Good graphics fidelity

    Cons:

    • Very hard to implement

    In my humble opinion, a project like this could benefit from Vulkan, as the default rendering API.

    Related to issue #8

  • ElevationGrid Update.

    ElevationGrid Update.

    Changed ElevationGrid manager to return float instead of int16 for smoother and more accurate terrain collision matching. The physics engine does the interpolation in floating point format too.

    I debugged a case long ago where surface elevation was defined in 0.1 meter resolution but the global lunar resolution is 0.5 meters, so, some precision is lost. It might be practical to let go the INT16 and move to float based elevation in general, in which case the planet specific scale factor would become obsolete. uint8 and int16 would remain valid tile formats of course.

  • elevmgr: added clbkFilterElevation

    elevmgr: added clbkFilterElevation

    Clients that manipulate elevation file data in memory (e.g. for flattening features) for visuals can overload this method in order to manipulate the terrain collision data in the same way. As soon as the internal collision tile is loaded in the core, the callback is invoked.

  • Buffer overflow in Dragonfly module

    Buffer overflow in Dragonfly module

    Found an issue while running Orbiter under ASAN:

    https://github.com/orbitersim/orbiter/blob/17ae0ae7c621cf5129cf14bbfd4fa0cd99187bfd/Src/Vessel/Dragonfly/instruments.cpp#L429-L432

    i_names is an array char[7][12], but is indexed from 0 to 11 - likely just overflows into the next array

  • Adding x64 artifact to Actions build

    Adding x64 artifact to Actions build

    • added 'install' step to pipeline
    • added x64 artifact in main branch builds with 7 days retention
    • switched to explicit invocation of cmake instead of "prefab" action use
      • allows to utilize "install" action, better customizability
      • lost "problem matchers" - compilation warnings will not be highlighted in CI (will still be logged!)
    • switched to main from master
  • Crash to desktop when using too much Time acceleration while flying in atmosphere

    Crash to desktop when using too much Time acceleration while flying in atmosphere

    Steps -

    1. Open the scenario DeltaGlider -> Animated Control Surfaces
    2. Pitch down the vessel
    3. Press [T] multiple times quickly to accelerate time.

    Most of the time it crashes to desktop (no error messages).

    Possible solution - Different limit for max time acceleration when inside atmosphere

  • Transfer MFD and

    Transfer MFD and "AF CTRL" in 3d cockpit of DG

    Hi, I noticed a few bugs.

    The "Dv" parameter of the Transfer MFD doesn't change (just stops) during burning in the 3d cockpit (of Delta-glider).

    The "AF CTRL" selector isn't synchronized between the 2d panel and 3d cockpit (of Delta-glider) at that "real" is the only 2d mode. Besides, the keyboard shortcut "LAlt+/" affects only in the 2d mode. So the "AF CTRL" selector looks a bit broken in the 3d cockpit.

  • pb building when only modifying in OVP

    pb building when only modifying in OVP

    Using visual studio 2022 (same pb with 2019) ninja generator

    branch d3d9client

    when modifying a source file in OVP d3d9client

    build fails on Error copying directory from "C:/orbisource2/orbiter/Orbitersdk/include/" to "C:/orbisource2/orbiter/out/build/x64-Debug/Orbitersdk/include". (see full log below)

    problem is solved if I do a full clean and rebuild, but takes a long time re-compiling everything

    I do not understand the error, the command line and directories are fine turning on cmake verbose mode did not provide any insight

    is anybody else having the same problem ?

    [28/70] cmd.exe /C "cd /D C:\orbisource2\orbiter\out\build\x64-Debug && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/BinAssets/ C:/orbisource2/orbiter/out/build/x64-Debug && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Scenarios/ C:/orbisource2/orbiter/out/build/x64-Debug/Scenarios && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Textures/ C:/orbisource2/orbiter/out/build/x64-Debug/Textures && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Meshes/ C:/orbisource2/orbiter/out/build/x64-Debug/Meshes && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Script/ C:/orbisource2/orbiter/out/build/x64-Debug/Script && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Config/ C:/orbisource2/orbiter/out/build/x64-Debug/Config && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Flights/ C:/orbisource2/orbiter/out/build/x64-Debug/Flights && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Orbitersdk/include/ C:/orbisource2/orbiter/out/build/x64-Debug/Orbitersdk/include && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E make_directory C:/orbisource2/orbiter/out/build/x64-Debug/Orbitersdk/lib/Lua && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy C:/orbisource2/orbiter/Extern/Lua/Lua-5.1-x64/dll/lua5.1.lib C:/orbisource2/orbiter/out/build/x64-Debug/Orbitersdk/lib/Lua/ && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy C:/orbisource2/orbiter/Extern/Lua/Lua-5.1-x64/dll/lua5.1.dll C:/orbisource2/orbiter/out/build/x64-Debug" FAILED: CMakeFiles/CopyData C:/orbisource2/orbiter/out/build/x64-Debug/CMakeFiles/CopyData cmd.exe /C "cd /D C:\orbisource2\orbiter\out\build\x64-Debug && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/BinAssets/ C:/orbisource2/orbiter/out/build/x64-Debug && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Scenarios/ C:/orbisource2/orbiter/out/build/x64-Debug/Scenarios && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Textures/ C:/orbisource2/orbiter/out/build/x64-Debug/Textures && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Meshes/ C:/orbisource2/orbiter/out/build/x64-Debug/Meshes && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Script/ C:/orbisource2/orbiter/out/build/x64-Debug/Script && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Config/ C:/orbisource2/orbiter/out/build/x64-Debug/Config && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Flights/ C:/orbisource2/orbiter/out/build/x64-Debug/Flights && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy_directory C:/orbisource2/orbiter/Orbitersdk/include/ C:/orbisource2/orbiter/out/build/x64-Debug/Orbitersdk/include && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E make_directory C:/orbisource2/orbiter/out/build/x64-Debug/Orbitersdk/lib/Lua && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy C:/orbisource2/orbiter/Extern/Lua/Lua-5.1-x64/dll/lua5.1.lib C:/orbisource2/orbiter/out/build/x64-Debug/Orbitersdk/lib/Lua/ && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E copy C:/orbisource2/orbiter/Extern/Lua/Lua-5.1-x64/dll/lua5.1.dll C:/orbisource2/orbiter/out/build/x64-Debug" Error copying directory from "C:/orbisource2/orbiter/Orbitersdk/include/" to "C:/orbisource2/orbiter/out/build/x64-Debug/Orbitersdk/include".

  • Button highlighting in Camera Dialog box is a bit weird

    Button highlighting in Camera Dialog box is a bit weird

    Just a visual issue.

    Steps - 1 ) Go to Camera Dialog box and choose the "Track" tab 2) Select each mode one-by-one (Target, Absolute, Global, etc). Only the first button is highlighted (blue border) even though I chose another button and I'm in a different camera mode now.

    Similar case 1 ) Go to Camera Dialog box and choose the "Track" tab 2) Select a button, then move cursor out of the dialog (maybe to adjust position with right mouse). Go back to camera dialog box. 3) Repeat the same with all the buttons For some reason multiple buttons are highlighted (blue border) even though only one camera track mode can be active at a time.

    Video - https://www.youtube.com/watch?v=5c4HOTCC-Kk

    Tested on Open Orbiter.exe 32bit, DX7, Windows 11 Happens in Orbiter 2016 too

  • occasional crash on scenario loading in D3d9client

    occasional crash on scenario loading in D3d9client

    I had an occasional crash in void Scene::SetupInternalCamera(D3DXMATRIX *mNew, VECTOR3 *gpos, double apr, double asp) at first timestep

    I suggest to add a test on camera.vnear on the following line in OVP\D3D9client\scene.cpp // Something is very wrong... abort... if (Camera.hObj_proxy == NULL || Camera.vProxy == NULL ) return;

    and change it to // Something is very wrong... abort... if (Camera.hObj_proxy == NULL || Camera.vProxy == NULL || Camera.vNear == NULL) return;

  • Textures2 folder missing in build output

    Textures2 folder missing in build output

    Hey there, after building Orbiter, I noticed that the "Texture2" folder is missing in the build output (it is available in the source code). Is there any extra setting/flag I have to turn on inside Visual Studio? For reference I'm using this guide to build Orbiter : https://www.orbiter-forum.com/threads/guide-orbiter-development-in-visual-studio-2019.40144/

    Thanks!

Related tags
This is a list of different open-source video games and commercial video games open-source remakes.

This is a list of different open-source video games and commercial video games open-source remakes.

Jun 20, 2022
OpenMW is an open-source open-world RPG game engine that supports playing Morrowind.

OpenMW is an open-source open-world RPG game engine that supports playing Morrowind.

Jun 14, 2022
A command line poker simulator made in C++.

C Plus Poker (C++ Poker) Introduction This is a C++ console application that simulates the scoring of a Poker game. Unlike typical Poker, this applica

Oct 21, 2021
A simple shooter game like Space Invaders that runs on QMK Firmware.
A simple shooter game like Space Invaders that runs on QMK Firmware.

About A simple shooter game like Space Invaders that runs on QMK Firmware. What is it like? Player's Manual English: manual_en.md Japanese: manual_jp.

Oct 14, 2021
A text-based space adventure role-playing game developed by a team of 5.

SpaceAdventureRPG - Text-Based Game A text-based space adventure role-playing game developed by a team of 5. Module: 4007CEM, Class: B, Group: 3 Contr

Nov 18, 2021
A cross-platform, top-down 2D space shooter written in C using only system libraries.
A cross-platform, top-down 2D space shooter written in C using only system libraries.

A cross-platform, top-down 2D space shooter written in C using only system libraries.

Jun 15, 2022
Space exploration, trading, and combat game.

Endless Sky Explore other star systems. Earn money by trading, carrying passengers, or completing missions. Use your earnings to buy a better ship or

Jun 13, 2022
Remake of the original Space Invaders game.

Space-invaders Remake of the original Space Invaders game.

May 13, 2022
In this repository you'll find the fully reversed source code for GTA III (master branch) and GTA VC (miami branch).
In this repository you'll find the fully reversed source code for GTA III (master branch) and GTA VC (miami branch).

Intro In this repository you'll find the fully reversed source code for GTA III (master branch) and GTA VC (miami branch). It has been tested and work

Nov 11, 2021
Open-source, cross-platform, C++ game engine for creating 2D/3D games.

GamePlay v3.0.0 GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games. Website Wiki API De

Jun 17, 2022
KlayGE is a cross-platform open source game engine with plugin-based architecture.

KlayGE KlayGE is a cross-platform open source game engine with plugin-based architecture. It's started since 2003. The explicit goal of KlayGE is: to

Jun 22, 2022
Powerful, mature open-source cross-platform game engine for Python and C++, developed by Disney and CMU
Powerful, mature open-source cross-platform game engine for Python and C++, developed by Disney and CMU

Panda3D Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs. Panda3D is open-source and free for a

Jun 21, 2022
MIT Licensed Open Source version of Torque 2D game engine from GarageGames
MIT Licensed Open Source version of Torque 2D game engine from GarageGames

We've moved! All torque engines have moved to a new organization, Torque Game Engines. Torque2D can be found at https://github.com/TorqueGameEngines/T

Jun 15, 2022
MIT Licensed Open Source version of Torque 3D from GarageGames

Torque 3D MIT Licensed Open Source version of Torque 3D from GarageGames More Information Homepage Torque 3D wiki Community forum GarageGames forum Ga

Jun 18, 2022
An open source re-implementation of RollerCoaster Tycoon 2 🎢
An open source re-implementation of RollerCoaster Tycoon 2 🎢

An open source re-implementation of RollerCoaster Tycoon 2 ??

Jun 18, 2022
Free, open-source, game engine and a 3D sandbox.
Free, open-source, game engine and a 3D sandbox.

Work-in-Progress The official "early alpha" release should be available around April 2021 SGEEngine SGEEngine is an open source (MIT License), C++ cen

Jun 13, 2022
Project DELTA - An open-source trainer built on the Void Engine for Toby Fox's games and their spin-offs.

Project DELTA v3 Project DELTA - An open-source, modular mod menu for Toby Fox's games and their spin-offs. Important note to Grossley: Yes, it is out

Apr 20, 2022
MAZE (My AmaZing Engine) - 🎮 Personal open-source cross-platform game engine
MAZE (My AmaZing Engine)  - 🎮 Personal open-source cross-platform game engine

MAZE (My AmaZing Engine) is the self-written open-source cross-platform game engine in the active development stage. At the moment it is my main pet project, developed for the purpose of learning and preserving different game dev technologies.

Jan 9, 2022