Summary :
[TXT] ADMIN [TXT] BALANCE [TXT] BOTS [TXT] COMPATIBILITY [TXT] OTHER [TXT] SCRIPTS
Plan for new admin system
admin.dat ==> admin.dat + admin.cfg
admin.dat
[admin] name = <real admin name> id = <pubkey> -or- <guid> -or- 0 (guids are separated from pubkeys because of their short length) group = <name of group>
[ban] name = <name of banned player> id = <same as admin id> ip = <cidr ip address: a.b.c.d/e> reason = <reason for ban> expires = <MMDDhhmmYYYY of expiry date> banner = <id of banner admin>
admin.cfg
[group] name = <short name of group, no spaces or color, eg. serverop> longname = <long name of the group, eg. ^1Server Operator> inherit = <name of group to inherit rights from> rights = <list of commands & priviledges that this group can/can't use, eg. !map share @adminchat -!ban> * Priviledges start with a '@', all others are commands * A '-' can be prepended to a right to deny it instead of allowing it
- No more g_cmds.c, now part of g_admin.c
- Output from console scripts is automatically redirected to the calling client (Using 'echo' in a script will echo to that client instead of the console)
- The "console" group defines the rights the server console has. If none, then give all
- The "guest" group defines the rights a non-registered player has. If none, then deny all
- Inheriting from a group makes you immune to any admin from that group (higher level)
- /help is implemented on the client side, therefore we need to transmit help & syntax for all commands to the client
- If the client is not ours, we will have to provide a /help and !help on the server. The new client will ignore it because it will find the builtin one first.
Balance Changes
- We will load gameplay rules from configuration files, so there is no need to choose a specific gameplay style. We should include these:
1) Use the changes from MGDev
2) Use the changes from Madcat
3) Use a mix of both
4) Keep 1.1 gameplay
Bot Support
- We will use the bots from STFU-Tremulous
- Bots can be controlled using scripts, which can be exported as admin/console commands
- Since scripts can be hooked to map triggers, you could make a single player mod where bots attack when you get to a certain place in the map
Tremulous Compatibility
Protocol
- Use new protocol <-- We can remove the useless compression that takes up a lot of CPU
- Use protocol 70 <-- Easier to port to 1.2 when it is released
- Use protocol 69 <-- Compatible with current clients, so we get more users
I vote for protocol 69
Serverside compatiblity
- Our servers will use a shared library instead of a qvm
We will support compatibility for 2 types of clients:
- Tremulous 1.1 clients that use our qvms
- We will provide 1.1 compatible qvms to these clients
- We will act like a 1.1 mod server
- Our client with our libjit-based vms
- They will get the full package, with all protocol extensions
Clientside Compatibility
We will support compatibility for 2 types of servers:
- Our servers
- We will use libjit-based vms
- Will enable all protocol extensions
- 1.1 Tremulous servers
- Load vms-1.1.0.pk3
- Disable all protocol extensions
Other Changes
- Remove console say from sv_ccmds.c, move to g_svcmds.c
- Include masterdemo patch if I ever get around to finishing it ;)
- Split demo recording and playing so you can record a demo while playing another one
- Remove packet filtering from g_svcmds.c, use cidr bans instead
- Remove the broken kick system from sv_ccmds.c
- We should provide a complete installer like Tremulous 1.1
- We will use Madtree's enhanced renderer if it is stable
- Use a better/faster compression system instead of zip (we should keep zip support for existing pk3s)
- /help will provide help for *all* console commands and cvars, help for server commands will be transmitted
- !help is an alias for /help
- '/help' will only show "useful" commands with a short description, but will provide help for all commands with '/help <cmd>'
- Register qvm commands with the main command system, also allow each function to have custom tab completion
*** We will provide a patch for each of our changes to the code ***
Scripting Support
- Python and Lua scripts will be supported, in addition to the existing console scripts
- Common API for Lua and Python
- Scripts can be started automatically on map start by putting them in a specific directory
- Scripts can be started by the use of the /script console command
- Scripts can be hooked onto specific events, either by hooking from a script or using a console command
- Player events: connect, begin, buy, evolve, die, etc
- Server events: map change, map restart, warmup
- Map events: triggers
- A single function from the script can be hooked onto an event, by hooking from the script only
- See ADMIN for the use of scripts as console/admin commands
- Scripted commands can provide custom tab completion
