Skip to content

GlennnM/FlashPrivateServer

Repository files navigation

FlashPrivateServer

On April 29, 2022, Ninja Kiwi shut down their multiplayer servers for the following games:

  • SAS4 Flash
  • Countersnipe Flash
  • SAS3 Flash
  • BTD5 Flash
  • BTD Battles Flash

2025 update - Bloons Monkey City has been added as well. It will become launchable from the Archive if you install this mod. This project fully recreates these servers, built from scratch with Java TCP sockets.
Currently I am hosting all of these - BMC, BTD Battles, BTD5 challenges, BTD5 co-op, SAS3, Countersnipe, and SAS4. The guide to play on these servers is also available as a video:
https://www.youtube.com/watch?v=J3q-Vb5A4jI
When playing on these servers, some quality of life/easter egg features are added to the client, but mostly they will play exactly as you would expect the game to play on Ninja Kiwi's servers, and any data or achievements from these games will register in your actual NK profile, excluding BMC where you will get a new online save.

HOW TO PLAY

There are different methods of installing the client.

In all cases, ensure Ninja Kiwi Archive is installed, and close all NK Archive windows before installing!

First Method - All Platforms

  1. Download FlashClient.bat(windows) or FlashClient.sh(Mac or Linux) from the releases page and run it. You might receive a warning since the application isn't signed.

Second Method - All Platforms (Manual Installation)

  1. Navigate to your NK Archive installation folder. Steam example: open Library, right click NK Archive, Manage -> Browse local files.
  2. Open the "resources" folder, and delete or rename app.asar.
  3. Download app.zip from the releases page and extract it in the current folder(ending in "resources") to get a new app.asar.
Mac/Linux/Standalone Paths: - Standalone Windows - Current User "%LOCALAPPDATA%\Programs\Ninja Kiwi Archive\resources"
- Standalone Windows - All Users "%PROGRAMFILES%\Ninja Kiwi\Ninja Kiwi Archive\resources"
- Mac Steam "$HOME/Library/Application Support/Steam/steamapps/common/Ninja Kiwi Archive/resources"
- Mac Standalone "/Applications/Ninja Kiwi Archive"*".app/Contents/Resources"
- Linux Steam "$HOME/.steam/steam/steamapps/common/Ninja Kiwi Archive/resources"
- Linux Steam 2 "$HOME/.local/share/Steam/steamapps/common/Ninja Kiwi Archive/resources"
- Linux Proton "$HOME/.steam/steam/steamapps/compatdata/1275350/pfx/drive_c/Program Files (x86)/Steam/steamapps/common/Ninja Kiwi Archive/resources"

Third Method - All Platforms (PowerShell)

  1. Download FlashClient.ps1 from the releases page
  2. open PowerShell (or PowerShell ISE)
  3. Enable PowerShell execution Set-ExecutionPolicy Unrestricted -Force
  4. On the prompt, change to the directory where you downloaded the files: cd c:\Users\NAME_HERE\Downloads
  5. Next, to run the script, enter in the following: .\FlashClient.ps1


That's it! Next time you start BMC, BTD Battles, BTD5, SAS3, Countersnipe, or SAS4 on the archive they will be modded to link to the private server, allowing you to play online with other players.
Enjoy!!

Since the games are fairly inactive, you can play "solo" multiplayer with the following methods:

  • open multiple NK Archives(less lag), or multiple of the same game from the same Archive
  • join code 400 in SAS4 to play a boosted game with bots(works in any mode)
  • bots for battles flash(will require some code changes to work)

Stuck installing flash player?

If the links provided to you during archive installation don't work for you(make sure to read 'How to Play' first!) try one of the following methods:     

Archive.org installer - requires admin https://archive.org/download/flashplayerarchivedversions2/333/fp_29.0.0.171_archive.zip
    1. extract the zip file from the link above
    2. run the correct installer(most likely winpep something)
    3. Restart the archive and it should load!
    
Manual 'install' - no admin required
    1. download "pepflashplayer.dll" for your system(just search for it on google)

    How to verify a .dll from the internet is legit
    1. right click on pepflashplayer.dll(the one extracted from the zip, not the zip itself) and click 'Properties'
    2. click the 'Digital Signatures' tab(if it isn't there don't trust the file)
    3. ensure there is a valid signature from 'Adobe Systens Incorporated'.
    2. navigate to %appdata%/Ninja Kiwi Archive/ in file explorer
    3. open the folder there named "flash"(create it if it didn't exist)
    4. delete anything there previously
    5. create a folder called "system"
    6. paste the pepflashplayer.dll there
    7. restart the archive and it should load!

Building & self hosting

MP Components

(BTD5 Co-op, BTD Battles, SAS4, SAS3, Countersnipe)

With JDK 17+:

  1. Add the JDK to your system PATH, or edit the script to an absolute one in the next step.
  2. Download the source and run compile.bat or compile.sh depending on your system.

This will compile the source to ./classes and launch the server. To configure the server, edit flash.properties. You can also create a jar file with mvn package or extra/package.bat, or download one from build artifacts.

With JDK 8+:

There is an older version of each server which can be compiled here and is a few updates behind, but each server is only a single source file and they have been tested to run consistently for months. However some deadlocks might emerge after thousands of games.

  1. Add the JDK to your system PATH, or edit the script to an absolute one in the next step.
  2. Navigate to extra/old/[game name] and run runme.bat or runme.sh depending on your system. There are no dependencies for either version.

Web Components

(BTD5 Daily Challenges/Special Missions, BMC, BMC/SAS4 Event Data)

These are a web app. See the BMC readme for build instructions.

Client

In order to play on a server you are hosting, you will have to create SWFs that link game clients to your server,
since the ones generated by the powershell scripts only link to my server.
This can be done through decompilation+Fiddler MITM and other methods, but eventually an archive mod with server selection might be available.
Some useful tools for analyzing client and server behavior are FFDec and Wireshark.

Contact

If you have questions or concerns feel free to message me on discord: glenn_m
or join: https://discord.gg/VVGuvq7kAv