Open-source repository of Orbiter Space Flight Simulator

Related tags

Game orbiter
Overview

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.

Comments
  • RFC: D3D9 client merge into `main`

    RFC: D3D9 client merge into `main`

    Suggest to review & discuss proposed merge of D3D9Client into Orbiter main. Full history of d3d9client has been merged, and CMake intergrated with main build. Potential points of contention:

    • API backward compatibility
    • Increased size of build
    • Documentation/includes placement

    All credit of course goes to @jarmonik & other D3D9 contributors (I only helped to integrate it into Orbiter repo) - however, I think kicking off discussion on this early would be beneficial

    enhancement 
    opened by DarkWanderer 9
  • 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?

    opened by GLS-SSV 8
  • 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.

    opened by TChapman500 8
  • 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)

    opened by DarkWanderer 7
  • 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

    opened by DarkWanderer 7
  • 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

    opened by spacex15 6
  • 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

    opened by uranuspucksaxophone 5
  • 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.

    opened by jarmonik 5
  • 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.

    opened by Face-1 5
  • crash in bool PlanetarySystem::DelBody (Body *_body)

    crash in bool PlanetarySystem::DelBody (Body *_body)

    I get an occasional crash in

    bool PlanetarySystem::DelBody (Body *_body) { DWORD i, j, k; Body *tmp; for (i = 0; i < nbody; i++) if (body[i] == _body) break; if (i == nbody) return false; delete []body[i]; // delete actual body if (body[i]->s0) body[i]->s0 = NULL; -- CRASH HERE if (body[i]->s1) body[i]->s1 = NULL; if (body[i]) body[i] = NULL; if (nbody > 1) { tmp = new Body[nbody-1]; TRACENEW for (j = k = 0; j < nbody; j++) if (j != i) tmp[k++] = body[j]; } else tmp = 0; delete []body; body = tmp; nbody--; return true; }

    I really do not understand this code delete []body[i]; and then access if (body[i]->s0) ??

    opened by spacex15 4
  • 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

    opened by DarkWanderer 4
  • Physics Instability/Ephemeris issue?

    Physics Instability/Ephemeris issue?

    This issue is most noticeable when taking off from Mars in some of the default Delta Glider or Shuttle A scenarios. Reference: https://github.com/Piraxus/OrbiterSkyboltClient/issues/8

    I have noted similar issues randomly taking off from KSC, where the earth appears to slowly fall away from the vessel. Occasionally, semi-major axis will change as though there is a force being applied when no thrust is active.

    Video: https://youtu.be/B3S6ZECeomk

    I am not sure what the cause could be here, and I don't want draw the wrong conclusion.

    Observations: -Later MJDs seem to be better (or it might be a coincidence in what I observed). -The "jumping" effect seems to be present only on Mars -Sometimes it appears as though a phantom force is being applied to the vessel or planet (apparent acceleration). -Reloading a scenario in Mars orbit, sometimes results in a drastically different Orbit.

    Anything I can help test to make it more clear what the root cause is, let me know.

    opened by n7275 1
  • Adding CMakePresets.json

    Adding CMakePresets.json

    Resurrecting old PR with adding presets. Rationale:

    • Reduce entry barrier for new developers (plug-and-play in Visual Studio 2019/2022)
    • Ensure most of developers using standard build config
    • Provide basic template for Linux debugging from VS (not relevant now, but may be useful in future)
    opened by DarkWanderer 0
Owner
Orbiter Space Flight Simulator
Orbiter Space Flight Simulator
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.

Ivan Bobev 103 Sep 12, 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.

null 4.4k Sep 16, 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

Zach Schickler 1 Oct 21, 2021
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.

null 4 Jul 28, 2022
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

Jonas Djondo 1 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.

Tarek Sherif 1.3k Sep 18, 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

Endless Sky 3.6k Sep 17, 2022
Remake of the original Space Invaders game.

Space-invaders Remake of the original Space Invaders game.

Kofybrek 20 May 13, 2022
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

Zero 1 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

gameplay3d 3.8k Sep 21, 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

Minmin Gong 1.8k Sep 20, 2022
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

Panda3D 3.5k Sep 16, 2022
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

GarageGames 1.7k Sep 16, 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

GarageGames 3.3k Sep 17, 2022
An open source re-implementation of RollerCoaster Tycoon 2 🎢

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

OpenRCT2 10.9k Sep 19, 2022
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

ongamex 72 Sep 15, 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

Archie 7 Apr 20, 2022
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.

Dmitriy Nosov 11 Jan 9, 2022