Components
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.
Info
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.
There is also some monitoring setup: health checks using healthchecks.io and Okema's Zabbix instance.
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.
Game assets distribution
Infrastructure responsible for making all the game assets available to players.
- RapidTools: Packaging of game git repo to rapid format.
- rapid-hosting: Rapid build server configuration.
- Game CDN distribution: CDN management and syncers to CDN.
- recoil-rapid-syncer: Rapid repo syncer from builder host to CDN. Also includes a prober to for debugging CDN replication issues.
- p2004a/bar-repos-bunny-replication-lag-mitigation: Helper to make sure updates to CDN are pushed in consistent way.
- p2004a/rapid-pool-init: Builder for the initial rapid game download. package.
- maps-hosting: Map CDN: publishing, serving, IaC setup.
- Maps metadata setup
- maps-metadata: Main repo that transforms data and distributes to other places via GitHub actions. Also contains source for a few server side components of that system.
- Maintenance of https://rowy.beyondallreason.dev/ (deployment with custom BAR patches).
Auxiliary services
- BAR Live services (replays, leaderboard, battles linked as
iframe
s 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.