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