Coder Social home page Coder Social logo

orbitersim / orbiter Goto Github PK

View Code? Open in Web Editor NEW
1.6K 45.0 211.0 565.79 MB

Open-source repository of Orbiter Space Flight Simulator

License: MIT License

CMake 1.41% HTML 6.58% CSS 0.09% JavaScript 0.01% TeX 0.03% C++ 77.33% C 4.12% Batchfile 0.04% Lua 6.24% Clarion 0.01% MATLAB 2.76% C# 0.09% HLSL 1.28%

orbiter's Introduction

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).

D3D9Client graphics engine is licensed under LGPL, see LGPL

Installation

Minimum requirements Recommended requirements
RAM: 4GB 8GB
CPU: Dual Core
GPU: 200 GFlops 500 GFlops
Disk: 5GB of free space 10GB of free space (80GB if you want hi-res textures)

Get the Orbiter source repository from github

git clone --recursive [email protected]:orbitersim/orbiter.git

or

git clone --recursive https://github.com/orbitersim/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.

orbiter's People

Contributors

alektron avatar cleverking2003 avatar computerex avatar darkwanderer avatar dbeachy1 avatar dependabot[bot] avatar dimitry-ishenko avatar face-1 avatar gls-ssv avatar jarmonik avatar jdat avatar kgmt0 avatar matthew-reid avatar miner34dev avatar mrozigor avatar mschweiger avatar n7275 avatar schnepe2 avatar spacex15 avatar supersonic71 avatar tclarke avatar thegondos avatar xyon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

orbiter's Issues

Launchpad video tab: new behaviour

Currently the video tab is only displayed in the server version if a graphics client is loaded.
Intended new behaviour:

  • video tab always visible
  • in the server version, display a combo box to select graphics client
  • this is to replace the graphics client selection in the module tab
    Reason:
  • more intuitive and user friendly
  • avoids ability to select multiple graphics clients, which currently is possible

Update pointers to 64 bit

As mentioned in another issue, I have started updating windows API pointers to be 64 bit compatible. Here's the branch. The changes should be backwards compatible with 32 bit.

Currently I have the launcher UI and orbiter server running in 64 bit, with dx7 disabled.

Extend Orbiter command line options

Provide additional command line parameters to orbiter.exe

  • enforce loading of plugins
  • enforce specific parameters (e.g. fixed time step length)
  • terminate simulation run after a fixed time

This is to aid in system testing

Include zlib sources

Instead of including 32- and 64-bit binary versions, include the zlib sources and build as required.

Binary packages with CI

I don't know if this is possible, and I certainly would need help setting it up, but here is what I want to do:

If CI builds Orbiter successfully after a pull to master, can it be set up to create a binary package and publish it on github? I have already set up cmake for a package target using cpack (both zip and msi, although zip is probably sufficient for this). A new package should replace the previous package, if any, otherwise I would probably fill up my storage allowance rather quickly. It only needs to create a package for the x64 build.

Any suggestions?

Buffer overflow in Dragonfly module

Found an issue while running Orbiter under ASAN:

Rotary::Rotary(int x,int y,char i_name[15],char i_names[7][12], int i_set, int i_poz,Panel* parent):instrument(x,y,parent)
{
strcpy(screentext,i_name);
for (int i=0;i<11;i++) strcpy(names[i],i_names[i]);

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

Allow dialogs to be launched from NG console window

The console window active when the graphics server version is launched without an attached graphics client has currently very limited functionality.

One great addition would be the ability to launch dialogs that currently only work in graphics mode (vessel selection, map, etc.)
In particular the ability to open a Lua console could make the console mode actually useful.

License Contradiction Between Repository and Official Website

So, the website has a Terms of Use page that seems to contradict the repository's License page. For example, the former prohibits making any sort of money from the use of the software while the latter permits the user to use the software as he/she desires without any restrictions except to (a) include the copyright notice and (b) to include the permission notice.

VC panels not getting mouse events

VC panels not getting clicks

Did some debugging regarding the issue of clbkVCMouseEvent() not being called when a click is made on a panel and here are my findings.

It seems that if oapiVCSetAreaClickmode_Quadrilateral() is given all 4 points exactly contained in a plane, the calculations at VirtualCockpit::SetClickZone_Quadrilateral() (VCockpit.cpp:300) fail. My half-forgotten algebra knowledge tells me that matrix P1 (and also P2) doesn't have full rank when the 4 points are co-planar thus it will be singular, which actually gets flagged in function qrdcmp(). After that, the function qrsolv() is called which divides by 0, and returns "-nan(ind)". When the click is made, the "-nan(ind)" in the math means the checks to determine if the click is on that panel will fail.

When this occurs or not seems to be "floating-point numerical coincidence", as co-planar points that initially produce a non-singular matrix, after adding an offset from a c.g. shift will produce a singular matrix.

My, again, half-forgotten algebra knowledge led me to add an offset (at the addon level) to point 4 (this one doesn't get used in the plane equation), normal to the panel plane, to "force" full rank in the matrix, and in initial testing the panels get the clicks, with the correct coordinates.

Not sure if this could be considered a final solution, but IMO the code should handle the situation of the 4 points being co-planar.

Include legacy ISS model in repository

The old ISS version was left out of the repository because it has long been superseded by the ProjectAlpha version, but this breaks some old scenarios which still refer to it.

Virtual cockpit for xr2

Looking forward orbiter to have more digital and analog controls
Multi monitoring
separated monitoring for every monitor in the panals and HUD

Purge unused network test code

Remove some old network testing code for the sake of source readability.
The code was based on a deprecated DirectPlay interface and doesn't currently compile.

As long as your replacing DX7

Please consider looking at a more universal graphics toolkit that could allow the program to run on other platforms (e.g. MacOS, Linux, possibly even Console and/or iOS/Android/etc.).

Obviously this wouldn't be the only dependency to be resolved to get to that place, but since this is one you're considering replacing anyway, I'd like to suggest at least considering taking that preparatory step in the process.

Refactor Launchpad class

  • Need cleaner interface for interaction with Orbiter class
  • Speed up scenario tree refresh (e.g. by building sub-trees only when directory tabs are expanded) see #61
  • general maintenance

master branch -> main

I have renamed the repository's master branch to main to comply with current github conventions.
If you have cloned the orbiter repository, you should update your local git settings:

git branch -m master main
git fetch origin
git branch -u origin/main main

Disable DX7 for x64 builds

Take out DX7 dependency for 64-bit builds, but leave it in 32-bit builds for now the keep the 32-bit version unchanged.

Orbiter_ng forward command line

Currently, Orbiter_ng.exe (launcher for Modules/Server/Orbiter.exe) ignores command line arguments.
Should pass them through to Orbiter.exe

Discord?

Given how quickly development is likely to pick up on this project, might it be worth us getting a project Discord server up and running?

Happy to organise this but figured I'd ask first.

Add CI using GitHub actions

This project could benefit from a continuous integration setup, so that any build errors are caught quickly. Since GitHub actions is free for public repositories, it is ideal for this project. I am willing to contribute a PR with the CI workflow if this issue is accepted.

Always deploy "current state" html templates

The "current state" templates Html/Scenarios/CurrentState{_img}.htm are not copied to the Orbiter builds and installs if ORBITER_MAKE_DOC is false, leading to ugly "page not found" images in the Launchpad scenario view for the (Current state) scenario.

The templates should always be deployed even if the documentation is not built.

DirectInput alternative

Any plans to replace DirectInput with a cross platform input system, like SDL or OpenInputSystem? This would really help me with testing my 64 bit build where dx7 is disabled.

I've used both OIS and SDL before (Skybolt currently uses OIS) and found them both to be very capable and easy to integrate.

Don't turn off ClearType by default

Currently, default behaviour is to turn off ClearType on launching Orbiter, and reset it on quit.
This was done to improve performance, but shouldn't make much difference any more with current hardware.
With the current setting, ClearType remains disabled on Orbiter crash.

Change default to leave ClearType active when running Orbiter.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.