starwolves/space

Space Frontiers pre-alpha

Made to communicate exclusively with the official closed-source Space Frontiers client

Description

Space Frontiers is an online multiplayer game in which players find themselves in a large spaceship operations crew who have to work together to run and maintain a spaceship. Crew members are assigned different roles with different levels of responsibilities and authorization. The manned spaceship will be tasked to jump from sector to sector which triggers random events; events will include player antagonists, traitor roles, alien infestations and more. Therefore player communication is key, putting emphasis on the chat with optional roleplay features. A wide variety of simulated spaceship and gameplay elements will be included to ensure these scenarios will be as fun as possible.

The repository of a modular and moddable multi-threaded sci-fi headless community game server written in Rust with the Bevy ECS game engine. . Credits to Godot Engine and godot-rust!

There is an official Discord server.

You can see gameplay videos of Space Frontiers on YouTube.

There is also a work-in-progress documentation available for code contributors or modders.

Check out our Github project workspace for upcoming improvements to the game!

Features (All Moddable & Modular)

  • Decentralized gameplay, each community can host their own server. 👑
  • Parallelized Entity Component System architecture. 📡
  • Pure Rust. No garbage collection. Fast code execution. 🌟
  • Data-oriented and modular within a thread-safe and strictly compiled environment. It is easy to add and remove entities, systems, components, map cells and more simply by managing plugins that will get compiled with the project. 🔭
  • Using the cutting-edge Rapier 3D Physics engine. 🚀
  • Character meshes and animations are integrated with Mixamo for rigging. ☄
  • Inventory system, pick up, wear, attach, place and equip items with character entities.
  • Melee & projectile combat systems, damage player, ship walls or other entities with various types of damage and the ability to target specific body parts.
  • Advanced bbcode chat, with support for examining entities, modular (radio) channels and proximity communication.
  • Actions and tab menu's to easily interact with the world while also offering protection against cheaters.
  • Configurable console commands, including rcon admin commands.
  • Clients can load in custom content on a per server basis thanks to a traditional automatically shared and downloaded content folder approach.
  • Godot Addressable references are used for efficient and dynamic netcode that works well with custom content.
  • Cell based map support with a graphical user interface map, world and entities editor with support for sizes up to 1km by 1km with 100,000+ dynamic (de)constructable ship cells.
  • Atmospherics simulation including temperature, pressure, diffusion, gravity and the vacuum of space.

Getting Started

Dependencies

  • Rust
  • Bevy ECS dependencies

Executing game server

To compile and run the game server:

  • Select latest versioned branch (not master) from this repository and clone it.
  • In your terminal navigate to the project folder you have just obtained and run:
cargo run

To run the game server, but optimized:

cargo run --release

Client

You can obtain the latest stable release of the client on Discord. Ensure your server has the right git branch with the same version as the obtained client and not the master branch!

The client is built on top of the latest stable Godot 3.4.x release. The client will be upgraded and moved to Godot 4 for better 3D rendering in favour of the Vulkan API.

Contributing

This project is oriented towards long-term development, meaning it is here to stay and to be developed for some years to come. Feedback, bug reports, suggestions and critique are very much appreciated. Github issues and pull requests will be reviewed and considered.

The hopes are to financially reward and/or hire the most suitable people for their contributions in the much further future.

Contributors of this project have to agree to our Collaberative License Agreement. Our automated CLA assisstant will give you instructions on how to agree the first time you contribute on Github.

It is recommended to develop on the latest snapshot branch and to submit pull requests. Snapshot branches get regularly merged with the master branch. Each time a merge with the master branch occurs a new snapshot releases. To stay up to date with this process check out our Discord and our Github project workspace.

License

This repository is licensed under a special license.

Issues

Collection of the latest Issues

starwolfy

starwolfy

planned
Comment Icon0

Includes items like decoratedTable and counterWindow.

One rigidbody for the placeable item surface, which should have enough friction so that items placed on it do not slide. And the other for the external surfaces that will be touched by players or other rigidbodies that slide up against it, this should have the same friction configuration as walls have and should have much less intense friction than the placeable item surface.

starwolfy

starwolfy

good first issue
Comment Icon0

Create our own logger that logs various separated events and outputs it with timestamps in real-time to log files.

Include and separate logs:

  • All player data: including (dis)connections, connection handles, tokens, user names, character names, and IP addresses.
  • Log the text and radio chat.
  • All entity spawn events, log entity ids, and entity children ids.
  • Entity despawn events.
starwolfy

starwolfy

planned
Comment Icon0

Stop splitting up all logic into components.rs events.rs system.rs etc. Instead, give folders and file names representative of the features or logic they contain so the project becomes easier to read.

On top of that introduce workspaces to those overhauled modules to increase compilation speed.

starwolfy

starwolfy

planned
Comment Icon0

After the current in-progress modularization improvements, revisit all code to add comments. Also improve variable, struct and function names.

starwolfy

starwolfy

planned
Comment Icon0

Checking if you can execute a tab action should be system and callback-event-based.

starwolfy

starwolfy

planned
Comment Icon0

Try to turn implementations (such as Health.apply_damage) into systems with generic event-based callbacks.

starwolfy

starwolfy

planned
Comment Icon0

Release, showcase and share the new 0.0.3 Space Frontiers. This update has mainly been about code base refactoring and modularization.

Consider introducing a more detailed, higher effort, and more descriptive video format to YouTube.

Use proper editing. Use a cool acted in-character sci-fi voice to explain things. Show cargo-modules graphs/trees. Show Discord. Show code-base. Show VS Code line counter markdown output. Show map editor.

Update README.md .

There should also be tutorial videos of the game, code-base, and map editor on release.

Add a 24/7 Space Frontiers server.

starwolfy

starwolfy

good first issue
Comment Icon0

Write tests for the modules and for the entire server as a whole.

starwolfy

starwolfy

planned
Comment Icon0

Change spawn point based on the selected job of the player. Also when joining mid-round players should arrive in a shuttle at the main ship docks.

starwolfy

starwolfy

planned
Comment Icon0

Add escape pods in several areas of the spaceship.

starwolfy

starwolfy

planned
Comment Icon0

Add types of wearable body and head armor. Should also impact the damage model.

starwolfy

starwolfy

planned
Comment Icon0

Make those slots functional client-side and implement the new 3d assets and entities.

starwolfy

starwolfy

planned
Comment Icon0

Implement a server room inside the spaceship where communication servers are also running. If sabotaged there is no radio communication.

starwolfy

starwolfy

planned
Comment Icon0

Further, design the exterior and interior of the spaceship. Make sure it is entirely filled and that there are rooms everywhere. This is a matter of working with the map editor.

starwolfy

starwolfy

planned
Comment Icon0

Implement a start to this epic event to the default gamemode. Inspired by SS13 xenos. This includes the ability for players to play as them and to team up together against the crew players.

starwolfy

starwolfy

planned
Comment Icon0

Add blood decals that appear during combat or blood loss. Should include, pools of blood and bloody footsteps as well.

starwolfy

starwolfy

planned
Comment Icon0

The first default gamemode will be inspired by Faster Than Light. Involving a ship that jumps from sector to sector and that has to go on missions and quests. Each jump may trigger random events. This gamemode includes player antagonist roles, either loud or traitor-like.

This gamemode in itself must be modular down to the core, IE the selection of triggerable events with their own content should be dependent on plugins available.

starwolfy

starwolfy

good first issue
Comment Icon0

Create a base for managing gamemodes. Gamemodes affect player starting conditions, player roles, galaxy map, and systems that run through the round specific to that game mode.

Start off with a single default gamemode.

starwolfy

starwolfy

good first issue
Comment Icon0

When launching the server, do not immediately start a round. Instead, start in lobby mode that waits for players to gather and connect and communicate with each other in global chat while waiting.

Information - Updated Jul 28, 2022

Stars: 42
Forks: 6
Issues: 64

Repositories & Extras

Arsenal 2D retro Rust Game engine

Katharos Technology is focused on producing our first game prototype, bevy game engine and our own Katharos...

Arsenal 2D retro Rust Game engine

Grumpy Visitors 2D Rust game for code reference and learning

Grumpy Visitors is a top-down 2D action arcade game

Grumpy Visitors 2D Rust game for code reference and learning

Rust Game Remake

Remake in rust of a game I made during the here

Rust Game Remake

A 3d rust game using OpenGl and Emscripten to build for the wasm32-unknown-emscripten

It can also run standalone, developed and tested on Linux but will

A 3d rust game using OpenGl and Emscripten to build for the wasm32-unknown-emscripten

Rust Game of Life

This is a simulator of Conway's Game of Life in Rust, using SDL2 to render the game graphically

Rust Game of Life

INOX - Rust Game engine integrated in Blender

It's a Game Engine written in Rust with some bindings for external libs and with Blender as editor

INOX - Rust Game engine integrated in Blender

Rust GameBoy Advanced Emulator

Building this project on linux requires cmake and gtk3

Rust GameBoy Advanced Emulator

A Rust Game Engine

In an effort to learn the Rust language (because I am a nut), I am building a game engine

A Rust Game Engine

A Rust GameBoy emulator!

TetrisZelda: Link's Awakening

A Rust GameBoy emulator!

Another Rust game engine

It's started as a rust version of the tutorial from

Another Rust game engine
Facebook Instagram Twitter GitHub Dribbble
Privacy