The client for Pokémon Showdown
Go to file
Guangcong Luo 6c38107fbe Use DexSearch for the teambuilder search engine
This will prevent us from needing to maintain two search engines in
the future.

The new DexSearch doesn't have too much in the way of new features so
far, but it does show filtered things in categories, and list illegal
results in-filter even after sorting.

These are really minor differences, though; the main thing is just that
its architecture should make it much easier to maintain, and in
particular, to add more filters.
2020-05-05 20:16:23 -07:00
.github/workflows Correct TS line numbers in GitHub Actions 2020-03-23 22:57:46 -07:00
build-tools Fix DPP Doubles teambuilder (#1504) 2020-05-05 15:22:36 -07:00
config Fix build tools 2018-05-17 11:52:32 -05:00
data Add G-Max Chi Strike text 2020-05-03 18:38:20 +04:00
desktop Properly set the encoding to UTF-8 on all HTML pages (#1467) 2020-02-23 00:13:56 -08:00
fx Add G-Max Steelsurge hazard sprite (#1461) 2020-02-08 20:31:06 +04:00
graphics-src Add PS! Day Background to rotation 2019-10-21 16:13:53 -04:00
js Use DexSearch for the teambuilder search engine 2020-05-05 20:16:23 -07:00
lib Support ports other than 443 for HTTPS 2020-03-29 02:10:02 -04:00
replays Fix 'Content-Type' capitalization 2020-04-18 10:42:01 -04:00
sprites Create test pages for sprites 2020-04-02 11:48:50 -07:00
src Fix DPP Doubles teambuilder (#1504) 2020-05-05 15:22:36 -07:00
style Improve teambuilder team selection layout 2020-05-03 22:40:11 -07:00
swf Update soundManager 2014-01-12 01:26:57 -06:00
test Create test pages for sprites 2020-04-02 11:48:50 -07:00
.babelrc Improve teambuilder team selection layout 2020-05-03 22:40:11 -07:00
.editorconfig Editorconfig: Increase indent size to 3 spaces (#1043) 2017-11-05 16:42:36 -08:00
.eslintignore Rename new BattleSearch -> DexSearch 2020-05-04 19:07:37 -07:00
.eslintrc.js Rename new BattleSearch -> DexSearch 2020-05-04 19:07:37 -07:00
.gitignore Rename new BattleSearch -> DexSearch 2020-05-04 19:07:37 -07:00
.htaccess Update <<bugs>> with new bug reports thread (#1502) 2020-05-04 19:35:07 -07:00
.npmrc Disable package-lock.json 2018-05-14 17:14:27 -05:00
action.php Properly set the encoding to UTF-8 on all HTML pages (#1467) 2020-02-23 00:13:56 -08:00
ads.txt Add ads.txt 2017-11-14 19:26:16 -05:00
apple-touch-icon.png Shrink assets 2016-02-02 19:44:24 -05:00
build Fix full build not building replays correctly 2019-11-18 13:34:19 +13:00
cache.manifest Add homescreen app manifest for Android Chrome 2017-10-29 21:16:05 -04:00
composer.json Add Sentry to composer.json 2019-02-27 05:16:17 -05:00
CONTRIBUTING.md Stub chatroom support 2019-03-17 19:02:53 +09:00
crossdomain.php Support ports other than 443 for HTTPS 2020-03-29 02:10:02 -04:00
crossprotocol.html Properly set the encoding to UTF-8 on all HTML pages (#1467) 2020-02-23 00:13:56 -08:00
customcss.php Shorten customcss timeout time 2017-06-21 23:13:16 -04:00
favicon-16.png Shrink assets 2016-02-02 19:44:24 -05:00
favicon-32.png Update icons 2016-04-08 05:25:25 -07:00
favicon-48.png Update icons 2016-04-08 05:25:25 -07:00
favicon-128.png Update icons 2016-04-08 05:25:25 -07:00
favicon-192.png Add 192x192 icon 2017-11-21 07:50:32 -05:00
favicon-256.png Shrink assets 2016-02-02 19:44:24 -05:00
favicon-notify.ico Update icons 2016-04-08 05:25:25 -07:00
favicon.ico Compress favicon.ico 2016-01-02 16:14:18 +01:00
index.template.html Use DexSearch for the teambuilder search engine 2020-05-05 20:16:23 -07:00
ladder.php Fix bugs in ladder prefix search 2019-07-19 16:36:43 -04:00
LICENSE Create LICENSE 2017-03-08 12:29:33 -06:00
manifest.json Add 192x192 icon 2017-11-21 07:50:32 -05:00
news-embed.php iframe for news page 2013-09-20 16:48:31 -05:00
package.json Create test pages for sprites 2020-04-02 11:48:50 -07:00
pokemonshowdown.png Shrink assets 2016-02-02 19:44:24 -05:00
pokemonshowdown.psd New logo 2013-04-27 01:51:38 -07:00
pokemonshowdownbeta.png Shrink assets 2016-02-02 19:44:24 -05:00
pokemonshowdownbeta@2x.png Implement Retina logo 2016-04-02 03:13:09 -04:00
preactalpha.template.html Rename new BattleSearch -> DexSearch 2020-05-04 19:07:37 -07:00
README.md Improve testclient key documentation 2020-03-19 21:28:18 -07:00
recoverteams.html Properly set the encoding to UTF-8 on all HTML pages (#1467) 2020-02-23 00:13:56 -08:00
robots.txt Stop banning search indexers 2016-02-22 15:24:26 -05:00
showdown.crx Populate with current state of client 2013-01-23 16:39:14 -08:00
showdown.webapp Default to HTTPS 2017-11-21 07:50:32 -05:00
testclient-beta.html Rename new BattleSearch -> DexSearch 2020-05-04 19:07:37 -07:00
testclient.html Use DexSearch for the teambuilder search engine 2020-05-05 20:16:23 -07:00
tsconfig.json Massively improve tooltips 2019-02-18 22:38:13 -06:00
tslint.json Implement Rooms room 2019-03-21 20:16:01 +09:00
UPGRADING-SOCKJS.md Fix SockJS when using the desktop client (#1360) 2019-09-04 14:54:03 -05:00
WEB-API.md Improve and document replay search API 2020-04-16 03:53:00 -04:00

Pokémon Showdown Client

Navigation: Website | Server repository | Client repository | Dex repository

Introduction

This is a repository for most of the client code for Pokémon Showdown.

This is what runs play.pokemonshowdown.com.

WARNING: You probably want the Pokémon Showdown server, if you're setting up a server.

Testing

Client testing now requires a build step! Install the latest Node.js (we require v10 or later) and Git, and run node build (on Windows) or ./build (on other OSes) to build.

You can make and test client changes simply by building after each change, and opening testclient.html. This will allow you to test changes to the client without setting up your own login server.

Test keys

For security reasons, browsers don't let other websites control PS, so they can't screw with your account, but it does make it harder to log in on the test client.

The default hack makes you copy/paste the data instead, but if you're refreshing a lot, just add a config/testclient-key.js file, with the contents:

const POKEMON_SHOWDOWN_TESTCLIENT_KEY = 'sid';

Replace sid with the contents of your actual PS sid cookie. You can quickly access this on Chrome through the URL bar:

image image

(This is the only supported method of logging in on the beta Preact client.)

Other servers

You can connect to an arbitrary server by navigating to testclient.html?~~host:port. For example, to connect to a server running locally on port 8000, you can navigate to testclient.html?~~localhost:8000.

NOTE: Certain browsers will convert '?' to '%3F' when reading files off of the local filesystem. As a workaround, try using a different browser or serving the files locally first (ie. run npx http-server from the directory this README is in, then navigate in your browser to http://localhost:8080/testclient.html?~~localhost:8000).

Limitations

Even with a test key, the following things will fail in testclient.html:

  • Registering
  • Logging into other accounts (you can still switch to other unregistered accounts and back, though)

Everything else can be tested.

Warning

This repository is not "batteries included". It does NOT include instructions to run a full Pokémon Showdown login server, and we will not provide them. Please do not ask for help on this; you will be turned away.

If you make a mistake hosting a login server, your users' passwords can get stolen, so we do not want anyone to host a login server unless they can figure out how to do it without help.

It also doesn't include several resource files (namely, the /audio/ and /sprites/ directories) for size reasons.

On the other hand, as long as you don't want to run your own login server, this repository contains everything you need to test changes to the client; just see the "Testing" section above.

License

Pokémon Showdown's client is distributed under the terms of the AGPLv3.

The reason is mostly because I don't want low-effort proprietary forks that add bad code that steals everyone's passwords, or something like that.

If you're doing anything else other than forking, especially if you want to some client code files in your own open-source project that you want to release under a more permissive license (like, if you want to make your own multiplayer open-source game client for a different game), please ask at staff@pokemonshowdown.com. I hold all the copyright to the AGPLv3 parts and can relicense them to MIT for you.

WARNING: This is NOT the same license as Pokémon Showdown's server.