|
1 | 1 | <p align="center">
|
2 | 2 | <picture>
|
3 |
| - <img src="https://github.com/NathanFlurry/ass/raw/main/media/icon.png" alt="Rivet"> |
| 3 | + <source media="(prefers-color-scheme: dark)" srcset="./media/icon-text-white.svg" alt="Rivet"> |
| 4 | + <img src="./media/icon-text-black.svg" alt="Rivet"> |
4 | 5 | </picture>
|
5 | 6 | </p>
|
6 | 7 |
|
7 | 8 | <p align="center">
|
8 |
| - <a href="https://github.com/NathanFlurry/ass"><img alt="License: THICC-2.0" src="https://img.shields.io/badge/license-THICC--2.0-blue?style=flat-square"></a> |
9 |
| - <a href="https://github.com/NathanFlurry/ass"><img alt="GitHub commit activity" src="https://img.shields.io/badge/commits-thicc-green?style=flat-square"/></a> |
10 |
| - <a href="https://github.com/NathanFlurry/ass/issues"><img alt="GitHub closed issues" src="https://img.shields.io/badge/issues-clenched-red?style=flat-square"/></a> |
11 |
| - <a href="https://rivet.gg/discord"><img alt="Discord" src="https://img.shields.io/badge/discord-dummy__thicc-purple?style=flat-square"/></a> |
| 9 | + <a href="/docs/philosophy/LICENSING.md"><img alt="License Apache-2.0" src="https://img.shields.io/github/license/rivet-gg/rivet?style=flat-square"></a> |
| 10 | + <a href="https://github.com/rivet-gg/rivet/graphs/commit-activity"><img alt="GitHub commit activity" src="https://img.shields.io/github/commit-activity/m/rivet-gg/rivet?style=flat-square"/></a> |
| 11 | + <a href="https://github.com/rivet-gg/rivet/issues"><img alt="GitHub closed issues" src="https://img.shields.io/github/issues-closed/rivet-gg/rivet?style=flat-square"/></a> |
| 12 | + <a href="https://rivet.gg/discord"><img alt="GitHub closed issues" src="https://img.shields.io/discord/822914074136018994?style=flat-square&label=discord"/></a> |
12 | 13 | </p>
|
13 | 14 |
|
14 |
| -## 🍑 Features |
| 15 | +## Features |
15 | 16 |
|
16 |
| -### 🎮 Dummy Thicc Dedicated Game Servers |
| 17 | +### 🎮 Dedicated Game Servers |
17 | 18 |
|
18 |
| -Deploy game servers faster than you can say "ASS": |
| 19 | +Deploy game servers in minutes across multiple regions & clouds providers. |
19 | 20 |
|
20 |
| -- Optimize for booty or bounty, servers starting at $6.9/mo for 4.20 servers |
21 |
| -- Auto-scales 69% faster than AWS GameLift (because we said so) |
22 |
| -- No-downtime deploys & instant twerk-backs |
23 |
| -- Monitoring & crash reporting (we've got your back[side]) |
| 21 | +- Optimize for performance or cost, servers |
| 22 | + <Tooltip tip="Shared CPU core similar to VPS providers, see pricing page for details">starting at $9/mo for |
| 23 | + 6 servers</Tooltip> |
| 24 | +- Auto-scales 90% faster than AWS GameLift |
| 25 | +- No-downtime deploys & instant rollbacks |
| 26 | +- Monitoring & crash reporting |
24 | 27 |
|
25 |
| -### 🛡️ DDoASS Mitigation |
| 28 | +[Documentation](https://rivet.gg/docs/dynamic-servers) |
26 | 29 |
|
27 |
| -- No added jiggle |
28 |
| -- Supports UDP & TCP & WebSockets & WebRTC (all dat ASS) |
29 |
| -- Automatic SSL for game servers (because security is sexy) |
| 30 | +### 🛡️ DDoS Mitigation |
30 | 31 |
|
31 |
| -### 🌐 Content Delivery Network (CDN) |
| 32 | +- No added latency |
| 33 | +- Supports UDP & TCP & WebSockets & WebRTC |
| 34 | +- Automatic SSL for game servers (WebSockets & TCP+TLS) |
32 | 35 |
|
33 |
| -Asset delivery, game downloads, & website hosting: |
| 36 | +[Documentation](https://rivet.gg/docs/dynamic-servers/concepts/game-guard) |
34 | 37 |
|
35 |
| -- Custom domains (make dat ASS yours) |
36 |
| -- Instant twerk-backs |
37 |
| -- Automatic SSL (Safe Sensual Layer) |
| 38 | +### 🌐 CDN |
| 39 | + |
| 40 | +Asset delivery, game downloads, & website hosting |
| 41 | + |
| 42 | +- Custom domains |
| 43 | +- Instant rollbacks |
| 44 | +- Automatic SSL |
| 45 | + |
| 46 | +[Documentation](https://rivet.gg/docs/cdn) |
38 | 47 |
|
39 | 48 | ### 🧩 Backend Modules
|
40 | 49 |
|
41 |
| -Write server-side logic using THICC++ (or use your own API server): |
| 50 | +Write server-side logic using TypeScript (or use your own API server) |
42 | 51 |
|
43 | 52 | - Modules include matchmaking, parties, authentication, & more
|
44 |
| -- Postgres database included for persistence (because real databases are overrated) |
45 |
| -- Combine existing open-source modules - Open dat ASS up |
| 53 | +- Postgres database included for persistence |
| 54 | +- Powered by <a href="https://github.com/rivet-gg/opengb">Open Game Backend</a> |
46 | 55 |
|
47 |
| -## 🚫 What ASS is NOT |
48 |
| - |
49 |
| -- Not Kubernetes (because who needs that many syllables?) |
50 |
| -- Not written in fake languages like "Go" or "Java" (we use REAL languages like THICC++ and ASSembly) |
51 |
| -- Not a joke (okay, maybe a little) |
52 |
| -- Not your grandma's server solution (unless your grandma is really cool) |
53 |
| -- Not afraid of a little junk in the trunk (our servers are dummy thicc) |
| 56 | +[Documentation](https://opengb.dev/) |
54 | 57 |
|
55 | 58 | ## 🚙 Supported Game Engines
|
56 | 59 |
|
57 |
| -| Engine | |
58 |
| -|---------------| |
59 |
| -| Godot | |
60 |
| -| Unity | |
61 |
| -| Unreal Engine | |
62 |
| -| HTML5 & JS | |
63 |
| -| Rust | |
64 |
| -| Other | |
| 60 | +| Engine | Plugin | Crash Course | Example Projects | |
| 61 | +| ------------------ | -------------------------------------------------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------- | |
| 62 | +| Godot | [rivet-gg/plugin-godot](https://github.com/rivet-gg/plugin-godot) | [Learn](https://rivet.gg/learn/godot) | [Examples](https://github.com/rivet-gg/examples/tree/main?tab=readme-ov-file#godot) | |
| 63 | +| Unity | [rivet-gg/plugin-unity](https://github.com/rivet-gg/plugin-unity) | [Learn](https://rivet.gg/learn/unity) | [Examples](https://github.com/rivet-gg/examples/tree/main?tab=readme-ov-file#unity) | |
| 64 | +| Unreal Engine | [rivet-gg/plugin-unreal](https://github.com/rivet-gg/plugin-unreal) | [Learn](https://rivet.gg/learn/unreal) | _WIP_ | |
| 65 | +| HTML5 & JavaScript | [@rivet-gg/api](https://github.com/rivet-gg/rivet/tree/main/sdks/runtime/typescript) | [Learn](https://rivet.gg/learn/html5) | [Examples](https://github.com/rivet-gg/examples/tree/main?tab=readme-ov-file#javascript) | |
| 66 | +| Rust | [rivet-api](https://github.com/rivet-gg/rivet/tree/main/sdks/runtime/rust) | [Learn](https://rivet.gg/learn/custom) | [Examples](https://github.com/rivet-gg/examples?tab=readme-ov-file#other) | |
| 67 | +| Go | [Source](https://github.com/rivet-gg/rivet/tree/main/sdks/runtime/go) | [Learn](https://rivet.gg/learn/custom) | [Examples](https://github.com/rivet-gg/examples?tab=readme-ov-file#other) | |
| 68 | +| Other | [Source](https://github.com/rivet-gg/rivet/blob/main/sdks/runtime/openapi/openapi.yml) | [Learn](https://rivet.gg/learn/custom) | [Examples](https://github.com/rivet-gg/examples?tab=readme-ov-file#other) | |
65 | 69 |
|
66 | 70 | ## 🚀 Getting Started
|
67 | 71 |
|
68 |
| -1. Clone dat ASS |
69 |
| -2. Shake it |
70 |
| -3. Deploy it |
| 72 | +**Self-hosting & development** |
71 | 73 |
|
72 |
| -## 📐 Architecture |
| 74 | +See the [setup guide](/docs/getting_started/DEVELOPMENT.md) to develop & deploy Rivet yourself. |
| 75 | + |
| 76 | +**Rivet Cloud** |
| 77 | + |
| 78 | +[Rivet Cloud](https://rivet.gg) is the fastest and most affordable way to get your game up and running. Sign |
| 79 | +up at [rivet.gg](https://rivet.gg). |
| 80 | + |
| 81 | +## 💬 Community & Support |
| 82 | + |
| 83 | +**Discord** |
| 84 | + |
| 85 | +[Invite](https://rivet.gg/discord) |
73 | 86 |
|
74 |
| -Our architecture is THICC. Trust us, you'll really want to dive right in. |
| 87 | +- **Lounge** The Rivet team is remote and does most of their work in public Discord voice chat. Come drop by |
| 88 | + if you have questions or want to hang! |
| 89 | +- **#support** Ask questions about getting your game runnin on Rivet |
| 90 | +- **#open-source-dev** Ask questions about the open source repo |
| 91 | +- **#showcase** Show off your game, get feedback |
| 92 | + |
| 93 | +**Releases** |
| 94 | + |
| 95 | +Stay up to date on the latest releases on [X](https://x.com/rivet_gg). |
| 96 | + |
| 97 | +Technical release notes can be subscribed to by watcing this repository. |
| 98 | + |
| 99 | +**Bugs & Feature Requests** |
| 100 | + |
| 101 | +Bugs and feature requests can be submitted as a GitHub Issue. |
| 102 | + |
| 103 | +**Roadmap** |
| 104 | + |
| 105 | +We create public issues for most items on our roadmpa. |
| 106 | + |
| 107 | +Subscribe to issues to get notified when they're updated. Add a 👍 reaction to issues to get them prioritized |
| 108 | +faster |
| 109 | + |
| 110 | +## 📐 Architecture |
75 | 111 |
|
76 |
| - |
| 112 | +We maintain a detailed architecture diagram |
| 113 | +[here](https://www.figma.com/file/GvCj77EG79NUoW1dRG4qkg/Architecture?type=whiteboard&node-id=0%3A1&t=WqMQ2r6avjM0jPK0-1). |
| 114 | + |
| 115 | + |
| 116 | + |
| 117 | +## 📖 Documentation |
| 118 | + |
| 119 | +### Game developers |
| 120 | + |
| 121 | +Visit our documentation for game developers [here](https://rivet.gg/docs). |
| 122 | + |
| 123 | +### Internal documentation |
| 124 | + |
| 125 | +<!-- |
| 126 | +
|
| 127 | +GPT prompt: |
| 128 | +
|
| 129 | +Convert this to a markdown list with indents with links to the document and a human readable name: |
| 130 | +
|
| 131 | +$(tree docs/) |
| 132 | +
|
| 133 | +--> |
| 134 | + |
| 135 | +- [About](docs/about) |
| 136 | + - [Telemetry](docs/about/TELEMETRY.md) |
| 137 | +- [Getting Started](docs/getting_started) |
| 138 | + - [Debugging](docs/getting_started/DEBUGGING.md) |
| 139 | + - [Development Firewalls](docs/getting_started/DEVELOPMENT_FIREWALLS.md) |
| 140 | + - [Development](docs/getting_started/DEVELOPMENT.md) |
| 141 | + - [Project Structure](docs/getting_started/PROJECT_STRUCTURE.md) |
| 142 | + - [Rust Analyzer](docs/getting_started/RUST_ANALYZER.md) |
| 143 | + - [Services](docs/getting_started/SERVICES.md) |
| 144 | +- [Infrastructure](docs/infrastructure) |
| 145 | + - [Alertmanager](docs/infrastructure/alertmanager/TESTING_ALERTS.md) |
| 146 | + - [ClickHouse](docs/infrastructure/clickhouse) |
| 147 | + - [Readme](docs/infrastructure/clickhouse/README.md) |
| 148 | + - [Troubleshooting](docs/infrastructure/clickhouse/TROUBLESHOOTING.md) |
| 149 | + - [Why ClickHouse](docs/infrastructure/clickhouse/WHY_CLICKHOUSE.md) |
| 150 | + - [Cockroach](docs/infrastructure/cockroach) |
| 151 | + - [Readme](docs/infrastructure/cockroach/README.md) |
| 152 | + - [Why Cockroach](docs/infrastructure/cockroach/WHY_COCKRAOCH.md) |
| 153 | + - [Helm](docs/infrastructure/helm/TROUBLESHOOTING.md) |
| 154 | + - [Imagor](docs/infrastructure/imagor/MEDIA_DELIVERY_AND_RESIZING.md) |
| 155 | + - [K3d](docs/infrastructure/k3d/TROUBLESHOOTING.md) |
| 156 | + - [K8s](docs/infrastructure/k8s) |
| 157 | + - [Tips](docs/infrastructure/k8s/TIPS.md) |
| 158 | + - [Troubleshooting](docs/infrastructure/k8s/TROUBLESHOOTING.md) |
| 159 | + - [Minio](docs/infrastructure/minio/TROUBLESHOOTING.md) |
| 160 | + - [Nats](docs/infrastructure/nats/TROUBLESHOOTING.md) |
| 161 | + - [Networking](docs/infrastructure/networking) |
| 162 | + - [Edge Cluster Networking](docs/infrastructure/networking/EDGE_CLUSTER_NETWORKING.md) |
| 163 | + - [IP Ranges](docs/infrastructure/networking/IP_RANGES.md) |
| 164 | + - [IPv6](docs/infrastructure/networking/IPV6.md) |
| 165 | + - [Nix](docs/infrastructure/nix) |
| 166 | + - [Lorri](docs/infrastructure/nix/LORRI.md) |
| 167 | + - [Readme](docs/infrastructure/nix/README.md) |
| 168 | + - [Nomad](docs/infrastructure/nomad/README.md) |
| 169 | + - [Prometheus](docs/infrastructure/prometheus/README.md) |
| 170 | + - [Protobuf](docs/infrastructure/protobuf/TIMESTAMPS.md) |
| 171 | + - [Redis](docs/infrastructure/redis) |
| 172 | + - [Hosting Providers](docs/infrastructure/redis/HOSTING_PROVIDERS.md) |
| 173 | + - [Readme](docs/infrastructure/redis/README.md) |
| 174 | + - [Sharding](docs/infrastructure/redis/SHARDING.md) |
| 175 | + - [Tips](docs/infrastructure/redis/TIPS.md) |
| 176 | + - [Troubleshooting](docs/infrastructure/redis/TROUBLESHOOTING.md) |
| 177 | + - [Why Redis](docs/infrastructure/redis/WHY_REDIS.md) |
| 178 | + - [Rust](docs/infrastructure/rust/TROUBLESHOOTING.md) |
| 179 | + - [S3](docs/infrastructure/s3/TROUBLESHOOTING.md) |
| 180 | + - [SBOM](docs/infrastructure/SBOM.md) |
| 181 | + - [Terraform](docs/infrastructure/terraform) |
| 182 | + - [Configs and Secrets](docs/infrastructure/terraform/CONFIGS_AND_SECRETS.md) |
| 183 | + - [Readme](docs/infrastructure/terraform/README.md) |
| 184 | + - [Troubleshooting](docs/infrastructure/terraform/TROUBLESHOOTING.md) |
| 185 | + - [Timeouts](docs/infrastructure/TIMEOUTS.md) |
| 186 | + - [Traefik](docs/infrastructure/traefik) |
| 187 | + - [Ing Job Sizing Methodology](docs/infrastructure/traefik/ING_JOB_SIZING_METHODOLOGY.md) |
| 188 | + - [Readme](docs/infrastructure/traefik/README.md) |
| 189 | + - [Router Priorities](docs/infrastructure/traefik/ROUTER_PRIORITIES.md) |
| 190 | + - [Traffic Server](docs/infrastructure/traffic_server) |
| 191 | + - [Readme](docs/infrastructure/traffic_server/README.md) |
| 192 | + - [Why Traffic Server](docs/infrastructure/traffic_server/WHY_TRAFFIC_SERVER.md) |
| 193 | +- [Libraries](docs/libraries) |
| 194 | + - [Bolt](docs/libraries/bolt) |
| 195 | + - [Buggy Cache Purging](docs/libraries/bolt/BUGGY_CACHE_PURGING.md) |
| 196 | + - [Config](docs/libraries/bolt/config) |
| 197 | + - [Cloudflare](docs/libraries/bolt/config/CLOUDFLARE.md) |
| 198 | + - [DNS](docs/libraries/bolt/config/DNS.md) |
| 199 | + - [Linode](docs/libraries/bolt/config/LINODE.md) |
| 200 | + - [Namespace](docs/libraries/bolt/config/NAMESPACE.md) |
| 201 | + - [Sendgrid](docs/libraries/bolt/config/SENDGRID.md) |
| 202 | + - [Debugging Services](docs/libraries/bolt/DEBUGGING_SERVICES.md) |
| 203 | + - [Feature Flagging](docs/libraries/bolt/FEATURE_FLAGGING.md) |
| 204 | + - [Readme](docs/libraries/bolt/README.md) |
| 205 | + - [Regions](docs/libraries/bolt/REGIONS.md) |
| 206 | + - [Chirp](docs/libraries/chirp) |
| 207 | + - [Error Handling](docs/libraries/chirp/ERROR_HANDLING.md) |
| 208 | + - [Glossary](docs/libraries/chirp/GLOSSARY.md) |
| 209 | + - [Readme](docs/libraries/chirp/README.md) |
| 210 | + - [Claims](docs/libraries/claims/JWT.md) |
| 211 | +- [Packages](docs/packages) |
| 212 | + - [Api-Auth](docs/packages/api-auth/HUB_AUTH.md) |
| 213 | + - [Cluster](docs/packages/cluster) |
| 214 | + - [Autoscaling](docs/packages/cluster/AUTOSCALING.md) |
| 215 | + - [Server Provisioning](docs/packages/cluster/SERVER_PROVISIONING.md) |
| 216 | + - [TLS and DNS](docs/packages/cluster/TLS_AND_DNS.md) |
| 217 | + - [Job](docs/packages/job/DOCKER_IMAGE_DELIVERY.md) |
| 218 | + - [Mm](docs/packages/mm/IDLE_LOBBIES.md) |
| 219 | + - [Upload](docs/packages/upload/UPLOADS.md) |
| 220 | +- [Philosophy](docs/philosophy) |
| 221 | + - [Infra as Code](docs/philosophy/INFRA_AS_CODE.md) |
| 222 | + - [Licensing](docs/philosophy/LICENSING.md) |
| 223 | + - [Why Open Source](docs/philosophy/WHY_OPEN_SOURCE.md) |
| 224 | +- [Processes](docs/processes) |
| 225 | + - [Changelog](docs/processes/CHANGELOG.md) |
| 226 | + - [Deploy Process](docs/processes/DEPLOY_PROCESS.md) |
| 227 | + - [Making Changes](docs/processes/MAKING_CHANGES.md) |
| 228 | + - [Project Management](docs/processes/PROJECT_MANAGEMENT.md) |
| 229 | + - [Pull Requests](docs/processes/PULL_REQUESTS.md) |
| 230 | + - [Refactoring](docs/processes/REFACTORING.md) |
| 231 | + - [Releasing](docs/processes/RELEASING.md) |
| 232 | + - [Versioning](docs/processes/VERSIONING.md) |
| 233 | + |
| 234 | +<!-- |
| 235 | +## We're hiring! |
| 236 | +
|
| 237 | +We're a team of scrappy engineers willing to get our hands dirty with everything from Linux internals, niche game engines, designs that don't look like [this](https://www.linears.art/), and god-tier developer experiences. If you prefer reading the source instead of documentation, love hacking on games in your free time, and have a healthy dose of anarchy in you, come [join us!](https://rivet-gg.notion.site/Job-Board-eed66f2eab2b4d7ea3e21ccd63b22efe?pvs=4) |
| 238 | +--> |
77 | 239 |
|
78 | 240 | ## License
|
79 | 241 |
|
80 |
| -THICC-2.0 (Totally Hilarious Intentionally Comedic Copyleft) |
| 242 | +Apache 2.0 |
81 | 243 |
|
82 |
| -_In ASS we trust, all others pay cash_ |
| 244 | +_Trust no-one, own your backend_ |
0 commit comments