Components Index¶
Infra is spread across many different repositories, with different functions. On this page is a current comprehensive list (index like) of everything that BAR infrastructure consists of.
Note
Even though many of the repositories below are hosting UI visible to players, the infrastructure team is not responsible for the design and overall UX improvements. The same applies to rating, balancing and data analysis. Other BAR development teams are supposed to drive planning and improvements to those aspects.
Live games serving¶
The server side components responsible for facilitating live games: hosting the engine instances clients connect to to play the game.
- Yaribz/SPADS: Game lobby room hosting and engine handling on game servers.
- spads_config_bar: Spads configuration, bar manager plugin, official plugins configuration.
- ansible-spads-setup: Overall game servers configuration.
- recoil-autohost: Work in progress tachyon protocol autohost.
Lobby rooms serving¶
The online components needed to set up and prepare the lobby rooms before the game happens.
-
teiserver: The primary piece here responsible for all the:
- Account management logic
- Moderation
- Lobby rooms permissions and management
- Middleware between client side components and SPADS
hailstorm are the integration tests.
-
ansible-teiserver: Teiserver server configuration.
- tachyon: Work in progress new lobby server protocol specification.
- Even though the SPADS and its configuration is mentioned in the previous section, it also belongs here. SPADS is handling both lobby rooms setup and then game handling.
Client side infra¶
Pieces responsible for ensuring that players have all the assets available and ready to start the game.
-
BYAR-Chobby: Our current lobby client.
It's responsible for communication with lobby server, launcher, preparing engine start script.
-
bar-lobby: New work in progress lobby client.
- spring-launcher: Game installer and launcher.
- flathub/info.beyondallreason.bar: Linux Flatpak package for launcher.
-
pr-downloader: CLI application distributed with engine used for downloading mods/games
Could be interpreted also to belong in the engine team, but it heavily impacts infra.
-
bar_debug_launcher: BAR Debug launcher. It's not intended for end users, it is a developer tool.
Monitoring¶
- ansible-monitoring: Our VictoriaMetrics, Grafana, ... monitoring server that's gathering data from other hosts. Served at https://grafana.beyondallreason.dev/ and a few other domains.
There is also some monitoring setup: health checks using healthchecks.io and Okema's Zabbix instance that's being replaced by the monitoring server.
Game assets distribution¶
Infrastructure that makes the game assets available to players.
- RapidTools: Packages the game Git repo in Rapid format.
- rapid-hosting: Builds and hosts Rapid repos. It includes the build service that publishes repos to the CDN, the GitHub Action that triggers builds, and the Ansible playbook for the server.
- p2004a/rapid-pool-init: Builds the initial Rapid game download package.
- maps-hosting: Publishes and serves maps through a CDN, including the IaC configuration.
- Maps metadata:
- maps-metadata: Transforms metadata and distributes it through GitHub Actions. It also contains several server-side components for this system.
- Rowy is maintained with custom BAR patches.
Auxiliary services¶
- BAR Live services (replays, leaderboard, battles linked as
iframes from www.beyondallreason.info):- bar-db: Backend service, effectively https://api.bar-rts.com/
- bar-live-services: Frontend embeded in main website https://bar-rts.com/
- Teiserver contains some additional functionality in this category:
- Microblog
- Discord bot
- Engine crash logs
- logs-upload: Small Cloudflare worker to handle log upload from launcher.
- Main website is created in Webflow and not part of BAR infrastructure.