From f07b09533180f6b5f70dd3905f615c6a93c253ca Mon Sep 17 00:00:00 2001 From: Nathan Flurry <developer@nathanflurry.com> Date: Wed, 11 Sep 2024 14:12:42 -0700 Subject: [PATCH] Update README.md --- README.md | 256 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 209 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index 4513bcba0c..e3d2054a08 100644 --- a/README.md +++ b/README.md @@ -1,82 +1,244 @@ <p align="center"> <picture> - <img src="https://github.com/NathanFlurry/ass/raw/main/media/icon.png" alt="Rivet"> + <source media="(prefers-color-scheme: dark)" srcset="./media/icon-text-white.svg" alt="Rivet"> + <img src="./media/icon-text-black.svg" alt="Rivet"> </picture> </p> <p align="center"> - <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> - <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> - <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> - <a href="https://rivet.gg/discord"><img alt="Discord" src="https://img.shields.io/badge/discord-dummy__thicc-purple?style=flat-square"/></a> + <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> + <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> + <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> + <a href="https://rivet.gg/discord"><img alt="GitHub closed issues" src="https://img.shields.io/discord/822914074136018994?style=flat-square&label=discord"/></a> </p> -## 🍑 Features +## Features -### 🎮 Dummy Thicc Dedicated Game Servers +### 🎮 Dedicated Game Servers -Deploy game servers faster than you can say "ASS": +Deploy game servers in minutes across multiple regions & clouds providers. -- Optimize for booty or bounty, servers starting at $6.9/mo for 4.20 servers -- Auto-scales 69% faster than AWS GameLift (because we said so) -- No-downtime deploys & instant twerk-backs -- Monitoring & crash reporting (we've got your back[side]) +- Optimize for performance or cost, servers + <Tooltip tip="Shared CPU core similar to VPS providers, see pricing page for details">starting at $9/mo for + 6 servers</Tooltip> +- Auto-scales 90% faster than AWS GameLift +- No-downtime deploys & instant rollbacks +- Monitoring & crash reporting -### 🛡️ DDoASS Mitigation +[Documentation](https://rivet.gg/docs/dynamic-servers) -- No added jiggle -- Supports UDP & TCP & WebSockets & WebRTC (all dat ASS) -- Automatic SSL for game servers (because security is sexy) +### 🛡️ DDoS Mitigation -### 🌐 Content Delivery Network (CDN) +- No added latency +- Supports UDP & TCP & WebSockets & WebRTC +- Automatic SSL for game servers (WebSockets & TCP+TLS) -Asset delivery, game downloads, & website hosting: +[Documentation](https://rivet.gg/docs/dynamic-servers/concepts/game-guard) -- Custom domains (make dat ASS yours) -- Instant twerk-backs -- Automatic SSL (Safe Sensual Layer) +### 🌐 CDN + +Asset delivery, game downloads, & website hosting + +- Custom domains +- Instant rollbacks +- Automatic SSL + +[Documentation](https://rivet.gg/docs/cdn) ### 🧩 Backend Modules -Write server-side logic using THICC++ (or use your own API server): +Write server-side logic using TypeScript (or use your own API server) - Modules include matchmaking, parties, authentication, & more -- Postgres database included for persistence (because real databases are overrated) -- Combine existing open-source modules - Open dat ASS up +- Postgres database included for persistence +- Powered by <a href="https://github.com/rivet-gg/opengb">Open Game Backend</a> -## 🚫 What ASS is NOT - -- Not Kubernetes (because who needs that many syllables?) -- Not written in fake languages like "Go" or "Java" (we use REAL languages like THICC++ and ASSembly) -- Not a joke (okay, maybe a little) -- Not your grandma's server solution (unless your grandma is really cool) -- Not afraid of a little junk in the trunk (our servers are dummy thicc) +[Documentation](https://opengb.dev/) ## 🚙 Supported Game Engines -| Engine | -|---------------| -| Godot | -| Unity | -| Unreal Engine | -| HTML5 & JS | -| Rust | -| Other | +| Engine | Plugin | Crash Course | Example Projects | +| ------------------ | -------------------------------------------------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------- | +| 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) | +| 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) | +| Unreal Engine | [rivet-gg/plugin-unreal](https://github.com/rivet-gg/plugin-unreal) | [Learn](https://rivet.gg/learn/unreal) | _WIP_ | +| 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) | +| 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) | +| 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) | +| 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) | ## 🚀 Getting Started -1. Clone dat ASS -2. Shake it -3. Deploy it +**Self-hosting & development** -## 📐 Architecture +See the [setup guide](/docs/getting_started/DEVELOPMENT.md) to develop & deploy Rivet yourself. + +**Rivet Cloud** + +[Rivet Cloud](https://rivet.gg) is the fastest and most affordable way to get your game up and running. Sign +up at [rivet.gg](https://rivet.gg). + +## 💬 Community & Support + +**Discord** + +[Invite](https://rivet.gg/discord) -Our architecture is THICC. Trust us, you'll really want to dive right in. +- **Lounge** The Rivet team is remote and does most of their work in public Discord voice chat. Come drop by + if you have questions or want to hang! +- **#support** Ask questions about getting your game runnin on Rivet +- **#open-source-dev** Ask questions about the open source repo +- **#showcase** Show off your game, get feedback + +**Releases** + +Stay up to date on the latest releases on [X](https://x.com/rivet_gg). + +Technical release notes can be subscribed to by watcing this repository. + +**Bugs & Feature Requests** + +Bugs and feature requests can be submitted as a GitHub Issue. + +**Roadmap** + +We create public issues for most items on our roadmpa. + +Subscribe to issues to get notified when they're updated. Add a 👍 reaction to issues to get them prioritized +faster + +## 📐 Architecture -![Architecture](https://github.com/NathanFlurry/ass/raw/main/media/architecture.png) +We maintain a detailed architecture diagram +[here](https://www.figma.com/file/GvCj77EG79NUoW1dRG4qkg/Architecture?type=whiteboard&node-id=0%3A1&t=WqMQ2r6avjM0jPK0-1). + +![Architecture](./media/architecture.png) + +## 📖 Documentation + +### Game developers + +Visit our documentation for game developers [here](https://rivet.gg/docs). + +### Internal documentation + +<!-- + +GPT prompt: + +Convert this to a markdown list with indents with links to the document and a human readable name: + +$(tree docs/) + +--> + +- [About](docs/about) + - [Telemetry](docs/about/TELEMETRY.md) +- [Getting Started](docs/getting_started) + - [Debugging](docs/getting_started/DEBUGGING.md) + - [Development Firewalls](docs/getting_started/DEVELOPMENT_FIREWALLS.md) + - [Development](docs/getting_started/DEVELOPMENT.md) + - [Project Structure](docs/getting_started/PROJECT_STRUCTURE.md) + - [Rust Analyzer](docs/getting_started/RUST_ANALYZER.md) + - [Services](docs/getting_started/SERVICES.md) +- [Infrastructure](docs/infrastructure) + - [Alertmanager](docs/infrastructure/alertmanager/TESTING_ALERTS.md) + - [ClickHouse](docs/infrastructure/clickhouse) + - [Readme](docs/infrastructure/clickhouse/README.md) + - [Troubleshooting](docs/infrastructure/clickhouse/TROUBLESHOOTING.md) + - [Why ClickHouse](docs/infrastructure/clickhouse/WHY_CLICKHOUSE.md) + - [Cockroach](docs/infrastructure/cockroach) + - [Readme](docs/infrastructure/cockroach/README.md) + - [Why Cockroach](docs/infrastructure/cockroach/WHY_COCKRAOCH.md) + - [Helm](docs/infrastructure/helm/TROUBLESHOOTING.md) + - [Imagor](docs/infrastructure/imagor/MEDIA_DELIVERY_AND_RESIZING.md) + - [K3d](docs/infrastructure/k3d/TROUBLESHOOTING.md) + - [K8s](docs/infrastructure/k8s) + - [Tips](docs/infrastructure/k8s/TIPS.md) + - [Troubleshooting](docs/infrastructure/k8s/TROUBLESHOOTING.md) + - [Minio](docs/infrastructure/minio/TROUBLESHOOTING.md) + - [Nats](docs/infrastructure/nats/TROUBLESHOOTING.md) + - [Networking](docs/infrastructure/networking) + - [Edge Cluster Networking](docs/infrastructure/networking/EDGE_CLUSTER_NETWORKING.md) + - [IP Ranges](docs/infrastructure/networking/IP_RANGES.md) + - [IPv6](docs/infrastructure/networking/IPV6.md) + - [Nix](docs/infrastructure/nix) + - [Lorri](docs/infrastructure/nix/LORRI.md) + - [Readme](docs/infrastructure/nix/README.md) + - [Nomad](docs/infrastructure/nomad/README.md) + - [Prometheus](docs/infrastructure/prometheus/README.md) + - [Protobuf](docs/infrastructure/protobuf/TIMESTAMPS.md) + - [Redis](docs/infrastructure/redis) + - [Hosting Providers](docs/infrastructure/redis/HOSTING_PROVIDERS.md) + - [Readme](docs/infrastructure/redis/README.md) + - [Sharding](docs/infrastructure/redis/SHARDING.md) + - [Tips](docs/infrastructure/redis/TIPS.md) + - [Troubleshooting](docs/infrastructure/redis/TROUBLESHOOTING.md) + - [Why Redis](docs/infrastructure/redis/WHY_REDIS.md) + - [Rust](docs/infrastructure/rust/TROUBLESHOOTING.md) + - [S3](docs/infrastructure/s3/TROUBLESHOOTING.md) + - [SBOM](docs/infrastructure/SBOM.md) + - [Terraform](docs/infrastructure/terraform) + - [Configs and Secrets](docs/infrastructure/terraform/CONFIGS_AND_SECRETS.md) + - [Readme](docs/infrastructure/terraform/README.md) + - [Troubleshooting](docs/infrastructure/terraform/TROUBLESHOOTING.md) + - [Timeouts](docs/infrastructure/TIMEOUTS.md) + - [Traefik](docs/infrastructure/traefik) + - [Ing Job Sizing Methodology](docs/infrastructure/traefik/ING_JOB_SIZING_METHODOLOGY.md) + - [Readme](docs/infrastructure/traefik/README.md) + - [Router Priorities](docs/infrastructure/traefik/ROUTER_PRIORITIES.md) + - [Traffic Server](docs/infrastructure/traffic_server) + - [Readme](docs/infrastructure/traffic_server/README.md) + - [Why Traffic Server](docs/infrastructure/traffic_server/WHY_TRAFFIC_SERVER.md) +- [Libraries](docs/libraries) + - [Bolt](docs/libraries/bolt) + - [Buggy Cache Purging](docs/libraries/bolt/BUGGY_CACHE_PURGING.md) + - [Config](docs/libraries/bolt/config) + - [Cloudflare](docs/libraries/bolt/config/CLOUDFLARE.md) + - [DNS](docs/libraries/bolt/config/DNS.md) + - [Linode](docs/libraries/bolt/config/LINODE.md) + - [Namespace](docs/libraries/bolt/config/NAMESPACE.md) + - [Sendgrid](docs/libraries/bolt/config/SENDGRID.md) + - [Debugging Services](docs/libraries/bolt/DEBUGGING_SERVICES.md) + - [Feature Flagging](docs/libraries/bolt/FEATURE_FLAGGING.md) + - [Readme](docs/libraries/bolt/README.md) + - [Regions](docs/libraries/bolt/REGIONS.md) + - [Chirp](docs/libraries/chirp) + - [Error Handling](docs/libraries/chirp/ERROR_HANDLING.md) + - [Glossary](docs/libraries/chirp/GLOSSARY.md) + - [Readme](docs/libraries/chirp/README.md) + - [Claims](docs/libraries/claims/JWT.md) +- [Packages](docs/packages) + - [Api-Auth](docs/packages/api-auth/HUB_AUTH.md) + - [Cluster](docs/packages/cluster) + - [Autoscaling](docs/packages/cluster/AUTOSCALING.md) + - [Server Provisioning](docs/packages/cluster/SERVER_PROVISIONING.md) + - [TLS and DNS](docs/packages/cluster/TLS_AND_DNS.md) + - [Job](docs/packages/job/DOCKER_IMAGE_DELIVERY.md) + - [Mm](docs/packages/mm/IDLE_LOBBIES.md) + - [Upload](docs/packages/upload/UPLOADS.md) +- [Philosophy](docs/philosophy) + - [Infra as Code](docs/philosophy/INFRA_AS_CODE.md) + - [Licensing](docs/philosophy/LICENSING.md) + - [Why Open Source](docs/philosophy/WHY_OPEN_SOURCE.md) +- [Processes](docs/processes) + - [Changelog](docs/processes/CHANGELOG.md) + - [Deploy Process](docs/processes/DEPLOY_PROCESS.md) + - [Making Changes](docs/processes/MAKING_CHANGES.md) + - [Project Management](docs/processes/PROJECT_MANAGEMENT.md) + - [Pull Requests](docs/processes/PULL_REQUESTS.md) + - [Refactoring](docs/processes/REFACTORING.md) + - [Releasing](docs/processes/RELEASING.md) + - [Versioning](docs/processes/VERSIONING.md) + +<!-- +## We're hiring! + +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) +--> ## License -THICC-2.0 (Totally Hilarious Intentionally Comedic Copyleft) +Apache 2.0 -_In ASS we trust, all others pay cash_ +_Trust no-one, own your backend_