{"id":13619600,"url":"https://github.com/TheOpenSpaceProgram/osp-magnum","last_synced_at":"2025-04-14T16:32:03.059Z","repository":{"id":37080468,"uuid":"236109447","full_name":"TheOpenSpaceProgram/osp-magnum","owner":"TheOpenSpaceProgram","description":"A spaceship game","archived":false,"fork":false,"pushed_at":"2024-12-09T05:07:29.000Z","size":4827,"stargazers_count":217,"open_issues_count":27,"forks_count":33,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-12-09T06:19:43.285Z","etag":null,"topics":["cpp","entity-component-system","game-development","game-engine","physics-engine","simulation"],"latest_commit_sha":null,"homepage":"https://www.openspaceprogram.org/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheOpenSpaceProgram.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-25T01:04:14.000Z","updated_at":"2024-12-09T05:07:34.000Z","dependencies_parsed_at":"2023-09-25T01:13:17.205Z","dependency_job_id":"3e8b1bad-ae81-4b37-9025-fa66720369cd","html_url":"https://github.com/TheOpenSpaceProgram/osp-magnum","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheOpenSpaceProgram%2Fosp-magnum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheOpenSpaceProgram%2Fosp-magnum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheOpenSpaceProgram%2Fosp-magnum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheOpenSpaceProgram%2Fosp-magnum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheOpenSpaceProgram","download_url":"https://codeload.github.com/TheOpenSpaceProgram/osp-magnum/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248916727,"owners_count":21182856,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","entity-component-system","game-development","game-engine","physics-engine","simulation"],"created_at":"2024-08-01T21:00:45.464Z","updated_at":"2025-04-14T16:31:58.045Z","avatar_url":"https://github.com/TheOpenSpaceProgram.png","language":"C++","readme":"# osp-magnum\n![Windows](https://github.com/TheOpenSpaceProgram/osp-magnum/actions/workflows/windows.yml/badge.svg)\n![Linux](https://github.com/TheOpenSpaceProgram/osp-magnum/actions/workflows/linux.yml/badge.svg)\n![Mac OS X](https://github.com/TheOpenSpaceProgram/osp-magnum/actions/workflows/macos.yml/badge.svg)\n\n![screenshot](screenshot0.png?raw=true \"A Debug-rendered vehicle composed of parts flying over a planet.\")\n\n***This project is still deep in the pre-release development phase***\n\nOpenSpaceProgram is an open source initiative with the goal of creating a space flight simulator inspired by Kerbal Space Program. This project also works as a general-purpose library for space games and simulations with very large universes and multiple planetary systems.\n\nWritten in modern C++17, this project mainly features a custom game engine and a universe/orbit simulator, both relying on [EnTT](https://github.com/skypjack/entt/) and [Magnum](https://github.com/mosra/magnum). The universe and game engine are synchronized for a seamless spaceflight experience from a planet's surface to deep space.\n\nBy taking advantage of Entity Component System (ECS) architectures and Data-Oriented Design, this project achieves simplicity, flexibility, low coupling, and excellent performance. With these techniques in action, we can easily avoid spaghetti code and optimize for a high part count.\n\n## Features\n\n### Core\n\n* Universe\n  * Support for Universes that use a hierarchical coordinate system, allowing sizes that can be described as:\n    * Big. Really big. You just won't believe how vastly, hugely, mindbogglingly big it is. I mean, you may think it's a long way down the road to the chemist's, but that's just peanuts.\n  * Arbitrary sized integers for coordinates within a particular layer of the hierarchy\n    * We use 64-bit integrer coordinates by default, but we're interested to see what people try out!\n  * Optimal data layout to support pluggable oribial mechanics algorithms, which includes\n    * Patched conics simulations -- like Kerbal Space Program's gameplay\n    * N-Body simulations -- like the KSP mod 'Principia'\n    * Build your own simulation logic!\n* \"ActiveScene\" Game Engine\n  * Scene Graph\n  * Configurable multipass Renderer\n  * Straightforward interface for integrating any physics engine\n    * Out of the box we integrate with Newton Dynamics 3.14c.\n    * PRs to support other physics engines welcome!!!\n  * Wiring/Connection System\n    * Resource flow between ship components\n      * Fuel\n      * Cargo\n      * Life support\n      * Tell us about your ideas!\n    * Virtual control systems for vehicles\n      * routable user inputs\n      * PID\n      * auto-landing\n      * Write your own!\n* Asset management\n  * Comes out of the box with glTF as a part model format\n  * Plugin-able ship part loader allowing arbitrary format support\n* Extendable Bulleted List system to briefly present implemented features\n\n### Extra\n\n* *Newton Dynamics* Physics Engine integration\n* Rockets, RCS, and Fuel tanks\n* Rocket exhaust plume effects \n* Planet terrain, Icosahedron-based tessellation\n\n### Test Application\n\nTo act as a temporary menu and scenario loader, a console-based test application is implemented. It is **written in simple C++**, making it an excellent start to understanding the rest of the codebase.\n\n## Building\n\nThese are simplified build instructions for an Ubuntu computer. Windows and Mac OS X build instructions are slightly different.\n\nSee our [GitHub Actions](https://github.com/TheOpenSpaceProgram/osp-magnum/tree/master/.github/workflows) for examples on how to get building for your environment\n\nInstall some dependencies, configure the build, build the build!\n\n```bash\nsudo apt install -y build-essential git cmake libsdl2-dev\ngit clone --depth=1 --recurse-submodules --shallow-submodules https://github.com/TheOpenSpaceProgram/osp-magnum.git osp-magnum\nmkdir build-osp-magnum\ncmake -B build-osp-magnum -S osp-magnum -DCMAKE_BUILD_TYPE=Release\ncmake --build build-osp-magnum --parallel --config Release --target osp-magnum\n```\n\nRun the unit tests!\n\n```bash\ncmake --build build-osp-magnum --parallel --config Release --target compile-tests\nctest --schedule-random --progress --output-on-failure --parallel --no-tests error --build-config Release --test-dir build-osp-magnum/test\n```\n\nRun the game!\n\n```bash\ncd build-osp-magnum/Release\n./osp-magnum\n```\n\nIf you just want to test out the project so far, then see the [Actions](https://github.com/TheOpenSpaceProgram/osp-magnum/actions) tab on GitHub to obtain automated builds for Linux or Windows.\n\n## Controls\nThese controls will seem familiar if you have played Kerbal Space Program!\n\n#### Navigating\n```bash\nV - Switch game mode\n\nArrowUp    - Camera look up\nArrowDown  - Camera look down\nArrowLeft  - Camera look left\nArrowRight - Camera look right\n\nRightMouse - Camera orbit\n\nW - Camera forward\nS - Camera backwards\nA - Camera left\nD - Camera right\n\nQ - Camera up\nE - Camera down\n```\n\n#### Flight\n```bash\nS - Vehicle pitch up\nW - Vehicle pitch down\n\nA - Vehicle yaw left\nD - Vehicle yaw right\n\nQ - Vehicle roll left\nE - Vehicle roll right\n\nZ - Vehicle thrust max\nX - Vehicle thrust min\nLShift - Vehicle thrust increment\nLCtrl  - Vehicle thrust decrement\n\nLCtrl+C | LShift+A - Vehicle self destruct\n```\n\n#### Misc\n```bash\nSpace - Debug Throw\nLCtrl+1 - Debug Planet Update\n```\n\n## Contributing\n\nOur development team is very small right now. We need more crew to help to launch this project to its first release.\n\nJoin our [Discord Server](https://discord.gg/7xFsKRg) for the latest discussions. You *don't* need to be a professional C++ developer to be involved or help! Graphics, sounds, game design, and scientific accuracy are important to this project too.\n\nCheckout [Architecture.md](docs/architecture.md) to get started with learning the codebase. Feel free to ask questions (even, and especially, the stupid ones); this will greatly help with documentation.\n\n## Simplified development roadmap\n\n* Step 1: Make a space flight simulator\n* Step 2: Bloat it with features\n* Step 3: ???\n* Step 4: Fun!\n\n## Random Notes\n* This project might be codenamed 'adera'. the name of the street the 49 UBC bus was at while the project files were first created.\n* If there are problems with DPI scaling, then run with command line arguments `--magnum-dpi-scaling 1.0`\n* As a general-purpose space flight simulator with no reliance on a heavy game engine, this project might have some real applications for aerospace simulation and visualization, such as:\n  * Education\n  * Amature rocketry\n  * Small aerospace companies\n* This project isn't intended to be much of a \"clone\" of Kerbal Space Program. As of now, it's mostly a game engine intended for space flight, with no real gameplay yet.\n","funding_links":[],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTheOpenSpaceProgram%2Fosp-magnum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTheOpenSpaceProgram%2Fosp-magnum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTheOpenSpaceProgram%2Fosp-magnum/lists"}