The blog for the bleeding-edge news in the server of Research and Development.

CSRD Update: 28 March 2017

← Blog

Hello! After last month's major update, I figured I'd take it easy and spend this month refining the new additions.

Adorable little girl mistakes broken water heater for a robot

General server changes

  • Arena maps are now running Arena:Respawn in place of Resurrection. Have to make sure everything is working as expected, though.

Client feature changes

  • Added /workshop command. You can now view the Steam Workshop page for a map.
    • Internally, this has been merged with the /profile and /group commands, which has been publicly released as the Web Commands plugin.
  • There's now an in-game achievement viewer! Use the /achievements command in-game to open a web page containing your current achievement status. Achievement progress does not update in real-time.
    • The layout isn't quite final; I'm hoping to make it look like a native TF2 screen at some point.
  • We're now running a plugin that hides the round win (MVP) panel shortly after the round is over so it doesn't block the screen while participating in the end-round Prop Hunt. It also hides player health.
    • The plugin source code is available here. The specific function is also available as TF2_HideWinPanel() in my stocksoup SourceMod library.
    • I might just merge this functionality into the End Round Prop Hunt plugin, so we can also display a HUD notification at the same time.

Map-related changes

  • Added the following new maps with bot support:
  • Added the following new maps (no bot support):
  • Updated the following navigation meshes:
    • Desperados (A/D) didn't get its navigation mesh back since the server meltdown of 2015. It's back now, with a number of improvements.
    • Rumble (A/D) should be synchronized to the map version. Still need to introduce better tooling to the map navigation checker, though.
    • BLU bots can get out of their forward spawn on Wutville (Payload).
    • Both teams can get out of their forward spawns on Follower (5-CP).
    • Bots can now walk over the last capture area on Fifthcurve (Payload).

Post-Round Music additions and changes

Oh hey, song additions! That hasn't happened for a looooong while.

  • Added the following new tracks to the default rotation:
  • Added the following new tracks to the Halloween rotation:
  • Added the following new tracks to the Winter rotation:
  • Existing track tweaks:

    • Jekyll and Hide was moved to the Halloween rotation. Not quite sure why it was in the default rotation for so long.
    • Monster in the Mirror was also moved to the Halloween rotation, since the joke has run its course.
    • Heart of the Crypt was added to the Halloween rotation in addition to being in the default.
    • Carmen Overture (Music Box) was removed from the default rotation. I don't recall it ever being in there. It's still in the Halloween rotation, though.
  • The database now has a constraint to prevent the addition of entries with file paths that already exist, to avoid duplicates. As a result, two legacy duplicate entries have been removed.

  • The database has been updated with the ability to adjust the baseline volume of each track.
    • Existing (legacy) songs were amplified to the point where samples were being irreversably clipped. Why? The end-round in the Nom Nom Nom community was chaotic and contained massive amounts of murder. Had to cut through the gunfire somehow.
    • As such, every song had to be additionally processed to match the loudness of existing songs. I kept the tradition up with my additions, since I couldn't be bothered to change the entire system (until now).
    • Since it's not as chaotic and ideally every song should be loud enough now without all the carnage, every existing song has been adjusted to 75% of their original volume.
      • Depending on feedback, this may not be final — it's tricky to find a good volume level to match unamplified audio. It's also very likely that the amplification isn't consistent, so some tracks may have different volume levels.
    • This should allow new song additions to just require cutting and fading, allowing me (and other interested players) to provide new tracks without additional cumbersome processing steps. Four of those new tracks were done without additional processing.
  • Minor tweaks have been made to the plugin itself, including updating playback information to be sent as location hashes instead of query strings (mainly to reduce the number of requests made to fetch just the playback page).
    • Fun discovery: The game's MOTD display only updates the hash without reloading the page when it's possible to do so. That means it's absolutely possible to have multiple audio streams playing concurrently! (Though we'd have to make sure the client isn't already viewing an MOTD page when we play audio if we decide to look into playing audio more often.)

Major behind the scenes upgrades

  • The Steam Runtime system has been properly installed; it isn't using a Frankenstein-esque mix of system and Steam libraries anymore.
  • "A shiny new internal backend" is finally live! Partially.
    • We're embracing the APIs of the future and using Hug with Python instead of PHP.
    • Certain things are still using PHP, so it's not like it's completely removed yet.
    • Heck, some backend functionality with hardcoded URLs (the automatic server event system) isn't even using the new domain name yet. The migration will be ongoing and you shouldn't notice any surface-level changes.

Forward-facing site tweaks

  • The songs listing got a slight rework due to the database restructure. It now sports a playlist dropdown so you can see which songs are played on which occasions.

Upcoming changes

  • The annual April Fools event is coming up! I'm going to spend some time making sure all of the April Fools maps are back in place, and will also keep an eye out for some good new ones.
    • The April Fools event starts on the 31st at midnight UTC, whether I'm ready for it or not. Hooray, automation!
  • The Bot Map Runner will be updated to perform bot support checks against my internal database. Because the database generation is dependent on external tools, the database-checking code will be on an internal, private branch.
    • The site's map listing is using the new database right now.
    • Better integration with the Bot Manager plugin is also coming in to prevent spawning bots on maps with navigation meshes that aren't actually for TFBots (e.g., skeletons, Asteroid).
  • The site's front page will be getting an optional, configurable notification system that will pop a message up when there are players on the server.
  • More achievement-related updates!
    • Database indexes! Optimization on plugins!
    • More achievements for the server, weapon pickups, Arena:Respawn, kills, and maps are all in the drafting phases.
  • More robot responses, as well as the ability to combine existing response types.
  • Maybe reduce jQuery usage? I used fetch for the achievements page (since we're mainly targeting TF2's webview). It's pretty nice.

"Until Next Time, See Ya"

(Up you go!)