Sandastray Procedural Dunes Sandbox Game

Hey Panda3D enthusiasts, we’ve just completed our first Panda3D game jam of 2022 and we’re excited to share the results.

Behold Sandastray, a game about windsurfing on procedural quicksand dunes and collecting resources in the desert. The goal of this game is to surf and glide around to find hovering coins which mark resource collection areas for your dune-crawling city ship.

Project repository: entikan/Sandastray: Panda3D Game Jam 2022! - Sandastray - Codeberg.org

itch io page: Sandastray by Simulan, entikan

We built this procedurally generated sandbox game with physics based windsurfing and gliding in just two weeks! This was enabled by the awesomeness of Panda3D and the not insufficient code-slinging capacity of our dev team.

Credit goes to:

@janEntikan (procedural dunes, 3D modeling, graphics, animation, sound effects, concepting)
@Simulan (physics, gameplay, concepting)
@Maxwell175 (particle effects)
Tael (music)
Schwarzbaer (panda3d-keybindings, concepting)
Nica (concepting)

Feel free to download, play, complete, and study Sandastray!

We encourage users to submit Issues on the repo page in lieu of posting gameplay complaints here. There are a few bugs and some built-in-two-weeks rough edges; we may push fixes time permitting.

As it stands, the game is a fully playable prototype of the somewhat ambitious concept we set out to achieve. Many thanks to all those involved.

Requirements: panda3d, panda3d-keybindings

7 Likes

Well done and congratulations to the members of the team on this! It looks pretty neat–and I’m impressed by those procedural dunes! :slight_smile:

Indeed, if I may ask, what were the principles behind the dunes? (I’m not asking a full tutorial, mind–just the generalities.)

I hope that you’ll forgive me, but I don’t want to sign up for another website just to report what is likely a minor issue. So, let me put it here: On attempting to run the program (via “python3 main.py”) I’m getting the following error:

Traceback (most recent call last):
  File "main.py", line 7, in <module>
    from keybindings.device_listener import add_device_listener
ModuleNotFoundError: No module named 'keybindings'

[edit] I see now that I can apparently sign in with GitHub, but I’m inclined to leave this here for now, if I may.

I’ll defer to @janEntikan for a technical description of the dune creation process, but as I understand it, they are made from Perlin noise heightfields which become ShaderTerrainMesh.

panda3d-keybindings can be found here: GitHub - TheCheapestPixels/panda3d-keybindings: Abstract keybindings for Panda3D – it provides input context handling for some of the game.

Thanks for your kind words. :slight_smile:

1 Like

Ah, that got it working–thank you! :slight_smile:

Ahh, fair enough! Thank you for the explanation. :slight_smile:

1 Like

Random generation of dunes is disabled in the release. If someone is interested in randomly creating dunes. add fix file: dunes.py replace line:

#make_perlin_dunes()

by this:

make_perlin_dunes(seed = random.randint(0, 128000))
2 Likes

good work, but the camera is horrible though
Would it be possible to improve it (maybe by zoom to the hero) ? Or to add a first person camera view?

Yeah, the camera rig was never my favorite aspect of the game either. I’ll see about putting an update together sometime soon for the repository. I discovered a significant performance improvement in the meantime as well that I’d like to upload, related to physics.