You are viewing a potentially older version of this package. View all versions.
Teemaw-Calico-0.7.1 icon

Calico

Calico; anti-lag improvements & client optimizations.

Date uploaded 2 months ago
Version 0.7.1
Download link Teemaw-Calico-0.7.1.zip
Downloads 9075
Dependency string Teemaw-Calico-0.7.1

This mod requires the following mods to function

NotNet-GDWeave-2.0.14 icon
NotNet-GDWeave

Mod loader & runtime script patching for Godot

Preferred version: 2.0.14

README

Calico

Calico; anti-lag improvements & client optimizations for WEBFISHING.

About

Calico aims to improve the performance of WEBFISHING in multiplayer scenarios.

Improvements & optimizations

  • Dedicated thread for compression and sending packets
  • Dedicated thread for receiving and decompressing packets
  • GPU instancing of common meshes (all trees, logs, bushes, mushrooms, etc.)
  • Smoothing camera panning/motion by decoupling it from physics updates
  • Reducing physics update rate
  • Skipping cosmetics loading for players that have not changed
  • Optimize player animation updates
  • Other player processing optimizations (caught item, held item, sound effects)
  • QoL features
    • Grant other users moderation permissions to kick, ban, and unban
    • Lobby IDs which cannot be spoofed for joining lobbies
  • Other bug fixes

Install

Thunderstore (Recommended)

Visit the Thunderstore page for Calico.

Manual

  1. Download the latest release zip
  2. Unzip into your WEBFISHING directory such that the Teemaw.Calico folder ends up in WEBFISHING\GDWeave\mods\
  3. Optionally edit the configuration file in WEBFISHING\GDWeave\configs\Teemaw.Calico.json
  4. You're done!

Configuration

The Teemaw.Calico.json configuration file has the following schema and default values:

{
  "DynamicZonesEnabled": true,
  "LobbyQolEnabled": true,
  "MapSoundOptimizationsEnabled": true,
  "MeshGpuInstancingEnabled": true,
  "MultiThreadNetworkingEnabled": true,
  "PlayerOptimizationsEnabled": true,
  "ReducePhysicsUpdatesEnabled": false,
  "SmoothCameraEnabled": true,
  "ZzCompatOverrideMayCauseCrash": false
}

DynamicZonesEnabled

Normally, the game will load and hold all zones (shop, aquarium, islands, etc.) in the scene tree regardless of where your character currently is. Enabling this will dynamically attach and detach zones from the scene tree as you move between them.

Files modified:

  • res://Scenes/Map/main_map.gdc
  • res://Scenes/Map/Tools/transition_zone.gdc

LobbyQolEnabled

This brings a few QoL features to lobbies:

  • Peer moderators - hosts running Calico can grant other Calico users permissions to kick, ban, and unban.
  • Lobby IDs - unique to each lobby and cannot be spoofed.
    • A new button in the Esc menu lets you see and copy this ID.
    • Other players with Calico installed can join with this ID.
  • Fixes a bug in vanilla where player names are blank in some places.

Files modified:

  • res://Scenes/Entities/Player/player.gdc
  • res://Scenes/HUD/Esc Menu/esc_menu.gdc
  • res://Scenes/HUD/Playerlist/player_entry.gd
  • res://Scenes/HUD/Playerlist/playerlist.gd
  • res://Scenes/Menus/Main Menu/main_menu.gdc
  • res://Scenes/Singletons/SteamNetwork.gdc

MapSoundOptimizationsEnabled

This enables optimizations relating to sound effects of the map.

File modified:

  • res://Scenes/Map/Props/bush_particle_detect.gdc

MeshGpuInstancingEnabled

Enabling this will reduce the number of GPU draw calls by combining calls for multiple copies of the same mesh into a single call. Game objects which currently benefit from this include trees, bushes, mushrooms, water, etc.

File modified:

  • res://Scenes/Map/main_map.gdc

MultiThreadNetworkingEnabled

This enables dedicated send and receive threads for sending and reading network packets. Packet compression and decompression are also offloaded from the main thread.

File modified:

  • res://Scenes/Singletons/SteamNetwork.gdc

PlayerOptimizationsEnabled

This enables patching of player scripts to optimize cosmetic loading, animation updates, sound effects, etc.

Files modified:

  • res://Scenes/Entities/actor.gdc
  • res://Scenes/Entities/Player/guitar_string_sound.gdc
  • res://Scenes/Entities/Player/held_item.gdc
  • res://Scenes/Entities/Player/player.gdc
  • res://Scenes/Entities/Player/sound_manager.gdc

ReducePhysicsUpdatesEnabled (Disabled by default)

[!IMPORTANT]
It's highly recommended to set SmoothCameraEnabled to true if this option is enabled. Normally, the game camera's movement is tied to the physics update rate. If you enable reduced physics updates without smooth camera, it may feel like the game is running slower during camera panning or player movement. SmoothCameraEnabled will decouple camera updates from physics updates.

This reduces the physics update rate to free up CPU cycles for other tasks. This will patch a few processes that are tied to the normal physics update rate such that they feel the same with a reduced update rate.

There are many game processes which are tied to the physics update rate. If you see animations being slow or weird, this is probably why. Like any issue you may have with the mod, please feel free to create an issue or PR.

Files modified:

  • res://Scenes/Entities/Player/Face/player_face.gdc
  • res://Scenes/Entities/Player/player.gdc
  • res://Scenes/HUD/playerhud.gdc
  • res://Scenes/Minigames/Fishing3/fishing3.gdc
  • res://Scenes/Singletons/globals.gdc

SmoothCameraEnabled

This option decouples camera position updates from the physics cycle. This will help make the game feel more responsive if your framerate is faster than the physics update rate. Normally, the game runs physics at 60Hz. Without this option enabled, it may feel like your game is locked to 60fps during camera panning or player movement. This is much more noticeable with the reduced physics update rate of ReducePhysicsUpdatesEnabled, so is highly recommended to be enabled along with ReducePhysicsUpdatesEnabled.

Files modified:

  • res://Scenes/Entities/Player/player.gdc
  • res://Scenes/Entities/Player/player_headhud.gdc
  • res://Scenes/Entities/Player/tail_root.gdc

ZzCompatOverrideMayCauseCrash

By default, Calico will check your loaded mods list against a list of known incompatible mods. This allows Calico to disable certain patches that would have caused a crash. However, Calico cannot know if a previously conflicting mod has been updated with a fix.

If a previously conflicting mod has been fixed, setting this option to true will override the compatibility checks. Calico will then faithfully respect the patches enabled in your config.

Files modified when set to false:

  • res://Scenes/Menus/Splash/splash.gdc

(There are no modified files when set to true.)

Troubleshooting

If Calico is causing your game to crash, it's likely that there is a conflict with another mod. Here are some general guidelines to help get your game running by disabling some of Calico's features.

[!TIP]
If you are experiencing a conflict using Calico with some other mod, feel free to open an issue or PR. While we work on a fix, try the following.

I have a guitar mod

Try disabling PlayerOptimizationsEnabled.

I have a fishing mod

Try disabling ReducePhysicsUpdatesEnabled.

I have a custom map

Try disabling DynamicZonesEnabled, MeshGpuInstancingEnabled, MapSoundOptimizationsEnabled, or some combination of the above.

I have other camera mods

Try disabling SmoothCameraEnabled, ReducePhysicsUpdatesEnabled, or both.

I have other networking related mods

Try disabling MultiThreadNetworkingEnabled.

Building

To build the project, you need to set the GDWeavePath environment variable to your game install's GDWeave directory ( e.g. G:\games\steam\steamapps\common\WEBFISHING\GDWeave). This can also be done in Rider with File | Settings | Build, Execution, Deployment | Toolset and Build | MSBuild global properties or with a .user file in Visual Studio.

CHANGELOG

0.7.1

  • Fixed compatibility with WebfishingRichPresence and TitlesPlus.
    • This was a regression following 0.7.0.

0.7.0

  • Updated patches for WEBFISHING v1.12
    • 0.6.0 also works on v1.12 but contains unnecessary patches.
    • Removed the player desync fix from LobbyQolEnabled.
      • This is now fixed in the vanilla game.
  • Added peer moderation features to LobbyQolEnabled.
    • The lobby host can grant moderation permissions to other players from the lobby list.
    • Moderators are able to kick, ban, and unban other players as if they were the host.
  • Fixed compatibility with BetterCosmeticDefaulter.
    • This was a regression following WEBFISHING v1.11.
  • ReducePhysicsUpdatesEnabled now defaults to false.
    • This was changed in 0.6.0 but was not added to the changelog.

0.6.0

  • Updated to support WEBFISHING v1.11
    • Previous WEBFISHING versions are no longer supported.
  • Added a fix for player/fishing-line/entity desync to LobbyQolEnabled.
  • Added a fix for blank player usernames to LobbyQolEnabled.
  • Removed the "Most players" filter option from LobbyQolEnabled.
    • This is now included in the vanilla game.

0.5.2

  • Disables patches if known incompatible mods are loaded.
    • Added a popup to show which features/mods are incompatible.
    • Added a config option to override this check.
  • Fixed crashing when loading into most custom maps with MeshGpuInstancingEnabled.
    • Meshes will not be instanced, but the game will no longer crash.

0.5.1

  • Made the lobby list scroll grabber larger.
  • Fixed the player count sort filter overflowing.

0.5.0

  • Fixed compatibility issues with Lure.
    • This fixes a crash when joining a lobby with Lure and certain mods installed.
  • Added lobby QoL patches option.
    • Lobby IDs are now included in this option.
    • Adds an option at the main menu to sort lobbies by player count.
    • Fixes the lobby list not showing 1000 lobbies.
    • Hides join/leave messages for players who are blocked.
  • LobbyIdsEnabled has been removed. It is now part of LobbyQolEnabled.

0.4.2

  • Added searching for lobbies by unique ID.
    • This is currently experimental and disabled by default.
    • This adds the option to view and copy the lobby's unique ID from the Esc menu.
    • If enabled, lobby IDs copied from the menu can be used as a lobby code.

0.4.1

  • Fixed loading screen timeout patching.
    • It actually works now.

0.4.0

  • Added loading screen timeout.
    • This will get you past the loading screen when you're unable to connect to another player in the lobby.
  • Added map sound optimizations.
    • This detaches inactive audio player nodes from the scene tree.
  • Optimized actor signals with PlayerOptimizationsEnabled.
  • Optimized player sound effects and guitar audio with PlayerOptimizationsEnabled.
    • This detaches inactive audio player nodes from the scene tree.

0.3.4

  • Fixed changing accessories with PlayerOptimizationsEnabled.

0.3.3

  • Fixed camera jitter when player is rotated on the X axis (pitch) with SmoothCameraEnabled.
  • Improved compatibility with some system environments.

0.3.2

  • Fixed camera jitter when player scale changes with SmoothCameraEnabled.

0.3.1

  • Fixed the direction of player rotation on the Z axis (roll) with SmoothCameraEnabled.
    • This fixes the rotation of the player when using Ragdoll for example.
  • Improved linearity of the camera with SmoothCameraEnabled.
    • This should help with player movement feeling strange/off. If it still feels strange, v-sync may also help.

0.3.0

  • Added dynamic zones
    • Zones are dynamically detached and attached to the scene tree as you move between them.
    • This is currently disabled by default in the config
  • Improved compatibility with other mods that hook into _controlled_process
    • This fixes compatibility with YAAM
  • Fixed a crash when PlayerOptimizationsEnabled is disabled and SmoothCameraEnabled is enabled.
  • Fixed the direction of player rotation on the X axis (pitch) with SmoothCameraEnabled.
    • This fixes the rotation of the player when using Flyfishing for example.
  • Minor changes to PlayerOptimizationsEnabled

0.2.1

  • Fixed some rocks/objects not having collision with MeshGpuInstancingEnabled.
  • Fixed water not respecting the game's quality setting with MeshGpuInstancingEnabled.
  • Fixed player tail attachment jitter with ReducePhysicsUpdatesEnabled enabled.
    • As of this version, tail attachment is now patched by SmoothCameraEnabled. You will need SmoothCameraEnabled to enable the fix.
  • Fixed player rotation speed with ReducePhysicsUpdatesEnabled.
  • Fixed dialog cooldown speed with ReducePhysicsUpdatesEnabled.
  • Fixed player size scaling with SmoothCameraEnabled.
  • Fixed compatibility with SmoothCam with SmoothCameraEnabled set to false.
    • SmoothCameraEnabled remains incompatible with SmoothCam.
  • Removed a debug log. Sorry for polluting your GDWeave logs!

0.2.0

  • Added smooth camera mode -- highly recommended if reducing physics updates
  • Added water meshes to GPU instancing
  • Fixed compatibility with BetterCosmeticDefaulter
  • Fixed face animation duration with reduced physics updates

0.1.1

  • Initial release