A wholesome 3D space game in the rings of Jupiter https://codeberg.org/hut/outfly
Find a file
2024-04-04 18:53:20 +02:00
assets change BGM to "Cinematic Cello" by Aleksey Chistilin 2024-04-03 14:21:28 +02:00
doc add build script to pack.sh 2024-04-02 17:39:57 +02:00
src move send reply code to chat.rs 2024-04-04 18:53:20 +02:00
.gitignore ignore "extra" directory 2024-03-22 11:45:57 +01:00
Cargo.lock update Cargo.toml 2024-04-03 19:05:37 +02:00
Cargo.toml move wasm/wayland bevy features into its own outfly features 2024-04-04 03:22:48 +02:00
README.md typo 2024-04-04 03:32:27 +02:00

OutFly

screenshot

OutFly is an atmospheric, open world, 100% hard sci-fi 3D game that throws you into the main ring of Jupiter, hundreds of years into the future.

Key features:

  • Open source forever
  • Open world, realistic hard sci-fi, atmospheric, deadly
  • Accurate star chart. Can you spot the constellations?
  • Cross platform (verified on Linux & Windows)
  • Written in Rust with the Bevy game engine
  • Status: Early access, not much content

screenshot

Key Bindings

  • Space: Slow down
  • AWSD/Shift/Ctrl: Accelerate
  • R: Rotate (hold & move mouse)
  • E: Interact: Talk to people, enter vehicles
  • Q: Exit vehicle
  • Tab: Toggle HUD/AR
  • F: Toggle 3rd person view
  • T: Toggle music
  • M: Toggle sound effects
  • JKULIO: Mouseless camera rotation

Cheats:

  • V/B: Impossible acceleration forward/backward
  • Shift+V/B: Same as V/B, but a thousand times faster
  • C: Impossibly instant stopping

System Requirements

  • Screen, keyboard
  • Operating System: Linux, Windows, MacOS
  • Ideally, a graphics card with vulkan support

If your GPU does not support vulkan, try rendering with OpenGL by setting the environment variable WGPU_BACKEND to gl, like:

WGPU_BACKEND=gl ./outfly
or
WGPU_BACKEND=gl cargo run

However, this may result in poor performance and visual glitches.

Running OutFly

  1. Download a release for your operating system at https://codeberg.org/hut/outfly/releases
  2. On Linux, you need the dependency packages: glibc libcap gcc-libs alsa-lib systemd-libs. These are the names for ArchLinux, they may differ on your distribution.
  3. Unpack and run the outfly/outfly.exe executable.
    1. On Windows, just double-click on outfly.exe
    2. On Linux, open the console and type this:
cd [path-to-extracted-outfly-directory]
./outfly

Building

If there is no package for the version or operating system that you need, or if you wish to tinker on the game, you can also build outfly yourself.

For development, it's recommended to use --features dev to enable dynamic linking for faster compile times, e.g. like this:

cargo [run|build] --features dev

On Linux

Install the build dependencies. On ArchLinux, it's the following, though you can replace rust with rustup:

pacman -S rust libx11 pkgconf alsa-lib

Then run the following commands, replacing [URL] with the clone URL of the git repository:

git clone [URL]
cd outfly
cargo run --release

NOTE: Audio is muted by default when run through cargo run, unless you add --release

Building for Windows on Linux

rustup target add x86_64-pc-windows-gnu
pacman -S mingw-w64-toolchain  # on ArchLinux. other distros have their equivalent package
cargo build --target=x86_64-pc-windows-gnu --release

More information here: https://bevy-cheatbook.github.io/setup/cross/linux-windows.html

Building on Mac OS

Install homebrew, and then get the following dependencies:

brew install pkg-config molten-vk rustup
rustup-init

Download, compile and run the game:

git clone [URL]
cd outfly
cargo run --release

Building for WASM/Browser

This is a work in progress, for now these are just some general hints:

git clone [URL]
cd outfly
rustup target install wasm32-unknown-unknown
pacman -S wasm-bindgen binaryen
mkdir outfly_wasm
cargo build --release --target wasm32-unknown-unknown
wasm-bindgen --out-name outfly --out-dir outfly_wasm --target web target/wasm32-unknown-unknown/release/outfly.wasm
wasm-opt -Oz --output wasm/outfly_bg.wasm wasm/outfly_bg.wasm
echo '<script type="module">import init from "./outfly.js"; init()</script>' > wasm/index.html
python -m http.server -d wasm

Changelog

  • v0.5.2:
    • Change BGM to Cinematic Cello by Aleksey Chistilin
    • Fix vehicle exiting
  • v0.5.1:
    • Fix asteroid despawning
    • Add cheat codes
    • Add moon Thebe
  • v0.5.0:
    • Implement dynamically spawning asteroids all over the ring
    • Changed from 32-bit to 64-bit precision physics
    • Center rendering coordinate system on player to fix visual glitches
  • v0.4.1: Add visible ring around Jupiter
  • v0.4.0:
    • Implement physics, collisions
    • Implement 3rd person view
    • Implement realistic camera control with pitch/yaw/rotation
    • Add Galilean moons (Io, Europa, Ganymede, Callisto)
    • Add light sources, better illumination of pizzeria
    • Add mysterious monoliths
  • v0.3.0:
    • Implement vehicles
    • Add MeteorAceGT racing vehicle
    • Add background music "Dead Space Style Ambient Music"
    • Add custom font Yupiter based on ZCOOL QingKe HuangYou
  • v0.2.0:
    • Add Jupiter
    • Add new pizzeria model with neon sign
    • Add astronaut suit model OutFly™ SecondSkyn
    • Add more conversations
    • Implement parser for "defs.txt" to spawn world objects and chats
  • v0.1.3: Add pizzeria
  • v0.1.2:
    • Replace skybox with accurate star chart
    • Implement conversation system
  • v0.1.1: Better sky box and HUD
  • v0.1.0: First release with basic controls, HUD, sounds, skybox, sun

Credits and License