Giter VIP home page Giter VIP logo

solar_system_demo's Introduction

Solar System Game Demo

This is a 3D space game demo, with procedurally-generated planets. It is a technical demo for one use of the Voxel Tools module and Godot 4.

Video

Features

  • Procedurally-generated planets and moon (1 to 2 Km in radius, or 10 to 20 Km in large scale mode)
  • Deterministic, non-realistic celestial motion at all times
  • Simple atmospheres
  • Fully editable terrain using voxels
  • Persistent changes with save files per planet
  • Ravines
  • Cave systems deep underground (not easy to reach, most entries are in ravines)
  • Spaceship flight from ground to space
  • Motion trails
  • Sound effects and ambiances
  • Origin shifting allowing the whole system to be around 50Km in size (takes place only once when close enough to a planet)
  • Third-person character
  • Simple environment props such as rocks and grass
  • Basic waypoint system to pin locations
  • Main menu and in-game menu with settings
  • Option to increase the scale of planets x10 (physics is buggy on planets, maybe unless you use a double-precision Godot build)
  • Lens flares from SIsilicon, ported to Godot 4 for the demo

Note: This is a demo project, so any lack of gameplay, placeholders or absence of roadmap is intentional. It is meant to showcase an example of how to start making a game like this. There is no plan to make it a fully-fledged space game, but bug-fixes or small improvements may be welcome.

Textures are from https://ambientcg.com/
Sound effects are partly from https://sonniss.com/gameaudiogdc

Performance

You need a computer with a powerful CPU to run this. By default, Vulkan is required, but it might work in GLES3 if you turn off Vulkan-only features like GPU detail rendering. For reference, with an AMD Ryzen 5 2600 6-core CPU, an nVidia GeForce GTX 1060 6Gb graphics card and an optimized Godot build, this demo starts up in 5 seconds, uses about 1 Gb of RAM and should mostly sustain 60 FPS.

Controls

In spaceship mode:

  • The mouse orientates the ship
  • A and D rolls left or right
  • W goes forward
  • S goes backward
  • Spacebar activates super-speed. Only works when far enough from a planet.
  • E to jump off the ship. Only works when properly landed on the ground.

In character mode:

  • Mouse to orientate the head and camera
  • Left Mouse Button to dig
  • Right Mouse Button to place blobs of ground (WARNING, there is no check if you dig yourself in)
  • W,A,S,D to move
  • Spacebar to jump
  • F to toggle flashlight
  • T to place a waypoint

Dependencies

You need to use a custom version of Godot Engine including the Voxel Tools module. See how to get one here: https://voxel-tools.readthedocs.io/en/latest/getting_the_module/

solar_system_demo's People

Contributors

zylann 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

solar_system_demo's Issues

How can I spawn my ship directly on a planet?

Description

I've I am wondering how to do about spawning the ship on the surface of earth. Moving the spawnPoint doesn't seem to do anything, and its unclear how to get the position of a StellarBody

Its not working in godot 4.1.

He's not working in 4.1, how do I fix him, I'd get stuck on the initialization of Earth galaxies because they need to initialize the atmosphere and oceans, and the call to _get_material fails.

How is rocks' collisionshapes setup?

I searched the entire project and couldn't find how this array is populated

I use your example code in my own project and it turned out that the rocks on the planet have no collisionshapes, only meshes.

Could you please teach me about this?

PS. Sorry for the interuption for the donation, I recently play Genshin on HK server costing a lot of my USD T^T

Using Real World Data

I wonder if you have interest to use real world data to create e.g. Earth First.

Trying to Improve My Geography Game with More Real-World Data

2:15
image

2D world map UI

Will be great to have a world map as 2D that allows one to click on it and immediately teleport to the globe of predefined height.

Having this feature will also allow other 2D real world data to be overlayed.
7.30
image

I know this is a huge effort.

I think the entire Godot community needs an advanced Earth, especially for education and interaction between teachers and students.

cc @SebLague

Update

Can we get an updated version of this ? The project wont even run with the required Godot version of 3.3.2

Unable to set up VoxelStreamSqlite

when setting up sqlite as a stream for a VoxelLODTerrain, I am running into errors, and cant get any generation to happen either in the editor or runtime game.

E 0:00:03:0967 zylann::voxel::VoxelStreamSQLite::load_voxel_blocks: Condition "con == nullptr" is true.
<C++ Source> modules\voxel\streams\sqlite\voxel_stream_sqlite.cpp:730 @ zylann::voxel::VoxelStreamSQLite::load_voxel_blocks()

E 0:00:03:0967 zylann::voxel::LoadBlockDataTask::run: Error loading voxel block
<C++ Source> modules\voxel\engine\load_block_data_task.cpp:64 @ zylann::voxel::LoadBlockDataTask::run()

E 0:00:03:0967 zylann::voxel::VoxelStreamSQLite::load_instance_blocks: Condition "con == nullptr" is true.
<C++ Source> modules\voxel\streams\sqlite\voxel_stream_sqlite.cpp:819 @ zylann::voxel::VoxelStreamSQLite::load_instance_blocks()

I am using a voxel graph generator, which now works fine when there is no stream setup (thanks for the quick fix btw).

image

I am attempting to save to the path saves/db/, but I am not particularly sure of how to format the path or where it should originate from. The database file is named beezworx_db.db, should the file name be included in the path?
image

Using DB Browser, I set up the scheme as suggested in the documentation.
image

I have went through a couple of the demo files looking for an example project with an already setup sqlite stream but couldnt find an example.

If I click the terrain dropdown menu in the scene editor, and click regenerate, the statistics at the bottom change values as if something is being generated, but no mesh is ever showed and no save is ever made to the database.

is there a tutorial/example online I can refer to? I have set up and used sqlite for purposes other than voxeltools, but I believe I'm missing/overlooking something. Can you point me in the right direction?

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.