Skip to content

SRB2Kart v1.5

Compare
Choose a tag to compare
@SteelT1 SteelT1 released this 20 Aug 05:26
· 269 commits to master since this release

This is a quick release to fix a major issue with v1.4 online play. Some extra fixes are included.

  • Fixed a massive bug with hole punching. This bug caused frequent timeouts and repeating chat messages.
  • rendezvousserver has been renamed to holepunchserver
  • Fixed a crash when starting the game in OpenGL with some graphics drivers.
  • f has changed to D.

The rest of the v1.4 changelog is as follows...


Headline changes

  • Backported Ring Racers' hole punching. Almost anyone can host a server on the Master Server now, no port forwarding required!
    • Hole punching relay server is controlled with the rendezvousserver console variable. No need to ever change it, but like the Master Server, may be relevant in the future if someone hosts a community one.
    • There are some really weird home network setups out there, so we can't guarantee it'll work for everyone. Explicitly not compatible with double NAT or cellphone tethering, if you know that's what you're using.
  • Backported Ring Racers' interpolation.
    • This was developed in tandem with the SRB2 team, and is not related to the community implementation.
    • Map object positions, angles, scale, etc... are interpolated between game frames for rendering frames, with very minimal changes required for mobj code.
    • Level interpolation is also supported. Elevators, moving platforms, scrolling textures, polyobject rotations, etc will all animate smoothly.
    • Controlled with the fpscap console variable, which can also be adjusted from Video Options.
      • Any arbitrary cap can be chosen between 35 and 300.
      • When fpscap is set to 35, the game will fall back to the original frame timing behavior and turn off interpolation.
      • Setting to 0 will turn off the framerate cap.
      • Setting to -1 will set a frame rate cap to match your monitor's refresh rate.
    • The FPS counter now shows render frames instead of game frames, since they're not the same anymore.
    • Notes for modders:
      • P_TeleportMove had to be deprecated for this. Replace these with either P_SetOrigin or P_MoveOrigin. P_MoveOrigin is interpolated, while P_SetOrigin resets interpolation. Using P_TeleportMove now prints a simple warning and uses P_MoveOrigin in its place, so it will be relatively unnoticeable to most users in the meantime.
      • Setting scale on a mobj will skip scale interpolation. Setting destscale will not. This is inline with existing behavior, just applied to interpolation state as well.
      • You can use the new timescale cheat to test mods for interpolation artifacts.
      • We had to remove Lua interfacing for HUD interpolation temporarily -- a new solution for making proper interpolated HUD will be implemented later.
  • Kodachrome Void has undergone drastic changes.
    • The entire map's visuals have been adjusted for photosensitivity concerns.
    • The map has been given a new Encore Palette.
    • Please note that this version is its own retexturing of the V1 series map, and has no direct relation to the one seen in V2.
  • Honeybee Industries has been replaced with Opulence, by Ivo.
    • The former's assets have been removed from the game, barring select chevron textures which were replaced.
  • Map Hell can no longer be forced at the voting screen. This feature was always designed for private netgame sessions, and was not thought-out properly in regards to public servers and first impressions. (JugadorXEI, on behalf of us)
  • bonuschars.kart has been updated with two-toning for Blaze the Cat's sprites.

Changes for online servers

  • Backported Ring Racers' ban system improvements.
    • Using the kick command is now treated as a temporary ban.
      • The time before the ban expires is controlled with the kicktime console variable, in minutes.
      • Defaults to 10 minutes currently. This may be subject to change later.
      • A temp-banned joiner will be informed of how much time is left on their ban.
      • This is stored in ban.txt as a UNIX timestamp, so long-term bans are possible.
    • Attempting to join a server you're banned from will now report the ban reason, rather than a generic one.
    • A CIDR ban mask can now be properly set when using the banip command.
    • ban.txt has been overhauled.
      • Contains a simple versioning system. Bans from 1.3 and earlier are automatically converted to the new system.
      • The format of the IP address + mask is now CIDR compliant.
      • Player name of the banned user is now stored for logging purposes. If unknown, it is stored as "Direct IP ban".
      • Ban reasons and usernames are quote deliniated.
      • Fixed a bug where if it failed to load ban.txt, it could then later save over it with a completely blank file.
    • MAXBANS cap has been removed completely.
  • Added server gametype preference.
    • Controlled with the kartgametypepreference console variable. If set to "Race" or "Battle", the voting screen operates from the perspective of that gametype.
    • If you're not in the preferred gametype, the third option will continue it, while the first two will always be for the preferred gametype.
    • If the preferred gametype is Race and you've just exited a Battle map, the random Encore option will move to the second option.
    • The game now displays the preferred gametype on the server browser, instead of what the map is currently. This is to not punish servers for running temporary gametype swaps, or force them to waste their limited name space to advertise "lessbattlevotes". This part is experimental and is up for feedback, so please let us know what you think.
  • Added spectatorreentry console variable. Sets a time between spectators being able to spectate and then reenter the game, to prevent ragespecing.
  • Added some preventions for griefing. Can be controlled by antigrief, set to 0 to disable for private servers.
  • The Master Server's rules are now displayed in menu / console when starting a server.
  • Added support for private HTTP downloads that require authentication. Use the command set_http_login <url> [user:password] to set or remove a login for a site, and list_http_logins to view all currently set logins.
  • Files are now downloaded from servers if they were found on your computer but with the wrong checksum.
  • Fixed servers occasionally being registered multiple times.
  • Fixed the game trying to process joins while levels are loading, fixing a miraid of bugs (such as corrupted save game crashes, server load hangs, or some zombie client issues). (JugadorXEI)
  • Quotes can no longer be used in player names, as they can make server console usage painful.
  • Backported fix for chat flood crashes.

Changes for gameplay

  • The game now globally uses more precise distance checks. This improves waypoint checks, bumping, speed checks, wall collisions, Jawz targeting, Lightning Shield attacks, so on.
    • Using P_AproxDistance now prints a simple warning and uses FixedHypot in its place.
  • Backported ceiling slope collision, which lets you smoothly slide against them instead of getting caught on them. (Lighto)
  • Backported Ring Racers' fix for the high speed turning bug.
  • Fixed wipeout bump bug. (JugadorXEI)
  • Fixed magnet landing bug. (JugadorXEI)
  • Fixed a bug that caused drift charge to disappear in midair. (JugadorXEI)
  • Fixed a regression in v1.3 where Thunder Shield could now be rolled at the start of a race. (JugadorXEI)
  • Fixed item toss momentum in mobjscale maps.
  • Fixed starting boost scaling in mobjscale maps.
  • Fixed reversing speed in mobjscale maps.

Changes for modding

  • Doubled freeslot limits. (Ashnal)
  • The game now reports when the game failed to allocate freeslots due to reaching the limit. (Ashanl)
  • Backported several Lua features from SRB2 2.2:
    • PlayerThink hook
    • PreThinkFrame and PostThinkFrame hooks
    • COM_LOCAL commands
    • isserver and isdedicated global booleans
    • CV_Set, CV_StealthSet and CV_AddValue functions
  • Added read-only global integer defrosting, which reports the number of ticks left during the level's "preticker". Used to check if a script is running during the limbo state between the level first loading and leveltime beginning to increment.
  • Divide by zero / modulo by zero errors now display file & line number.
  • Fixed luafiles not being loaded from the home directory.
  • Fixed MusicChange hook returning incorrect values.

Changes for Discord Rich Presence

  • STUN is now used to fetch your own public IP address for the invite system, instead of pinging a server for it.
  • Only update Master Server presence when advertise is changed.
  • No longer runs for dedicated servers, for people running a dedicated server & the game itself on the same machine.
  • Menus and title demos are now closed when using an invite. (Ashnal)
  • Fixed invites not working on Linux. (JugadorXEI)
  • Fixed buffer overrun / secret memory errors from Discord invites. (JugadorXEI)

Changes for maps

  • Main Map Rotation:
    • Green Hills
      • Added death pits to areas where players could get stuck and would be forced to use the respawn command.
      • The map's encore palette has been adjusted.
    • Northern District
      • Added death pits to areas where players could get stuck and would be forced to use the respawn command.
    • Daytona Speedway
      • Adjusted geometry to prevent unintended shortcuts.
      • Added death pits to areas where players could get stuck and would be forced to use the respawn command.
    • Egg Zeppelin
      • Adjusted geometry to prevent unintended shortcuts.
    • Sonic Speedway
      • Adjusted geometry to prevent unintended shortcuts.
    • Sunbeam Paradise
      • Adjusted the properties of some fences to make them solid when they previously weren't.
    • Diamond Square
      • Updated musicdef to give the correct song title.
    • Paradise Hills
      • Extended finish line length.
      • Added death pits to areas where players could get stuck and would be forced to use the respawn command.
    • Sand Valley
      • Adjusted linedefs to have textures when they previously were missing them.
    • Casino Resort
      • Added death pits to areas where players could get stuck and would be forced to use the respawn command.
    • Silvercloud Island
      • Added death pits to areas where players could get stuck and would be forced to use the respawn command.
    • Petroleum Refinery
      • Fixed an issue where a part of the main road was marked as death pit.
      • Adjusted geometry to prevent unintended shortcuts.
    • Aurora Atoll
      • Added death pits to areas where players could get stuck and would be forced to use the respawn command.
      • Adjusted geometry to better prevent unintended shortcuts.
    • Barren Badlands
      • Adjusted the starting area's ceiling FOF to no longer be solid from above.
    • Vanilla Hotel
      • Added death pits to areas where players could get stuck and would be forced to use the respawn command.
    • Eggman's Nightclub
      • Added death pits to areas where players could get stuck and would be forced to use the respawn command.
    • Coastal Temple
      • Updated map image.
  • Hell Maps:
    • Black Bliss
      • Updated musicdef to show properly.
      • Adjusted geometry to prevent unintended shortcuts.
      • Fixed an issue where a part of the main road was marked as offroad.
    • Blue Mountain Classic
      • Adjusted geometry to prevent unintended shortcuts.

Miscellaneous changes

  • Backported Ring Racers' ping display. It is now shown as in how many gamelogic frames behind you are, rather than sloppily converted into milliseconds. Can go back to the old style by using the pingmeasurement console variable.
  • The game now prioritises the Direct3D 11 backend for Software mode on Windows. Previous releases default to version 9, but this broke crash reports on some newer devices.
  • The game is now "large address aware", meaning 32-bit builds can use more than 2GB of RAM on 64-bit systems without crashing. Significantly reduces the chances of out of memory errors. (himie)
  • Added lots of nagging, displays, and other foot-gun prevention when changing the Master Server address, and - this one time, on upgrade only - reset to default. This is to cut down half of messages we get in #tech-support.
  • Error on start-up when there are no write permissions to be able to create a config file, as this creates a lot of broken game behavior. This is to cut down the OTHER half of messages we get in #tech-support.
  • Music is now muted instead of paused when the window loses focus.
  • F11 now toggles fullscreen instead of changing gamma, the latter of which is - this one time, on upgrade only - reset to default.
  • Changing game speed from the menu no longer causes desyncs.
  • Connection screen now shows loading files as a proper loading bar. (Ashnal)
  • Connection screen shows MB instead of KB more often. (Ashnal)
  • Implemented better logging for adding add-on files. (Ashnal)
  • Implemented some minor R_DrawVisSprite optimizations.
  • Optimized R_FindPlane. (Hannu Hanhi)
  • Backported line of sight code, which properly accounts for slopes, fog blocks, sloped FOFs, etc. (minenice)
  • Fixed a regression with engine sounds in splitscreen after v1.3.
  • Fixed Mines having lost their fullbright inbetween indev and v1.0.0 release.
  • Fixed servers having a long delay when starting one.
  • Fixed crash reports not being made if the current working directory gets changed.
  • Fixed G_BuildMapTitle being able to access invalid map headers.
  • Fixed the third voting option not having Encore correctly applied if kartencore is On.
  • Fixed malformed packets being able to send an Encore + Battle map to the voting screen, since the game would forcefully unset it anyway.
  • Fixed SPBs continuing to follow their target even if they spectate.
  • Fixed a crash when SPBs and Polyobjects interact. (JugadorXEI)
  • Fixed kitchen sink crash due to unused pain state. (JugadorXEI)
  • Fixed "0th place" bug. (JugadorXEI)
  • Fixed a server hang if Jawz smoke trail got pushed out of bounds. (JugadorXEI)
  • Fixed a crash when a player disconnects while they had the Instashield visual effect. (JugadorXEI)
  • Fixed a few crashes related to delayed linedef executors attempting to access an invalid player object. (JugadorXEI)
  • Fixed a crash when inputting certain buttons while a Record Attack session is loading. (Ashanl)
  • Fixed crash from detached Rocket Sneaker when a player is instantly killed. (Ashanl)
  • Fixed the game reloading all textures when respawning in OpenGL. (Hannu Hanhi)
  • New console variable defaults: (Ashnal)
    • Removed axis binds for item & drift, for sake of DInput controllers.
    • maxsend and downloadspeed kept at the max value
    • nettimeout and jointimeout increased to 6 seconds (from 3)
    • resyncattempts reduced to 2 (from 5)
  • Codebase: Improved CMake for Mac.
  • Codebase: Purged a bunch of legacy/unused stuff.
  • Codebase: DUMPCONSISTENCY flag can now be set in make. (JugadorXEI)