Openra2
An open source remake of the Rocket Arena mod for Quake 2
Install / Use
/learn @packetflinger/Openra2README
OpenRA2
Joe Reid <claire@packetflinger.com>
An open source remake of the Rocket Arena mod for Quake 2
Rocket Arena?
Rocket Arena 2 is a team-based mod for Quake 2. Games are arranged into rounds where each player spawns with all allowed items/weapons and they battle until everyone from one team is dead.
Why?
Yes, there is an existing RA2 mod that is available, but it dates back to the 20th century and the source code is not available (or at least I'm unable to locate it). There also don't seem to be any 64 bit binaries.
The original RA2 mod lacked many desireable features (such as chase cams) and this mod is aimed at fixing that. The primary score unit is damage dealt rather than frags. While The Fast and the Furious is right, "it doesn't matter if you win by an inch or a mile", tracking damage rather than frags gives the loser a little more credit.
Features
- Up to 9 independently operating arenas per map
- Compatible with original RA2 maps
- Compatible with with regular maps (as a single arena)
- 2-5 teams per arena (config & voteable)
- Up to 10 players per team allowed
- Up to 21 rounds per match (config & voteable)
- Arena specific health/armor/weapon/ammo quantities (config & voteable)
- Chase cam
- Team-level chat, arena-level chat, server-level chat
- Score by damage dealt
Client commands
accuracy
See your current accuracy statistics
admin
Enter admin mode, elevating your privileges
arena <arena number>
Join a specific arena. If the argument is missing a list of all arenas will be displayed
commands
Show client commands list
highscores
Show highscores for your arena
id
Toggle player IDs
join <teamname>
Join a team
matchinfo
Show arena settings
menu
Show the GUI game menu
obs
Alias for observer
observe
Part your current team and enter spectator mode
oldscore
Show the scores from the last match
players
List all players connected to the server
ready
Toggles your ready status. Once all team players are ready the match will start.
settings
Alias for matchinfo
stats
Alias for accuracy
team
Alias for join
vote <proposal [args]>|yes|no>
Call a vote or cast your vote
| Proposal | Arguments | Description |
| :---- | :------ | :---------- |
| kick | ID | Kick a player identified by id (use players command to get ID |
| mute | ID | Mute a player "" |
| map | mapname | Change map to mapname.bsp |
| teams | <2-5> | The number of teams between 2 and 5 |
| weapons | weapstring | What weapons to enable (see below) - can use "random" to randomize items/ammo |
| damage | dmgstring | What damage does not hurt (see below) |
| rounds | int | The number of rounds in a match |
| health | int | The amount of health points given to players |
| armor | int | The amount of body armor given to players |
| reset | | Reset all arena settings to default |
weapstring is a space-separated list of weapons (and ammo) to include or exclude:
Prepend any of the following with a + to include or a - to exclude. To specify ammo quantities, add :[integer] to the end of each weapon.
| Name | Weapon |
| :---- | :------|
| sg | shotgun |
| ssg | super shotgun |
| mg | machinegun |
| cg | chaingun |
| gl | grenade launcher |
| hb | hyperblaster |
| rl | rocket launcher |
| rg | railgun |
| bfg | bfg10k |
| all | all guns |
Examples:
-all +rg:5 +cg:600 +gl:3(only rail with 5 slugs, chaingun with 600 bullets and grenade launcher with 3 nades)+all -sg -hb(everything minus shotgun and hyperblaster)- You can use
:infto specify infinite ammo for a particular gun. - You can also use
randomfor the weapstring in voting to randomly assign guns/ammo for an arena
dmgstring is a space-separated list of damage flags specifying what damage does not affects the player - prepended with a + to include or - to exclude
| Flag | Description |
| :---- | :--------|
| self | You can't hurt your own health (splash damage) |
| aself | You can't hurt your armor |
| team | You can't hurt your team mates' health (splash and direct hit) |
| ateam | You can't damage your team mates' armor |
| falling | No falling damage |
| all | Nothing hurts except for enemy attacks |
Examples
-all(everything hurts)-all +self +team(you can't damage your health or team health, armor is vulnerable though)
Admin commands
Administrators are granted access to a number of privileged client commands.
acommands
Show administrator commands list.
admin [password]
Toggle administrator status.
ban <ip-mask> [duration] [action]
Add IP address specified by ip-mask into the ban list. Optional
duration parameter specifies how long this address should stay in the
list. Default duration is 1 hour. Maximum duration is 12 hours. Default
units for specifying duration are minutes. Add ‘h’ or ‘H’ suffix to
specify hours. Add ‘d’ or ‘D’ suffix to specify days. Optional action
parameter specifies ban type. It can be ban (prevent player from
connecting) or mute (allow player to connect and enter the game, but
disallow chat during the match). Default action is ban.
bans
Show the current ban list.
kick [player] Kick player from the server.
kickban
Kick player from the server and ban his IP address for 1 hour.
mute [player] Disallow player to talk during the match.
muteall
Globally disable chat during the match.
unban [ip-mask]
Remove IP address specified by ip-mask from the ban list. Permanent bans
added by server operator can't be removed.
unmute [player]
Allow player to talk during the match.
unmuteall
Globally enable chat during the match.
Map Config (optional)
Each map can have it's own config file to override the default settings. These files need to be named [mapname].cfg and saved in the openra2/mapcfg folder. Each file can contain a block (in curly braces) for each arena in the map. For example:
{
arena 1
weapons +all -bfg
rounds 5
damage -all +self +team
health 115
armor 12
teams 2
}
This tells the server for arena 1 to allow all weapons but no bfg, to run 5 rounds per match, to do self damage and team damage, start each player with 115 health and 12 red armor. This also limits the arena to 2 teams.
Another example:
{
arena 7
teams 3
weapons -all +ssg:20 +cg:inf
timelimit 120
}
This sets arena 7 to have 3 teams with all players being given only a super shotgun with 20 shells, a chaingun with infinite bullets and sets the length for all rounds to 2 minutes. The default (set via CVAR) amount of health and armor are applied to each player.
Possible options:
arena [integer]
The arena number this config block applies to
teams [integer]
The initial number of teams
damage [dmgstring]
What damage can be done to you
weapons [weapstring]
What weapons and ammo are provided by default. weapstring is a space-separated list, each item prefixed with a + to include or a - to exclude. Ammo quantities can be suffixed with a colon. Options: all, bfg, hb, rg, rl, gl, cg, mg, ssg, sg.
Examples:
-all +rl +rg:1 (Only rocket launcher and railgun (with a single slug))
+all (everything)
+all -bfg (all but the bfg)
-all +cg:inf (only a chaingun with infinite bullets)
round [integer]
The default number of rounds per match
health [integer]
How much health each player in this arena gets
armor [integer]
How much bodyarmor each player in this arena gets
timelimit [integer]
Number of seconds the rounds should last
Server CVARS
g_admin_password [string]
The password used with the admin command to enable privileged commands
g_ammo_bullets [integer]
The default quantity of bullets players will be assigned if they have a Machinegun or Chaingun. Default: 100
g_ammo_cells [integer]
The default quantity of cells players will be assigned if they have a Hyperblaster or BFG. Default: 50
g_ammo_grenades [integer]
The default quantity of grenades players will be assigned. Default: 20
g_ammo_rockets [integer]
The default quantity of rockets players will be assigned. Default: 20
g_ammo_shells [integer]
The default quantity of shells players will be assigned. Default: 14
g_ammo_slugs [integer]
The default quantity of slugs players will be assigned. Default: 10
g_armor_start [integer]
The default quantity of bodyarmor players will start with. Default: 100
g_bugs [0/1/2]
Fix gameplay bugs. Default: 0
g_damage_flags [bitmask]
Bitmask for damage immunities, add them up. Default: 0 (everything hurts)
| Value | Meaning | Description | | ----: | :------ | :---------- | | 0 | Nothing | Everything hurts | | 1 | Self health | Your explosions will NOT take your own health | | 2 | Self armor | Your explosions will NOT take your own armor | | 4 | Team | Your shots will NOT hurt your team mates health | | 8 | Team Armor | Your shots will NOT hurt your team mates armor | | 16 | Fall | Falling from high distances will NOT hurt | | 31 | All | None of the above will hurt |
g_default_arena [0/1/2]
When a player connects to the server, they're immediately added to an arena, this setting controls which. Default: 1 | Value | Meaning | Description | | ----: | :------ | :---------- | | 0 | First | Always join arena 1 | | 1 | Popular | Join which ever arena has the most players | | 2 | Random | Join a random arena |
g_demo [0/1]
Force players to record demos of their rounds/matches. Default 0 - don't force
g_drop_allowed [0/1]
Allow players to drop weapons/ammo. Default 1 - allowed
g_fast_weapon_change
Related Skills
node-connect
345.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
104.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
