Sonic Robo Blast 2 kart Saturn Version


Improvements requiring the base game

Autor : alufolie91

This build should hopefully address all the regressions introduced in v6

IMPORTANT NOTE:
If your GPU does not support Opengl 3.0 or crashes on startup (which hopefully shouldnt happen) in OpenGL mode
or simply aint interested in the feature
Use the non FBO version!

  • Optimization to Weather Rendering, now it actually should perform better with shorter precip distance (Render Weather through the Blockmap instead of BSP traversal;also made precip distance be properly affected by mobjscaled maps)
  • Fixed some issues with FOF rendering (Laboratory Takeover from Assault Pack should look normal again;No more weird Fog)
  • Add IT_CV_BIGFLOAT to use bigger increment for some CV_FLOAT cvars (FOV and Driftgauge offset from the menu now wont take ages to change)
  • Dont call menu drawer in wipes on dedicated servers (fixes a rare crash)
  • Fix a possible overflow in va function (should prevent some crashes)
  • Fix some issues with CV_FLOAT cvars / For MIN/MAX value of cvar, convert it to float before saving for CV_FLOAT variables
  • Fixed a rare crash with weather
  • Disabling screen textures now will also disable Palette rendering if its enabled, to prevent visual issues from occuring
  • Multiple smaller code fixes
  • Fixed cmake building (hopefully)
  • Made FixedRem function more performant

FBO BUILD ONLY

  • Support to downsample from a higher resolution than your current display resolution in OpenGL using Framebuffer Objects
    Note: This requires a GPU that atleast supports OpenGL version 3.0
    Compile Note: by default this feature is enabled to be build with the game, using the NOSCREENFBO compiler flag will build without support for OpenGL downsampling

Thanks again to everyone who helped making Saturn to what it is now, and also thanks to everyone who enjoyed our work!

SRB2Kart Saturn - v7

After much work we finally release version 7 of Saturn!
Probably the biggest update yet!
Huge thanks once again to all the Contributers!

Features

  • Added Gamestate resending instead of vanilla resynching when both Server and Client are on Saturn v7+ (the one from Saturn 32player build/Dr. Robotnik's Ring Racers). If a non-Saturn user join, or one below v7, the vanilla resynching will be active for that user
    *This doesn't mean EVERYONE in the room have to be on the latest Saturn! If you are, and the server is, it is active! :)
  • Added Saturn specific identifier in Serverpacket so server can determine on connect if client is Saturn (can be useful for custom Saturn-unique features such as applying only joinblock for non-Saturn users)
  • Added hidden cvar to allow/prevent Saturn clients to join, can only be set with CV_StealthSet, otherwise "allowjoin" changes its value accordingly
  • The Replay menu now has a search function similar to the addon menu!
    *When having many replays it have to load them all for a little. Please be patient!
  • Lua Hud Interpolation (see LUASTUFF for more information) many thanks to GenericHeroGuy
  • Spectator mode now got a "Director" similar to the one found in Dr. Robotnik's Ring Racers
  • Allow Controller dpads to scroll through menus by holding a button
  • Add support for Flipcam in encoremode
  • The Game now supports Controller rumble, this has been exposed to lua aswell ("G_PlayerDeviceRumble", takes 4 arguments = Player (Displayplayer), low rumble motor strenght and high rumble motor strenght and duration in ms (optional, default is 84 ms))
  • The Game now sets the Controller LED on supported controllers to your player colour or the player you´re currently watching, this can also be changed per lua ("G_SetPlayerGamepadIndicatorColor", takes 2 arguments, Player (Displayplayer), and skincolour, must be called continuesly)
  • Added a "Lagless" camera option, which should remove any camera lag in netgames (Toggable from Saturn options)
    *Note this is prone to camera stuttering in poor net conditions/very high ping
  • Add delayed hit em sound (like in RingRacers), togglable via 'karthitemdialog' cvar
  • Added an option for the camera lookback feature to inherit the players momentum (or double of it) which mitigates issuess like the player going "into the camera" when boosting and looking back
  • Added toggle for showing speedometer in battle to Saturn Hud Options
  • Added an option to scale weather with mapobject scale (to make sure weather is always similar dense on all maps) may make some maps run significantly worse or better hence its a toggle
  • New opengl lighting mode "Dithering" ("gr_lightdithering") which should smooth the harsh cuts in lighting on opengl (the "box effect" as some may call it)
  • Add ctrl-w (delete word), ctrl-left (move to word beginning) and ctrl-right (move to word end) shortcuts for console
  • The timer now can show your Lap Time when doing a Lap
  • Add option to play power items sfx for growmusic and supermusic
  • Players can now connect during offline play with servers per console
  • Added a way to count number of handled packets (for debugging) ("packetstat" command)
  • Added a Serverjoin hook which only runs once you joined a Server
  • Levelselect now lets you switch encoremode on the fly by pressing the item button
  • Added a setting to enable the old Srb2 Kart beta intermission
    *This can be found in Saturn Options > Saturn HUD > Beta Intermission

Improvements

  • "map" command now saves replays when you have auto save enabled, this is toggable from the replay options menu
    *Can choose to only apply between changing to a different map or also including restarting the same map
    **The Game (which you just lost) will only save a replay when you atleast been in the map for 35 seconds to reduce replay clutter
  • Using "connect" command or "connect to last server" now should also make the game aware of server name (needs both the Server and the client to be on Saturn v7+)
  • Changing the skin per console cvar to an invalid skin now doesent change your skin to Sonic but keeps your current skin
  • Saturn menu has been reworked and split up, now has a "Saturn Hud" submenu which automatically forces the hud to show ingame, so you can adjust your hud more easily
  • Added a camera option menu, to properly set up your camera without knowing random cvars from the console
  • Cleaned up and renamed experimental Video Options to Advanced Video Options menu
  • Removed a bunch of fix toggles for opengl as the performance difference from having them off is pretty much nonextistent (cleans up code and removes a crapton of unneccessary conditional checks for stuff noone ever turns off anyways + declutters the menu)
  • Custom Hud Offsets now dont apply to splitscreen to make the hud less of a visual mess by default
  • Stat Display now looks alot better in any splitscreen mode
  • Mitigate Dynamic Slope desynchs by running them before other thinkers when joining a netgame for a single map
  • Autoloading has been changed and will now only add files on initial levelload (should hopefully prevent issues when joining a server with lua´s and SOC files autoloaded)
    *NOTE: due to this, autoloading things that changes visuals and other on the main menu will not work at startup anymore, so use KARTEXEC for those
  • Bird´s Screen tilting has been completely reworked to work more similar to the one from RingRacers (smoother tilting etc) and also has been exposed to lua "player viewrollangle"
  • The game now automatically makes a backup of your Kartconfig before writing to it (so you have a backup just in case the game wipes it due to some issues)
    *This is saved as kartconfig.cfg.bak in your Srb2 Kart folder
  • fix glib preallocating too much space for sound freeslots (massive decrease in ram usage)
  • limit localskins to 32 max (more decrease in ram usage) and remove some unused arrays relating to it (also lowers ram usage)
  • Dont unecessarily cache unused textures (results in a MASSIVE decrease in ram usage)
  • Reworked levelloading code to make it safer and faster (especially on reloading the same map). Also fixes some issues with keepmapmusic addon)
  • Map data lump interface (fixes many issues with maploading, mapload crashes, faster maploading, etc.)
  • Fake/Slope Contrast now gets precalculated on mapload instead of every frame, should give some performance improvements
  • optimize levelloading on maps with polyobjects by not iterating every sector on the map 3 times everytime
  • Slope Contrast has been adjusted and should look better now with standard Fake Contrast setting
  • Basic frameskipping system (when the game logic falls behind the game will skip some rendering frames)
  • Don't traverse the entire HOME directory to find wads (should fix the game taking very long or sometimes getting stuck on startup)
  • Cache pk3 central directory and Refactor ResFindSignature to work in chunks, should speed up pk3 loading slightly
  • Added a few more drawdistance settings similar to Dr. Robotnik's Ring Racers
  • Sprite drawdistance now takes mobjscaled maps into account
  • Weather effects have been heavily optimized and now dont use thinkers anymore
  • Changing any of the weather options will automatically resspawn all precip to make changes take effect instantly while in level
  • Min Value for audiobuffersize has been lowered to 256 for even less audio "lag" if desired
  • Added audiobuffersize entry to "Advanced Sound options"
  • Don´t always reset texture depth in Opengl
  • SDL: only react to window focus changes if state actually changes
  • Only call the Lua API for overridden actions
  • Optimize field lookups in Lua metatables
  • Make sfxinfo_t and state_t use field tables too
  • Store hooks in a table with integer keys instead of registry with string keys
  • Lua_optoption shouldn't change stack state at the end of call now
  • Alot of minor optimizations to the code
  • Smaller optimizations to Interpolation
  • Smaller optimizations to Opengl batching
  • Ensure Z_Malloc provides same alignment as libc
  • Do not run ST_Ticker if dedicated
  • Software renderer optimizations:
  • Raised floors or lowered ceilings that take up the whole screen no cull BSP properly; essentially making them behave like thokwalls improving performance in many cases
  • Optimizations to R_DrawRepeatMaskedColumn
  • Fixed rendering issues with Papersprites in software renderer
  • Split sprite draw loops in two for improved performance in software renderer
  • Fix linux not using hardware accelarated SDL_Renderer for software renderer context (should result in speedup)

Fixes

  • Fix chat messages not displaying in console
  • Fix 1LUA_EvalMath1 warnings being broken sometimes (should fix those weird garbage warnings and make them proper output whats wrong)
  • Prevent Dedicated Servers from being able to use Exitgame command, and thus going out of a level
  • Alot of fixes for green resolutions for menus (thx neppy c:)
  • Draw a Black Screen during wipes when Screen Texures are disabled instead of flashing white screens.
  • Screen FBO should turn off automatically when you turn off screen textures as it relies on them to work
  • Cleaned up and fixed alot of isssues regarding fbo/downsampling from higher resolutions
  • Paletterendering should also turn off automatically in the same case
  • Use a flexible array for columnofs in patch_t to prevent oob array access in patch drawers
  • Add check for if lua state exist in UnArchiveExtVars, since server can have local luas that may add player/mobj fields into savegame
  • Refactored and cleaned up MusicTest code
  • calloc soundchannels insteal of mallocing
  • Mitigated some issues with MobjScreenCoords in 2 player splitscreen with shearing enabled/software renderer
  • Use Z_Calloc to allocate wadfile_t to avoid having uninitialized fields
  • Dont draw precip/weather in skyboxes in opengl (just like software)
  • Dont reload palette until kartconfig was loaded (should fix some random crashes at startup in opengl)
  • Fix sprite shadows (not the normal kart mobj shadows) in paletterendering mode
  • Fix custom shader compilation on linux
  • Fix a crash in software renderer lighting calculation
  • Reverted some windows specific timing stuff as it occasionally messed with sound
  • Fix the intermission screen glitching out on higher resolutions and with hud interpolation enabled
  • Fix HAVE_CURL, HAVE_THREADS and Masterserver ifdefs
  • Prevent a crash in Opengl bsp rendering code
  • Prevent a crash for dedicated servers in P_TryCameraMove
  • Prevent dedicated servers from running HWR_RenderPlayerView
  • HMS_fetch_rules: Return NULL if the curl connection failed, instead of producing garbled rules (should hopefully finally fix the MS crash on startup)
  • Try to prevent potential infinite SIGARBT hang in signal handler
  • Fix potential crash on nix while quitting
  • Fix sound falloff calculation overflow
  • Fix a few buffer overflows (lmao driftgauge)
  • Always use system-specific path seperator (should fix some wad loading issues on Windows)
  • Some general code cleanup
  • Added workaround for issues with Nvidia gpus on linux XWayland with screentextures enabled (needs a gpu capable of framebufferobjects)

SRB2Kart Saturn - v7.1

Features

  • Added "showdownloadprompt" cvar to automatically skip the download addons prompt on server join when addons are needed to be downloaded
  • Added a console shortcut to "map" command for choosing a random map "map ?"

Added new music features

  • "keepmusic" -- dont restart the current music when restarting the map
  • "skipintromusic" -- skip the intro fanfare/encore droning sound and play music instantly on mapload
    *This stuff is also in advanced sound options menu

Improvements

  • Make "skin" command behave more like the "map" command (ex you can now only type "skin klonoa" instead of "skin klonoa_lunatea")
  • Unify texinputs in the game (so things like text boxes are able to handle shortcuts like copy paste etc)
  • Refactored TTY input handling (CTRL + D now shuts down the game, etc.)
  • Expose replay freecam to lua as "replayfreecam"
  • Completely hide director toggle text after 13 seconds and after 4 seconds in replays
  • Also hide the text and disable director when theres only one player in game and youre watching them (ex time attacking)
  • Precalculate automap and minimap icon bounding box on mapload instead of every frame
  • Readd optimizations to OpenGL Sprite sorting and Polyobject sorting
  • Added a toggle for the water ripple effect "waterripples" (only the Effect on planes not the screen effect)
  • Optimized "Blank" and "Storm - no rain" weathers (PRECIP_BLANK and PRECIP_STORM_NORAIN / weather = 4 & 5)
  • Let SOC header also be able to set PRECIP_BLANK / weather = 4 to preload weather mobjs on mapload
  • If corrupted save received from server, leave netgame

Some improvements to gamestate resending

  • Things which should make it alot less likely for you to end up off course -
  • Send ticcmds while youre in a desynched state (client will now still send inputs to the server while in desynched state)
  • Set camera angle to approximate where you intend to steer
  • camera subsector will be set to the proper subsector

Netcode Fixes

  • The client will now send a packet on join to identify itself as running on Saturn, to ensure the right synch code can be used before desynching first (should also prevent server lag on mass desynching)
  • The server now checks if the gamestate is currently being resent to someone using Saturn and skips synch checks until the gamestate is resent to that node to prevent server lockups and lag
  • The server now wont pause when a Saturn player is resynching (mass desynchs where non saturn players desynch or just non saturn players will still cause the server to pause/lag)
  • Prevent PlayerJoin hook from always rerunning when resending gamestate (prevents spam and issues on resynch)
  • Prevent Mapload triggers from always rerunning when resending gamestate (prevents spam and issues on resynch)
  • Prevent some debfile spam when players try to join server during leveloading
  • Attempt to fix a lua panic when unarchivieng extvars (print error to console instead. Not sure if it would be safe for game to read from save afterwards though)
  • Add few checks to prevent game crashing if netgame archive becomes corrupted
  • Fix gamestate resend counter never properly resetting (on rejoin whoever got the node of whom got kicked before had less chances for getting the gamestate resent lol)
  • Prevent some SOCK_Send crashes from occuring in bad netconditions
  • Prevent a division by zero in curl

Fixes

  • Skip map marker files in vres_getmap (some addons didnt use real markers but random files for markers, which could make the game crash if it is a png for example)
  • Fixed an issue that caused precip (weather effects) to spawn alot more often than it should, resulting in very bad performance on certain maps
  • Fixed an issue that caused some sounds with origin to not play (ex. shatterblocks)
  • Fixed some issues with replay rewinding
  • Hide the driftgauge when using replay freecam
  • Hife the "viewpoint" text when using replay freecam
  • Fixed replay camera interpolation when the replay is paused
  • Make "showdirectorhud" actually save
  • Fixed director still running and trying to switch your view while using spectator or when using replay freecam
  • Only allow director toggling with button when youre actually specating someone (prevents toggling director midgame lol)
  • Fixed Main Menu / HUD interpolation not working on some conditions
  • Prevent a potential overflow when holding controller dpads in menus
  • Fixed "inaccurate" fps counter not behaving like vanilla karts fps counter and thus being too accurate
  • Load mappalette before loading mapdata (maybe finally hopefully mitigates the vb raceway issue on non palette rendering ogl lmao)
  • Fixed a small bug in OpenGL Palette Rendering for fog block brightness (now it should match up with software renderer)
  • Fixed some issues with OpenGL shearing ("software perspective")
  • Fixed a crash in software renderer sprite drawing
  • Fixed laptimes for laptime flash not resetting if you spectate midround
  • Fixed issues that prevented certain birdmod music features from working without restarting the game when "cv_birdmusic" was toggled
  • Fixed some memory leaks regarding G_BuildMapTitle
  • raised MAXVIDWIDTH and MAXVIDHEIGHT to 5210 and 2880 respectively so it doesent overflow on resolutions higher than 1440p
  • Fixed some compiler warnings when compiling with an old sdl version
  • Fixed TTY converting everything to lowercase
  • Fixed TTY having insane input lag

SRB2Kart Saturn - v7.2 Latest

Another small bugfix release yay!
For everyone using Saturn v6 and up it is highly recommended to update since there were a few netsynch issues with versions starting from v6
esp Server owners!

NOTE: there is an extra PGO (Profile Guided Optimization" build availible for 64bit Windows, which aims to improve performance even further;
do note that the non PGO builds also have support for FBO downsampling disabled;
So if you face issues with the PGO build try the non PGO ones
(For nix users FBO downsampling is enabled by default since it works around issues with Nvidia GPUs in certain configurations, however if you wish to build without support add "NOSCREENFBO=1" to your compile args

--Improvements--

  • Refactored postimg screen effects, so they can work with each other (fixes things as underwater/heatwave screen effect not working with encoremode etc.)
  • Moved autoload file loading to game startup again, but check for if autoload files contain skins, lua or soc files, if so, move it to postload automatically to prevent issues in netgames (having both autoload and postload run at mapstart could lead to super long netgame jointimes and "freezes")
  • Optimized OpenGL portal clipping (fixes some visual bugs and better performance)
  • Some optimizations and cleanup to rendering code
  • Some fixes and optimizations to Weather sound calculation
  • Added "shift+insert" shortcut for pasting text
  • Use precalculated minimap stuff for v.drawOnMinimap aswell instead of calculating stuff for it every frame
  • Let director be toggled from spec cam again (going from director/spycam back to spec cam auto disables director now; spec cam control text now also shows director toggle button)

--Fixes--

  • Fixed mapmusname global in lua being renamed to (*mapmusname) (scripts trying to read just "mapmusname" would break)
  • Fixed off-by-one error in lib_setSfxInfo (some sound addons desynched vanilla clients and vice versa ;funnydeaths etc.)
  • Removed some not vanilla synchsafe "mobjwasremoved" checks and replaced them just will "NULL" pointer checks instead
  • Fixed crashes and other issues with "map ?" (map random) command
  • Fixed A_Lua not removing error handler from lua stack
  • Fixed some rendering issues and crashes in software renderer
  • Fixed "MFE_DRAWONLYFORP" flags being broken
  • Fixed minimap displaying an old minimap on maps that have no minimap (ex touch the jelly)
  • Fixed some issues with "small minimap icons"
  • Fixed being unable to load localskins when the skin limit was reached
  • Fixed being unable to load skins when the localskin limit was reached (oops lol)
  • Added alot more FBO downsampling safety checks to ensure it does not do anything when disabled or not supported
  • Ignore slope rotation distance setting in splitscreen due to bugs + small sprite rotation code cleanup
  • Downgraded lzf lib again due to potential issues on Windoze builds

Files

Srb2Kart-Saturn 7.2 64bit
External
Jun 07, 2024
Srb2Kart-Saturn 7.2 32bit
External
Jun 07, 2024

Get Sonic Robo Blast 2 Kart ( Fan Page )

Leave a comment

Log in with itch.io to leave a comment.