Quick display controls: Categories · Sections · Everything ·
```
#[Setting up](setup) {
#[Installing NTT](install) {
##{
-- Right-click Nuclear Throne in your Steam library, pick Properties - Local Files - Browse local files.
-- Extract the NTT archive into the Nuclear Throne' directory.
-- Run "NTT-Assemble" executable, pick 1 (Install) to assemble a NTT executable.
If you get a "can't find assets in data.win" error, remove the \[probably leftover\] data.win file from game directory and retry.
If all is well, a NuclearThroneTogether executable will appear and you'll be able to run the mod from it (and/or add it as a shortcut to your Steam/etc. library).
}
The mod is told apart from the base game by the fact that it displays the version+notice at the top of main menu.
}
#[Uninstalling NTT](uninstall) {
##{
-- Right-click Nuclear Throne in your Steam library, pick Properties - Local Files - Browse local files.
-- Remove the (modified) `NuclearThrone.exe`.
-- Rename `NuclearThrone-(datetime).exe` back to `NuclearThrone.exe`.
If you have installed NTT multiple times, the earliest-dated `NuclearThrone.exe` will be the base game, while the rest will be older NTT versions.
}
If all is well, the game will no longer display a version notice on the main menu.
Alternatively, if you've installed mod on Steam, you can just "verify cache".
}
#[Updating NTT](update) {
When a Nuclear Throne Together update comes out, a notice is shown on top of the main menu.
Installing the update is a matter of downloading the new version and installing it on top of existing one - you do not have to uninstall the old version prior.
}
#[Supported game versions](support) {
The mod was confirmed to work with the following versions of the game:
--{
-- Steam u98 / u99
-- Humble u98 / u99
-- GOG u98 / u99
}
The mod will *not* work if installed on top of older versions of the game or other mods (majority of which are based on u19).
}
#["Couldn't find steam_api.dll"](steam_api) {
If you are using a DRM-free version of the game and get a
"couldn't find steam_api.dll" error upon running,
toss literally any (even non-functional) `steam_api.dll` into the game directory
so that it can fail to load it and move on.
}
#["NTT-Assemble is not a valid Win32 application"](invalid_win32_app) {
On select machines running Windows XP, NTT-Assemble simply ceases to launch for unidentified reason.
The solution is usually to use a machine running a newer version of Windows
(or sending someone the files) to patch the game files, moving them back afterwards.
}
#["NTT-Assemble is a virus"](virus) {
It can occur that certain versions of certain antivirus programs can consider NTT-Assemble (mod's patcher program) to be a virus. This is a false positive, supposedly caused due to suspicion arising from the fact that program copies parts of game' executable to assemble a new one. In case that happens for you, there's a bunch of ways you can resolve this:
--{
-- Try updating the "virus definitions" in the antivirus program.
-- "Whitelist" the file in the antivirus program so that it lets you run it.
NTT-Assemble can be removed once it assembles the new NuclearThrone executable - the mod does not need it to function.
-- Have someone send you the resulting NuclearThrone executable (~110MB).
The modified game executable is never considered a virus.
-- Run NTT-Assemble in a sandboxed environment (e.g. Sandboxie) and copy back the resulting executable (for same reasons as above).
-- Compile NTT-Assemble by yourself from the [source code](https://bitbucket.org/yal_cc/ntt-assemble) to be sure (requires Visual Studio and basic understanding of it).
}
}
#[On Mac/Linux support](mac-linux) {
Re-writing this section 4 years after NTT's initial release,
it seems unlikely that NTT will be available on Mac/Linux too soon, if ever.
Initial issues with getting cross-platform multiplayer to work has been
since accompanied by a number of native extensions (such as for loading shaders)
that are Windows-only, 32-bit/64-bit differences, and increasingly nightmarish changes
to Mac signing requirements.
The mod does work alright under WINE/CrossOver though.
}
}
#[Game-related](game) {
#[Game runs slowly](game-slow) {
Restart Steam and re-run the game.
It can occur for Steam API (which the mod makes heavier use of) to get "stuck" and take increasingly longer to respond. \
Restarting Steam fixes the issue.
}
#[Game runs at double speed](game-fast) {
Remove `options.ini` and restart the game.
If that does not help, re-extract `options.ini` from the archive, open it in Notepad (or equivalent) and change
```
AlternateSyncMethod=0
```
to
```
AlternateSyncMethod=1
```
before restarting the game again.
}
#[Blank screen on start](game-blank) {
It can occur that upon booting the game will appear completely black (or white).
The first step in this case is to press Alt+Enter to exit full-screen mode.
If the game window is still blank (but is making sounds), you may have to update your \
graphics drivers or try setting the game to run in Windows XP compatibility mode.
Otherwise, you can try opening `options.ini` and changing
```
VertexBufferMethod=1
```
to
```
VertexBufferMethod=2
```
before restarting the game.
}
#[Migrating save files](savefiles) {
Nuclear Throne Together uses a compatible save format but a different file name.
Versions 9900+ will automatically make a copy of base game's save for use with NTT.
If you want to copy files manually, you can do so by navigating into the save directory \
(`%LOCALAPPDATA%/nuclearthrone` on Windows) or using chat commands, e.g.
```text
/loadgame NuclearThrone.sav
/savegame NuclearThroneTogether.sav
```
to import a save file from NT to NTT, or
```text
/loadgame NuclearThroneTogether.sav
/savegame NuclearThrone.sav
```
to export a save file from NTT to NT.
}
#[Dailies/weeklies](dailies) {
Dailies/weeklies currently are not available in NTT for technical reasons -
scoreboards are hosted on ThroneButt, which does not support separating scores by game
version (or fact of NTT use, in this case).
As the result, it is not possible to implement these without disrupting the normal scores
(level generation does not match up anymore) or
reworking TB's backend just for this purpose (a process that could take weeks).
Therefore, while these may be implemented in future, it is a sizeable task that depends
on multiple people dedicating large amounts of their time to it, so you can only be patient.
}
#[Using gamepads](use-gamepads) {
If the game does not automatically recognize your gamepad, not all hope is lost
- you can use the [/gamepad](gamepad) commands to point it to the right device
explicitly. This also allows to have input devices in a different order
(e.g. P1 on gamepad and P2 on keyboard+mouse).
}
#[Using custom aspect ratios](custom-aspect-ratios) {
If you are trying to play the game with more than 2 local players,
default screen size might be a little too small.
Fortunately, starting with v9900, this can be changed via a modding function called `game_set_size(width, height)`.
So if you have 4 players and a standard FullHD screen, you could, for instance, do
```
/gml game_set_size(426, 240)
```
which would give just enough space for the additional HUDs to reside in.
If you are making total conversion mods, you may also find this to be useful.
While the game will do it's best to function at different sizes,
keep in mind that this affects the balance (and "on-screen" checks),
and is not how the game intended to be played.
You can always "add back" some difficulty with mods though.
}
#[Using custom framerates](custom-framerate) {
In NTT 9940+ you may adjust the game to run at arbitrary framerate, like so:
```
/gml room_speed = 60; current_time_scale = 30 / room_speed;
```
(you can change 60 to your desired frmaerate)
Combined with "native cursor" and "pixel mode" options, this can make the game feel incredibly smooth.
}
#[Revival modes](on-revmode) {
Revival behaviour can be changed via [/revmode](revmode) command.
}
#[Character-specific ultra mutations](on-ultras) {
Ultra mutations mode can be switched between coop-only, default-only, or both via [/ultras](ultras) command.
}
#[PvP mode](on-pvp) {
NTT does not come with a separate PvP mode out of box for the vast possibility of options that can go into such mode.
It does, however, provide the means for mods to implement such a feature, and at least one mod of such kind already exists.
}
#[Loading mods](on-loading) {
See [mod-related commands](modding) or [the wiki page](https://bitbucket.org/YellowAfterlife/nuclearthronetogether/wiki/Loading%20mods) for a full-scale tutorial.
[List of mods](https://bitbucket.org/YellowAfterlife/nuclearthronetogether/wiki/Mods/Mod%20list) can be found on wiki as well.
Newer mods can be found [on itch.io](https://itch.io/game-mods/tag-ntt).
}
#[Making mods](on-making) {
[NTT-Scripting](https://yal.cc/r/17/ntt/gml/) covers most of the API documentation;
A [short guide](https://yal.cc/ntt-modding-faq/) is available;
Some guides and reference sheets are available [on the wiki](https://bitbucket.org/YellowAfterlife/nuclearthronetogether/wiki/Scripting/Overview).
}
}
#[Online-related](online) {
#[Playing via Steam](steam) {
If you own NT on Steam, NTT will default to using Steam for online features.
That means that upon clicking "coop" you will be presented with a list of public lobbies (if any),
and in-lobbby UI will spot a "invite friends" button that opens Steam invitation overlay.\
No port forwarding is required and things are generally very nice.
On an occasion the game may fail to connect, but this is resolved by trying to connect again in a few seconds.
}
#[Playing without Steam](steamless) {
If you are using a DRM-free version of the game (or want to play over LAN),
--{
-- If you are running from Steam, you will need to disable it in "coop" menu.
-- "Host" option opens a server on the specified UDP port.
If you are not playing over LAN (or LAN simulation software such as Hamachi, Radmin VPN, or many more),
port forwarding is required.
-- "Join" option attempts to connect to the given IP-port.
For non-local play you'll need to know the person's external IP.
-- For non-local play, playing with more than 2 people may not always work as expected
due to how connectivity works.
}
}
#[Troubleshooting lag](troubleshooting-lag) {
Short-term "freezes" in online mode are usually caused by quality of internet connection.\
In short, if the connection of either of players lags, the game waits up for a player to "catch up".
The "delay" setting in lobby (and [/delay](delay) command in-game) declares both the input latency,
and a measure of "just how much" the internet connection can lag before the game will have to pause and wait.
By default, the game will attempt to pick the optimal delay automatically, but you can also change
it manually to find the optimal balance. Watching the latency in statistic overlay (Tab) may help.
}
#[Mid-game timeouts](troubleshooting-timeouts) {
As mentioned above, if there's nothing from the player, the game waits.
If there's no response from the player for a period of time (15 seconds by default),
the connection is considered to be dead and is dropped.
If you are playing with someone that has periodic connection issues, you can use the
[/timeout](timeout) command to have the game wait for them to respond for longer.
}
#[Desyncs]() {
Since the mod is fairly experimental (to say at least), you may sometimes encounter issues
such as desyncs. A desync is a situation where the game state gets out of symmetry to the point
where the game is not able to recover automatically. Connection is dropped in such case.
If you were playing without any mods loaded, see if you can replicate the issue with
[/tracksync](tracksync) option enabled, and post copies of related directories from "desyncs"
subdirectory (`%LOCALAPPDATA%/nuclearthrone/desyncs` on Windows) to allow troubleshooting
the issue.
When these occur while playing with sub-mods, chances are that the issue is with logic in one of
them, in which case you would contact the mod author to see about investigating the issue.
}
}
#[Configuration file format](conf) {
This section details the format of `NuclearThroneTogether.ini` in the game's save directory.
Sections correspond to INI sections, like
```text
[Colors]
0=#FF0000
[Visual]
VSync=1
```
Minimum NTT version is specified where appropriate.\
If it isn't, it is probably supported since at least v9921.\
Base game uses `NuclearThrone.ini` and 99r1 is on par with v9921.\
For practical reasons, only options of any remote interest are listed here.
#[Colors](conf-colors) {
#[Outlines=1]() {
Whether to draw NTT style outlines around players.
}
#[0=#C461FF](Color0) {
P1's color
}
#[1=#11D571](Color1) {
P2's color
}
#[2=#FF2929](Color2) {
P3's color (NTT only)
}
#[4=#2995FF](Color3) {
P4's color (NTT only)
}
}
#[Visual](conf-visual) {
#[WeaponTooltips=17]() {
Tooltip delay when mouseovering a weapon in HUD.
}
#[MutationTooltips=17]() {
Tooltip delay when mouseovering a mutation in HUD.
}
#[PortalFx=1]() {
Whether portals should be drawn on level transitions and alike.
}
#[VSync=0]() {
If set to 1, forces vertical synchronization.
Removes tearing but causes freeze frames and small lag to be stranger.
Since v9925.
}
#[HideMaxText=0]() {
If set to 1, hides "Max