48 lines
1.5 KiB
Markdown
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 |