Giter Site home page Giter Site logo

barthpaleologue / cosmosjourneyer Goto Github PK

View Code? Open in Web Editor NEW
7.0 1.0 2.0 501.79 MB

Your next space adventure awaits in the web browser! CosmosJourneyer is an open-source procedural universe with seamless transitions between space and planet surfaces that makes space exploration accessible for everyone.

Home Page: https://cosmosjourneyer.com/

License: GNU General Public License v3.0

JavaScript 1.29% TypeScript 70.22% SCSS 1.64% HTML 6.38% Jupyter Notebook 3.62% GLSL 16.60% Rust 0.03% Python 0.22%
procedural-generation procedural webgl2 webgl atmospheric-scattering planetscale webgpu

cosmosjourneyer's Introduction

Cosmos Journeyer

pages-build-deployment tauri build and release ESLint Check Jest Coverage License

Teaser Video

Cosmos Journeyer is the procedural universe running inside a web page that makes space exploration accessible for everyone.

The main website of the project is online at https://cosmosjourneyer.com/

The main deployment of the procedural universe can be accessed https://barthpaleologue.github.io/CosmosJourneyer/

Documentation

The documentation is online at https://barthpaleologue.github.io/CosmosJourneyer/docs/

Additionally, the ARCHITECTURE.md file contains a big picture explanation of the architecture of the project.

To build it locally, run npm run docs and then npm run serve:docs to serve it at localhost:8081.

Contributing

Contributions are welcome! There is too much to do for one person alone.

If you want to contribute, you will find guidelines and ideas here.

Sponsor

Developing Cosmos Journeyer is time-consuming and generates no revenue since it is free and open-source.

If you like the project, please consider sponsoring it on Patreon or [GitHub Sponsors](

The project has a ko-fi page at https://ko-fi.com/cosmosjourneyer if you feel like sponsoring the project!

Features

Every telluric planet and moon has a surface that can be explored by the player using a spaceship, or by foot!

From Space

Cosmos Journeyer allows to travel from one celestial body to another without any loading screen, giving the player a seamless experience while exploring.

A little bit closer

Planet surfaces are filled with procedural vegetation and rocks and butterflies to make them feel more alive.

On the surface

Cosmos Journeyer generates a virtually infinite amount of star systems that all have a star, often planets, and sometimes moons.

Star map

Build

First, clone the repository and install the dependencies with pnpm install.

Web

To build the web version of Cosmos Journeyer, run pnpm run build. Everything will be built in the dist folder.

Tauri

Cosmos Journeyer can be built as a desktop application using Tauri!

First you will need a bazillion dependencies, here is a list of some of them if you are using a Debian base OS:

sudo apt install -y libwebkit2gtk-4.0-dev libgtk-3-dev libsoup2.4-dev libjavascriptcoregtk-4.0-dev librsvg2-dev libwebkit2gtk-4.0-dev libappindicator3-dev patchelf

Then you can build the application with pnpm tauri build.

Contributors

Thank you to all the people who have contributed to Cosmos Journeyer!

Contributors

Credits

All credits can be found in the credits panel of the game.

Special Thanks

  • Martin Molli for his fearless refactoring of the messy code base in its early days
  • The people from BabylonJS for their amazing work on the BabylonJS framework and their help on the forum

cosmosjourneyer's People

Contributors

barthpaleologue avatar happy44300 avatar

Stargazers

Michael avatar Atanas Minev avatar  avatar JoeyKo avatar Samrat Singh Bhandari avatar Aiekick avatar Cedric Guillemet avatar

Watchers

 avatar

cosmosjourneyer's Issues

Update to Babylon 7

Make sure the project is compatible with the new major version of BabylonJS

I18n

Use i18n for all displayed text of the game

Enable HDR for all post-processes

Allow the output of post-processes to be larger than 1. Then put tone mapping in ColorCorrection instead of living in the LensFlarePostProcess

Star map warp button cannot be clicked

Describe the bug

The warp button is not clickable after warping once to another system.

To Reproduce

Steps to reproduce the behavior:

  1. Star a new journey
  2. Warp to another system
  3. Try to warp to yet another system

Expected behavior

The button should be clickable.

Add notification system

The game has a hard time communicating what is happening on the screen. A notification system could improve that with some examples:

  • Landing sequence initiated
  • Landing sequence complete
  • Engaging warp drive
  • Disengaging warp drive
  • Gravity well
  • ...

Create basic economic backend

From each StarSystemModel, a StarSystemEconomyModel will be created. It will describe the type of economy: none if not inhabited, regular capitalist, communist and other variants will come with time. It will also describe the abondance of resources in the system (though this will probably its own component in the future).

The player will also be able to use money, different currencies in different regions of space. It will be carried through the save file. In this first basic iteration, money will be used to refuel the tanks of the spaceship. Later it will be used to add components to the spaceship (in a similar fashion to the landing computer).

Add auto-save in `localStorage` every minute

Stringify the json content of the save file and put it in localStorage. Probably 20 should be enough.

Then the main menu load save section should be updated to display a list of known auto-saves.

Procedural space station names

Right now all space stations have the same name. This must change by using the seed of the station and a name generator similar to star system names.

Use HDR environment texture for starfield

Change starfield from being a custom post-process to being a true HDR environment texture.

Main challenge: how to convert a spherical texture to an HDR environment texture?

This would allow nice reflections on canopes and future telescope mirrors.

Add shadows on planet surfaces

Planetary shadows are already implemented.

This is about shadows cast by the spaceship, the character, trees and rocks.

Given the immense scales at play, probably use a fake DirectionalLight attached on the camera to generate cascaded shadow maps. The extent of the rendering volume will probably need to be hardcoded.

Create a Space station UI

As walking and exploring space stations is out of reach for now, interaction should be performed through a UI.

It will be done in HTML like the flight overlay because it will be complex.

It will feature options to buy refuel, take missions (trade and exploration in a first iteration) and view ship's components. A button to save the game could be interesting as well in the prospect of a survival mode in the future.

Hiding the UI will also be possible, in order to enjoy the view and capture awesome timelapses.

The UI should leave space for the view of the spaceship.

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.