A cooperative, multiplayer survival farming game built with Ambient.

Overview

Flowerpot

To-Do

  • outline this README
  • add instructions for making a mod from the template
  • license the codebase appropriately
  • migrate tasks from journal here
  • setup CI to test code quality of PRs
  • add clippy to CI
  • make panicking (i.e. use of unwrap() or expect()) a clippy error
  • create a "map" mod
  • map: write map component and message schemas using chunks
  • map: generate a basic, fixed-size map of chunks server-side
  • map: synchronize all (for now) chunks with all players
  • map: spawn client-side chunk and tile entities in response to updates
  • create a "player" mod
  • player: construct the provided player entity with transform, avatar, and camera
  • player: define mouselook messages and send them on input
  • player: define shared movement code and run it client-side
  • player: define movement messages and send them from the client
  • make a "fauna" mod
  • fauna: define a fauna tag component
  • fauna: define fauna spawn and despawn messages
  • fauna: define fauna position and angle components + update messages
  • fauna: spawn and update puppeted fauna entities client-side
  • player: make the player a fauna server-side
  • player: run player movement server-side
  • player: rubberbanding (how can this be integrated with fauna rubberbanding?)
  • map: add a list component of subscribed clients (player entity IDs; user IDs for message-sending can be retrieved) to chunks
  • map: keep all chunk subscriptions updated with all clients
  • map: define messages for un/subscribing specific clients to specific chunks
  • map: listen to subscription messages and update chunks accordingly (keep values sorted for rapid diffing)
  • fauna: define an in_chunk component and update all fauna with it
  • fauna: define an last_chunk component
  • fauna: when a fauna moves chunks, diff the subscribers in_chunk against last_chunk (which are sorted; so use rapid diffing) to spawn and despawn fauna to clients, then update last_chunk
  • make a "terrain" mod
  • terrain: define a heightmap chunk component
  • terrain: procedurally generate chunk heightmaps
  • terrain: generate meshes and materials for client-side chunks
  • terrain: define a cut_direction component
  • terrain: experiment with different cut_direction heuristics
  • terrain: define and use a terrain seed resource
  • fauna: position fauna on the map using their chunk's terrain

Big topics that stil need to be planned:

  • render distance
  • fauna models
  • player avatars
  • soil types
  • day/night cycle
  • crop definitions, growth, and syncing
  • cover crop rendering
  • a base content mod
  • roads and foundations
  • items and crafting
  • fauna display names
  • player sets display name on join
  • game chat
You might also like...
Victorem - easy UDP game server and client framework for creating simple 2D and 3D online game prototype in Rust.

Victorem Easy UDP game server and client framework for creating simple 2D and 3D online game prototype in Rust. Example Cargo.toml [dependencies] vict

2-player game made with Rust and
2-player game made with Rust and "ggez" engine, based on "Conway's Game of Life"

fight-for-your-life A 2-player game based on the "Conway's Game of Life", made with Rust and the game engine "ggez". Create shapes on the grid that wi

2d Endless Runner Game made with Bevy Game Engine
2d Endless Runner Game made with Bevy Game Engine

Cute-runner A 2d Endless Runner Game made with Bevy Game Engine. Table of contents Project Infos Usage Screenshots Disclaimer Project Infos Date: Sept

A tetris game I wrote in rust using ncurses. I'm sure that there's a better way to write a tetris game, and the code may be sus, but it techinically works
A tetris game I wrote in rust using ncurses. I'm sure that there's a better way to write a tetris game, and the code may be sus, but it techinically works

rustetris A tetris game I wrote in rust using ncurses. I'm sure that there's a better way to write a tetris game, and the code may be sus, but it tech

A game for the game jam
A game for the game jam "1-Button Jam 2021"

One click ninja A game for the game jam "1-Button Jam 2021" written in Rust with the Bevy engine. A rhythm game, where you play a soldier that can def

A game of snake written in Rust using the Bevy game engine, targeting WebGL2

Snake using the Bevy Game Engine Prerequisites cargo install cargo-make Build and serve WASM version Set your local ip address in Makefile.toml (loca

Wasm game of life - A Rust and WebAssembly tutorial implementing the Game of Life

wasm_game_of_life Conway's Game of Life in Rust and WebAssembly Contributing | Chat Built with 🦀 🕸 by The Rust and WebAssembly Working Group About T

Conway's Game of Life implemented for Game Boy Advance in Rust

game-of-life An implementation of a Conway's Game of Life environment on GBA. The ultimate game should have two modes: Edit and Run mode which can be

A game made in one week for the Bevy engine's first game jam

¿Quien es el MechaBurro? An entry for the first Bevy game jam following the theme of "Unfair Advantage." It was made in one week using the wonderful B

Owner
null
🎮 A Realtime Multiplayer Server/Client Game example built entirely with Rust 🦀

Example of a ?? Realtime Multiplayer Web Game Server/Client built entirely using Rust ??

Nick Baker 5 Dec 17, 2022
Dwarf Fortress inspired frontend to Veloren, the multiplayer RPG voxel game written in Rust

velobracket ('veloren' + 'bracket-lib') velobracket is Dwarf Fortress inspired frontend to Veloren, the multiplayer RPG voxel game written in Rust. Us

Rodion Martynov 13 Dec 25, 2022
My first attempt at game programming. This is a simple target shooting game built in macroquad.

sergio My first attempt at game programming. This is a simple target shooting game built in macroquad. Rules Hit a target to increase score by 1 Score

Laz 1 Jan 11, 2022
Solana Game Server is a decentralized game server running on Solana, designed for game developers

Solana Game Server* is the first decentralized Game Server (aka web3 game server) designed for game devs. (Think web3 SDK for game developers as a ser

Tardigrade Life Sciences, Inc 16 Dec 1, 2022
A refreshingly simple data-driven game engine built in Rust

What is Bevy? Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever! WARNING Bevy is still in the ve

Bevy Engine 21.1k Jan 4, 2023
Scion is a tiny 2D game library built on top of wgpu, winit and legion.

Scion is a 2D game library made in rust. Please note that this project is in its first milestones and is subject to change according to convience need

Jérémy Thulliez 143 Dec 25, 2022
game engine built in rust, using wgpu and probably other stuff too

horizon game engine engine for devpty games, made in 99.9% rust and 0.1% shell. this is our main project currently. the engine will be used for most i

DEVPTY 2 Apr 12, 2022
Bevy is a refreshingly simple data-driven game engine built in Rust

What is Bevy? Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever! WARNING Bevy is still in the ve

John Winston 3 Jun 3, 2022
Work-in-Progress, opinionated game framework built on Bevy.

Bones A work-in-progress, opinionated game meta-engine built on Bevy. Under development for future use in the Jumpy game, and possibly other FishFolk

Fish Folk 9 Jan 3, 2023
A simple and minimal game engine library built in rust.

Neptune A brand new free, open-source minimal and compact game engine built in rust. Design Goals We plan to make Neptune a small and minimal engine,

Levitate 17 Jan 25, 2023