Skip to content
Branch: next
Commits on Jun 27, 2017
  1. untangle entity rendering

    ac-stef committed Jun 27, 2017
    fix unbatched model roll
  2. cleanup cpistol

    ac-stef committed Jun 6, 2017
  3. cleanup protocol

    ac-stef committed Jun 3, 2017
    ...and get master to compile again
    DOCREF hudextras mapstats_hud nextGameMode
  4. Remove akimboautoswitch

    aurhat authored and ac-stef committed Jun 11, 2017
    The problem is, that some players (especially SMG users) got on purpose
    akimbo with intention to not use it, only in order to others don't get it.
    Such behaviour is directed "piggishly" against other players and
    impoverish the game/gameplay.
    Now, if people don't want to use some akimbo, they should just to not
    get it, for example jump over it.
    DOCREF akimboautoswitch
  5. Fix akimbo damage

    aurhat authored and ac-stef committed Jun 10, 2017
  6. use fov and roll values of remote player during spectating

    ac-stef committed Apr 29, 2017
      spectfovremote 0|1
        '1' uses fov and scopefov of the spectated player, '0' uses spectfov
        and the local scopefov, default is '0'
      maxrollremote sets the maximum roll to be shown during spectating
    DOCREF spectfovremote
  7. actually zoom the scope while spectating

    ac-stef committed Sep 14, 2016
    to show off the new highres pos angles :)
  8. cleanup pos packets

    ac-stef committed Sep 14, 2016
    * remove roll
    * optimise for size
    * new protocol data type: unsigned integer with known size
    * highres yaw encoding
    * double resolution for pitch angles -30°..30°
    * half resolution for pitch angles -90°..-30° and 30°..90°
    * proper rounding for pitch and yaw values
    * same resolution for yaw and pitch for both pos packet types
    * restore transmission of the velocity vector
  9. add debug logging to demo recording

    ac-stef committed Sep 13, 2016
    fix server hanging after 5th demo
    fix incomplete demo slot cleanup
    fix demo file size reporting (enddemorecord can't do it accurately, because
      the file is not complete, yet - so, round to megabytes, where the error
      doesn't show...)
    include exact demo file size in "listdemos" report
  10. improved demo recording

    ac-stef committed Sep 13, 2016
    The demo data is collected, hashed and compressed fully in memory, mostly
    in a worker thread.
    While in memory, each demo is identified by an unique sequence number,
    which is, for example, used to request a download by the client.
    If so configured, the demo is written to file by the worker thread.
    If F10 is pressed later than two minutes into the next game, instead of
    downloading the last game, the current game is scheduled to be
    automatically downloaded when it ends.
    At the end of a game, all clients and the server sign the demo file.
  11. add channel for less important server messages

    ac-stef committed Sep 10, 2016
    (so that the client can choose to not display them)
  12. cleaned up demo filename nonsense

    ac-stef committed Apr 1, 2016
    If a filename does not contain at least mode, map and timestamp (due to
    messed up format strings), the default format is used to ensure unique
    server side: added server parameters
        number of demo files to hold in RAM
        enable/disable writing of demos to file
        demo file path and filename prefix
        format string to assemble demo information to a filename
        %g : gamemode (int)
        %G : gamemode (chr)
        %F : gamemode (full)
        %m : minutes remaining
        %M : minutes played
        %s : seconds remaining
        %S : seconds played
        %h : IP of server
        %H : hostname of server (client only)
        %n : mapName
        %w : timestamp (formatted by demo_timestampformat)
        timestamp format string (see strftime() for format options)
        if the string starts with 'U', UTC is used - otherwise local time
    client side:
    changed demonameformat and demotimeformat to SVARs
        like demo_filenameformat
        like demo_timestampformat
    removed demotimelocal getdemonameformat getdemotimeformat getdemotimelocal
    DOCREF demonameformat demotimeformat
    DOCREF demotimelocal getdemonameformat getdemotimeformat getdemotimelocal
  13. misc VS warning fixes

    ac-stef committed Mar 31, 2016
  14. clean up ip byte mangling

    ac-stef committed Mar 31, 2016
    for now, censored IPs just show a '0' at the end...
  15. optionally reverse influence of previously played games modes

    ac-stef committed Mar 28, 2016
    a negative modepenalty_weight value makes the server more likely to
    suggest games with the same mode as was recently played
    default is a positive value to more likely mix it up
  16. add debug access to server parameters

    ac-stef committed Mar 28, 2016
    Server owners can overwrite values on a server, which then don't get
    updated from file anymore. With a reset command, all parameters get read
    from file again. Implemented as "serverextensions".
    serverextension servpar::get parname
      print parname and value
    serverextension servpar::set parname:value
      set parname to value
      also disables reading of this parameter from file (otherwise, the
      new value wouldn't last very long)
    serverextension servpar::reset
      set all parameters to be read from file again
    serverextension servpar::dump
      prints unsorted list of all parameters, values, limits and descriptions
  17. add server parameters for statistic and diagnostic purposes

    ac-stef committed Mar 28, 2016
    Logged server parameters are checked for changes once a minute. If a
    change is detected, it is logged.
  18. new commands to add modeinfo and artist info to maps

    ac-stef committed Aug 25, 2016
    mapartist print|set|get|clear
      print:  prints the map artist player ID
      set:  sets the map artist player ID to the currently logged in player
      get:   returns the current map artist player ID
      clear:  erases an existing map artist record in the current map
    modeinfo list|get|clear|<modelist> <modeflags>
      list:  lists current modeinfo entries
      get:  returns list of current modeinfo entries
      clear:  erases current list of modeinfo entries
      <modelist> <modeflags>:  specifies flags for a list of modes
    DOCREF modeinfo mapartist
  19. add server-side player vita database

    ac-stef committed Aug 26, 2016
    The server keeps track of every player ID that ever connected successfully.
    This database stores the last names and IPs used by the player and the
    last countries the connections came from. Some stats are counted, like
    "time connected" and "total tks". Most importantly, the database stores
    rights (like admin) and restrictions (like ban). All rights and
    restrictions are kept as dates (or timecodes), so, for example, if your
    ban date is in the future, you are banned - and if it's in the past, you
    can play. The collected stats are meant to help server owners at managing
    players - especially, if they want to give someone admin rights.
    The database is periodically saved to a file and read from that file on
    startup. The default file is config/servervita.cfg and one backup is kept
    in config/servervita_bak.cfg. During server start, if the regular file
    can't be loaded, the backup is tried instead.
    While the server is running, it checks periodically for a file named
    config/servervita_update.cfg, and if the file exists, it is renamed to
    a backup filename including a timecode and read and merged into the
    database. The automatic rename makes sure, that a file is only read once.
    Using such updates, a server owner can easily give several people admin
    rights or for example, add clan tags for a whole list of IDs. (Yes, the
    database also stores a clan tag for every ID...)
    The database also stores two short comments for every ID. One can only be
    read by server admins, but the other one is public. The public reason, for
    example, can state a reason for a ban.
    One database record takes up 264 bytes of RAM. During autosave, accounts,
    that have not been used for a specified time (default 12 months), will
    not be written. After a server restart, those old records will be gone.
    Currently, there is no process in place, to also clean up old records
    from RAM. Maybe, that'll be added later...
  20. thread-safe and fully buffered logging

    ac-stef committed Mar 21, 2016
    Uses own thread to actually write to logs, so the main thread can't be
    blocked by a slow logfile. Log entries are buffered in two ringbuffers,
    one for the main thread and one for all other threads. The main thread
    will copy the second buffer to the main buffer periodically. The main
    thread buffer is read from the log worker thread.
    Since two buffers are kept, there are now several functions to add a log
        for main thread functions only: will never block
        other threads only: may block, until main thread copied some entries
        automatically determines, which thread it's been called from and
        then writes to the proper buffer (will block accordingly)
    To avoid improper usage, mlog and tlog verify, if they are used correctly.
    (Only for debug builds. An assert triggers, if necessary.)
  21. initialise server parameters from commandline

    ac-stef committed Mar 21, 2016
    overwrite defaults with commandline parameters before first use
    (log level settings used as an example)
  22. add new protocol data type for IP addresses

    ac-stef committed Mar 20, 2016
    (to avoid casting IPs to signed integer)
    also mute single number debug messages for compound data structures like
    string and key: no longer print a debug message for every char of a string
  23. new maprot

    ac-stef committed Mar 13, 2016
    Instead of a list of specific map+mode combinations the maprot now only
    contains general rules for maps and game modes. The server then calculates
    the list by itself when needed. The server accounts played maps and modes
    (and map+mode combinations) and calculates the list specifically not to
    overplay maps or modes.
    May need further testing.
  24. add changeable server parameters

    ac-stef committed Aug 26, 2016
    A list of parameters is read from config/serverparameters.cfg once per
    minute and the values written to corresponding server data structures.
    If the binary is compiled in debug mode, starting a dedicated server
    will write a blank config file with all possible parameters and their
    descriptions, sorted and grouped into chapters.
    The name of the config file can be set with the commandline parameter -A.
    So far, syntax errors are not reported. Instead, it's possible to dump
    all current values to a file every time something changes.
  25. detect server config file changes by hashing

    ac-stef committed Mar 8, 2016
    Checking only file sizes obviously misses content changes that don't
    change the size.
  26. move validmapname

    ac-stef committed Mar 6, 2016
    add map name checks to servermap::load()
  27. read-ahead for server info files

    ac-stef committed Aug 26, 2016
    * poll and read motd and serverinfo along the other server config files
    * "en" language setting is now immutable
  28. replace some more strtok

    ac-stef committed Feb 28, 2016
    also make sure, randomMT survives concurring use from different threads
You can’t perform that action at this time.