A skyline mod that enables manual choosing of desired input latency in Smash Ultimate, compatible with every online mode.

Overview

Latency Slider (Definitive Edition)

This is a fork of - and an improvement upon - the original "Arena Latency Slider". Unfortunately, upon SSBU updating to 13.0.2, the original author decided to remove the source code from public view, and in its place publish a severely neutered version of the original skyline plugin.

However, the beauty of the Internet is that nothing is truly lost, and the beauty of open source is that anyone can make changes and publish different versions of a piece of software.

Hence, I present to you Latency Slider DE (Definitive Edition).

IMPORTANT: This build is for use with SSBU v13.0.2 ONLY!

Features / Usage

  • As with the original mod, you can select your desired input delay in any arena (host or otherwise).
  • Additionally, you can also select your desired input delay on the character select screen. If you're in the CSS for quickplay / elite, the selected latency will also be displayed at the top. However, you can (blindly) adjust your input latency on any CSS, not just the quickplay one (however, only the quickplay one will display your input latency).
  • The selected input delay will carry over to quickplay / elite / tournament mode.
  • You can use D-Pad up / down in the arena screen or CSS to hide / show the input delay text (useful e.g. if you're streaming and afraid to get reported to the Nintendo ninjas).

How does it work?

Refer to the original author's explanation in the original README.

How to install?

You will need a moddable switch with atmosphere already installed on it. If you don't have this yet (or don't even know what I'm talking about), look into Switch modding in general first, then come back here.

  1. Download and install Skyline by copying the exefs directory into the folder atmosphere/contents/01006A800016E000 (create if it doesn't exist yet)

  2. Download the latest libzlatency_slider_de.nro from this page

    Optional: If you have the knowledge, you can also download libzlatency_slider_de.sig and use this file to verify the integrity of libzlatency_slider_de.nro. This is mostly useful if you've downloaded the .nro from a different place and want to verify that it is one built by me. You can safely skip this optional step however, if you have no idea what I'm talking about here.

  3. Copy the libzlatency_slider_de.nro to your SD card, into the folder atmosphere/contents/01006A800016E000/romfs/skyline/plugins (create if it doesn't exist yet)

  4. Boot up the game, go online, and open up an arena. Confirm the mod is working by observing the room id text in the top right (it should show you your input latency now).

Congratulations, Smash Ultimate online is now actually playable!

Building

If you have the necessary tooling (rustup, cargo and cargo-skyline), you can simply run

cargo skyline build --release

If you do NOT have the necessary tooling, the quickest way for you to get set up is to download and install Nix, then proceed to enable Nix flakes, and run this command to enter a dev shell:

nix develop .

Nix will download and make available all the necessary dev tools for you to build this plugin. Then you can proceed to run the build command from above.

Contributing

If there are any Nix enjoyers out there who feel like packaging skyline's rust toolchain so we don't have to rely on cargo-skyline anymore and can introduce fully reproducible builds, feel free to submit a pull request! If there are any modding enjoyers out there who want to expand upon this plugin, feel free to do the same!

FAQ

Am I allowed to modify / redistribute this software?

Yes, so long as you also publish the source code of your modification. View details in the license.

Will this format my SD Card?

No. But don't take my word for it, the source is available for anyone to see. Feel free to analyze it yourself, or have someone you trust do it for you. Don't use my binary, but compile it yourself (or, again, have someone you trust do it for you). This is one of the benefits of open source, you don't have to trust, you can verify.

Will I get banned if I use this mod on qp / in arenas?

The short answer is "I don't know, but probably not". The slightly longer answer is that using any mod (online or offline) carries risks with it. However, I think that the biggest risk when using this mod is other people finding out you have it (e.g. because you publicly posted a screenshot with the latency slider text visible) and proceeding to mass report you to Nintendo. Like the original, the mod doesn't send any extra network packets (arenas or otherwise), so short of Nintendo scanning your SD card, there shouldn't be any way to automatically detect it.

Does this mod send any additional network packets?

No. See above.

Is this mod compatible with the training mode modpack?

Yesn't. latency-slider-de and training-modpack both hook the draw function of the game in the same place. While this hasn't caused any issues for me or anyone else I've talked to running both mods at once (since v0.2.1), this isn't technically supported. If you notice getting crashes, I suggest disabling one of the two, depending on your current use case.

Is this mod compatible with the original arena latency slider, or other latency slider mods?

NO. These essentially do the same thing but differently, running multiple of these mods at the same time is very likely to cause your game to crash. If you want to run this mod, you should remove / disable all other "latency slider" type mods first.

Is this mod compatible with the VSync mod?

The VSync mod, aka "1 frame less delay", aka less-delay is compatible with this mod. I maintain a repo for that one as well, over here: https://github.com/xNaxdy/less-delay

Are you fine with people using this mod to cheat in online tournaments, or on qp?

The short answer is "how people use this mod is up to them". The long answer is this: First, for quickplay, I don't view using this mod as cheating, but rather making the game playable, since there's nothing on the line (if you think GSP holds any meaningful value, I suggest an immediate and thorough psych evaluation), same as in arenas.

When it comes to online tournaments, for those without prizes my views are the same as those for quickplay. Now, for the others, I am of the opinion that those with significant prizes should have died together with COVID lockdowns. The reason is that online, even without any sort of mods, is inherently random and unfair. Network interference, packet loss, and all the fun things aside, since SSBU determines the input delay on the client side, it is entirely possible that two players play the game with different input delays as is, even without the latency slider. So, if anything, latency slider makes online tournaments fairer, but only if both players have it and set it to the same delay, of course. Note that I said fairer and not fair, because you still have random lag spikes which may impact one player more than the other (e.g. if a huge lag spike happens during Ness' PK thunder recovery, or during a frame-tight combo).

Additionally, even without latency slider, there are mods (software and hardware) you can use to reduce your input delay when playing with others (both on quickplay and in arenas). less-delay just shaves off 1 frame of input delay no matter the game mode (even offline), and there are 3rd party GC adapters that, at best, improve input delay by another frame and, at worst, make the controller input delay much more consistent than the OG.

The bottom line here is that online tournaments have never been - and will never be - "fair", and if there's a will to cheat, there's a way (even without this mod). Unless you can ensure a 100% stable connection, equal and consistent input delay for both parties, and proctor all players to ensure they aren't using any special hardware to improve their play, this entire discussion is pointless to me.

Final Note

This fork is published under the original project's AGPL license. Though I pinky promise to never take this repo offline or privatize the source code in any way, I encourage you to fork it and re-share it as much as your heart desires.

Comments
  • Better dpad input handling.

    Better dpad input handling.

    The current way inputs are handled is terrible. This makes it less terrible.

    I don't really like my implementation, but the ninput library sucks, this was the only way I could get it to work.

    Now, 1 input = 1 change to the UI.


    Unrelated side-note (there's no issue tracker), this mod doesn't work with the training modpack (the training modpack will crash). image

    If you have any idea of how to fix it, that would be nice. Atm I'm using my own version of the latency mod which has the same functionality as yours, but does not modify text on the CSS (so it can be used in conjunction with the training mod pack).

    opened by avahe-kellenberger 6
  • Kicked from arena mid-game

    Kicked from arena mid-game

    Attempting to see if the ARCropolis crash was fixed after your fix for #19, I was kicked from an arena very shortly after the match had started (maybe 5 or 10 seconds).

    I wasn't actually playing this game, but spectating while I was next in line to play. Have you tested the fix yourself, or have you ever been kicked from an arena?

    Thanks.

    opened by avahe-kellenberger 3
  • ARCropolis seems to crash in arenas sometimes with this mod installed

    ARCropolis seems to crash in arenas sometimes with this mod installed

    Had a handful of reports from people whose ARCropolis causes them to crash when readying in an arena with this mod installed. Not yet sure what exactly causes this, as everything is fine on my end even with ARCropolis installed.

    The message it crashes with is:

    ARCropolis has panicked at 'Invalid UTF-8 Sequence: invalid utf-8 sequence of 1 bytes from index 9`, L:\.cargo\git\checkouts\skyline-rs-e81b579472bbf472\3ce8983\src\lib.rs:77:19
    
    bug 
    opened by Naxdy 1
  • What's the reasoning behind this scummy behavior?

    What's the reasoning behind this scummy behavior?

    Quite frankly, I'm wondering why you decided to modify and upload another person's work without their consent and directly going against their wishes. Is it because of that $50 bounty on twitter? Or because you want people to have an easy way of cheating? Being able to reduce the latency for QP and hiding the text certainly seems to prove that you're fine with being scummy and trying to encourage cheating.

    opened by Coolsonickirby 1
  • "STEALTH_MODE" Enabled Shows Only "Quickplay"

    When "STEALTH_MODE" is enabled, the text on the character selection screen for elite smash only displays "Quickplay". It should correctly display "Quickplay (Elite Smash)".

    bug 
    opened by nuresengogo 0
Releases(v0.2.3)
  • v0.2.3(Feb 22, 2024)

  • v0.2.2(Feb 21, 2024)

    Changes:

    • Improved the way the text is drawn on the quickplay CSS, which could potentially introduce performance issues in previous versions

    Quick notes since I keep getting asked this:

    • This mod is compatible with less-delay (I have a repo for that one as well, here: https://github.com/xNaxdy/less-delay )
    • Ensure you don't have any other "latency slider" mods present, or your game might crash when closing / exiting arenas (or under other circumstances)
    • This mod does not send any additional packets
    • While running this together with training mode modpack works for me and everyone else I've talked to, your mileage may vary, since this plugin and training mode modpack hook the same function. If you want to be on the safe side, don't run both at the same time (however if you do, the worst thing that can likely happen is you crash).
    Source code(tar.gz)
    Source code(zip)
    libzlatency_slider_de.nro(64.00 KB)
    libzlatency_slider_de.nro.sig(566 bytes)
  • v0.2.1(Feb 21, 2024)

    Changes:

    • Fix integration with the Ultimate Training Modpack. This file is now called libzlatency_slider_de.nro to ensure it gets loaded after the training modpack, and hooks the game's draw function in a different way to ensure it won't conflict.
    • Also added a .sig file that can be used to verify that the binary has indeed been created by me (uses the same GPG key as for my commits here).
    Source code(tar.gz)
    Source code(zip)
    libzlatency_slider_de.nro(64.00 KB)
    libzlatency_slider_de.nro.sig(566 bytes)
  • v0.2.0(Feb 20, 2024)

Owner
null
IDP2P is a peer-to-peer identity protocol which enables a controller to create, manage and share its own proofs as well as did documents

IDP2P Experimental, inspired by ipfs, did:peer and keri Background See also (related topics): Decentralized Identifiers (DIDs) Verifiable Credentials

null 5 Oct 31, 2022
Imagine your SSH server only listens on an IPv6 address, and where the last 6 digits are changing every 30 seconds as a TOTP code...

tosh Imagine your SSH server only listens on an IPv6 address, and where the last 6 digits are changing every 30 seconds as a TOTP code... Inspired fro

Mark Vainomaa 409 Oct 23, 2022
Make every request from a separate IPv6 address.

Http Proxy IPv6 Pool Make every request from a separate IPv6 address. https://zu1k.com/posts/tutorials/http-proxy-ipv6-pool/ Tutorial Assuming you alr

zu1k 280 Dec 31, 2022
MASQ Network 121 Dec 20, 2022
An online version of the popular game four in a row, written in Rust on the server side and Flutter + Dart on the client.

Four in a Row - Server An online version of the popular game four in a row, written in Rust on the server side and Flutter + Dart on the client. Downl

Filippo Orrù 8 Sep 16, 2022
Small MQTT router. Allows creating multiple inputs/outputs and run action when input triggers.

MQRT Small MQTT router. Allows creating multiple inputs/outputs and run action when input triggers. Features multi-(input/output) multiple actions tie

Nazar Gondaruk 0 Jan 4, 2022
A STOMP client in Rust. Compatible with RabbitMQ, ActiveMQ.

stomp-rs stomp-rs provides a full STOMP 1.2 client implementation for the Rust programming language. This allows programs written in Rust to interact

Zack Slayton 84 Dec 4, 2022
A decentralized, censorship-resistant, and incentive-compatible packet-routing overlay network

About Earendil is a decentralized, censorship-resistant packet-routing overlay network designed for performance and censorship resistance. It enables

Eric Tung (Yuhao Dong) 8 Jun 24, 2023
A Skyline plugin for Super Smash Bros. Ultimate that enables the use and modification of stage features that are otherwise hardcoded into the game.

stage_config A Skyline plugin for Super Smash Bros. Ultimate that enables the use and modification of stage features that are otherwise hardcoded into

TNN 4 Oct 14, 2023
Plugin to request a relaunch when uploading a Skyline plugin through cargo skyline

restart-plugin A skyline plugin for allowing cargo-skyline (or other tools) to restart your game without you having to touch your controller. Install

null 1 Nov 21, 2021
Proxies all incoming connections to a minecraft server of your choosing, while also logging all ping and login requests to a json file and discord webhook.

minecraft-honeypot Proxies all incoming connections to a minecraft server of your choosing, while also logging all ping and login requests to a json f

Cleo 19 Jan 4, 2023
Platform fighter, inspired by Super Smash Bros.

GUT CHAMPION Summary Gut Champion is a platformer fighter inspired by Super Smash Bros. The goal is to knock the enemy off stage. The more you hit you

Eino Korte 2 Sep 19, 2022
fast rust implementation of online nonnegative matrix factorization as laid out in the paper "detect and track latent factors with online nonnegative matrix factorization"

ONMF status: early work in progress. still figuring this out. code still somewhat messy. api still in flux. fast rust implementation of online nonnega

null 2 Apr 10, 2020
Online-statistics is crate 🦀 for Blazingly fast, generic and serializable online statistics

Online statistics in Rust ?? for Blazingly fast, generic and serializable online statistics. Quickstart Let's compute th

Adil Zouitine 29 Dec 30, 2022
TestDrive automatically scrapes input/output data from BOJ(Baekjoon Online Judge) and runs tests for your executable binary file!

?? TestDrive What does it do? TestDrive automatically scrapes input/output data from BOJ(Baekjoon Online Judge) and runs tests for your executable bin

Hyeonseok Jung 3 Mar 5, 2022
Generate perfect Vyper compatible code headers every time.

headers-vy Generate perfect Vyper-compatible code headers every time. Build You need Rust and Cargo installed on your machine. See the installation gu

t11s 15 Feb 12, 2023
gt your desired path with minimal keystrokes

goto (gt) gt is a simple and user-friendly way to jump to your indexed directories. gt is short for "goto", which is basically what you want to do wit

Sylvester Chin 25 Nov 7, 2022
Split text into semantic chunks, up to a desired chunk size. Supports calculating length by characters and tokens

Large language models (LLMs) can be used for many tasks, but often have a limited context size that can be smaller than documents you might want to use. To use documents of larger length, you often have to split your text into chunks to fit within this context size.

Ben Brandt 4 May 8, 2023
Generate manual pages from mdBooks!

mdbook-man Generate man pages from mdBooks! Usage To use mdbook-man you'll first need to install it with: $ cargo install mdbook-man And add the follo

Wojciech Kępka 22 Oct 6, 2022
Converts a MO loadorder to loot rules for manual loadorders

lootifier Converts a Mod Organizer loadorders to loot rules for manual loadorders Long Description This tool is meant for people who want to share mod

alsa 4 Nov 12, 2022