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 = id = -or- -or- 0 (guids are separated from pubkeys because of their short length) group = }}} {{{ [ban] name = id = ip = reason = expires = banner = }}} == admin.cfg == {{{ [group] name = longname = inherit = rights = * 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 ' * 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