48 lines
1.5 KiB
Markdown

# bom
An attempt at highly efficient networking between Go servers and Godot clients.
## Assets
Git LFS is not suited for hosting large files because it keeps the entire history on the server.
There is `git lfs prune` for the client side, but we need it on the server side and this functionality simply does not exist.
Therefore the `client/assets` directory needs to be downloaded separately. Download link will be here in the future.
## Addons
The `client/addons` must be downloaded separately just like the assets.
The following addons are required:
- [Terrain3D](https://github.com/TokisanGames/Terrain3D)
- [Godot Jolt](https://github.com/godot-jolt/godot-jolt)
## Features
- UDP based messaging
- Third person camera
- Cloth attachments
- Grass shader
- Water shader
- Loading UI
- Settings UI
## Components
This project makes heavy use of composition via components.
They are implemented with the following rules:
- Components can have **read-only** references to other components.
- Components must not **write** data to another component.
- Components that produce some output must use signals to communicate messages to other components.
In other words, it's allowed for components to have dependencies, but a component can not know where its output is going to be used in the future.
Therefore, outputs must use a signal to communicate the output to an unknown number of receivers.
## License
Please see the [license documentation](https://akyoto.dev/license).
## Copyright
© 2024 Eduard Urbach